Page MenuHomeFreeBSD

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/Makefile.inc1 b/Makefile.inc1
index f4cee70ee15c..2006dde4b046 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -1,3387 +1,3382 @@
#
# $FreeBSD$
#
# Make command line options:
# -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
# -DNO_CLEAN do not clean at all
# -DDB_FROM_SRC use the user/group databases in src/etc instead of
# the system database when installing.
# -DNO_SHARE do not go into share subdir
# -DKERNFAST define NO_KERNEL{CONFIG,CLEAN,OBJ}
# -DNO_KERNELCONFIG do not run config in ${MAKE} buildkernel
# -DNO_KERNELCLEAN do not run ${MAKE} clean in ${MAKE} buildkernel
# -DNO_KERNELOBJ do not run ${MAKE} obj in ${MAKE} buildkernel
# -DNO_PORTSUPDATE do not update ports in ${MAKE} update
# -DNO_ROOT install without using root privilege
# -DNO_DOCUPDATE do not update doc in ${MAKE} update
# -DWITHOUT_CTF do not run the DTrace CTF conversion tools on built objects
# LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list
# LOCAL_ITOOLS="list of tools" to add additional tools to the ITOOLS list
# LOCAL_LIB_DIRS="list of dirs" to add additional dirs to libraries target
# LOCAL_MTREE="list of mtree files" to process to allow local directories
# to be created before files are installed
# LOCAL_TOOL_DIRS="list of dirs" to add additional dirs to the build-tools
# list
# LOCAL_XTOOL_DIRS="list of dirs" to add additional dirs to the
# cross-tools target
# METALOG="path to metadata log" to write permission and ownership
# when NO_ROOT is set. (default: ${DESTDIR}/METALOG)
# TARGET="machine" to crossbuild world for a different machine type
# TARGET_ARCH= may be required when a TARGET supports multiple endians
# BUILDENV_SHELL= shell to launch for the buildenv target (def:${SHELL})
# WORLD_FLAGS= additional flags to pass to make(1) during buildworld
# KERNEL_FLAGS= additional flags to pass to make(1) during buildkernel
# SUBDIR_OVERRIDE="list of dirs" to build rather than everything.
# All libraries and includes, and some build tools will still build.
#
# The intended user-driven targets are:
# buildworld - rebuild *everything*, including glue to help do upgrades
# installworld- install everything built by "buildworld"
# checkworld - run test suite on installed world
# doxygen - build API documentation of the kernel
# update - convenient way to update your source tree (eg: svn/svnup)
#
# Standard targets (not defined here) are documented in the makefiles in
# /usr/share/mk. These include:
# obj depend all install clean cleandepend cleanobj
.if !defined(TARGET) || !defined(TARGET_ARCH)
.error "Both TARGET and TARGET_ARCH must be defined."
.endif
.if make(showconfig) || make(test-system-*)
_MKSHOWCONFIG= t
.endif
SRCDIR?= ${.CURDIR}
LOCALBASE?= /usr/local
# Cross toolchain changes must be in effect before bsd.compiler.mk
# so that gets the right CC, and pass CROSS_TOOLCHAIN to submakes.
.if defined(CROSS_TOOLCHAIN)
.if exists(${LOCALBASE}/share/toolchains/${CROSS_TOOLCHAIN}.mk)
.include "${LOCALBASE}/share/toolchains/${CROSS_TOOLCHAIN}.mk"
.elif exists(/usr/share/toolchains/${CROSS_TOOLCHAIN}.mk)
.include "/usr/share/toolchains/${CROSS_TOOLCHAIN}.mk"
.elif exists(${CROSS_TOOLCHAIN})
.include "${CROSS_TOOLCHAIN}"
.else
.error CROSS_TOOLCHAIN ${CROSS_TOOLCHAIN} not found
.endif
CROSSENV+=CROSS_TOOLCHAIN="${CROSS_TOOLCHAIN}"
.endif
.if defined(CROSS_TOOLCHAIN_PREFIX)
CROSS_COMPILER_PREFIX?=${CROSS_TOOLCHAIN_PREFIX}
.endif
XCOMPILERS= CC CXX CPP
.for COMPILER in ${XCOMPILERS}
.if defined(CROSS_COMPILER_PREFIX)
X${COMPILER}?= ${CROSS_COMPILER_PREFIX}${${COMPILER}}
.else
X${COMPILER}?= ${${COMPILER}}
.endif
.endfor
# If a full path to an external cross compiler is given, don't build
# a cross compiler.
.if ${XCC:N${CCACHE_BIN}:M/*}
MK_CLANG_BOOTSTRAP= no
.endif
# Pull in compiler metadata from buildworld/toolchain if possible to avoid
# running CC from bsd.compiler.mk.
.if make(installworld) || make(install) || make(distributeworld) || \
make(stageworld)
.-include "${OBJTOP}/toolchain-metadata.mk"
.if !defined(_LOADED_TOOLCHAIN_METADATA)
.error A build is required first. You may have the wrong MAKEOBJDIRPREFIX set.
.endif
.endif
# Pull in COMPILER_TYPE and COMPILER_FREEBSD_VERSION early. Pull it from the
# tree to be friendlier to foreign OS builds. It's safe to do so unconditionally
# here since we will always have the right make, unlike in src/Makefile
# Don't include bsd.linker.mk yet until XBINUTILS is handled (after src.opts.mk)
_NO_INCLUDE_LINKERMK= t
# We also want the X_COMPILER* variables if we are using an external toolchain.
_WANT_TOOLCHAIN_CROSS_VARS= t
.include "share/mk/bsd.compiler.mk"
.undef _NO_INCLUDE_LINKERMK
.undef _WANT_TOOLCHAIN_CROSS_VARS
# src.opts.mk depends on COMPILER_FEATURES
.include "share/mk/src.opts.mk"
.if ${TARGET} == ${MACHINE}
TARGET_CPUTYPE?=${CPUTYPE}
.else
TARGET_CPUTYPE?=
.endif
.if !empty(TARGET_CPUTYPE)
_TARGET_CPUTYPE=${TARGET_CPUTYPE}
.else
_TARGET_CPUTYPE=dummy
.endif
.if ${TARGET} == "arm"
.if ${TARGET_ARCH:Marmv[67]*} != "" && ${TARGET_CPUTYPE:M*soft*} == ""
TARGET_ABI= gnueabihf
.else
TARGET_ABI= gnueabi
.endif
.endif
MACHINE_ABI?= unknown
MACHINE_TRIPLE?=${MACHINE_ARCH:S/amd64/x86_64/:C/[hs]f$//:S/mipsn32/mips64/}-${MACHINE_ABI}-freebsd13.0
TARGET_ABI?= unknown
TARGET_TRIPLE?= ${TARGET_ARCH:S/amd64/x86_64/:C/[hs]f$//:S/mipsn32/mips64/}-${TARGET_ABI}-freebsd13.0
KNOWN_ARCHES?= aarch64/arm64 \
amd64 \
armv6/arm \
armv7/arm \
i386 \
mips \
mipsel/mips \
mips64el/mips \
mipsn32el/mips \
mips64/mips \
mipsn32/mips \
mipshf/mips \
mipselhf/mips \
mips64elhf/mips \
mips64hf/mips \
powerpc \
powerpc64/powerpc \
powerpcspe/powerpc \
riscv64/riscv \
riscv64sf/riscv
.if ${TARGET} == ${TARGET_ARCH}
_t= ${TARGET}
.else
_t= ${TARGET_ARCH}/${TARGET}
.endif
.for _t in ${_t}
.if empty(KNOWN_ARCHES:M${_t})
.error Unknown target ${TARGET_ARCH}:${TARGET}.
.endif
.endfor
# If all targets are disabled for system llvm then don't expect it to work
# for cross-builds.
.if !defined(TOOLS_PREFIX) && ${MK_LLVM_TARGET_ALL} == "no" && \
${MACHINE} != ${TARGET} && ${MACHINE_ARCH} != ${TARGET_ARCH} && \
!make(showconfig)
MK_SYSTEM_COMPILER= no
MK_SYSTEM_LINKER= no
.endif
# Handle external binutils.
.if defined(CROSS_TOOLCHAIN_PREFIX)
CROSS_BINUTILS_PREFIX?=${CROSS_TOOLCHAIN_PREFIX}
.endif
XBINUTILS= AS AR LD NM OBJCOPY RANLIB SIZE STRINGS
.for BINUTIL in ${XBINUTILS}
.if defined(CROSS_BINUTILS_PREFIX) && \
exists(${CROSS_BINUTILS_PREFIX}/${${BINUTIL}})
X${BINUTIL}?= ${CROSS_BINUTILS_PREFIX:C,/*$,,}/${${BINUTIL}}
.else
X${BINUTIL}?= ${${BINUTIL}}
.endif
.endfor
# If a full path to an external linker is given, don't build lld.
.if ${XLD:M/*}
MK_LLD_BOOTSTRAP= no
.endif
# We also want the X_LINKER* variables if we are using an external toolchain.
_WANT_TOOLCHAIN_CROSS_VARS= t
.include "share/mk/bsd.linker.mk"
.undef _WANT_TOOLCHAIN_CROSS_VARS
# Begin WITH_SYSTEM_COMPILER / WITH_SYSTEM_LD
# WITH_SYSTEM_COMPILER - Pull in needed values and make a decision.
# Check if there is a local compiler that can satisfy as an external compiler.
# Which compiler is expected to be used?
.if ${MK_CLANG_BOOTSTRAP} == "yes"
WANT_COMPILER_TYPE= clang
.else
WANT_COMPILER_TYPE=
.endif
.if !defined(WANT_COMPILER_FREEBSD_VERSION) && !make(showconfig) && \
!make(test-system-linker)
.if ${WANT_COMPILER_TYPE} == "clang"
WANT_COMPILER_FREEBSD_VERSION_FILE= lib/clang/freebsd_cc_version.h
WANT_COMPILER_FREEBSD_VERSION!= \
awk '$$2 == "FREEBSD_CC_VERSION" {printf("%d\n", $$3)}' \
${SRCDIR}/${WANT_COMPILER_FREEBSD_VERSION_FILE} || echo unknown
WANT_COMPILER_VERSION_FILE= lib/clang/include/clang/Basic/Version.inc
WANT_COMPILER_VERSION!= \
awk '$$2 == "CLANG_VERSION" {split($$3, a, "."); print a[1] * 10000 + a[2] * 100 + a[3]}' \
${SRCDIR}/${WANT_COMPILER_VERSION_FILE} || echo unknown
.endif
.export WANT_COMPILER_FREEBSD_VERSION WANT_COMPILER_VERSION
.endif # !defined(WANT_COMPILER_FREEBSD_VERSION)
# It needs to be the same revision as we would build for the bootstrap.
# If the expected vs CC is different then we can't skip.
# GCC cannot be used for cross-arch yet. For clang we pass -target later if
# TARGET_ARCH!=MACHINE_ARCH.
.if ${MK_SYSTEM_COMPILER} == "yes" && \
defined(WANT_COMPILER_FREEBSD_VERSION) && \
${MK_CLANG_BOOTSTRAP} == "yes" && \
!make(xdev*) && \
${X_COMPILER_TYPE} == ${WANT_COMPILER_TYPE} && \
(${X_COMPILER_TYPE} == "clang" || ${TARGET_ARCH} == ${MACHINE_ARCH}) && \
${X_COMPILER_VERSION} == ${WANT_COMPILER_VERSION} && \
${X_COMPILER_FREEBSD_VERSION} == ${WANT_COMPILER_FREEBSD_VERSION}
# Everything matches, disable the bootstrap compiler.
MK_CLANG_BOOTSTRAP= no
USING_SYSTEM_COMPILER= yes
.endif # ${WANT_COMPILER_TYPE} == ${COMPILER_TYPE}
# WITH_SYSTEM_LD - Pull in needed values and make a decision.
# Check if there is a local linker that can satisfy as an external linker.
# Which linker is expected to be used?
.if ${MK_LLD_BOOTSTRAP} == "yes"
WANT_LINKER_TYPE= lld
.elif ${MK_BINUTILS_BOOTSTRAP} == "yes"
# Note that there's no support for bfd in WITH_SYSTEM_LINKER.
WANT_LINKER_TYPE= bfd
.else
WANT_LINKER_TYPE=
.endif
.if !defined(WANT_LINKER_FREEBSD_VERSION) && !make(showconfig) && \
!make(test-system-compiler)
.if ${WANT_LINKER_TYPE} == "lld"
WANT_LINKER_FREEBSD_VERSION_FILE= lib/clang/include/VCSVersion.inc
_WANT_LINKER_FREEBSD_VERSION!= \
awk '$$2 == "LLD_REVISION" {gsub(/"/, "", $$3); print $$3}' \
${SRCDIR}/${WANT_LINKER_FREEBSD_VERSION_FILE} || echo unknown
WANT_LINKER_FREEBSD_VERSION=${_WANT_LINKER_FREEBSD_VERSION:C/.*-(.*)/\1/}
WANT_LINKER_VERSION_FILE= lib/clang/include/lld/Common/Version.inc
WANT_LINKER_VERSION!= \
awk '$$2 == "LLD_VERSION" {split($$3, a, "."); print a[1] * 10000 + a[2] * 100 + a[3]}' \
${SRCDIR}/${WANT_LINKER_VERSION_FILE} || echo unknown
.else
WANT_LINKER_FREEBSD_VERSION_FILE=
WANT_LINKER_FREEBSD_VERSION=
.endif
.export WANT_LINKER_FREEBSD_VERSION WANT_LINKER_VERSION
.endif # !defined(WANT_LINKER_FREEBSD_VERSION)
.if ${MK_SYSTEM_LINKER} == "yes" && \
defined(WANT_LINKER_FREEBSD_VERSION) && \
(${MK_LLD_BOOTSTRAP} == "yes") && \
!make(xdev*) && \
${X_LINKER_TYPE} == ${WANT_LINKER_TYPE} && \
${X_LINKER_VERSION} == ${WANT_LINKER_VERSION} && \
${X_LINKER_FREEBSD_VERSION} == ${WANT_LINKER_FREEBSD_VERSION}
# Everything matches, disable the bootstrap linker.
MK_LLD_BOOTSTRAP= no
USING_SYSTEM_LINKER= yes
.endif # ${WANT_LINKER_TYPE} == ${LINKER_TYPE}
# WITH_SYSTEM_COMPILER / WITH_SYSTEM_LINKER - Handle defaults and debug.
USING_SYSTEM_COMPILER?= no
USING_SYSTEM_LINKER?= no
TEST_SYSTEM_COMPILER_VARS= \
USING_SYSTEM_COMPILER MK_SYSTEM_COMPILER \
MK_CROSS_COMPILER MK_CLANG_BOOTSTRAP \
WANT_COMPILER_TYPE WANT_COMPILER_VERSION WANT_COMPILER_VERSION_FILE \
WANT_COMPILER_FREEBSD_VERSION WANT_COMPILER_FREEBSD_VERSION_FILE \
CC COMPILER_TYPE COMPILER_FEATURES COMPILER_VERSION \
COMPILER_FREEBSD_VERSION \
XCC X_COMPILER_TYPE X_COMPILER_FEATURES X_COMPILER_VERSION \
X_COMPILER_FREEBSD_VERSION
TEST_SYSTEM_LINKER_VARS= \
USING_SYSTEM_LINKER MK_SYSTEM_LINKER \
MK_LLD_BOOTSTRAP MK_BINUTILS_BOOTSTRAP \
WANT_LINKER_TYPE WANT_LINKER_VERSION WANT_LINKER_VERSION_FILE \
WANT_LINKER_FREEBSD_VERSION WANT_LINKER_FREEBSD_VERSION_FILE \
LD LINKER_TYPE LINKER_FEATURES LINKER_VERSION \
LINKER_FREEBSD_VERSION \
XLD X_LINKER_TYPE X_LINKER_FEATURES X_LINKER_VERSION \
X_LINKER_FREEBSD_VERSION
.for _t in compiler linker
test-system-${_t}: .PHONY
.for v in ${TEST_SYSTEM_${_t:tu}_VARS}
${_+_}@printf "%-35s= %s\n" "${v}" "${${v}}"
.endfor
.endfor
.if (make(buildworld) || make(buildkernel) || make(kernel-toolchain) || \
make(toolchain) || make(_cross-tools))
.if ${USING_SYSTEM_COMPILER} == "yes"
.info SYSTEM_COMPILER: Determined that CC=${CC} matches the source tree. Not bootstrapping a cross-compiler.
.elif ${MK_CLANG_BOOTSTRAP} == "yes"
.info SYSTEM_COMPILER: libclang will be built for bootstrapping a cross-compiler.
.endif
.if ${USING_SYSTEM_LINKER} == "yes"
.info SYSTEM_LINKER: Determined that LD=${LD} matches the source tree. Not bootstrapping a cross-linker.
.elif ${MK_LLD_BOOTSTRAP} == "yes"
.info SYSTEM_LINKER: libclang will be built for bootstrapping a cross-linker.
.endif
.endif
# End WITH_SYSTEM_COMPILER / WITH_SYSTEM_LD
# Store some compiler metadata for use in installworld where we don't
# want to invoke CC at all.
_TOOLCHAIN_METADATA_VARS= COMPILER_VERSION \
COMPILER_TYPE \
COMPILER_FEATURES \
COMPILER_FREEBSD_VERSION \
LINKER_VERSION \
LINKER_FEATURES \
LINKER_TYPE \
LINKER_FREEBSD_VERSION
toolchain-metadata.mk: .PHONY .META
@: > ${.TARGET}
@echo ".info Using cached toolchain metadata from build at $$(hostname) on $$(date)" \
> ${.TARGET}
@echo "_LOADED_TOOLCHAIN_METADATA=t" >> ${.TARGET}
.for v in ${_TOOLCHAIN_METADATA_VARS}
@echo "${v}=${${v}}" >> ${.TARGET}
@echo "X_${v}=${X_${v}}" >> ${.TARGET}
.endfor
@echo ".export ${_TOOLCHAIN_METADATA_VARS}" >> ${.TARGET}
@echo ".export ${_TOOLCHAIN_METADATA_VARS:C,^,X_,}" >> ${.TARGET}
# We must do lib/ and libexec/ before bin/ in case of a mid-install error to
# keep the users system reasonably usable. For static->dynamic root upgrades,
# we don't want to install a dynamic binary without rtld and the needed
# libraries. More commonly, for dynamic root, we don't want to install a
# binary that requires a newer library version that hasn't been installed yet.
# This ordering is not a guarantee though. The only guarantee of a working
# system here would require fine-grained ordering of all components based
# on their dependencies.
.if !empty(SUBDIR_OVERRIDE)
SUBDIR= ${SUBDIR_OVERRIDE}
.else
SUBDIR= lib libexec
# Add LOCAL_LIB_DIRS, but only if they will not be picked up as a SUBDIR
# of a LOCAL_DIRS directory. This allows LOCAL_DIRS=foo and
# LOCAL_LIB_DIRS=foo/lib to behave as expected.
.for _DIR in ${LOCAL_DIRS:M*/} ${LOCAL_DIRS:N*/:S|$|/|}
_REDUNDANT_LIB_DIRS+= ${LOCAL_LIB_DIRS:M${_DIR}*}
.endfor
.for _DIR in ${LOCAL_LIB_DIRS}
.if ${_DIR} == ".WAIT" || (empty(_REDUNDANT_LIB_DIRS:M${_DIR}) && exists(${.CURDIR}/${_DIR}/Makefile))
SUBDIR+= ${_DIR}
.endif
.endfor
.if !defined(NO_ROOT) && (make(installworld) || make(install))
# Ensure libraries are installed before progressing.
SUBDIR+=.WAIT
.endif
SUBDIR+=bin
.if ${MK_CDDL} != "no"
SUBDIR+=cddl
.endif
SUBDIR+=gnu include
.if ${MK_KERBEROS} != "no"
SUBDIR+=kerberos5
.endif
.if ${MK_RESCUE} != "no"
SUBDIR+=rescue
.endif
SUBDIR+=sbin
.if ${MK_CRYPT} != "no"
SUBDIR+=secure
.endif
.if !defined(NO_SHARE)
SUBDIR+=share
.endif
.if ${MK_BOOT} != "no"
SUBDIR+=stand
.endif
SUBDIR+=sys usr.bin usr.sbin
.if ${MK_TESTS} != "no"
SUBDIR+= tests
.endif
# Local directories are built in parallel with the base system directories.
# Users may insert a .WAIT directive at the beginning or elsewhere within
# the LOCAL_DIRS and LOCAL_LIB_DIRS lists as needed.
.for _DIR in ${LOCAL_DIRS}
.if ${_DIR} == ".WAIT" || exists(${.CURDIR}/${_DIR}/Makefile)
SUBDIR+= ${_DIR}
.endif
.endfor
# We must do etc/ last as it hooks into building the man whatis file
# by calling 'makedb' in share/man. This is only relevant for
# install/distribute so they build the whatis file after every manpage is
# installed.
.if make(installworld) || make(install)
SUBDIR+=.WAIT
.endif
SUBDIR+=etc
.endif # !empty(SUBDIR_OVERRIDE)
.if defined(NOCLEAN)
.warning NOCLEAN option is deprecated. Use NO_CLEAN instead.
NO_CLEAN= ${NOCLEAN}
.endif
.if defined(NO_CLEANDIR)
CLEANDIR= clean cleandepend
.else
CLEANDIR= cleandir
.endif
.if defined(WORLDFAST)
NO_CLEAN= t
NO_OBJWALK= t
.endif
.if ${MK_META_MODE} == "yes"
# If filemon is used then we can rely on the build being incremental-safe.
# The .meta files will also track the build command and rebuild should
# it change.
.if empty(.MAKE.MODE:Mnofilemon)
NO_CLEAN= t
.endif
.endif
.if defined(NO_OBJWALK) || ${MK_AUTO_OBJ} == "yes"
NO_OBJWALK= t
NO_KERNELOBJ= t
.endif
.if !defined(NO_OBJWALK)
_obj= obj
.endif
LOCAL_TOOL_DIRS?=
PACKAGEDIR?= ${DESTDIR}/${DISTDIR}
.if empty(SHELL:M*csh*)
BUILDENV_SHELL?=${SHELL}
.else
BUILDENV_SHELL?=/bin/sh
.endif
.if !defined(_MKSHOWCONFIG)
.if !defined(SVN_CMD) || empty(SVN_CMD)
. for _P in /usr/bin /usr/local/bin
. for _S in svn svnlite
. if exists(${_P}/${_S})
SVN_CMD= ${_P}/${_S}
. endif
. endfor
. endfor
.export SVN_CMD
.endif
SVNFLAGS?= -r HEAD
.if !defined(VCS_REVISION) || empty(VCS_REVISION)
.if !defined(SVNVERSION_CMD) || empty(SVNVERSION_CMD)
. for _D in ${PATH:S,:, ,g}
. if exists(${_D}/svnversion)
SVNVERSION_CMD?=${_D}/svnversion
. endif
. if exists(${_D}/svnliteversion)
SVNVERSION_CMD?=${_D}/svnliteversion
. endif
. endfor
.endif
_VCS_REVISION?= $$(eval ${SVNVERSION_CMD} ${SRCDIR})
. if !empty(_VCS_REVISION)
VCS_REVISION= $$(echo r${_VCS_REVISION})
. endif
.export VCS_REVISION
.endif
.if !defined(OSRELDATE)
.if exists(/usr/include/osreldate.h)
OSRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \
/usr/include/osreldate.h
.else
OSRELDATE= 0
.endif
.export OSRELDATE
.endif
# Set VERSION for CTFMERGE to use via the default CTFFLAGS=-L VERSION.
.if !defined(_REVISION)
_REVISION!= ${MAKE} -C ${SRCDIR}/release MK_AUTO_OBJ=no -V REVISION
.export _REVISION
.endif
.if !defined(_BRANCH)
_BRANCH!= ${MAKE} -C ${SRCDIR}/release MK_AUTO_OBJ=no -V BRANCH
.export _BRANCH
.endif
.if !defined(SRCRELDATE)
SRCRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \
${SRCDIR}/sys/sys/param.h
.export SRCRELDATE
.endif
.if !defined(VERSION)
VERSION= FreeBSD ${_REVISION}-${_BRANCH:C/-p[0-9]+$//} ${TARGET_ARCH} ${SRCRELDATE}
.export VERSION
.endif
.if !defined(PKG_VERSION)
.if ${_BRANCH:MSTABLE*} || ${_BRANCH:MCURRENT*}
TIMENOW= %Y%m%d%H%M%S
EXTRA_REVISION= .s${TIMENOW:gmtime}
.elif ${_BRANCH:MALPHA*}
EXTRA_REVISION= _${_BRANCH:C/-ALPHA/.a/}
.elif ${_BRANCH:MBETA*}
EXTRA_REVISION= _${_BRANCH:C/-BETA/.b/}
.elif ${_BRANCH:MRC*}
EXTRA_REVISION= _${_BRANCH:C/-RC/.r/}
.elif ${_BRANCH:MPRERELEASE*}
EXTRA_REVISION= _${_BRANCH:C/-PRERELEASE/.p/}
.elif ${_BRANCH:M*-p*}
EXTRA_REVISION= _${_BRANCH:C/.*-p([0-9]+$)/\1/}
.endif
PKG_VERSION= ${_REVISION}${EXTRA_REVISION}
.endif
.endif # !defined(PKG_VERSION)
.if !defined(_MKSHOWCONFIG)
_CPUTYPE!= MAKEFLAGS= CPUTYPE=${_TARGET_CPUTYPE} ${MAKE} -f /dev/null \
-m ${.CURDIR}/share/mk MK_AUTO_OBJ=no -V CPUTYPE
.if ${_CPUTYPE} != ${_TARGET_CPUTYPE}
.error CPUTYPE global should be set with ?=.
.endif
.endif
.if make(buildworld)
BUILD_ARCH!= uname -p
.if ${MACHINE_ARCH} != ${BUILD_ARCH}
.error To cross-build, set TARGET_ARCH.
.endif
.endif
WORLDTMP?= ${OBJTOP}/tmp
BPATH= ${CCACHE_WRAPPER_PATH_PFX}${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/bin:${WORLDTMP}/legacy/usr/libexec
XPATH= ${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin
# When building we want to find the cross tools before the host tools in ${BPATH}.
# We also need to add UNIVERSE_TOOLCHAIN_PATH so that we can find the shared
# toolchain files (clang, lld, etc.) during make universe/tinderbox
STRICTTMPPATH= ${XPATH}:${BPATH}:${UNIVERSE_TOOLCHAIN_PATH}
# We should not be using tools from /usr/bin accidentally since this could cause
# the build to break on other systems that don't have that tool. For now we
# still allow using the old behaviour (inheriting $PATH) if
# BUILD_WITH_STRICT_TMPPATH is set to 0 but this will eventually be removed.
# Currently strict $PATH can cause build failures and does not work yet with
# USING_SYSTEM_LINKER/USING_SYSTEM_COMPILER. Once these issues have been
# resolved it will be turned on by default.
BUILD_WITH_STRICT_TMPPATH?=0
.if ${BUILD_WITH_STRICT_TMPPATH} != 0
TMPPATH= ${STRICTTMPPATH}
.else
TMPPATH= ${STRICTTMPPATH}:${PATH}
.endif
#
# Avoid running mktemp(1) unless actually needed.
# It may not be functional, e.g., due to new ABI
# when in the middle of installing over this system.
#
.if make(distributeworld) || make(installworld) || make(stageworld)
.if ${BUILD_WITH_STRICT_TMPPATH} != 0
MKTEMP=${WORLDTMP}/legacy/usr/bin/mktemp
.if !exists(${MKTEMP})
.error "mktemp binary doesn't exist in expected location: ${MKTEMP}"
.endif
.else
MKTEMP=mktemp
.endif
INSTALLTMP!= ${MKTEMP} -d -u -t install
.endif
.if make(stagekernel) || make(distributekernel)
TAGS+= kernel
PACKAGE= kernel
.endif
#
# Building a world goes through the following stages
#
# 1. legacy stage [BMAKE]
# This stage is responsible for creating compatibility
# shims that are needed by the bootstrap-tools,
# build-tools and cross-tools stages. These are generally
# APIs that tools from one of those three stages need to
# build that aren't present on the host.
# 1. bootstrap-tools stage [BMAKE]
# This stage is responsible for creating programs that
# are needed for backward compatibility reasons. They
# are not built as cross-tools.
# 2. build-tools stage [TMAKE]
# This stage is responsible for creating the object
# tree and building any tools that are needed during
# the build process. Some programs are listed during
# this phase because they build binaries to generate
# files needed to build these programs. This stage also
# builds the 'build-tools' target rather than 'all'.
# 3. cross-tools stage [XMAKE]
# This stage is responsible for creating any tools that
# are needed for building the system. A cross-compiler is one
# of them. This differs from build tools in two ways:
# 1. the 'all' target is built rather than 'build-tools'
# 2. these tools are installed into TMPPATH for stage 4.
# 4. world stage [WMAKE]
# This stage actually builds the world.
# 5. install stage (optional) [IMAKE]
# This stage installs a previously built world.
#
BOOTSTRAPPING?= 0
# Keep these in sync
MINIMUM_SUPPORTED_OSREL?= 1002501
MINIMUM_SUPPORTED_REL?= 10.3
# Common environment for world related stages
CROSSENV+= \
MACHINE_ARCH=${TARGET_ARCH} \
MACHINE=${TARGET} \
CPUTYPE=${TARGET_CPUTYPE}
.if ${MK_META_MODE} != "no"
# Don't rebuild build-tools targets during normal build.
CROSSENV+= BUILD_TOOLS_META=.NOMETA
.endif
.if defined(TARGET_CFLAGS)
CROSSENV+= ${TARGET_CFLAGS}
.endif
.if (${TARGET} != ${MACHINE} && !defined(WITH_LOCAL_MODULES)) || \
defined(WITHOUT_LOCAL_MODULES)
CROSSENV+= LOCAL_MODULES=
.endif
BOOTSTRAPPING_OSRELDATE?=${OSRELDATE}
# bootstrap-tools stage
BMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \
TOOLS_PREFIX=${TOOLS_PREFIX_UNDEF:U${WORLDTMP}} \
PATH=${BPATH}:${PATH} \
WORLDTMP=${WORLDTMP} \
MAKEFLAGS="-m ${.CURDIR}/tools/build/mk ${.MAKEFLAGS}"
# need to keep this in sync with targets/pseudo/bootstrap-tools/Makefile
BSARGS= DESTDIR= \
OBJTOP='${WORLDTMP}/obj-tools' \
OBJROOT='$${OBJTOP}/' \
MAKEOBJDIRPREFIX= \
BOOTSTRAPPING=${BOOTSTRAPPING_OSRELDATE} \
BWPHASE=${.TARGET:C,^_,,} \
SSP_CFLAGS= \
MK_HTML=no NO_LINT=yes MK_MAN=no \
-DNO_PIC MK_PROFILE=no -DNO_SHARED \
-DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
MK_LLDB=no MK_RETPOLINE=no MK_TESTS=no \
MK_INCLUDES=yes
BMAKE= \
${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
${BSARGS}
.if empty(.MAKEOVERRIDES:MMK_LLVM_TARGET_ALL)
BMAKE+= MK_LLVM_TARGET_ALL=no
.endif
# build-tools stage
TMAKE= \
${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
DESTDIR= \
BOOTSTRAPPING=${BOOTSTRAPPING_OSRELDATE} \
BWPHASE=${.TARGET:C,^_,,} \
SSP_CFLAGS= \
-DNO_LINT \
-DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
MK_LLDB=no MK_RETPOLINE=no MK_TESTS=no
# cross-tools stage
# TOOLS_PREFIX set in BMAKE
XMAKE= ${BMAKE} \
TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
MK_CLANG_IS_CC=${MK_CLANG_BOOTSTRAP} \
MK_GDB=no MK_TESTS=no
# kernel-tools stage
KTMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \
PATH=${BPATH}:${PATH} \
WORLDTMP=${WORLDTMP}
KTMAKE= \
TOOLS_PREFIX=${TOOLS_PREFIX_UNDEF:U${WORLDTMP}} \
${KTMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
DESTDIR= \
OBJTOP='${WORLDTMP}/obj-kernel-tools' \
OBJROOT='$${OBJTOP}/' \
MAKEOBJDIRPREFIX= \
BOOTSTRAPPING=${BOOTSTRAPPING_OSRELDATE} \
SSP_CFLAGS= \
MK_HTML=no -DNO_LINT MK_MAN=no \
-DNO_PIC MK_PROFILE=no -DNO_SHARED \
-DNO_CPU_CFLAGS MK_RETPOLINE=no MK_WARNS=no MK_CTF=no
# world stage
WMAKEENV= ${CROSSENV} \
INSTALL="sh ${.CURDIR}/tools/install.sh" \
PATH=${TMPPATH} \
SYSROOT=${WORLDTMP}
# make hierarchy
HMAKE= PATH=${TMPPATH} ${MAKE} LOCAL_MTREE=${LOCAL_MTREE:Q}
.if defined(NO_ROOT)
HMAKE+= PATH=${TMPPATH} METALOG=${METALOG} -DNO_ROOT
.endif
CROSSENV+= CC="${XCC} ${XCFLAGS}" CXX="${XCXX} ${XCXXFLAGS} ${XCFLAGS}" \
CPP="${XCPP} ${XCFLAGS}" \
AS="${XAS}" AR="${XAR}" LD="${XLD}" LLVM_LINK="${XLLVM_LINK}" \
NM=${XNM} OBJCOPY="${XOBJCOPY}" \
RANLIB=${XRANLIB} STRINGS=${XSTRINGS} \
SIZE="${XSIZE}"
.if defined(CROSS_BINUTILS_PREFIX) && exists(${CROSS_BINUTILS_PREFIX})
# In the case of xdev-build tools, CROSS_BINUTILS_PREFIX won't be a
# directory, but the compiler will look in the right place for its
# tools so we don't need to tell it where to look.
BFLAGS+= -B${CROSS_BINUTILS_PREFIX}
.endif
# The internal bootstrap compiler has a default sysroot set by TOOLS_PREFIX
# and target set by TARGET/TARGET_ARCH. However, there are several needs to
# always pass an explicit --sysroot and -target.
# - External compiler needs sysroot and target flags.
# - External ld needs sysroot.
# - To be clear about the use of a sysroot when using the internal compiler.
# - Easier debugging.
# - Allowing WITH_SYSTEM_COMPILER+WITH_META_MODE to work together due to
# the flip-flopping build command when sometimes using external and
# sometimes using internal.
# - Allow using lld which has no support for default paths.
.if !defined(CROSS_BINUTILS_PREFIX) || !exists(${CROSS_BINUTILS_PREFIX})
BFLAGS+= -B${WORLDTMP}/usr/bin
.endif
.if ${WANT_COMPILER_TYPE} == gcc || \
(defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc)
.elif ${WANT_COMPILER_TYPE} == clang || \
(defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == clang)
XCFLAGS+= -target ${TARGET_TRIPLE}
.endif
XCFLAGS+= --sysroot=${WORLDTMP}
.if !empty(BFLAGS)
XCFLAGS+= ${BFLAGS}
.endif
.if ${MK_LIB32} == "yes"
_LIBCOMPAT= 32
.include "Makefile.libcompat"
.elif ${MK_LIBSOFT} == "yes"
_LIBCOMPAT= SOFT
.include "Makefile.libcompat"
.endif
# META_MODE normally ignores host file changes since every build updates
# timestamps (see NO_META_IGNORE_HOST in sys.mk). There are known times
# when the ABI breaks though that we want to force rebuilding WORLDTMP
# to get updated host tools.
.if ${MK_META_MODE} == "yes" && defined(NO_CLEAN) && \
!defined(NO_META_IGNORE_HOST) && !defined(NO_META_IGNORE_HOST_HEADERS) && \
!defined(_MKSHOWCONFIG)
# r318736 - ino64 major ABI breakage
META_MODE_BAD_ABI_VERS+= 1200031
.if !defined(OBJDIR_HOST_OSRELDATE)
.if exists(${OBJTOP}/host-osreldate.h)
OBJDIR_HOST_OSRELDATE!= \
awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \
${OBJTOP}/host-osreldate.h
.elif exists(${WORLDTMP}/usr/include/osreldate.h)
OBJDIR_HOST_OSRELDATE= 0
.endif
.export OBJDIR_HOST_OSRELDATE
.endif
# Note that this logic is the opposite of normal BOOTSTRAP handling. We want
# to compare the WORLDTMP's OSRELDATE to the host's OSRELDATE. If the WORLDTMP
# is older than the ABI-breakage OSRELDATE of the HOST then we rebuild.
.if defined(OBJDIR_HOST_OSRELDATE)
.for _ver in ${META_MODE_BAD_ABI_VERS}
.if ${OSRELDATE} >= ${_ver} && ${OBJDIR_HOST_OSRELDATE} < ${_ver}
_meta_mode_need_rebuild= ${_ver}
.endif
.endfor
.if defined(_meta_mode_need_rebuild)
.info META_MODE: Rebuilding host tools due to ABI breakage in __FreeBSD_version ${_meta_mode_need_rebuild}.
NO_META_IGNORE_HOST_HEADERS= 1
.export NO_META_IGNORE_HOST_HEADERS
.endif # defined(_meta_mode_need_rebuild)
.endif # defined(OBJDIR_HOST_OSRELDATE)
.endif # ${MK_META_MODE} == "yes" && defined(NO_CLEAN) ...
# This is only used for META_MODE+filemon to track what the oldest
# __FreeBSD_version is in WORLDTMP. This purposely does NOT have
# a make dependency on /usr/include/osreldate.h as the file should
# only be copied when it is missing or meta mode determines it has changed.
# Since host files are normally ignored without NO_META_IGNORE_HOST
# the file will never be updated unless that flag is specified. This
# allows tracking the oldest osreldate to force rebuilds via
# META_MODE_BADABI_REVS above.
host-osreldate.h: # DO NOT ADD /usr/include/osreldate.h here
@cp -f /usr/include/osreldate.h ${.TARGET}
WMAKE= ${WMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \
BWPHASE=${.TARGET:C,^_,,} \
DESTDIR=${WORLDTMP}
IMAKEENV= ${CROSSENV}
IMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 \
${IMAKE_INSTALL} ${IMAKE_MTREE}
.if empty(.MAKEFLAGS:M-n)
IMAKEENV+= PATH=${STRICTTMPPATH}:${INSTALLTMP} \
LD_LIBRARY_PATH=${INSTALLTMP} \
PATH_LOCALE=${INSTALLTMP}/locale
IMAKE+= __MAKE_SHELL=${INSTALLTMP}/sh
.else
IMAKEENV+= PATH=${TMPPATH}:${INSTALLTMP}
.endif
# When generating install media, do not allow user and group information from
# the build host to affect the contents of the distribution.
.if make(distributeworld) || make(distrib-dirs) || make(distribution)
DB_FROM_SRC= yes
.endif
.if defined(DB_FROM_SRC)
INSTALLFLAGS+= -N ${.CURDIR}/etc
MTREEFLAGS+= -N ${.CURDIR}/etc
.endif
_INSTALL_DDIR= ${DESTDIR}/${DISTDIR}
INSTALL_DDIR= ${_INSTALL_DDIR:S://:/:g:C:/$::}
.if defined(NO_ROOT)
METALOG?= ${DESTDIR}/${DISTDIR}/METALOG
METALOG:= ${METALOG:C,//+,/,g}
IMAKE+= -DNO_ROOT METALOG=${METALOG}
INSTALLFLAGS+= -U -M ${METALOG} -D ${INSTALL_DDIR}
MTREEFLAGS+= -W
.endif
.if defined(BUILD_PKGS)
INSTALLFLAGS+= -h sha256
.endif
.if defined(DB_FROM_SRC) || defined(NO_ROOT)
IMAKE_INSTALL= INSTALL="install ${INSTALLFLAGS}"
IMAKE_MTREE= MTREE_CMD="mtree ${MTREEFLAGS}"
.endif
DESTDIR_MTREEFLAGS= -deU
# When creating worldtmp we don't need to set the directories as owned by root
# so we also pass -W
WORLDTMP_MTREEFLAGS= -deUW
.if defined(NO_ROOT)
# When building with -DNO_ROOT we shouldn't be changing the directories
# that are created by mtree to be owned by root/wheel.
DESTDIR_MTREEFLAGS+= -W
.endif
MTREE?= mtree
.if ${BUILD_WITH_STRICT_TMPPATH} != 0
MTREE= ${WORLDTMP}/legacy/usr/sbin/mtree
.endif
WORLDTMP_MTREE= ${MTREE} ${WORLDTMP_MTREEFLAGS}
DESTDIR_MTREE= ${MTREE} ${DESTDIR_MTREEFLAGS}
# kernel stage
KMAKEENV= ${WMAKEENV:NSYSROOT=*}
KMAKE= ${KMAKEENV} ${MAKE} ${.MAKEFLAGS} ${KERNEL_FLAGS} KERNEL=${INSTKERNNAME}
#
# buildworld
#
# Attempt to rebuild the entire system, with reasonable chance of
# success, regardless of how old your existing system is.
#
_sanity_check: .PHONY .MAKE
.if ${.CURDIR:C/[^,]//g} != ""
# The m4 build of sendmail files doesn't like it if ',' is used
# anywhere in the path of it's files.
@echo
@echo "*** Error: path to source tree contains a comma ','"
@echo
@false
.elif ${.CURDIR:M*\:*} != ""
# Using ':' leaks into PATH and breaks finding cross-tools.
@echo
@echo "*** Error: path to source tree contains a colon ':'"
@echo
@false
.endif
# Our current approach to dependency tracking cannot cope with certain source
# tree changes, particularly with respect to removing source files and
# replacing generated files. Handle these cases here in an ad-hoc fashion.
_cleanobj_fast_depend_hack: .PHONY
# Syscall stubs rewritten in C and obsolete MD assembly implementations
# Date SVN Rev Syscalls/Changes
# 20191009 r353340 removal of opensolaris_atomic.S (also r353381)
.if ${MACHINE} != i386
.for f in opensolaris_atomic
@if [ -e "${OBJTOP}/cddl/lib/libzpool/.depend.${f}.o" ] && \
egrep -qw 'opensolaris_atomic\.S' ${OBJTOP}/cddl/lib/libzpool/.depend.${f}.o; then \
echo "Removing stale dependencies for opensolaris_atomic"; \
rm -f ${OBJTOP}/cddl/lib/libzpool/.depend.${f}.* \
${LIBCOMPAT:D${LIBCOMPAT_OBJTOP}/cddl/lib/libzpool/.depend.${f}.*}; \
fi
.endfor
.endif
# 20190925 r352689 removal of obsolete i386 memchr.S
.for f in memchr
@if [ -e "${OBJTOP}/lib/libc/.depend.${f}.o" ] && \
egrep -qw 'i386/string/memchr\.S' ${OBJTOP}/lib/libc/.depend.${f}.o; then \
echo "Removing stale dependencies for memchr"; \
rm -f ${OBJTOP}/lib/libc/.depend.${f}.*; \
fi
.if defined(_LIBCOMPAT)
@if [ -e "${LIBCOMPAT_OBJTOP}/lib/libc/.depend.${f}.o" ] && \
egrep -qw 'i386/string/memchr\.S' ${LIBCOMPAT_OBJTOP}/lib/libc/.depend.${f}.o; then \
echo "Removing stale dependencies for memchr"; \
rm -f ${LIBCOMPAT_OBJTOP}/lib/libc/.depend.${f}.*; \
fi
.endif
.endfor
# 20180604 r334626 brk sbrk
# 20190916 r352703 shm_open
.for f in brk sbrk shm_open
@if [ -e "${OBJTOP}/lib/libc/.depend.${f}.o" ] && \
egrep -qw '${f}\.[sS]' ${OBJTOP}/lib/libc/.depend.${f}.o; then \
echo "Removing stale dependencies for ${f} syscall wrappers"; \
rm -f ${OBJTOP}/lib/libc/.depend.${f}.* \
${_LIBCOMPAT:D${LIBCOMPAT_OBJTOP}/lib/libc/.depend.${f}.*}; \
fi
.endfor
# 20181013 r339348 bcopy reimplemented as .c
.for f in bcopy memcpy memmove
@if [ -e "${OBJTOP}/lib/libc/.depend.${f}.o" ] && \
egrep -qw 'bcopy\.[sS]' ${OBJTOP}/lib/libc/.depend.${f}.o; then \
echo "Removing stale dependencies for bcopy"; \
rm -f ${OBJTOP}/lib/libc/.depend.${f}.* \
${_LIBCOMPAT:D${LIBCOMPAT_OBJTOP}/lib/libc/.depend.${f}.*}; \
fi
.endfor
# 20181115 r340463 bzero reimplemented as .c
@if [ -e "${OBJTOP}/lib/libc/.depend.bzero.o" ] && \
egrep -qw 'bzero\.[sS]' ${OBJTOP}/lib/libc/.depend.bzero.o; then \
echo "Removing stale dependencies for bzero"; \
rm -f ${OBJTOP}/lib/libc/.depend.bzero.* \
${_LIBCOMPAT:D${LIBCOMPAT_OBJTOP}/lib/libc/.depend.bzero.*}; \
fi
# 20181009 track migration from ntp's embedded libevent to updated one
@if [ -e "${OBJTOP}/usr.sbin/ntp/libntpevent/.depend.bufferevent_openssl.o" ] && \
egrep -q 'contrib/ntp/sntp/libevent/bufferevent_openssl.c' \
${OBJTOP}/usr.sbin/ntp/libntpevent/.depend.bufferevent_openssl.o ; then \
echo "Removing stale libevent dependencies"; \
rm -f ${OBJTOP}/usr.sbin/ntp/libntpevent/.depend.*; \
fi
# 20181209 r341759 track migration across wpa update
@if [ -e "${OBJTOP}/usr.sbin/wpa/wpa_supplicant/.depend.rrm.o" ] && \
egrep -q 'src/ap/rrm.c' \
${OBJTOP}/usr.sbin/wpa/wpa_supplicant/.depend.rrm.o; then \
echo "Removing stale wpa dependencies"; \
rm -f ${OBJTOP}/usr.sbin/wpa/*/.depend*; \
fi
_worldtmp: .PHONY
@echo
@echo "--------------------------------------------------------------"
@echo ">>> Rebuilding the temporary build tree"
@echo "--------------------------------------------------------------"
.if !defined(NO_CLEAN)
rm -rf ${WORLDTMP}
.else
# Note: for delete-old we need to set $PATH to also include the host $PATH
# since otherwise a partial build with missing symlinks in ${WORLDTMP}/legacy/
# will fail to run due to missing binaries. $WMAKE sets PATH to only ${TMPPATH}
# so we remove that assingnment from $WMAKE and prepend the new $PATH
${_+_}@if [ -e "${WORLDTMP}" ]; then \
echo ">>> Deleting stale files in build tree..."; \
cd ${.CURDIR}; env PATH=${TMPPATH}:${PATH} ${WMAKE:NPATH=*} \
_NO_INCLUDE_COMPILERMK=t -DBATCH_DELETE_OLD_FILES delete-old \
delete-old-libs >/dev/null; \
fi
rm -rf ${WORLDTMP}/legacy/usr/include
.if ${USING_SYSTEM_COMPILER} == "yes"
.for cc in cc c++
if [ -x ${WORLDTMP}/usr/bin/${cc} ]; then \
inum=$$(stat -f %i ${WORLDTMP}/usr/bin/${cc}); \
find ${WORLDTMP}/usr/bin -inum $${inum} -delete; \
fi
.endfor
.endif # ${USING_SYSTEM_COMPILER} == "yes"
.if ${USING_SYSTEM_LINKER} == "yes"
@rm -f ${WORLDTMP}/usr/bin/ld ${WORLDTMP}/usr/bin/ld.lld
.endif # ${USING_SYSTEM_LINKER} == "yes"
.endif # !defined(NO_CLEAN)
@mkdir -p ${WORLDTMP}
@touch ${WORLDTMP}/${.TARGET}
# We can't use mtree to create the worldtmp directories since it may not be
# available on the target system (this happens e.g. when building on non-FreeBSD)
cd ${.CURDIR}/tools/build; \
${MAKE} DIRPRFX=tools/build/ DESTDIR=${WORLDTMP}/legacy installdirs
# In order to build without inheriting $PATH we need to add symlinks to the host
# tools in $WORLDTMP for the tools that we don't build during bootstrap-tools
cd ${.CURDIR}/tools/build; \
${MAKE} DIRPRFX=tools/build/ DESTDIR=${WORLDTMP}/legacy host-symlinks
_legacy:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 1.1: legacy release compatibility shims"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${BMAKE} legacy
_bootstrap-tools:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 1.2: bootstrap tools"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${BMAKE} bootstrap-tools
mkdir -p ${WORLDTMP}/usr ${WORLDTMP}/lib/casper ${WORLDTMP}/lib/geom
${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${WORLDTMP}/usr >/dev/null
${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.include.dist \
-p ${WORLDTMP}/usr/include >/dev/null
ln -sf ${.CURDIR}/sys ${WORLDTMP}
.if ${MK_DEBUG_FILES} != "no"
${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
-p ${WORLDTMP}/usr/lib >/dev/null
.endif
.for _mtree in ${LOCAL_MTREE}
${WORLDTMP_MTREE} -f ${.CURDIR}/${_mtree} -p ${WORLDTMP} > /dev/null
.endfor
_cleanobj:
.if !defined(NO_CLEAN)
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.1: cleaning up the object tree"
@echo "--------------------------------------------------------------"
# Avoid including bsd.compiler.mk in clean and obj with _NO_INCLUDE_COMPILERMK
# since the restricted $PATH might not contain a valid cc binary
${_+_}cd ${.CURDIR}; ${WMAKE} _NO_INCLUDE_COMPILERMK=t ${CLEANDIR}
.if defined(_LIBCOMPAT)
${_+_}cd ${.CURDIR}; ${LIBCOMPATWMAKE} _NO_INCLUDE_COMPILERMK=t -f Makefile.inc1 ${CLEANDIR}
.endif
.else
${_+_}cd ${.CURDIR}; ${WMAKE} _NO_INCLUDE_COMPILERMK=t _cleanobj_fast_depend_hack
.endif # !defined(NO_CLEAN)
_obj:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.2: rebuilding the object tree"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${WMAKE} _NO_INCLUDE_COMPILERMK=t obj
_build-tools:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.3: build tools"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${TMAKE} build-tools
_cross-tools:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 3: cross tools"
@echo "--------------------------------------------------------------"
@rm -f ${OBJTOP}/toolchain-metadata.mk
${_+_}cd ${.CURDIR}; ${XMAKE} cross-tools
${_+_}cd ${.CURDIR}; ${XMAKE} kernel-tools
_build-metadata:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 3.1: recording build metadata"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${WMAKE} toolchain-metadata.mk
${_+_}cd ${.CURDIR}; ${WMAKE} host-osreldate.h
_includes:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 4.1: building includes"
@echo "--------------------------------------------------------------"
# Special handling for SUBDIR_OVERRIDE in buildworld as they most likely need
# headers from default SUBDIR. Do SUBDIR_OVERRIDE includes last.
${_+_}cd ${.CURDIR}; ${WMAKE} SUBDIR_OVERRIDE= SHARED=symlinks \
MK_INCLUDES=yes includes
.if !empty(SUBDIR_OVERRIDE) && make(buildworld)
${_+_}cd ${.CURDIR}; ${WMAKE} MK_INCLUDES=yes SHARED=symlinks includes
.endif
_libraries:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 4.2: building libraries"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; \
${WMAKE} -DNO_FSCHG MK_HTML=no -DNO_LINT MK_MAN=no \
MK_PROFILE=no MK_TESTS=no MK_TESTS_SUPPORT=${MK_TESTS} libraries
everything: .PHONY
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 4.4: building everything"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; _PARALLEL_SUBDIR_OK=1 ${WMAKE} all
WMAKE_TGTS=
.if !defined(WORLDFAST)
WMAKE_TGTS+= _sanity_check _worldtmp _legacy
.if empty(SUBDIR_OVERRIDE)
WMAKE_TGTS+= _bootstrap-tools
.endif
WMAKE_TGTS+= _cleanobj
.if !defined(NO_OBJWALK)
WMAKE_TGTS+= _obj
.endif
WMAKE_TGTS+= _build-tools _cross-tools
WMAKE_TGTS+= _build-metadata
WMAKE_TGTS+= _includes
.endif
.if !defined(NO_LIBS)
WMAKE_TGTS+= _libraries
.endif
.if defined(_LIBCOMPAT) && empty(SUBDIR_OVERRIDE)
WMAKE_TGTS+= build${libcompat}
.endif
WMAKE_TGTS+= everything
# record buildworld time in seconds
.if make(buildworld)
_BUILDWORLD_START!= date '+%s'
.export _BUILDWORLD_START
.endif
buildworld: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue .PHONY
.ORDER: buildworld_prologue ${WMAKE_TGTS} buildworld_epilogue
buildworld_prologue: .PHONY
@echo "--------------------------------------------------------------"
@echo ">>> World build started on `LC_ALL=C date`"
@echo "--------------------------------------------------------------"
buildworld_epilogue: .PHONY
@echo
@echo "--------------------------------------------------------------"
@echo ">>> World build completed on `LC_ALL=C date`"
@seconds=$$(($$(date '+%s') - ${_BUILDWORLD_START})); \
echo -n ">>> World built in $$seconds seconds, "; \
echo "ncpu: $$(sysctl -n hw.ncpu)${.MAKE.JOBS:S/^/, make -j/}"
@echo "--------------------------------------------------------------"
#
# We need to have this as a target because the indirection between Makefile
# and Makefile.inc1 causes the correct PATH to be used, rather than a
# modification of the current environment's PATH. In addition, we need
# to quote multiword values.
#
buildenvvars: .PHONY
@echo ${WMAKEENV:Q} ${.MAKE.EXPORTED:@v@$v=\"${$v}\"@}
.if ${.TARGETS:Mbuildenv}
.if ${.MAKEFLAGS:M-j}
.error The buildenv target is incompatible with -j
.endif
.endif
BUILDENV_DIR?= ${.CURDIR}
#
# Note: make will report any errors the shell reports. This can
# be odd if the last command in an interactive shell generates an
# error or is terminated by SIGINT. These reported errors look bad,
# but are harmless. Allowing them also allows BUIDLENV_SHELL to
# be a complex command whose status will be returned to the caller.
# Some scripts in tools rely on this behavior to report build errors.
#
buildenv: .PHONY
@echo Entering world for ${TARGET_ARCH}:${TARGET}
.if ${BUILDENV_SHELL:M*zsh*}
@echo For ZSH you must run: export CPUTYPE=${TARGET_CPUTYPE}
.endif
@cd ${BUILDENV_DIR} && env ${WMAKEENV} BUILDENV=1 ${BUILDENV_SHELL}
TOOLCHAIN_TGTS= ${WMAKE_TGTS:Neverything:Nbuild${libcompat}}
toolchain: ${TOOLCHAIN_TGTS} .PHONY
KERNEL_TOOLCHAIN_TGTS= ${TOOLCHAIN_TGTS:N_obj:N_cleanobj:N_includes:N_libraries}
.if make(kernel-toolchain)
.ORDER: ${KERNEL_TOOLCHAIN_TGTS}
.endif
kernel-toolchain: ${KERNEL_TOOLCHAIN_TGTS} .PHONY
#
# installcheck
#
# Checks to be sure system is ready for installworld/installkernel.
#
installcheck: _installcheck_world _installcheck_kernel .PHONY
_installcheck_world: .PHONY
@echo "--------------------------------------------------------------"
@echo ">>> Install check world"
@echo "--------------------------------------------------------------"
_installcheck_kernel: .PHONY
@echo "--------------------------------------------------------------"
@echo ">>> Install check kernel"
@echo "--------------------------------------------------------------"
#
# Require DESTDIR to be set if installing for a different architecture or
# using the user/group database in the source tree.
#
.if ${TARGET_ARCH} != ${MACHINE_ARCH} || ${TARGET} != ${MACHINE} || \
defined(DB_FROM_SRC)
.if !make(distributeworld)
_installcheck_world: __installcheck_DESTDIR
_installcheck_kernel: __installcheck_DESTDIR
__installcheck_DESTDIR: .PHONY
.if !defined(DESTDIR) || empty(DESTDIR)
@echo "ERROR: Please set DESTDIR!"; \
false
.endif
.endif
.endif
.if !defined(DB_FROM_SRC)
#
# Check for missing UIDs/GIDs.
#
CHECK_UIDS= auditdistd
CHECK_GIDS= audit
CHECK_UIDS+= ntpd
CHECK_GIDS+= ntpd
CHECK_UIDS+= proxy
CHECK_GIDS+= proxy authpf
CHECK_UIDS+= smmsp
CHECK_GIDS+= smmsp
CHECK_UIDS+= unbound
CHECK_GIDS+= unbound
_installcheck_world: __installcheck_UGID
__installcheck_UGID: .PHONY
.for uid in ${CHECK_UIDS}
@if ! `id -u ${uid} >/dev/null 2>&1`; then \
echo "ERROR: Required ${uid} user is missing, see /usr/src/UPDATING."; \
false; \
fi
.endfor
.for gid in ${CHECK_GIDS}
@if ! `find / -prune -group ${gid} >/dev/null 2>&1`; then \
echo "ERROR: Required ${gid} group is missing, see /usr/src/UPDATING."; \
false; \
fi
.endfor
.endif
#
# If installing over the running system (DESTDIR is / or unset) and the install
# includes rescue, try running rescue from the objdir as a sanity check. If
# rescue is not functional (e.g., because it depends on a system call not
# supported by the currently running kernel), abort the installation.
#
.if !make(distributeworld) && ${MK_RESCUE} != "no" && \
(empty(DESTDIR) || ${DESTDIR} == "/") && empty(BYPASS_INSTALLCHECK_SH)
_installcheck_world: __installcheck_sh_check
__installcheck_sh_check: .PHONY
@if [ "`${OBJTOP}/rescue/rescue/rescue sh -c 'echo OK'`" != \
OK ]; then \
echo "rescue/sh check failed, installation aborted" >&2; \
false; \
fi
.endif
#
# Required install tools to be saved in a scratch dir for safety.
#
.if ${MK_ZONEINFO} != "no"
_zoneinfo= zic tzsetup
.endif
ITOOLS= [ awk cap_mkdb cat chflags chmod chown cmp cp \
date echo egrep find grep id install ${_install-info} \
ln make mkdir mtree mv pwd_mkdb \
rm sed services_mkdb sh sort strip sysctl test true uname wc ${_zoneinfo} \
${LOCAL_ITOOLS}
# Needed for share/man
.if ${MK_MAN_UTILS} != "no"
ITOOLS+=makewhatis
.endif
#
# distributeworld
#
# Distributes everything compiled by a `buildworld'.
#
# installworld
#
# Installs everything compiled by a 'buildworld'.
#
# Non-base distributions produced by the base system
EXTRA_DISTRIBUTIONS=
.if defined(_LIBCOMPAT)
EXTRA_DISTRIBUTIONS+= lib${libcompat}
.endif
.if ${MK_TESTS} != "no"
EXTRA_DISTRIBUTIONS+= tests
.endif
DEBUG_DISTRIBUTIONS=
.if ${MK_DEBUG_FILES} != "no"
DEBUG_DISTRIBUTIONS+= base ${EXTRA_DISTRIBUTIONS:S,tests,,}
.endif
MTREE_MAGIC?= mtree 2.0
distributeworld installworld stageworld: _installcheck_world .PHONY
mkdir -p ${INSTALLTMP}
progs=$$(for prog in ${ITOOLS}; do \
if progpath=`which $$prog`; then \
echo $$progpath; \
else \
echo "Required tool $$prog not found in PATH." >&2; \
exit 1; \
fi; \
done); \
libs=$$(ldd -f "%o %p\n" -f "%o %p\n" $$progs 2>/dev/null | sort -u | \
while read line; do \
set -- $$line; \
if [ "$$2 $$3" != "not found" ]; then \
echo $$2; \
else \
echo "Required library $$1 not found." >&2; \
exit 1; \
fi; \
done); \
cp $$libs $$progs ${INSTALLTMP}
cp -R $${PATH_LOCALE:-"/usr/share/locale"} ${INSTALLTMP}/locale
.if defined(NO_ROOT)
-mkdir -p ${METALOG:H}
echo "#${MTREE_MAGIC}" > ${METALOG}
.endif
.if make(distributeworld)
.for dist in ${EXTRA_DISTRIBUTIONS}
-mkdir ${DESTDIR}/${DISTDIR}/${dist}
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.root.dist \
-p ${DESTDIR}/${DISTDIR}/${dist} >/dev/null
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.include.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}/usr/include >/dev/null
.if ${MK_DEBUG_FILES} != "no"
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.debug.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib >/dev/null
.endif
.if defined(_LIBCOMPAT)
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null
.if ${MK_DEBUG_FILES} != "no"
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib/debug/usr >/dev/null
.endif
.endif
.if ${MK_TESTS} != "no" && ${dist} == "tests"
-mkdir -p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE}
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}${TESTSBASE} >/dev/null
.if ${MK_DEBUG_FILES} != "no"
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
-p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib/debug/${TESTSBASE} >/dev/null
.endif
.endif
.if defined(NO_ROOT)
${IMAKEENV} ${MTREE} -C -f ${.CURDIR}/etc/mtree/BSD.root.dist | \
sed -e 's#^\./#./${dist}/#' >> ${METALOG}
${IMAKEENV} ${MTREE} -C -f ${.CURDIR}/etc/mtree/BSD.usr.dist | \
sed -e 's#^\./#./${dist}/usr/#' >> ${METALOG}
${IMAKEENV} ${MTREE} -C -f ${.CURDIR}/etc/mtree/BSD.include.dist | \
sed -e 's#^\./#./${dist}/usr/include/#' >> ${METALOG}
.if defined(_LIBCOMPAT)
${IMAKEENV} ${MTREE} -C -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist | \
sed -e 's#^\./#./${dist}/usr/#' >> ${METALOG}
.endif
.endif
.endfor
-mkdir ${DESTDIR}/${DISTDIR}/base
${_+_}cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \
METALOG=${METALOG} ${IMAKE_INSTALL} ${IMAKE_MTREE} \
DISTBASE=/base DESTDIR=${DESTDIR}/${DISTDIR}/base \
LOCAL_MTREE=${LOCAL_MTREE:Q} distrib-dirs
${INSTALL_SYMLINK} ${INSTALLFLAGS} usr/src/sys ${INSTALL_DDIR}/base/sys
.endif
${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//}; \
${IMAKEENV} rm -rf ${INSTALLTMP}
.if make(distributeworld)
.for dist in ${EXTRA_DISTRIBUTIONS}
find ${DESTDIR}/${DISTDIR}/${dist} -mindepth 1 -type d -empty -delete
.endfor
.if defined(NO_ROOT)
.for dist in base ${EXTRA_DISTRIBUTIONS}
@# For each file that exists in this dist, print the corresponding
@# line from the METALOG. This relies on the fact that
@# a line containing only the filename will sort immediately before
@# the relevant mtree line.
cd ${DESTDIR}/${DISTDIR}; \
find ./${dist} | sort -u ${METALOG} - | \
awk 'BEGIN { print "#${MTREE_MAGIC}" } !/ type=/ { file = $$1 } / type=/ { if ($$1 == file) { sub(/^\.\/${dist}\//, "./"); print } }' > \
${DESTDIR}/${DISTDIR}/${dist}.meta
.endfor
.for dist in ${DEBUG_DISTRIBUTIONS}
@# For each file that exists in this dist, print the corresponding
@# line from the METALOG. This relies on the fact that
@# a line containing only the filename will sort immediately before
@# the relevant mtree line.
cd ${DESTDIR}/${DISTDIR}; \
find ./${dist}/usr/lib/debug | sort -u ${METALOG} - | \
awk 'BEGIN { print "#${MTREE_MAGIC}" } !/ type=/ { file = $$1 } / type=/ { if ($$1 == file) { sub(/^\.\/${dist}\//, "./"); print } }' > \
${DESTDIR}/${DISTDIR}/${dist}.debug.meta
.endfor
.endif
.endif
packageworld: .PHONY
.for dist in base ${EXTRA_DISTRIBUTIONS}
.if defined(NO_ROOT)
${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
tar cvf - --exclude usr/lib/debug \
@${DESTDIR}/${DISTDIR}/${dist}.meta | \
${XZ_CMD} > ${PACKAGEDIR}/${dist}.txz
.else
${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
tar cvf - --exclude usr/lib/debug . | \
${XZ_CMD} > ${PACKAGEDIR}/${dist}.txz
.endif
.endfor
.for dist in ${DEBUG_DISTRIBUTIONS}
. if defined(NO_ROOT)
${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
tar cvf - @${DESTDIR}/${DISTDIR}/${dist}.debug.meta | \
${XZ_CMD} > ${PACKAGEDIR}/${dist}-dbg.txz
. else
${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
tar cvLf - usr/lib/debug | \
${XZ_CMD} > ${PACKAGEDIR}/${dist}-dbg.txz
. endif
.endfor
makeman: .PHONY
${_+_}cd ${.CURDIR}/tools/build/options; sh makeman > \
${.CURDIR}/share/man/man5/src.conf.5
# We can't assume here that ${TMPPATH} will include ${PATH} or /usr/libexec
# because we may be building with a STRICTTMPPATH, so we explicitly include
# /usr/libexec here for flua. ${TMPPATH} still usefully includes anything else
# we may need to function.
_sysent_PATH= ${TMPPATH}:/usr/libexec
_sysent_dirs= sys/kern
_sysent_dirs+= sys/compat/freebsd32
_sysent_dirs+= sys/compat/cloudabi32 \
sys/compat/cloudabi64
_sysent_dirs+= sys/amd64/linux \
sys/amd64/linux32 \
sys/arm/linux \
sys/arm64/linux \
sys/i386/linux
sysent: .PHONY
.for _dir in ${_sysent_dirs}
@echo "${MAKE} -C ${.CURDIR}/${_dir} sysent"
${_+_}@env PATH=${_sysent_PATH} ${MAKE} -C ${.CURDIR}/${_dir} sysent
.endfor
#
# reinstall
#
# If you have a build server, you can NFS mount the source and obj directories
# and do a 'make reinstall' on the *client* to install new binaries from the
# most recent server build.
#
restage reinstall: .MAKE .PHONY
@echo "--------------------------------------------------------------"
@echo ">>> Making hierarchy"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 \
LOCAL_MTREE=${LOCAL_MTREE:Q} hierarchy
.if make(restage)
@echo "--------------------------------------------------------------"
@echo ">>> Making distribution"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 \
LOCAL_MTREE=${LOCAL_MTREE:Q} distribution
.endif
@echo
@echo "--------------------------------------------------------------"
@echo ">>> Installing everything started on `LC_ALL=C date`"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install
.if defined(_LIBCOMPAT)
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install${libcompat}
.endif
@echo "--------------------------------------------------------------"
@echo ">>> Installing everything completed on `LC_ALL=C date`"
@echo "--------------------------------------------------------------"
redistribute: .MAKE .PHONY
@echo "--------------------------------------------------------------"
@echo ">>> Distributing everything"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute
.if defined(_LIBCOMPAT)
${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 distribute${libcompat} \
DISTRIBUTION=lib${libcompat}
.endif
distrib-dirs distribution: .MAKE .PHONY
${_+_}cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \
${IMAKE_INSTALL} ${IMAKE_MTREE} METALOG=${METALOG} ${.TARGET}
.if make(distribution)
${_+_}cd ${.CURDIR}; ${CROSSENV} PATH=${TMPPATH} \
${MAKE} -f Makefile.inc1 ${IMAKE_INSTALL} \
METALOG=${METALOG} MK_TESTS=no installconfig
.endif
#
# buildkernel and installkernel
#
# Which kernels to build and/or install is specified by setting
# KERNCONF. If not defined a GENERIC kernel is built/installed.
# Only the existing (depending TARGET) config files are used
# for building kernels and only the first of these is designated
# as the one being installed.
#
# Note that we have to use TARGET instead of TARGET_ARCH when
# we're in kernel-land. Since only TARGET_ARCH is (expected) to
# be set to cross-build, we have to make sure TARGET is set
# properly.
.if defined(KERNFAST)
NO_KERNELCLEAN= t
NO_KERNELCONFIG= t
NO_KERNELOBJ= t
# Shortcut for KERNCONF=Blah -DKERNFAST is now KERNFAST=Blah
.if !defined(KERNCONF) && ${KERNFAST} != "1"
KERNCONF=${KERNFAST}
.endif
.endif
.if ${TARGET_ARCH} == "powerpc64"
KERNCONF?= GENERIC64
.else
KERNCONF?= GENERIC
.endif
INSTKERNNAME?= kernel
KERNSRCDIR?= ${.CURDIR}/sys
KRNLCONFDIR= ${KERNSRCDIR}/${TARGET}/conf
KRNLOBJDIR= ${OBJTOP}${KERNSRCDIR:C,^${.CURDIR},,}
KERNCONFDIR?= ${KRNLCONFDIR}
BUILDKERNELS=
INSTALLKERNEL=
.if defined(NO_INSTALLKERNEL)
# All of the BUILDKERNELS loops start at index 1.
BUILDKERNELS+= dummy
.endif
.for _kernel in ${KERNCONF}
.if !defined(_MKSHOWCONFIG) && exists(${KERNCONFDIR}/${_kernel})
BUILDKERNELS+= ${_kernel}
.if empty(INSTALLKERNEL) && !defined(NO_INSTALLKERNEL)
INSTALLKERNEL= ${_kernel}
.endif
.else
.if make(buildkernel)
.error Missing KERNCONF ${KERNCONFDIR}/${_kernel}
.endif
.endif
.endfor
_cleankernobj_fast_depend_hack: .PHONY
# 20180320 remove stale generated assym.s after renaming to .inc in r331254
@if [ -e "${OBJTOP}/sys/${KERNCONF}/assym.s" ]; then \
echo "Removing stale generated assym files"; \
rm -f ${OBJTOP}/sys/${KERNCONF}/assym.* \
${OBJTOP}/sys/${KERNCONF}/.depend.assym.*; \
fi
# 20191009 r353340 removal of opensolaris_atomic.S (also r353381)
.if ${MACHINE} != i386
.for f in opensolaris_atomic
.for m in opensolaris zfs
@if [ -e "${KRNLOBJDIR}/${KERNCONF}/modules${SRCTOP}/sys/modules/${m}/.depend.${f}.o" ] && \
grep -q ${f}.S "${KRNLOBJDIR}/${KERNCONF}/modules${SRCTOP}/sys/modules/${m}/.depend.${f}.o"; then \
echo "Removing stale dependencies for opensolaris_atomic"; \
rm -f ${KRNLOBJDIR}/${KERNCONF}/modules${SRCTOP}/sys/modules/${m}/.depend.${f}.*; \
fi
.endfor
.endfor
.endif
${WMAKE_TGTS:N_worldtmp:Nbuild${libcompat}} ${.ALLTARGETS:M_*:N_worldtmp}: .MAKE .PHONY
# record kernel(s) build time in seconds
.if make(buildkernel)
_BUILDKERNEL_START!= date '+%s'
.endif
#
# buildkernel
#
# Builds all kernels defined by BUILDKERNELS.
#
buildkernel: .MAKE .PHONY
.if empty(BUILDKERNELS:Ndummy)
@echo "ERROR: Missing kernel configuration file(s) (${KERNCONF})."; \
false
.endif
@echo
.for _kernel in ${BUILDKERNELS:Ndummy}
@echo "--------------------------------------------------------------"
@echo ">>> Kernel build for ${_kernel} started on `LC_ALL=C date`"
@echo "--------------------------------------------------------------"
@echo "===> ${_kernel}"
mkdir -p ${KRNLOBJDIR}
.if !defined(NO_KERNELCONFIG)
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 1: configuring the kernel"
@echo "--------------------------------------------------------------"
cd ${KRNLCONFDIR}; \
PATH=${TMPPATH} \
config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \
-I '${KERNCONFDIR}' -I '${KRNLCONFDIR}' \
'${KERNCONFDIR}/${_kernel}'
.endif
.if !defined(NO_CLEAN) && !defined(NO_KERNELCLEAN)
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.1: cleaning up the object tree"
@echo "--------------------------------------------------------------"
${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} ${CLEANDIR}
.else
${_+_}cd ${.CURDIR}; ${WMAKE} _cleankernobj_fast_depend_hack
.endif
.if !defined(NO_KERNELOBJ)
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.2: rebuilding the object tree"
@echo "--------------------------------------------------------------"
${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} obj
.endif
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 2.3: build tools"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${KTMAKE} kernel-tools
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 3.1: building everything"
@echo "--------------------------------------------------------------"
${_+_}cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} all -DNO_MODULES_OBJ
@echo "--------------------------------------------------------------"
@echo ">>> Kernel build for ${_kernel} completed on `LC_ALL=C date`"
@echo "--------------------------------------------------------------"
.endfor
@seconds=$$(($$(date '+%s') - ${_BUILDKERNEL_START})); \
echo -n ">>> Kernel(s) ${BUILDKERNELS} built in $$seconds seconds, "; \
echo "ncpu: $$(sysctl -n hw.ncpu)${.MAKE.JOBS:S/^/, make -j/}"
@echo "--------------------------------------------------------------"
NO_INSTALLEXTRAKERNELS?= yes
#
# installkernel, etc.
#
# Install the kernel defined by INSTALLKERNEL
#
installkernel installkernel.debug \
reinstallkernel reinstallkernel.debug: _installcheck_kernel .PHONY
.if !defined(NO_INSTALLKERNEL)
.if empty(INSTALLKERNEL)
@echo "ERROR: No kernel \"${KERNCONF}\" to install."; \
false
.endif
@echo "--------------------------------------------------------------"
@echo ">>> Installing kernel ${INSTALLKERNEL} on $$(LC_ALL=C date)"
@echo "--------------------------------------------------------------"
${_+_}cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \
${CROSSENV} PATH=${TMPPATH} \
${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//}
@echo "--------------------------------------------------------------"
@echo ">>> Installing kernel ${INSTALLKERNEL} completed on $$(LC_ALL=C date)"
@echo "--------------------------------------------------------------"
.endif
.if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
.for _kernel in ${BUILDKERNELS:[2..-1]}
@echo "--------------------------------------------------------------"
@echo ">>> Installing kernel ${_kernel} $$(LC_ALL=C date)"
@echo "--------------------------------------------------------------"
${_+_}cd ${KRNLOBJDIR}/${_kernel}; \
${CROSSENV} PATH=${TMPPATH} \
${MAKE} ${IMAKE_INSTALL} KERNEL=${INSTKERNNAME}.${_kernel} ${.TARGET:S/kernel//}
@echo "--------------------------------------------------------------"
@echo ">>> Installing kernel ${_kernel} completed on $$(LC_ALL=C date)"
@echo "--------------------------------------------------------------"
.endfor
.endif
distributekernel distributekernel.debug: .PHONY
.if !defined(NO_INSTALLKERNEL)
.if empty(INSTALLKERNEL)
@echo "ERROR: No kernel \"${KERNCONF}\" to install."; \
false
.endif
mkdir -p ${DESTDIR}/${DISTDIR}
.if defined(NO_ROOT)
@echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.premeta
.endif
${_+_}cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \
${IMAKEENV} ${IMAKE_INSTALL:S/METALOG/kernel.premeta/} \
${IMAKE_MTREE} PATH=${TMPPATH} ${MAKE} KERNEL=${INSTKERNNAME} \
DESTDIR=${INSTALL_DDIR}/kernel \
${.TARGET:S/distributekernel/install/}
.if defined(NO_ROOT)
@sed -e 's|^./kernel|.|' ${DESTDIR}/${DISTDIR}/kernel.premeta > \
${DESTDIR}/${DISTDIR}/kernel.meta
.endif
.endif
.if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
.for _kernel in ${BUILDKERNELS:[2..-1]}
.if defined(NO_ROOT)
@echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta
.endif
${_+_}cd ${KRNLOBJDIR}/${_kernel}; \
${IMAKEENV} ${IMAKE_INSTALL:S/METALOG/kernel.${_kernel}.premeta/} \
${IMAKE_MTREE} PATH=${TMPPATH} ${MAKE} \
KERNEL=${INSTKERNNAME}.${_kernel} \
DESTDIR=${INSTALL_DDIR}/kernel.${_kernel} \
${.TARGET:S/distributekernel/install/}
.if defined(NO_ROOT)
@sed -e "s|^./kernel.${_kernel}|.|" \
${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta > \
${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta
.endif
.endfor
.endif
packagekernel: .PHONY
.if defined(NO_ROOT)
.if !defined(NO_INSTALLKERNEL)
cd ${DESTDIR}/${DISTDIR}/kernel; \
tar cvf - --exclude '*.debug' \
@${DESTDIR}/${DISTDIR}/kernel.meta | \
${XZ_CMD} > ${PACKAGEDIR}/kernel.txz
.endif
.if ${MK_DEBUG_FILES} != "no"
cd ${DESTDIR}/${DISTDIR}/kernel; \
tar cvf - --include '*/*/*.debug' \
@${DESTDIR}/${DISTDIR}/kernel.meta | \
${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel-dbg.txz
.endif
.if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
.for _kernel in ${BUILDKERNELS:[2..-1]}
cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \
tar cvf - --exclude '*.debug' \
@${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta | \
${XZ_CMD} > ${PACKAGEDIR}/kernel.${_kernel}.txz
.if ${MK_DEBUG_FILES} != "no"
cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \
tar cvf - --include '*/*/*.debug' \
@${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta | \
${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}-dbg.txz
.endif
.endfor
.endif
.else
.if !defined(NO_INSTALLKERNEL)
cd ${DESTDIR}/${DISTDIR}/kernel; \
tar cvf - --exclude '*.debug' . | \
${XZ_CMD} > ${PACKAGEDIR}/kernel.txz
.endif
.if ${MK_DEBUG_FILES} != "no"
cd ${DESTDIR}/${DISTDIR}/kernel; \
tar cvf - --include '*/*/*.debug' $$(eval find .) | \
${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel-dbg.txz
.endif
.if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
.for _kernel in ${BUILDKERNELS:[2..-1]}
cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \
tar cvf - --exclude '*.debug' . | \
${XZ_CMD} > ${PACKAGEDIR}/kernel.${_kernel}.txz
.if ${MK_DEBUG_FILES} != "no"
cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \
tar cvf - --include '*/*/*.debug' $$(eval find .) | \
${XZ_CMD} > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}-dbg.txz
.endif
.endfor
.endif
.endif
stagekernel: .PHONY
${_+_}${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} distributekernel
PORTSDIR?= /usr/ports
WSTAGEDIR?= ${OBJTOP}/worldstage
KSTAGEDIR?= ${OBJTOP}/kernelstage
REPODIR?= ${OBJROOT}repo
PKG_FORMAT?= txz
PKGSIGNKEY?= # empty
.ORDER: stage-packages create-packages
.ORDER: create-packages create-world-packages
.ORDER: create-packages create-kernel-packages
.ORDER: create-packages sign-packages
_pkgbootstrap: .PHONY
.if make(*package*) && !exists(${LOCALBASE}/sbin/pkg)
@env ASSUME_ALWAYS_YES=YES pkg bootstrap
.endif
packages: .PHONY
${_+_}${MAKE} -C ${.CURDIR} PKG_VERSION=${PKG_VERSION} real-packages
package-pkg: .PHONY
rm -rf /tmp/ports.${TARGET} || :
env ${WMAKEENV:Q} SRCDIR=${.CURDIR} PORTSDIR=${PORTSDIR} REVISION=${_REVISION} \
PKG_CMD=${PKG_CMD} PKG_VERSION=${PKG_VERSION} REPODIR=${REPODIR} \
WSTAGEDIR=${WSTAGEDIR} \
sh ${.CURDIR}/release/scripts/make-pkg-package.sh
real-packages: stage-packages create-packages sign-packages .PHONY
stage-packages-world: .PHONY
@mkdir -p ${WSTAGEDIR}
${_+_}@cd ${.CURDIR}; \
${MAKE} DESTDIR=${WSTAGEDIR} -DNO_ROOT stageworld
stage-packages-kernel: .PHONY
@mkdir -p ${KSTAGEDIR}
${_+_}@cd ${.CURDIR}; \
${MAKE} DESTDIR=${KSTAGEDIR} -DNO_ROOT stagekernel
stage-packages: .PHONY stage-packages-world stage-packages-kernel
_repodir: .PHONY
@mkdir -p ${REPODIR}
create-packages-world: _pkgbootstrap _repodir .PHONY
${_+_}@cd ${.CURDIR}; \
${MAKE} -f Makefile.inc1 \
DESTDIR=${WSTAGEDIR} \
PKG_VERSION=${PKG_VERSION} create-world-packages
create-packages-kernel: _pkgbootstrap _repodir .PHONY
${_+_}@cd ${.CURDIR}; \
${MAKE} -f Makefile.inc1 \
DESTDIR=${KSTAGEDIR} \
PKG_VERSION=${PKG_VERSION} DISTDIR=kernel \
create-kernel-packages
create-packages: .PHONY create-packages-world create-packages-kernel
create-world-packages: _pkgbootstrap .PHONY
@rm -f ${WSTAGEDIR}/*.plist 2>/dev/null || :
@cd ${WSTAGEDIR} ; \
env -i LC_COLLATE=C sort ${WSTAGEDIR}/${DISTDIR}/METALOG | \
awk -f ${SRCDIR}/release/scripts/mtree-to-plist.awk
@for plist in ${WSTAGEDIR}/*.plist; do \
plist=$${plist##*/} ; \
pkgname=$${plist%.plist} ; \
echo "_PKGS+= $${pkgname}" ; \
done > ${WSTAGEDIR}/packages.mk
${_+_}@cd ${.CURDIR}; \
${MAKE} -f Makefile.inc1 create-world-packages-jobs \
.MAKE.JOB.PREFIX=
.if make(create-world-packages-jobs)
.include "${WSTAGEDIR}/packages.mk"
.endif
.if make(create-world-packages-jobs) || make(create-kernel-packages*)
PKG_ABI!=${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI
.endif
create-world-packages-jobs: .PHONY
.for pkgname in ${_PKGS}
create-world-packages-jobs: create-world-package-${pkgname}
create-world-package-${pkgname}: .PHONY
@sh ${SRCDIR}/release/packages/generate-ucl.sh -o ${pkgname} \
-s ${SRCDIR} -u ${WSTAGEDIR}/${pkgname}.ucl
@awk -F\" ' \
/^name/ { printf("===> Creating %s-", $$2); next } \
/^version/ { print $$2; next } \
' ${WSTAGEDIR}/${pkgname}.ucl
@if [ "${pkgname}" == "runtime" ]; then \
sed -i '' -e "s/%VCS_REVISION%/${VCS_REVISION}/" ${WSTAGEDIR}/${pkgname}.ucl ; \
fi
${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname -o ALLOW_BASE_SHLIBS=yes \
create -f ${PKG_FORMAT} -M ${WSTAGEDIR}/${pkgname}.ucl \
-p ${WSTAGEDIR}/${pkgname}.plist \
-r ${WSTAGEDIR} \
-o ${REPODIR}/${PKG_ABI}/${PKG_VERSION}
.endfor
_default_flavor= -default
.if make(*package*) && exists(${KSTAGEDIR}/kernel.meta)
. if ${MK_DEBUG_FILES} != "no"
_debug=-debug
. endif
create-kernel-packages: .PHONY
. for flavor in "" ${_debug}
create-kernel-packages: create-kernel-packages-flavor${flavor:C,^""$,${_default_flavor},}
create-kernel-packages-flavor${flavor:C,^""$,${_default_flavor},}: _pkgbootstrap .PHONY
@cd ${KSTAGEDIR}/${DISTDIR} ; \
env -i LC_COLLATE=C sort ${KSTAGEDIR}/kernel.meta | \
awk -f ${SRCDIR}/release/scripts/mtree-to-plist.awk \
-v kernel=yes -v _kernconf=${INSTALLKERNEL} ; \
sed -e "s/%VERSION%/${PKG_VERSION}/" \
-e "s/%PKGNAME%/kernel-${INSTALLKERNEL:tl}${flavor}/" \
-e "s/%KERNELDIR%/kernel/" \
-e "s/%COMMENT%/FreeBSD ${INSTALLKERNEL} kernel ${flavor}/" \
-e "s/%DESC%/FreeBSD ${INSTALLKERNEL} kernel ${flavor}/" \
-e "s/ %VCS_REVISION%/${VCS_REVISION}/" \
${SRCDIR}/release/packages/kernel.ucl \
> ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl ; \
awk -F\" ' \
/name/ { printf("===> Creating %s-", $$2); next } \
/version/ {print $$2; next } ' \
${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl ; \
${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname -o ALLOW_BASE_SHLIBS=yes \
create -f ${PKG_FORMAT} \
-M ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl \
-p ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.plist \
-r ${KSTAGEDIR}/${DISTDIR} \
-o ${REPODIR}/${PKG_ABI}/${PKG_VERSION}
. endfor
.endif
.if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
. for _kernel in ${BUILDKERNELS:[2..-1]}
. if exists(${KSTAGEDIR}/kernel.${_kernel}.meta)
. if ${MK_DEBUG_FILES} != "no"
_debug=-debug
. endif
. for flavor in "" ${_debug}
create-kernel-packages: create-kernel-packages-extra-flavor${flavor:C,^""$,${_default_flavor},}-${_kernel}
create-kernel-packages-extra-flavor${flavor:C,^""$,${_default_flavor},}-${_kernel}: _pkgbootstrap .PHONY
@cd ${KSTAGEDIR}/kernel.${_kernel} ; \
env -i LC_COLLATE=C sort ${KSTAGEDIR}/kernel.${_kernel}.meta | \
awk -f ${SRCDIR}/release/scripts/mtree-to-plist.awk \
-v kernel=yes -v _kernconf=${_kernel} ; \
sed -e "s/%VERSION%/${PKG_VERSION}/" \
-e "s/%PKGNAME%/kernel-${_kernel:tl}${flavor}/" \
-e "s/%KERNELDIR%/kernel.${_kernel}/" \
-e "s/%COMMENT%/FreeBSD ${_kernel} kernel ${flavor}/" \
-e "s/%DESC%/FreeBSD ${_kernel} kernel ${flavor}/" \
-e "s/ %VCS_REVISION%/${VCS_REVISION}/" \
${SRCDIR}/release/packages/kernel.ucl \
> ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl ; \
awk -F\" ' \
/name/ { printf("===> Creating %s-", $$2); next } \
/version/ {print $$2; next } ' \
${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl ; \
${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname -o ALLOW_BASE_SHLIBS=yes \
create -f ${PKG_FORMAT} \
-M ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl \
-p ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.plist \
-r ${KSTAGEDIR}/kernel.${_kernel} \
-o ${REPODIR}/${PKG_ABI}/${PKG_VERSION}
. endfor
. endif
. endfor
.endif
sign-packages: _pkgbootstrap .PHONY
printf "version = 2;\npacking_format = \"${PKG_FORMAT}\";\n" > ${WSTAGEDIR}/meta
@[ -L "${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/latest" ] && \
unlink ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/latest ; \
${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname repo \
-m ${WSTAGEDIR}/meta \
-o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} \
${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} \
${PKGSIGNKEY} ; \
cd ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI); \
ln -s ${PKG_VERSION} latest
#
#
# checkworld
#
# Run test suite on installed world.
#
checkworld: .PHONY
@if [ ! -x "${LOCALBASE}/bin/kyua" ]; then \
echo "You need kyua (devel/kyua) to run the test suite." | /usr/bin/fmt; \
exit 1; \
fi
${_+_}PATH="$$PATH:${LOCALBASE}/bin" kyua test -k ${TESTSBASE}/Kyuafile
#
#
# doxygen
#
# Build the API documentation with doxygen
#
doxygen: .PHONY
@if [ ! -x "${LOCALBASE}/bin/doxygen" ]; then \
echo "You need doxygen (devel/doxygen) to generate the API documentation of the kernel." | /usr/bin/fmt; \
exit 1; \
fi
${_+_}cd ${.CURDIR}/tools/kerneldoc/subsys; ${MAKE} obj all
#
# update
#
# Update the source tree(s), by running svn/svnup to update to the
# latest copy.
#
update: .PHONY
.if defined(SVN_UPDATE)
@echo "--------------------------------------------------------------"
@echo ">>> Updating ${.CURDIR} using Subversion"
@echo "--------------------------------------------------------------"
@(cd ${.CURDIR}; ${SVN_CMD} update ${SVNFLAGS})
.endif
#
# ------------------------------------------------------------------------
#
# From here onwards are utility targets used by the 'make world' and
# related targets. If your 'world' breaks, you may like to try to fix
# the problem and manually run the following targets to attempt to
# complete the build. Beware, this is *not* guaranteed to work, you
# need to have a pretty good grip on the current state of the system
# to attempt to manually finish it. If in doubt, 'make world' again.
#
#
# legacy: Build compatibility shims for the next three targets. This is a
# minimal set of tools and shims necessary to compensate for older systems
# which don't have the APIs required by the targets built in bootstrap-tools,
# build-tools or cross-tools.
#
# libnv and libl are both requirements for config(8), which is an unconditional
# bootstrap-tool.
_config_deps= lib/libnv usr.bin/lex/lib
legacy: .PHONY
.if ${BOOTSTRAPPING} < ${MINIMUM_SUPPORTED_OSREL} && ${BOOTSTRAPPING} != 0
@echo "ERROR: Source upgrades from versions prior to ${MINIMUM_SUPPORTED_REL} are not supported."; \
false
.endif
.for _tool in tools/build ${_config_deps}
${_+_}@${ECHODIR} "===> ${_tool} (obj,includes,all,install)"; \
cd ${.CURDIR}/${_tool}; \
if [ -z "${NO_OBJWALK}" ]; then ${MAKE} DIRPRFX=${_tool}/ obj; fi; \
${MAKE} DIRPRFX=${_tool}/ DESTDIR=${WORLDTMP}/legacy includes; \
${MAKE} DIRPRFX=${_tool}/ MK_INCLUDES=no all; \
${MAKE} DIRPRFX=${_tool}/ MK_INCLUDES=no \
DESTDIR=${WORLDTMP}/legacy install
.endfor
#
# bootstrap-tools: Build tools needed for compatibility. These are binaries that
# are built to build other binaries in the system. However, the focus of these
# binaries is usually quite narrow. Bootstrap tools use the host's compiler and
# libraries, augmented by -legacy, in addition to the libraries built during
# bootstrap-tools.
#
_bt= _bootstrap-tools
# We want to run the build with only ${WORLDTMP} in $PATH to ensure we don't
# accidentally run tools that are incompatible but happen to be in $PATH.
# This is especially important when building on Linux/MacOS where many of the
# programs used during the build accept different flags or generate different
# output. On those platforms we only symlink the tools known to be compatible
# (e.g. basic utilities such as mkdir) into ${WORLDTMP} and build all others
# from the FreeBSD sources during the bootstrap-tools stage.
# We want to build without the user's $PATH starting in the bootstrap-tools
# phase so the tools used in that phase (ln, cp, etc) must have already been
# linked to $WORLDTMP. The tools are listed in the _host_tools_to_symlink
# variable in tools/build/Makefile and are linked during the legacy phase.
# Since they could be Linux or MacOS binaries, too we must only use flags that
# are portable across operating systems.
# If BOOTSTRAP_ALL_TOOLS is set we will build all the required tools from the
# current source tree. Otherwise we create a symlink to the version found in
# $PATH during the bootstrap-tools stage.
.if defined(BOOTSTRAP_ALL_TOOLS)
# BOOTSTRAPPING will be set on the command line so we can't override it here.
# Instead set BOOTSTRAPPING_OSRELDATE so that the value 0 is set ${BSARGS}
BOOTSTRAPPING_OSRELDATE:= 0
.endif
.if ${MK_GAMES} != "no"
_strfile= usr.bin/fortune/strfile
.endif
.if ${MK_VT} != "no"
_vtfontcvt= usr.bin/vtfontcvt
.endif
# If we are not building the bootstrap because BOOTSTRAPPING is sufficient
# we symlink the host version to $WORLDTMP instead. By doing this we can also
# detect when a bootstrap tool is being used without the required MK_FOO.
# If you add a new bootstrap tool where we could also use the host version,
# please ensure that you also add a .else case where you add the tool to the
# _bootstrap_tools_links variable.
.if ${BOOTSTRAPPING} < 1000033
_m4= usr.bin/m4
_lex= usr.bin/lex
# Note: lex needs m4 to build but m4 also depends on lex. However, lex can be
# bootstrapped so we build lex first.
${_bt}-usr.bin/m4: ${_bt}-lib/libopenbsd ${_bt}-usr.bin/yacc ${_bt}-${_lex}
_bt_m4_depend=${_bt}-${_m4}
_bt_lex_depend=${_bt}-${_lex} ${_bt_m4_depend}
.else
_bootstrap_tools_links+=m4 lex
.endif
# ELF Tool Chain libraries are needed for ELF tools and dtrace tools.
# r296685 fix cross-endian objcopy
# r310724 fixed PR 215350, a crash in libdwarf with objects built by GCC 6.2.
# r334881 added libdwarf constants used by ctfconvert.
# r338478 fixed a crash in objcopy for mips64el objects
# r339083 libelf: correct mips64el test to use ELF header
# r348347 Add missing powerpc64 relocation support to libdwarf
.if ${BOOTSTRAPPING} < 1300030
_elftoolchain_libs= lib/libelf lib/libdwarf lib/libzstd
${_bt}-lib/libelf: ${_bt_m4_depend}
${_bt}-lib/libdwarf: ${_bt_m4_depend}
.endif
# flua is required to regenerate syscall files. It first appeared during the
# 13.0-CURRENT cycle, thus needs to be built on -older releases and stable
# branches.
.if ${BOOTSTRAPPING} < 1300059
_flua= libexec/flua
.endif
# r245440 mtree -N support added
# r313404 requires sha384.h for libnetbsd, added to libmd in r292782
.if ${BOOTSTRAPPING} < 1100093
_nmtree= lib/libmd \
lib/libnetbsd \
usr.sbin/nmtree
${_bt}-lib/libnetbsd: ${_bt}-lib/libmd
${_bt}-usr.sbin/nmtree: ${_bt}-lib/libnetbsd
.else
_bootstrap_tools_links+=mtree
.endif
# r246097: log addition login.conf.db, passwd, pwd.db, and spwd.db with cat -l
.if ${BOOTSTRAPPING} < 1000027
_cat= bin/cat
.else
_bootstrap_tools_links+=cat
.endif
# r277259 crunchide: Correct 64-bit section header offset
# r281674 crunchide: always include both 32- and 64-bit ELF support
.if ${BOOTSTRAPPING} < 1100078
_crunchide= usr.sbin/crunch/crunchide
.else
_bootstrap_tools_links+=crunchide
.endif
# r285986 crunchen: use STRIPBIN rather than STRIP
# 1100113: Support MK_AUTO_OBJ
# 1200006: META_MODE fixes
.if ${BOOTSTRAPPING} < 1100078 || \
(${MK_AUTO_OBJ} == "yes" && ${BOOTSTRAPPING} < 1100114) || \
(${MK_META_MODE} == "yes" && ${BOOTSTRAPPING} < 1200006)
_crunchgen= usr.sbin/crunch/crunchgen
.else
_bootstrap_tools_links+=crunchgen
.endif
# r296926 -P keymap search path, MFC to stable/10 in r298297
.if ${BOOTSTRAPPING} < 1003501 || \
(${BOOTSTRAPPING} >= 1100000 && ${BOOTSTRAPPING} < 1100103)
_kbdcontrol= usr.sbin/kbdcontrol
.else
_bootstrap_tools_links+=kbdcontrol
.endif
_yacc= lib/liby \
usr.bin/yacc
${_bt}-usr.bin/yacc: ${_bt}-lib/liby
.if ${MK_BSNMP} != "no"
_gensnmptree= usr.sbin/bsnmpd/gensnmptree
.endif
.if ${MK_LOCALES} != "no"
_localedef= usr.bin/localedef
.endif
# We need to build tblgen when we're building clang or lld, either as
# bootstrap tools, or as the part of the normal build.
.if ${MK_CLANG_BOOTSTRAP} != "no" || ${MK_CLANG} != "no" || \
${MK_LLD_BOOTSTRAP} != "no" || ${MK_LLD} != "no"
_clang_tblgen= \
lib/clang/libllvmminimal \
usr.bin/clang/llvm-tblgen \
usr.bin/clang/clang-tblgen \
usr.bin/clang/lldb-tblgen
# XXX: lldb-tblgen is not needed, if top-level MK_LLDB=no
${_bt}-usr.bin/clang/clang-tblgen: ${_bt}-lib/clang/libllvmminimal
${_bt}-usr.bin/clang/llvm-tblgen: ${_bt}-lib/clang/libllvmminimal
${_bt}-usr.bin/clang/lldb-tblgen: ${_bt}-lib/clang/libllvmminimal
.endif
.if ${MK_LOCALES} != "no"
_localedef= usr.bin/localedef
.endif
.if ${MK_KERBEROS} != "no"
_kerberos5_bootstrap_tools= \
kerberos5/tools/make-roken \
kerberos5/lib/libroken \
kerberos5/lib/libvers \
kerberos5/tools/asn1_compile \
kerberos5/tools/slc \
usr.bin/compile_et
.ORDER: ${_kerberos5_bootstrap_tools:C/^/${_bt}-/g}
.for _tool in ${_kerberos5_bootstrap_tools}
${_bt}-${_tool}: ${_bt}-usr.bin/yacc ${_bt_lex_depend}
.endfor
.endif
${_bt}-usr.bin/mandoc: ${_bt}-lib/libopenbsd
# The tools listed in _basic_bootstrap_tools will generally not be
# bootstrapped unless BOOTSTRAP_ALL_TOOL is set. However, when building on a
# Linux or MacOS host the host versions are incompatible so we need to build
# them from the source tree. Usually the link name will be the same as the subdir,
# but some directories such as grep or test install multiple binaries. In that
# case we use the _basic_bootstrap_tools_multilink variable which is a list of
# subdirectory and comma-separated list of files.
_basic_bootstrap_tools_multilink=usr.bin/grep grep,egrep,fgrep
_basic_bootstrap_tools_multilink+=bin/test test,[
# bootstrap tools needed by buildworld:
_basic_bootstrap_tools=usr.bin/awk usr.bin/cut bin/expr usr.bin/gencat \
usr.bin/join usr.bin/mktemp bin/rmdir usr.bin/sed usr.bin/sort \
usr.bin/truncate usr.bin/tsort
# file2c is required for building usr.sbin/config:
_basic_bootstrap_tools+=usr.bin/file2c
# uuencode/uudecode required for share/tabset
_basic_bootstrap_tools+=usr.bin/uuencode usr.bin/uudecode
# xargs is required by mkioctls
_basic_bootstrap_tools+=usr.bin/xargs
# cap_mkdb is required for share/termcap:
_basic_bootstrap_tools+=usr.bin/cap_mkdb
# ldd is required for installcheck (TODO: just always use /usr/bin/ldd instead?)
_basic_bootstrap_tools+=usr.bin/ldd
# services_mkdb/pwd_mkdb are required for installworld:
_basic_bootstrap_tools+=usr.sbin/services_mkdb usr.sbin/pwd_mkdb
# sysctl/chflags are required for installkernel:
_basic_bootstrap_tools+=sbin/sysctl bin/chflags
# mkfifo is used by sys/conf/newvers.sh
_basic_bootstrap_tools+=usr.bin/mkfifo
-.if ${MK_AMD} != "no"
-# unifdef is only used by usr.sbin/amd/libamu/Makefile
-_basic_bootstrap_tools+=usr.bin/unifdef
-.endif
-
.if ${MK_BOOT} != "no"
_basic_bootstrap_tools+=bin/dd
# xz/unxz is used by EFI
_basic_bootstrap_tools_multilink+=usr.bin/xz xz,unxz
# md5 is used by boot/beri (and possibly others)
_basic_bootstrap_tools+=sbin/md5
.if defined(BOOTSTRAP_ALL_TOOLS)
${_bt}-sbin/md5: ${_bt}-lib/libmd
.endif
.endif
.if ${MK_ZONEINFO} != "no"
_basic_bootstrap_tools+=usr.sbin/zic usr.sbin/tzsetup
.endif
.if defined(BOOTSTRAP_ALL_TOOLS)
_other_bootstrap_tools+=${_basic_bootstrap_tools}
.for _subdir _links in ${_basic_bootstrap_tools_multilink}
_other_bootstrap_tools+=${_subdir}
.endfor
${_bt}-usr.bin/awk: ${_bt_lex_depend} ${_bt}-usr.bin/yacc
${_bt}-bin/expr: ${_bt_lex_depend} ${_bt}-usr.bin/yacc
# If we are bootstrapping file2c, we have to build it before config:
${_bt}-usr.sbin/config: ${_bt}-usr.bin/file2c ${_bt_lex_depend}
# Note: no symlink to make/bmake in the !BOOTSTRAP_ALL_TOOLS case here since
# the links to make/bmake make links will have already have been created in the
# `make legacy` step. Not adding a link to make is important on non-FreeBSD
# since "make" will usually point to GNU make there.
_other_bootstrap_tools+=usr.bin/bmake
.else
# All tools in _basic_bootstrap_tools have the same name as the subdirectory
# so we can use :T to get the name of the symlinks that we need to create.
_bootstrap_tools_links+=${_basic_bootstrap_tools:T}
.for _subdir _links in ${_basic_bootstrap_tools_multilink}
_bootstrap_tools_links+=${_links:S/,/ /g}
.endfor
.endif # defined(BOOTSTRAP_ALL_TOOLS)
# Link the tools that we need for building but don't need to bootstrap because
# the host version is known to be compatible into ${WORLDTMP}/legacy
# We do this before building any of the bootstrap tools in case they depend on
# the presence of any of the links (e.g. as m4/lex/awk)
${_bt}-links: .PHONY
.for _tool in ${_bootstrap_tools_links}
${_bt}-link-${_tool}: .PHONY .MAKE
@if [ ! -e "${WORLDTMP}/legacy/bin/${_tool}" ]; then \
source_path=`which ${_tool}`; \
if [ ! -e "$${source_path}" ] ; then \
echo "Cannot find host tool '${_tool}'"; false; \
fi; \
ln -sfnv "$${source_path}" "${WORLDTMP}/legacy/bin/${_tool}"; \
fi
${_bt}-links: ${_bt}-link-${_tool}
.endfor
bootstrap-tools: ${_bt}-links .PHONY
# Please document (add comment) why something is in 'bootstrap-tools'.
# Try to bound the building of the bootstrap-tool to just the
# FreeBSD versions that need the tool built at this stage of the build.
.for _tool in \
${_clang_tblgen} \
${_kerberos5_bootstrap_tools} \
${_strfile} \
usr.bin/dtc \
${_cat} \
${_kbdcontrol} \
${_elftoolchain_libs} \
usr.bin/lorder \
lib/libopenbsd \
usr.bin/mandoc \
usr.bin/rpcgen \
${_yacc} \
${_m4} \
${_lex} \
${_other_bootstrap_tools} \
usr.bin/xinstall \
${_gensnmptree} \
usr.sbin/config \
${_flua} \
${_crunchide} \
${_crunchgen} \
${_nmtree} \
${_vtfontcvt} \
${_localedef}
${_bt}-${_tool}: ${_bt}-links .PHONY .MAKE
${_+_}@${ECHODIR} "===> ${_tool} (obj,all,install)"; \
cd ${.CURDIR}/${_tool}; \
if [ -z "${NO_OBJWALK}" ]; then ${MAKE} DIRPRFX=${_tool}/ obj; fi; \
if [ "${_tool}" = "usr.bin/lex" ]; then \
${MAKE} DIRPRFX=${_tool}/ bootstrap; \
fi; \
${MAKE} DIRPRFX=${_tool}/ all; \
${MAKE} DIRPRFX=${_tool}/ DESTDIR=${WORLDTMP}/legacy install
bootstrap-tools: ${_bt}-${_tool}
.endfor
#
# build-tools: Build special purpose build tools
#
.if !defined(NO_SHARE) && ${MK_SYSCONS} != "no"
_share= share/syscons/scrnmaps
.endif
.if ${MK_RESCUE} != "no"
# rescue includes programs that have build-tools targets
_rescue=rescue/rescue
.endif
.if ${MK_TCSH} != "no"
_tcsh=bin/csh
.endif
.if ${MK_FILE} != "no"
_libmagic=lib/libmagic
.endif
.if ${MK_PMC} != "no" && \
(${TARGET_ARCH} == "aarch64" || ${TARGET_ARCH} == "amd64" || \
${TARGET_ARCH} == "i386")
_jevents=lib/libpmc/pmu-events
.endif
# kernel-toolchain skips _cleanobj, so handle cleaning up previous
# build-tools directories if needed.
.if !defined(NO_CLEAN) && make(kernel-toolchain)
_bt_clean= ${CLEANDIR}
.endif
.for _tool in \
${_tcsh} \
bin/sh \
${LOCAL_TOOL_DIRS} \
${_jevents} \
lib/ncurses/ncurses \
lib/ncurses/ncursesw \
${_rescue} \
${_share} \
usr.bin/awk \
${_libmagic} \
usr.bin/mkesdb_static \
usr.bin/mkcsmapper_static \
usr.bin/vi/catalog
build-tools_${_tool}: .PHONY
${_+_}@${ECHODIR} "===> ${_tool} (${_bt_clean:D${_bt_clean},}obj,build-tools)"; \
cd ${.CURDIR}/${_tool}; \
if [ -n "${_bt_clean}" ]; then ${MAKE} DIRPRFX=${_tool}/ ${_bt_clean}; fi; \
if [ -z "${NO_OBJWALK}" ]; then ${MAKE} DIRPRFX=${_tool}/ obj; fi; \
${MAKE} DIRPRFX=${_tool}/ build-tools
build-tools: build-tools_${_tool}
.endfor
#
# kernel-tools: Build kernel-building tools
#
kernel-tools: .PHONY
mkdir -p ${WORLDTMP}/usr
${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${WORLDTMP}/usr >/dev/null
#
# cross-tools: All the tools needed to build the rest of the system after
# we get done with the earlier stages. It is the last set of tools needed
# to begin building the target binaries.
#
.if ${TARGET_ARCH} != ${MACHINE_ARCH} || ${BUILD_WITH_STRICT_TMPPATH} != 0
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
_btxld= usr.sbin/btxld
.endif
.endif
# Rebuild ctfconvert and ctfmerge to avoid difficult-to-diagnose failures
# resulting from missing bug fixes or ELF Toolchain updates.
.if ${MK_CDDL} != "no"
_dtrace_tools= cddl/lib/libctf cddl/usr.bin/ctfconvert \
cddl/usr.bin/ctfmerge
.endif
# If we're given an XAS, don't build binutils.
.if ${XAS:M/*} == ""
.if ${MK_BINUTILS_BOOTSTRAP} != "no"
_binutils= gnu/usr.bin/binutils
.endif
.if ${MK_ELFTOOLCHAIN_BOOTSTRAP} != "no"
_elftctools= lib/libelftc \
lib/libpe \
usr.bin/objcopy \
usr.bin/nm \
usr.bin/size \
usr.bin/strings
# These are not required by the build, but can be useful for developers who
# cross-build on a FreeBSD 10 host:
_elftctools+= usr.bin/addr2line
.endif
.elif ${TARGET_ARCH} != ${MACHINE_ARCH} && ${MK_ELFTOOLCHAIN_BOOTSTRAP} != "no"
# If cross-building with an external binutils we still need to build strip for
# the target (for at least crunchide).
_elftctools= lib/libelftc \
lib/libpe \
usr.bin/objcopy
.endif
.if ${MK_CLANG_BOOTSTRAP} != "no"
_clang= usr.bin/clang
.endif
.if ${MK_LLD_BOOTSTRAP} != "no"
_lld= usr.bin/clang/lld
.endif
.if ${MK_CLANG_BOOTSTRAP} != "no" || ${MK_LLD_BOOTSTRAP} != "no"
_clang_libs= lib/clang
.endif
.if ${MK_USB} != "no"
_usb_tools= stand/usb/tools
.endif
.if ${BUILD_WITH_STRICT_TMPPATH} != 0 || defined(BOOTSTRAP_ALL_TOOLS)
_ar=usr.bin/ar
.endif
cross-tools: .MAKE .PHONY
.for _tool in \
${LOCAL_XTOOL_DIRS} \
${_ar} \
${_clang_libs} \
${_clang} \
${_lld} \
${_binutils} \
${_elftctools} \
${_dtrace_tools} \
${_btxld} \
${_usb_tools}
${_+_}@${ECHODIR} "===> ${_tool} (obj,all,install)"; \
cd ${.CURDIR}/${_tool}; \
if [ -z "${NO_OBJWALK}" ]; then ${MAKE} DIRPRFX=${_tool}/ obj; fi; \
${MAKE} DIRPRFX=${_tool}/ all; \
${MAKE} DIRPRFX=${_tool}/ DESTDIR=${WORLDTMP} install
.endfor
#
# native-xtools is the current target for qemu-user cross builds of ports
# via poudriere and the imgact_binmisc kernel module.
# This target merely builds a toolchan/sysroot, then builds the tools it wants
# with the options it wants in a special MAKEOBJDIRPREFIX, using the toolchain
# already built. It then installs the static tools to NXBDESTDIR for Poudriere
# to pickup.
#
NXBOBJROOT= ${OBJROOT}${MACHINE}.${MACHINE_ARCH}/nxb/
NXBOBJTOP= ${NXBOBJROOT}${NXB_TARGET}.${NXB_TARGET_ARCH}
NXTP?= /nxb-bin
.if ${NXTP:N/*}
.error NXTP variable should be an absolute path
.endif
NXBDESTDIR?= ${DESTDIR}${NXTP}
# This is the list of tools to be built/installed as static and where
# appropriate to build for the given TARGET.TARGET_ARCH.
NXBDIRS+= \
bin/cat \
bin/chmod \
bin/cp \
${_tcsh} \
bin/echo \
bin/expr \
bin/hostname \
bin/ln \
bin/ls \
bin/mkdir \
bin/mv \
bin/ps \
bin/realpath \
bin/rm \
bin/rmdir \
bin/sh \
bin/sleep \
sbin/md5 \
sbin/sysctl \
usr.bin/addr2line \
usr.bin/ar \
usr.bin/awk \
usr.bin/basename \
usr.bin/bmake \
usr.bin/bzip2 \
usr.bin/cmp \
usr.bin/diff \
usr.bin/dirname \
usr.bin/objcopy \
usr.bin/env \
usr.bin/fetch \
usr.bin/find \
usr.bin/grep \
usr.bin/gzip \
usr.bin/head \
usr.bin/id \
usr.bin/lex \
usr.bin/limits \
usr.bin/lorder \
usr.bin/mandoc \
usr.bin/mktemp \
usr.bin/mt \
usr.bin/nm \
usr.bin/patch \
usr.bin/readelf \
usr.bin/sed \
usr.bin/size \
usr.bin/sort \
usr.bin/strings \
usr.bin/tar \
usr.bin/touch \
usr.bin/tr \
usr.bin/true \
usr.bin/uniq \
usr.bin/unzip \
usr.bin/wc \
usr.bin/xargs \
usr.bin/xinstall \
usr.bin/xz \
usr.bin/yacc \
usr.sbin/chown
SUBDIR_DEPEND_usr.bin/clang= lib/clang
.if ${MK_CLANG} != "no"
NXBDIRS+= lib/clang
NXBDIRS+= usr.bin/clang
.endif
.if ${MK_BINUTILS} != "no"
NXBDIRS+= gnu/usr.bin/binutils
.endif
# XXX: native-xtools passes along ${NXBDIRS} in SUBDIR_OVERRIDE that needs
# to be evaluated after NXBDIRS is set.
.if make(install) && !empty(SUBDIR_OVERRIDE)
SUBDIR= ${SUBDIR_OVERRIDE}
.endif
NXBMAKEARGS+= \
OBJTOP=${NXBOBJTOP:Q} \
OBJROOT=${NXBOBJROOT:Q} \
MAKEOBJDIRPREFIX= \
-DNO_SHARED \
-DNO_CPU_CFLAGS \
-DNO_PIC \
SSP_CFLAGS= \
MK_CASPER=no \
MK_CLANG_EXTRAS=no \
MK_CLANG_FULL=no \
MK_CTF=no \
MK_DEBUG_FILES=no \
MK_GDB=no \
MK_HTML=no \
MK_LLDB=no \
MK_MAN=no \
MK_MAN_UTILS=yes \
MK_OFED=no \
MK_OPENSSH=no \
MK_PROFILE=no \
MK_RETPOLINE=no \
MK_SENDMAIL=no \
MK_SVNLITE=no \
MK_TESTS=no \
MK_WARNS=no \
MK_ZFS=no
.if make(native-xtools*) && \
(!defined(NXB_TARGET) || !defined(NXB_TARGET_ARCH))
.error Missing NXB_TARGET / NXB_TARGET_ARCH
.endif
# For 'toolchain' we want to produce native binaries that themselves generate
# native binaries.
NXBTMAKE= ${NXBMAKEENV} ${MAKE} ${NXBMAKEARGS:N-DNO_PIC:N-DNO_SHARED} \
TARGET=${MACHINE} TARGET_ARCH=${MACHINE_ARCH}
# For 'everything' we want to produce native binaries (hence -target to
# be MACHINE) that themselves generate TARGET.TARGET_ARCH binaries.
# TARGET/TARGET_ARCH are still passed along from user.
#
# Use the toolchain we create as an external toolchain.
.if ${USING_SYSTEM_COMPILER} == "yes" || ${XCC:N${CCACHE_BIN}:M/*}
NXBMAKE+= XCC="${XCC}" \
XCXX="${XCXX}" \
XCPP="${XCPP}"
.else
NXBMAKE+= XCC="${NXBOBJTOP}/tmp/usr/bin/cc" \
XCXX="${NXBOBJTOP}/tmp/usr/bin/c++" \
XCPP="${NXBOBJTOP}/tmp/usr/bin/cpp"
.endif
NXBMAKE+= ${NXBMAKEENV} ${MAKE} -f Makefile.inc1 ${NXBMAKEARGS} \
TARGET=${NXB_TARGET} TARGET_ARCH=${NXB_TARGET_ARCH} \
TARGET_TRIPLE=${MACHINE_TRIPLE:Q}
# NXBDIRS is improperly based on MACHINE rather than NXB_TARGET. Need to
# invoke a sub-make to reevaluate MK_CLANG, etc, for NXBDIRS.
NXBMAKE+= SUBDIR_OVERRIDE='$${NXBDIRS:M*}'
# Need to avoid the -isystem logic when using clang as an external toolchain
# even if the TARGET being built for wants GCC.
NXBMAKE+= WANT_COMPILER_TYPE='$${X_COMPILER_TYPE}'
native-xtools: .PHONY
${_+_}cd ${.CURDIR}; ${NXBTMAKE} _cleanobj
# Build the bootstrap/host/cross tools that produce native binaries
${_+_}cd ${.CURDIR}; ${NXBTMAKE} kernel-toolchain
# Populate includes/libraries sysroot that produce native binaries.
# This is split out from 'toolchain' above mostly so that target LLVM
# libraries have a proper LLVM_DEFAULT_TARGET_TRIPLE without
# polluting the cross-compiler build. The LLVM/GCC libs are skipped
# here to avoid the problem but are kept in 'toolchain' so that
# needed build tools are built.
${_+_}cd ${.CURDIR}; ${NXBTMAKE} _includes MK_CLANG=no
${_+_}cd ${.CURDIR}; ${NXBTMAKE} _libraries MK_CLANG=no
.if !defined(NO_OBJWALK)
${_+_}cd ${.CURDIR}; ${NXBMAKE} _obj
.endif
${_+_}cd ${.CURDIR}; ${NXBMAKE} everything
@echo ">> native-xtools done. Use 'make native-xtools-install' to install to a given DESTDIR"
native-xtools-install: .PHONY
mkdir -p ${NXBDESTDIR}/bin ${NXBDESTDIR}/sbin ${NXBDESTDIR}/usr
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${NXBDESTDIR}/usr >/dev/null
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.include.dist \
-p ${NXBDESTDIR}/usr/include >/dev/null
${_+_}cd ${.CURDIR}; ${NXBMAKE} \
DESTDIR=${NXBDESTDIR} \
-DNO_ROOT \
install
#
# hierarchy - ensure that all the needed directories are present
#
hierarchy hier: .MAKE .PHONY
${_+_}cd ${.CURDIR}/etc; ${HMAKE} distrib-dirs
#
# libraries - build all libraries, and install them under ${DESTDIR}.
#
# The list of libraries with dependents (${_prebuild_libs}) and their
# interdependencies (__L) are built automatically by the
# ${.CURDIR}/tools/make_libdeps.sh script.
#
libraries: .MAKE .PHONY
${_+_}cd ${.CURDIR}; \
${MAKE} -f Makefile.inc1 _prereq_libs; \
${MAKE} -f Makefile.inc1 _startup_libs; \
${MAKE} -f Makefile.inc1 _prebuild_libs; \
${MAKE} -f Makefile.inc1 _generic_libs
#
# static libgcc.a prerequisite for shared libc
#
_prereq_libs= lib/libcompiler_rt
.if ${MK_SSP} != "no"
_prereq_libs+= lib/libssp_nonshared
.endif
# These dependencies are not automatically generated:
#
# lib/csu and lib/libc must be built before
# all shared libraries for ELF.
#
_startup_libs= lib/csu
_startup_libs+= lib/libc
_startup_libs+= lib/libc_nonshared
.if ${MK_LIBCPLUSPLUS} != "no"
_startup_libs+= lib/libcxxrt
.endif
_prereq_libs+= lib/libgcc_eh lib/libgcc_s
_startup_libs+= lib/libgcc_eh lib/libgcc_s
lib/libgcc_s__L: lib/libc__L
lib/libgcc_s__L: lib/libc_nonshared__L
.if ${MK_LIBCPLUSPLUS} != "no"
lib/libcxxrt__L: lib/libgcc_s__L
.endif
_prebuild_libs= ${_kerberos5_lib_libasn1} \
${_kerberos5_lib_libhdb} \
${_kerberos5_lib_libheimbase} \
${_kerberos5_lib_libheimntlm} \
${_libsqlite3} \
${_kerberos5_lib_libheimipcc} \
${_kerberos5_lib_libhx509} ${_kerberos5_lib_libkrb5} \
${_kerberos5_lib_libroken} \
${_kerberos5_lib_libwind} \
lib/libbz2 ${_libcom_err} lib/libcrypt \
lib/libelf lib/libexpat \
lib/libfigpar \
${_lib_libgssapi} \
lib/libkiconv lib/libkvm lib/liblzma lib/libmd lib/libnv \
lib/libzstd \
${_lib_casper} \
lib/ncurses/ncurses lib/ncurses/ncursesw \
lib/libopie lib/libpam/libpam ${_lib_libthr} \
${_lib_libradius} lib/libsbuf lib/libtacplus \
lib/libgeom \
${_cddl_lib_libumem} ${_cddl_lib_libnvpair} \
${_cddl_lib_libuutil} \
${_cddl_lib_libavl} \
${_cddl_lib_libzfs_core} ${_cddl_lib_libzfs} \
${_cddl_lib_libctf} \
lib/libufs \
lib/libutil lib/libpjdlog ${_lib_libypclnt} lib/libz lib/msun \
${_secure_lib_libcrypto} ${_secure_lib_libssl} \
${_lib_libldns} ${_secure_lib_libssh}
.if ${MK_DIALOG} != "no"
_prebuild_libs+= gnu/lib/libdialog
gnu/lib/libdialog__L: lib/msun__L lib/ncurses/ncursesw__L
.endif
.if ${MK_LIBCPLUSPLUS} != "no"
_prebuild_libs+= lib/libc++
.endif
lib/libgeom__L: lib/libexpat__L
lib/libkvm__L: lib/libelf__L
.if ${MK_LIBTHR} != "no"
_lib_libthr= lib/libthr
.endif
.if ${MK_RADIUS_SUPPORT} != "no"
_lib_libradius= lib/libradius
.endif
.if ${MK_OFED} != "no"
_prebuild_libs+= \
lib/ofed/libibverbs \
lib/ofed/libibmad \
lib/ofed/libibumad \
lib/ofed/complib \
lib/ofed/libmlx5
lib/ofed/libibmad__L: lib/ofed/libibumad__L
lib/ofed/complib__L: lib/libthr__L
lib/ofed/libmlx5__L: lib/ofed/libibverbs__L lib/libthr__L
.endif
.if ${MK_CASPER} != "no"
_lib_casper= lib/libcasper
.endif
lib/libpjdlog__L: lib/libutil__L
lib/libcasper__L: lib/libnv__L
lib/liblzma__L: lib/libthr__L
lib/libzstd__L: lib/libthr__L
_generic_libs= ${_cddl_lib} gnu/lib ${_kerberos5_lib} lib ${_secure_lib} usr.bin/lex/lib
.if ${MK_IPFILTER} != "no"
_generic_libs+= sbin/ipf/libipf
.endif
.for _DIR in ${LOCAL_LIB_DIRS}
.if ${_DIR} == ".WAIT" || (empty(_generic_libs:M${_DIR}) && exists(${.CURDIR}/${_DIR}/Makefile))
_generic_libs+= ${_DIR}
.endif
.endfor
lib/libopie__L lib/libtacplus__L: lib/libmd__L
.if ${MK_CDDL} != "no"
_cddl_lib_libumem= cddl/lib/libumem
_cddl_lib_libnvpair= cddl/lib/libnvpair
_cddl_lib_libavl= cddl/lib/libavl
_cddl_lib_libuutil= cddl/lib/libuutil
.if ${MK_ZFS} != "no"
_cddl_lib_libzfs_core= cddl/lib/libzfs_core
_cddl_lib_libzfs= cddl/lib/libzfs
cddl/lib/libzfs_core__L: cddl/lib/libnvpair__L
cddl/lib/libzfs__L: cddl/lib/libzfs_core__L lib/msun__L lib/libutil__L
cddl/lib/libzfs__L: lib/libthr__L lib/libmd__L lib/libz__L cddl/lib/libumem__L
cddl/lib/libzfs__L: cddl/lib/libuutil__L cddl/lib/libavl__L lib/libgeom__L
lib/libbe__L: cddl/lib/libzfs__L
.endif
_cddl_lib_libctf= cddl/lib/libctf
_cddl_lib= cddl/lib
cddl/lib/libctf__L: lib/libz__L
.endif
# cddl/lib/libdtrace requires lib/libproc and lib/librtld_db
_prebuild_libs+= lib/libprocstat lib/libproc lib/librtld_db
lib/libprocstat__L: lib/libelf__L lib/libkvm__L lib/libutil__L
lib/libproc__L: lib/libprocstat__L
lib/librtld_db__L: lib/libprocstat__L
.if ${MK_CRYPT} != "no"
.if ${MK_OPENSSL} != "no"
_secure_lib_libcrypto= secure/lib/libcrypto
_secure_lib_libssl= secure/lib/libssl
lib/libradius__L secure/lib/libssl__L: secure/lib/libcrypto__L
secure/lib/libcrypto__L: lib/libthr__L
.if ${MK_LDNS} != "no"
_lib_libldns= lib/libldns
lib/libldns__L: secure/lib/libssl__L
.endif
.if ${MK_OPENSSH} != "no"
_secure_lib_libssh= secure/lib/libssh
secure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L
.if ${MK_LDNS} != "no"
secure/lib/libssh__L: lib/libldns__L
.endif
.if ${MK_GSSAPI} != "no" && ${MK_KERBEROS_SUPPORT} != "no"
secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \
kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err__L \
lib/libmd__L kerberos5/lib/libroken__L
.endif
.endif
.endif
_secure_lib= secure/lib
.endif
.if ${MK_KERBEROS} != "no"
kerberos5/lib/libasn1__L: lib/libcom_err__L kerberos5/lib/libroken__L
kerberos5/lib/libhdb__L: kerberos5/lib/libasn1__L lib/libcom_err__L \
kerberos5/lib/libkrb5__L kerberos5/lib/libroken__L \
kerberos5/lib/libwind__L lib/libsqlite3__L
kerberos5/lib/libheimntlm__L: secure/lib/libcrypto__L kerberos5/lib/libkrb5__L \
kerberos5/lib/libroken__L lib/libcom_err__L
kerberos5/lib/libhx509__L: kerberos5/lib/libasn1__L lib/libcom_err__L \
secure/lib/libcrypto__L kerberos5/lib/libroken__L kerberos5/lib/libwind__L
kerberos5/lib/libkrb5__L: kerberos5/lib/libasn1__L lib/libcom_err__L \
lib/libcrypt__L secure/lib/libcrypto__L kerberos5/lib/libhx509__L \
kerberos5/lib/libroken__L kerberos5/lib/libwind__L \
kerberos5/lib/libheimbase__L kerberos5/lib/libheimipcc__L
kerberos5/lib/libroken__L: lib/libcrypt__L
kerberos5/lib/libwind__L: kerberos5/lib/libroken__L lib/libcom_err__L
kerberos5/lib/libheimbase__L: lib/libthr__L
kerberos5/lib/libheimipcc__L: kerberos5/lib/libroken__L kerberos5/lib/libheimbase__L lib/libthr__L
.endif
lib/libsqlite3__L: lib/libthr__L
.if ${MK_GSSAPI} != "no"
_lib_libgssapi= lib/libgssapi
.endif
.if ${MK_KERBEROS} != "no"
_kerberos5_lib= kerberos5/lib
_kerberos5_lib_libasn1= kerberos5/lib/libasn1
_kerberos5_lib_libhdb= kerberos5/lib/libhdb
_kerberos5_lib_libheimbase= kerberos5/lib/libheimbase
_kerberos5_lib_libkrb5= kerberos5/lib/libkrb5
_kerberos5_lib_libhx509= kerberos5/lib/libhx509
_kerberos5_lib_libroken= kerberos5/lib/libroken
_kerberos5_lib_libheimntlm= kerberos5/lib/libheimntlm
_libsqlite3= lib/libsqlite3
_kerberos5_lib_libheimipcc= kerberos5/lib/libheimipcc
_kerberos5_lib_libwind= kerberos5/lib/libwind
_libcom_err= lib/libcom_err
.endif
.if ${MK_NIS} != "no"
_lib_libypclnt= lib/libypclnt
.endif
.if ${MK_OPENSSL} == "no"
lib/libradius__L: lib/libmd__L
.endif
lib/libproc__L: \
${_cddl_lib_libctf:D${_cddl_lib_libctf}__L} lib/libelf__L lib/librtld_db__L lib/libutil__L
.if ${MK_CXX} != "no" && ${MK_LIBCPLUSPLUS} != "no"
lib/libproc__L: lib/libcxxrt__L
.endif
.for _lib in ${_prereq_libs}
${_lib}__PL: .PHONY .MAKE
.if !defined(_MKSHOWCONFIG) && exists(${.CURDIR}/${_lib})
${_+_}@${ECHODIR} "===> ${_lib} (obj,all,install)"; \
cd ${.CURDIR}/${_lib}; \
if [ -z "${NO_OBJWALK}" ]; then ${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ obj; fi; \
${MAKE} MK_TESTS=no MK_PROFILE=no -DNO_PIC \
DIRPRFX=${_lib}/ all; \
${MAKE} MK_TESTS=no MK_PROFILE=no -DNO_PIC \
DIRPRFX=${_lib}/ install
.endif
.endfor
.for _lib in ${_startup_libs} ${_prebuild_libs} ${_generic_libs}
${_lib}__L: .PHONY .MAKE
.if !defined(_MKSHOWCONFIG) && exists(${.CURDIR}/${_lib})
${_+_}@${ECHODIR} "===> ${_lib} (obj,all,install)"; \
cd ${.CURDIR}/${_lib}; \
if [ -z "${NO_OBJWALK}" ]; then ${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ obj; fi; \
${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ all; \
${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ install
.endif
.endfor
_prereq_libs: ${_prereq_libs:S/$/__PL/}
_startup_libs: ${_startup_libs:S/$/__L/}
_prebuild_libs: ${_prebuild_libs:S/$/__L/}
_generic_libs: ${_generic_libs:S/$/__L/}
# Enable SUBDIR_PARALLEL when not calling 'make all', unless called from
# 'everything' with _PARALLEL_SUBDIR_OK set. This is because it is unlikely
# that running 'make all' from the top-level, especially with a SUBDIR_OVERRIDE
# or LOCAL_DIRS set, will have a reliable build if SUBDIRs are built in
# parallel. This is safe for the world stage of buildworld though since it has
# already built libraries in a proper order and installed includes into
# WORLDTMP. Special handling is done for SUBDIR ordering for 'install*' to
# avoid trashing a system if it crashes mid-install.
.if !make(all) || defined(_PARALLEL_SUBDIR_OK)
SUBDIR_PARALLEL=
.endif
.include <bsd.subdir.mk>
.if make(check-old) || make(check-old-dirs) || \
make(check-old-files) || make(check-old-libs) || \
make(delete-old) || make(delete-old-dirs) || \
make(delete-old-files) || make(delete-old-libs)
#
# check for / delete old files section
#
.include "ObsoleteFiles.inc"
OLD_LIBS_MESSAGE="Please be sure no application still uses those libraries, \
else you can not start such an application. Consult UPDATING for more \
information regarding how to cope with the removal/revision bump of a \
specific library."
.if !defined(BATCH_DELETE_OLD_FILES)
RM_I=-i
.else
RM_I=-v
.endif
delete-old-files: .PHONY
@echo ">>> Removing old files (only deletes safe to delete libs)"
# Ask for every old file if the user really wants to remove it.
# It's annoying, but better safe than sorry.
# NB: We cannot pass the list of OLD_FILES as a parameter because the
# argument list will get too long. Using .for/.endfor make "loops" will make
# the Makefile parser segfault.
@exec 3<&0; \
cd ${.CURDIR}; \
${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
-V OLD_FILES -V "OLD_FILES:Musr/share/*.gz:R" | xargs -n1 | sort | \
while read file; do \
if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
chflags noschg "${DESTDIR}/$${file}" 2>/dev/null || true; \
rm ${RM_I} "${DESTDIR}/$${file}" <&3; \
fi; \
for ext in debug symbols; do \
if ! [ -e "${DESTDIR}/$${file}" ] && [ -f \
"${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \
rm ${RM_I} "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" \
<&3; \
fi; \
done; \
done
# Remove catpages without corresponding manpages.
@exec 3<&0; \
find ${DESTDIR}/usr/share/man/cat* ! -type d 2>/dev/null | sort | \
sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \
while read catpage; do \
read manpage; \
if [ ! -e "$${manpage}" ]; then \
rm ${RM_I} $${catpage} <&3; \
fi; \
done
@echo ">>> Old files removed"
check-old-files: .PHONY
@echo ">>> Checking for old files"
@cd ${.CURDIR}; \
${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
-V OLD_FILES -V "OLD_FILES:Musr/share/*.gz:R" | xargs -n1 | \
while read file; do \
if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
echo "${DESTDIR}/$${file}"; \
fi; \
for ext in debug symbols; do \
if [ -f "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \
echo "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}"; \
fi; \
done; \
done | sort
# Check for catpages without corresponding manpages.
@find ${DESTDIR}/usr/share/man/cat* ! -type d 2>/dev/null | \
sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \
while read catpage; do \
read manpage; \
if [ ! -e "$${manpage}" ]; then \
echo $${catpage}; \
fi; \
done | sort
delete-old-libs: .PHONY
@echo ">>> Removing old libraries"
@echo "${OLD_LIBS_MESSAGE}" | fmt
@exec 3<&0; \
cd ${.CURDIR}; \
${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
-V OLD_LIBS | xargs -n1 | sort | \
while read file; do \
if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
chflags noschg "${DESTDIR}/$${file}" 2>/dev/null || true; \
rm ${RM_I} "${DESTDIR}/$${file}" <&3; \
fi; \
for ext in debug symbols; do \
if ! [ -e "${DESTDIR}/$${file}" ] && [ -f \
"${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \
rm ${RM_I} "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" \
<&3; \
fi; \
done; \
done
@echo ">>> Old libraries removed"
check-old-libs: .PHONY
@echo ">>> Checking for old libraries"
@cd ${.CURDIR}; \
${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
-V OLD_LIBS | xargs -n1 | \
while read file; do \
if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
echo "${DESTDIR}/$${file}"; \
fi; \
for ext in debug symbols; do \
if [ -f "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}" ]; then \
echo "${DESTDIR}${DEBUGDIR}/$${file}.$${ext}"; \
fi; \
done; \
done | sort
delete-old-dirs: .PHONY
@echo ">>> Removing old directories"
@cd ${.CURDIR}; \
${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
-V OLD_DIRS | xargs -n1 | sort -r | \
while read dir; do \
if [ -d "${DESTDIR}/$${dir}" ]; then \
rmdir -v "${DESTDIR}/$${dir}" || true; \
elif [ -L "${DESTDIR}/$${dir}" ]; then \
echo "${DESTDIR}/$${dir} is a link, please remove everything manually."; \
fi; \
if [ -d "${DESTDIR}${DEBUGDIR}/$${dir}" ]; then \
rmdir -v "${DESTDIR}${DEBUGDIR}/$${dir}" || true; \
elif [ -L "${DESTDIR}${DEBUGDIR}/$${dir}" ]; then \
echo "${DESTDIR}${DEBUGDIR}/$${dir} is a link, please remove everything manually."; \
fi; \
done
@echo ">>> Old directories removed"
check-old-dirs: .PHONY
@echo ">>> Checking for old directories"
@cd ${.CURDIR}; \
${MAKE} -f ${.CURDIR}/Makefile.inc1 ${.MAKEFLAGS} ${.TARGET} \
-V OLD_DIRS | xargs -n1 | sort -r | \
while read dir; do \
if [ -d "${DESTDIR}/$${dir}" ]; then \
echo "${DESTDIR}/$${dir}"; \
elif [ -L "${DESTDIR}/$${dir}" ]; then \
echo "${DESTDIR}/$${dir} is a link, please remove everything manually."; \
fi; \
if [ -d "${DESTDIR}${DEBUGDIR}/$${dir}" ]; then \
echo "${DESTDIR}${DEBUGDIR}/$${dir}"; \
elif [ -L "${DESTDIR}${DEBUGDIR}/$${dir}" ]; then \
echo "${DESTDIR}${DEBUGDIR}/$${dir} is a link, please remove everything manually."; \
fi; \
done
delete-old: delete-old-files delete-old-dirs .PHONY
@echo "To remove old libraries run '${MAKE_CMD} delete-old-libs'."
check-old: check-old-files check-old-libs check-old-dirs .PHONY
@echo "To remove old files and directories run '${MAKE_CMD} delete-old'."
@echo "To remove old libraries run '${MAKE_CMD} delete-old-libs'."
.endif
#
# showconfig - show build configuration.
#
showconfig: .PHONY
@(${MAKE} -n -f ${.CURDIR}/sys/conf/kern.opts.mk -V dummy -dg1 UPDATE_DEPENDFILE=no NO_OBJ=yes; \
${MAKE} -n -f ${.CURDIR}/share/mk/src.opts.mk -V dummy -dg1 UPDATE_DEPENDFILE=no NO_OBJ=yes) 2>&1 | grep ^MK_ | sort -u
.if !empty(KRNLOBJDIR) && !empty(KERNCONF)
DTBOUTPUTPATH= ${KRNLOBJDIR}/${KERNCONF}/
.if !defined(FDT_DTS_FILE) || empty(FDT_DTS_FILE)
.if !defined(_MKSHOWCONFIG) && exists(${KERNCONFDIR}/${KERNCONF})
FDT_DTS_FILE!= awk 'BEGIN {FS="="} /^makeoptions[[:space:]]+FDT_DTS_FILE/ {print $$2}' \
'${KERNCONFDIR}/${KERNCONF}' ; echo
.endif
.endif
.endif
.if !defined(DTBOUTPUTPATH) || !exists(${DTBOUTPUTPATH})
DTBOUTPUTPATH= ${.CURDIR}
.endif
#
# Build 'standalone' Device Tree Blob
#
builddtb: .PHONY
@PATH=${TMPPATH} MACHINE=${TARGET} \
${.CURDIR}/sys/tools/fdt/make_dtb.sh ${.CURDIR}/sys \
"${FDT_DTS_FILE}" ${DTBOUTPUTPATH}
###############
# cleanworld
# In the following, the first 'rm' in a series will usually remove all
# files and directories. If it does not, then there are probably some
# files with file flags set, so this unsets them and tries the 'rm' a
# second time. There are situations where this target will be cleaning
# some directories via more than one method, but that duplication is
# needed to correctly handle all the possible situations. Removing all
# files without file flags set in the first 'rm' instance saves time,
# because 'chflags' will need to operate on fewer files afterwards.
#
# It is expected that BW_CANONICALOBJDIR == the CANONICALOBJDIR as would be
# created by bsd.obj.mk, except that we don't want to .include that file
# in this makefile. We don't do a cleandir walk if MK_AUTO_OBJ is yes
# since it is not possible for files to land in the wrong place.
#
.if make(cleanworld)
BW_CANONICALOBJDIR:=${OBJTOP}/
.elif make(cleanuniverse)
BW_CANONICALOBJDIR:=${OBJROOT}
.if ${MK_UNIFIED_OBJDIR} == "no"
.error ${.TARGETS} only supported with WITH_UNIFIED_OBJDIR enabled.
.endif
.endif
cleanworld cleanuniverse: .PHONY
.if !empty(BW_CANONICALOBJDIR) && exists(${BW_CANONICALOBJDIR}) && \
${.CURDIR:tA} != ${BW_CANONICALOBJDIR:tA}
-rm -rf ${BW_CANONICALOBJDIR}*
-chflags -R 0 ${BW_CANONICALOBJDIR}
rm -rf ${BW_CANONICALOBJDIR}*
.endif
.if make(cleanworld) && ${MK_AUTO_OBJ} == "no" && \
(empty(BW_CANONICALOBJDIR) || ${.CURDIR:tA} == ${BW_CANONICALOBJDIR:tA})
.if ${.CURDIR} == ${.OBJDIR} || ${.CURDIR}/obj == ${.OBJDIR}
# To be safe in this case, fall back to a 'make cleandir'
${_+_}@cd ${.CURDIR}; ${MAKE} cleandir
.endif
.endif
.if ${TARGET} == ${MACHINE} && ${TARGET_ARCH} == ${MACHINE_ARCH}
XDEV_CPUTYPE?=${CPUTYPE}
.else
XDEV_CPUTYPE?=${TARGET_CPUTYPE}
.endif
NOFUN=-DNO_FSCHG MK_HTML=no -DNO_LINT \
MK_MAN=no MK_NLS=no MK_PROFILE=no \
MK_KERBEROS=no MK_RESCUE=no MK_TESTS=no MK_WARNS=no \
TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
CPUTYPE=${XDEV_CPUTYPE}
XDDIR=${TARGET_ARCH}-freebsd
XDTP?=/usr/${XDDIR}
.if ${XDTP:N/*}
.error XDTP variable should be an absolute path
.endif
CDBOBJROOT= ${OBJROOT}${MACHINE}.${MACHINE_ARCH}/xdev/
CDBOBJTOP= ${CDBOBJROOT}${XDDIR}
CDBENV= \
INSTALL="sh ${.CURDIR}/tools/install.sh"
CDENV= ${CDBENV} \
TOOLS_PREFIX=${XDTP}
CDMAKEARGS= \
OBJTOP=${CDBOBJTOP:Q} \
OBJROOT=${CDBOBJROOT:Q}
CD2MAKEARGS= ${CDMAKEARGS}
.if ${WANT_COMPILER_TYPE} == gcc || \
(defined(X_COMPILER_TYPE) && ${X_COMPILER_TYPE} == gcc)
# GCC requires -isystem and -L when using a cross-compiler. --sysroot
# won't set header path and -L is used to ensure the base library path
# is added before the port PREFIX library path.
CD2CFLAGS+= -isystem ${XDDESTDIR}/usr/include -L${XDDESTDIR}/usr/lib
# GCC requires -B to find /usr/lib/crti.o when using a cross-compiler
# combined with --sysroot.
CD2CFLAGS+= -B${XDDESTDIR}/usr/lib
# Force using libc++ for external GCC.
.if defined(X_COMPILER_TYPE) && \
${X_COMPILER_TYPE} == gcc && ${X_COMPILER_VERSION} >= 40800
CD2CXXFLAGS+= -isystem ${XDDESTDIR}/usr/include/c++/v1 -std=c++11 \
-nostdinc++
.endif
.endif
CD2CFLAGS+= --sysroot=${XDDESTDIR}/
CD2ENV=${CDENV} CC="${CC} ${CD2CFLAGS}" CXX="${CXX} ${CD2CXXFLAGS} ${CD2CFLAGS}" \
CPP="${CPP} ${CD2CFLAGS}" \
MACHINE=${TARGET} MACHINE_ARCH=${TARGET_ARCH}
CDTMP= ${OBJTOP}/${XDDIR}/tmp
CDMAKE=${CDENV} PATH=${CDTMP}/usr/bin:${PATH} ${MAKE} ${CDMAKEARGS} ${NOFUN}
CD2MAKE=${CD2ENV} PATH=${CDTMP}/usr/bin:${XDDESTDIR}/usr/bin:${PATH} \
${MAKE} ${CD2MAKEARGS} ${NOFUN}
.if ${MK_META_MODE} != "no"
# Don't rebuild build-tools targets during normal build.
CD2MAKE+= BUILD_TOOLS_META=.NOMETA
.endif
XDDESTDIR=${DESTDIR}${XDTP}
.ORDER: xdev-build xdev-install xdev-links
xdev: xdev-build xdev-install .PHONY
.ORDER: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools
xdev-build: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools .PHONY
_xb-worldtmp: .PHONY
mkdir -p ${CDTMP}/usr
${WORLDTMP_MTREE} -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${CDTMP}/usr >/dev/null
_xb-bootstrap-tools: .PHONY
.for _tool in \
${_clang_tblgen} \
${_yacc}
${_+_}@${ECHODIR} "===> ${_tool} (obj,all,install)"; \
cd ${.CURDIR}/${_tool}; \
if [ -z "${NO_OBJWALK}" ]; then ${CDMAKE} DIRPRFX=${_tool}/ obj; fi; \
${CDMAKE} DIRPRFX=${_tool}/ all; \
${CDMAKE} DIRPRFX=${_tool}/ DESTDIR=${CDTMP} install
.endfor
_xb-build-tools: .PHONY
${_+_}@cd ${.CURDIR}; \
${CDBENV} ${MAKE} ${CDMAKEARGS} -f Makefile.inc1 ${NOFUN} build-tools
XDEVDIRS= \
${_clang_libs} \
${_lld} \
${_binutils} \
${_elftctools} \
usr.bin/ar \
${_clang}
_xb-cross-tools: .PHONY
.for _tool in ${XDEVDIRS}
${_+_}@${ECHODIR} "===> xdev ${_tool} (obj,all)"; \
cd ${.CURDIR}/${_tool}; \
if [ -z "${NO_OBJWALK}" ]; then ${CDMAKE} DIRPRFX=${_tool}/ obj; fi; \
${CDMAKE} DIRPRFX=${_tool}/ all
.endfor
_xi-mtree: .PHONY
${_+_}@${ECHODIR} "mtree populating ${XDDESTDIR}"
mkdir -p ${XDDESTDIR}
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.root.dist \
-p ${XDDESTDIR} >/dev/null
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
-p ${XDDESTDIR}/usr >/dev/null
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.include.dist \
-p ${XDDESTDIR}/usr/include >/dev/null
.if defined(_LIBCOMPAT)
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.lib${libcompat}.dist \
-p ${XDDESTDIR}/usr >/dev/null
.endif
.if ${MK_TESTS} != "no"
mkdir -p ${XDDESTDIR}${TESTSBASE}
${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.tests.dist \
-p ${XDDESTDIR}${TESTSBASE} >/dev/null
.endif
.ORDER: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries
xdev-install: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries .PHONY
_xi-cross-tools: .PHONY
@echo "_xi-cross-tools"
.for _tool in ${XDEVDIRS}
${_+_}@${ECHODIR} "===> xdev ${_tool} (install)"; \
cd ${.CURDIR}/${_tool}; \
${CDMAKE} DIRPRFX=${_tool}/ install DESTDIR=${XDDESTDIR}
.endfor
_xi-includes: .PHONY
.if !defined(NO_OBJWALK)
${_+_}cd ${.CURDIR}; ${CD2MAKE} -f Makefile.inc1 _obj \
DESTDIR=${XDDESTDIR}
.endif
${_+_}cd ${.CURDIR}; ${CD2MAKE} -f Makefile.inc1 includes \
DESTDIR=${XDDESTDIR}
_xi-libraries: .PHONY
${_+_}cd ${.CURDIR}; ${CD2MAKE} -f Makefile.inc1 libraries \
DESTDIR=${XDDESTDIR}
xdev-links: .PHONY
${_+_}cd ${XDDESTDIR}/usr/bin; \
mkdir -p ../../../../usr/bin; \
for i in *; do \
ln -sf ../../${XDTP}/usr/bin/$$i \
../../../../usr/bin/${XDDIR}-$$i; \
ln -sf ../../${XDTP}/usr/bin/$$i \
../../../../usr/bin/${XDDIR}${_REVISION}-$$i; \
done
diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index f49b799273fe..8f3c7859918c 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -1,10568 +1,10590 @@
#
# $FreeBSD$
#
# This file lists old files (OLD_FILES), libraries (OLD_LIBS) and
# directories (OLD_DIRS) which should get removed at an update. Recently
# removed entries first (with the date as a comment). Dynamic libraries are
# special cased (OLD_LIBS). Static libraries or the generic links to
# the dynamic libraries (lib*.so) should (if you don't know why to make an
# exception, make this a "must") be viewed as normal files (OLD_FILES).
#
# In case of a complete directory hierarchy the sorting is in depth first
# order.
#
# Before you commit changes to this file please check if any entries in
# tools/build/mk/OptionalObsoleteFiles.inc can be removed. The following
# command tells which files are listed more than once regardless of some
# architecture specific conditionals, so you can not blindly trust the
# output:
# ( grep '+=' /usr/src/ObsoleteFiles.inc | sort -u ; \
# grep '+=' /usr/src/tools/build/mk/OptionalObsoleteFiles.inc | sort -u) | \
# sort | uniq -d
#
# To find regular duplicates not dependent on optional components, you can
# also use something that will not give you false positives, e.g.:
# for t in `make -V TARGETS universe`; do
# __MAKE_CONF=/dev/null make -f Makefile.inc1 TARGET=$t \
# -V OLD_FILES -V OLD_LIBS -V OLD_DIRS check-old | \
# xargs -n1 | sort | uniq -d;
# done
#
# For optional components, you can use the following to see if some entries
# in OptionalObsoleteFiles.inc have been obsoleted by ObsoleteFiles.inc
# for o in tools/build/options/WITH*; do
# __MAKE_CONF=/dev/null make -f Makefile.inc1 -D${o##*/} \
# -V OLD_FILES -V OLD_LIBS -V OLD_DIRS check-old | \
# xargs -n1 | sort | uniq -d;
# done
+# 20200309: amd(8) retired
+OLD_FILES+=etc/amd.map
+OLD_FILES+=etc/newsyslog.conf.d/amd.conf
+OLD_FILES+=etc/rc.d/amd
+OLD_FILES+=usr/bin/pawd
+OLD_FILES+=usr/sbin/amd
+OLD_FILES+=usr/sbin/amq
+OLD_FILES+=usr/sbin/fixmount
+OLD_FILES+=usr/sbin/fsinfo
+OLD_FILES+=usr/sbin/hlfsd
+OLD_FILES+=usr/sbin/mk-amd-map
+OLD_FILES+=usr/sbin/wire-test
+OLD_FILES+=usr/share/examples/etc/amd.map
+OLD_FILES+=usr/share/man/man1/pawd.1.gz
+OLD_FILES+=usr/share/man/man5/amd.conf.5.gz
+OLD_FILES+=usr/share/man/man8/amd.8.gz
+OLD_FILES+=usr/share/man/man8/amq.8.gz
+OLD_FILES+=usr/share/man/man8/fixmount.8.gz
+OLD_FILES+=usr/share/man/man8/fsinfo.8.gz
+OLD_FILES+=usr/share/man/man8/hlfsd.8.gz
+OLD_FILES+=usr/share/man/man8/mk-amd-map.8.gz
+OLD_FILES+=usr/share/man/man8/wire-test.8.gz
# 20200301: bktr removed
OLD_DIRS+=usr/include/dev/bktr
OLD_FILES+=usr/include/dev/bktr/ioctl_bktr.h
OLD_FILES+=usr/include/dev/bktr/ioctl_bt848.h
OLD_FILES+=usr/include/dev/bktr/ioctl_meteor.h
.if ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/include/machine/ioctl_bktr.h
OLD_FILES+=usr/include/machine/ioctl_meteor.h
.endif
OLD_FILES+=usr/share/man/man4/bktr.4.gz
# 20200229: GCC 4.2.1 removed
.if !defined(WITH_PORT_BASE_GCC)
OLD_FILES+=usr/bin/g++
OLD_FILES+=usr/bin/gcc
OLD_FILES+=usr/share/man/man1/g++.1.gz
OLD_FILES+=usr/share/man/man1/gcc.1.gz
.endif
OLD_FILES+=usr/bin/gcpp
OLD_FILES+=usr/bin/gperf
OLD_FILES+=usr/include/c++/4.2/algorithm
OLD_FILES+=usr/include/c++/4.2/backward/algo.h
OLD_FILES+=usr/include/c++/4.2/backward/algobase.h
OLD_FILES+=usr/include/c++/4.2/backward/alloc.h
OLD_FILES+=usr/include/c++/4.2/backward/backward_warning.h
OLD_FILES+=usr/include/c++/4.2/backward/bvector.h
OLD_FILES+=usr/include/c++/4.2/backward/complex.h
OLD_FILES+=usr/include/c++/4.2/backward/defalloc.h
OLD_FILES+=usr/include/c++/4.2/backward/deque.h
OLD_FILES+=usr/include/c++/4.2/backward/fstream.h
OLD_FILES+=usr/include/c++/4.2/backward/function.h
OLD_FILES+=usr/include/c++/4.2/backward/hash_map.h
OLD_FILES+=usr/include/c++/4.2/backward/hash_set.h
OLD_FILES+=usr/include/c++/4.2/backward/hashtable.h
OLD_FILES+=usr/include/c++/4.2/backward/heap.h
OLD_FILES+=usr/include/c++/4.2/backward/iomanip.h
OLD_FILES+=usr/include/c++/4.2/backward/iostream.h
OLD_FILES+=usr/include/c++/4.2/backward/istream.h
OLD_FILES+=usr/include/c++/4.2/backward/iterator.h
OLD_FILES+=usr/include/c++/4.2/backward/list.h
OLD_FILES+=usr/include/c++/4.2/backward/map.h
OLD_FILES+=usr/include/c++/4.2/backward/multimap.h
OLD_FILES+=usr/include/c++/4.2/backward/multiset.h
OLD_FILES+=usr/include/c++/4.2/backward/new.h
OLD_FILES+=usr/include/c++/4.2/backward/ostream.h
OLD_FILES+=usr/include/c++/4.2/backward/pair.h
OLD_FILES+=usr/include/c++/4.2/backward/queue.h
OLD_FILES+=usr/include/c++/4.2/backward/rope.h
OLD_FILES+=usr/include/c++/4.2/backward/set.h
OLD_FILES+=usr/include/c++/4.2/backward/slist.h
OLD_FILES+=usr/include/c++/4.2/backward/stack.h
OLD_FILES+=usr/include/c++/4.2/backward/stream.h
OLD_FILES+=usr/include/c++/4.2/backward/streambuf.h
OLD_FILES+=usr/include/c++/4.2/backward/strstream
OLD_FILES+=usr/include/c++/4.2/backward/tempbuf.h
OLD_FILES+=usr/include/c++/4.2/backward/tree.h
OLD_FILES+=usr/include/c++/4.2/backward/vector.h
OLD_FILES+=usr/include/c++/4.2/bits/allocator.h
OLD_FILES+=usr/include/c++/4.2/bits/atomic_word.h
OLD_FILES+=usr/include/c++/4.2/bits/basic_file.h
OLD_FILES+=usr/include/c++/4.2/bits/basic_ios.h
OLD_FILES+=usr/include/c++/4.2/bits/basic_ios.tcc
OLD_FILES+=usr/include/c++/4.2/bits/basic_string.h
OLD_FILES+=usr/include/c++/4.2/bits/basic_string.tcc
OLD_FILES+=usr/include/c++/4.2/bits/boost_concept_check.h
OLD_FILES+=usr/include/c++/4.2/bits/c++allocator.h
OLD_FILES+=usr/include/c++/4.2/bits/c++config.h
OLD_FILES+=usr/include/c++/4.2/bits/c++io.h
OLD_FILES+=usr/include/c++/4.2/bits/c++locale.h
OLD_FILES+=usr/include/c++/4.2/bits/c++locale_internal.h
OLD_FILES+=usr/include/c++/4.2/bits/char_traits.h
OLD_FILES+=usr/include/c++/4.2/bits/cmath.tcc
OLD_FILES+=usr/include/c++/4.2/bits/codecvt.h
OLD_FILES+=usr/include/c++/4.2/bits/compatibility.h
OLD_FILES+=usr/include/c++/4.2/bits/concept_check.h
OLD_FILES+=usr/include/c++/4.2/bits/cpp_type_traits.h
OLD_FILES+=usr/include/c++/4.2/bits/cpu_defines.h
OLD_FILES+=usr/include/c++/4.2/bits/ctype_base.h
OLD_FILES+=usr/include/c++/4.2/bits/ctype_inline.h
OLD_FILES+=usr/include/c++/4.2/bits/ctype_noninline.h
OLD_FILES+=usr/include/c++/4.2/bits/cxxabi_tweaks.h
OLD_FILES+=usr/include/c++/4.2/bits/deque.tcc
OLD_FILES+=usr/include/c++/4.2/bits/fstream.tcc
OLD_FILES+=usr/include/c++/4.2/bits/functexcept.h
OLD_FILES+=usr/include/c++/4.2/bits/gslice.h
OLD_FILES+=usr/include/c++/4.2/bits/gslice_array.h
OLD_FILES+=usr/include/c++/4.2/bits/gthr-default.h
OLD_FILES+=usr/include/c++/4.2/bits/gthr-posix.h
OLD_FILES+=usr/include/c++/4.2/bits/gthr-single.h
OLD_FILES+=usr/include/c++/4.2/bits/gthr-tpf.h
OLD_FILES+=usr/include/c++/4.2/bits/gthr.h
OLD_FILES+=usr/include/c++/4.2/bits/indirect_array.h
OLD_FILES+=usr/include/c++/4.2/bits/ios_base.h
OLD_FILES+=usr/include/c++/4.2/bits/istream.tcc
OLD_FILES+=usr/include/c++/4.2/bits/list.tcc
OLD_FILES+=usr/include/c++/4.2/bits/locale_classes.h
OLD_FILES+=usr/include/c++/4.2/bits/locale_facets.h
OLD_FILES+=usr/include/c++/4.2/bits/locale_facets.tcc
OLD_FILES+=usr/include/c++/4.2/bits/localefwd.h
OLD_FILES+=usr/include/c++/4.2/bits/mask_array.h
OLD_FILES+=usr/include/c++/4.2/bits/messages_members.h
OLD_FILES+=usr/include/c++/4.2/bits/os_defines.h
OLD_FILES+=usr/include/c++/4.2/bits/ostream.tcc
OLD_FILES+=usr/include/c++/4.2/bits/ostream_insert.h
OLD_FILES+=usr/include/c++/4.2/bits/postypes.h
OLD_FILES+=usr/include/c++/4.2/bits/slice_array.h
OLD_FILES+=usr/include/c++/4.2/bits/sstream.tcc
OLD_FILES+=usr/include/c++/4.2/bits/stl_algo.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_algobase.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_bvector.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_construct.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_deque.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_function.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_heap.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_iterator.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_iterator_base_funcs.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_iterator_base_types.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_list.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_map.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_multimap.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_multiset.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_numeric.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_pair.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_queue.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_raw_storage_iter.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_relops.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_set.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_stack.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_tempbuf.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_tree.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_uninitialized.h
OLD_FILES+=usr/include/c++/4.2/bits/stl_vector.h
OLD_FILES+=usr/include/c++/4.2/bits/stream_iterator.h
OLD_FILES+=usr/include/c++/4.2/bits/streambuf.tcc
OLD_FILES+=usr/include/c++/4.2/bits/streambuf_iterator.h
OLD_FILES+=usr/include/c++/4.2/bits/stringfwd.h
OLD_FILES+=usr/include/c++/4.2/bits/time_members.h
OLD_FILES+=usr/include/c++/4.2/bits/valarray_after.h
OLD_FILES+=usr/include/c++/4.2/bits/valarray_array.h
OLD_FILES+=usr/include/c++/4.2/bits/valarray_array.tcc
OLD_FILES+=usr/include/c++/4.2/bits/valarray_before.h
OLD_FILES+=usr/include/c++/4.2/bits/vector.tcc
OLD_FILES+=usr/include/c++/4.2/bitset
OLD_FILES+=usr/include/c++/4.2/cassert
OLD_FILES+=usr/include/c++/4.2/cctype
OLD_FILES+=usr/include/c++/4.2/cerrno
OLD_FILES+=usr/include/c++/4.2/cfloat
OLD_FILES+=usr/include/c++/4.2/ciso646
OLD_FILES+=usr/include/c++/4.2/climits
OLD_FILES+=usr/include/c++/4.2/clocale
OLD_FILES+=usr/include/c++/4.2/cmath
OLD_FILES+=usr/include/c++/4.2/complex
OLD_FILES+=usr/include/c++/4.2/csetjmp
OLD_FILES+=usr/include/c++/4.2/csignal
OLD_FILES+=usr/include/c++/4.2/cstdarg
OLD_FILES+=usr/include/c++/4.2/cstddef
OLD_FILES+=usr/include/c++/4.2/cstdio
OLD_FILES+=usr/include/c++/4.2/cstdlib
OLD_FILES+=usr/include/c++/4.2/cstring
OLD_FILES+=usr/include/c++/4.2/ctime
OLD_FILES+=usr/include/c++/4.2/cwchar
OLD_FILES+=usr/include/c++/4.2/cwctype
OLD_FILES+=usr/include/c++/4.2/cxxabi.h
OLD_FILES+=usr/include/c++/4.2/debug/bitset
OLD_FILES+=usr/include/c++/4.2/debug/debug.h
OLD_FILES+=usr/include/c++/4.2/debug/deque
OLD_FILES+=usr/include/c++/4.2/debug/formatter.h
OLD_FILES+=usr/include/c++/4.2/debug/functions.h
OLD_FILES+=usr/include/c++/4.2/debug/hash_map
OLD_FILES+=usr/include/c++/4.2/debug/hash_map.h
OLD_FILES+=usr/include/c++/4.2/debug/hash_multimap.h
OLD_FILES+=usr/include/c++/4.2/debug/hash_multiset.h
OLD_FILES+=usr/include/c++/4.2/debug/hash_set
OLD_FILES+=usr/include/c++/4.2/debug/hash_set.h
OLD_FILES+=usr/include/c++/4.2/debug/list
OLD_FILES+=usr/include/c++/4.2/debug/macros.h
OLD_FILES+=usr/include/c++/4.2/debug/map
OLD_FILES+=usr/include/c++/4.2/debug/map.h
OLD_FILES+=usr/include/c++/4.2/debug/multimap.h
OLD_FILES+=usr/include/c++/4.2/debug/multiset.h
OLD_FILES+=usr/include/c++/4.2/debug/safe_base.h
OLD_FILES+=usr/include/c++/4.2/debug/safe_iterator.h
OLD_FILES+=usr/include/c++/4.2/debug/safe_iterator.tcc
OLD_FILES+=usr/include/c++/4.2/debug/safe_sequence.h
OLD_FILES+=usr/include/c++/4.2/debug/set
OLD_FILES+=usr/include/c++/4.2/debug/set.h
OLD_FILES+=usr/include/c++/4.2/debug/string
OLD_FILES+=usr/include/c++/4.2/debug/vector
OLD_FILES+=usr/include/c++/4.2/deque
OLD_FILES+=usr/include/c++/4.2/exception
OLD_FILES+=usr/include/c++/4.2/exception_defines.h
OLD_FILES+=usr/include/c++/4.2/ext/algorithm
OLD_FILES+=usr/include/c++/4.2/ext/array_allocator.h
OLD_FILES+=usr/include/c++/4.2/ext/atomicity.h
OLD_FILES+=usr/include/c++/4.2/ext/bitmap_allocator.h
OLD_FILES+=usr/include/c++/4.2/ext/codecvt_specializations.h
OLD_FILES+=usr/include/c++/4.2/ext/concurrence.h
OLD_FILES+=usr/include/c++/4.2/ext/debug_allocator.h
OLD_FILES+=usr/include/c++/4.2/ext/functional
OLD_FILES+=usr/include/c++/4.2/ext/hash_fun.h
OLD_FILES+=usr/include/c++/4.2/ext/hash_map
OLD_FILES+=usr/include/c++/4.2/ext/hash_set
OLD_FILES+=usr/include/c++/4.2/ext/hashtable.h
OLD_FILES+=usr/include/c++/4.2/ext/iterator
OLD_FILES+=usr/include/c++/4.2/ext/malloc_allocator.h
OLD_FILES+=usr/include/c++/4.2/ext/memory
OLD_FILES+=usr/include/c++/4.2/ext/mt_allocator.h
OLD_FILES+=usr/include/c++/4.2/ext/new_allocator.h
OLD_FILES+=usr/include/c++/4.2/ext/numeric
OLD_FILES+=usr/include/c++/4.2/ext/numeric_traits.h
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/assoc_container.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/basic_tree_policy/traits.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/basic_types.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/bin_search_tree_/traits.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/cond_dealtor.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/container_base_dispatch.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/map_debug_base.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/ov_tree_map_/traits.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/child_iterator.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/head.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/internal_node.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/leaf.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/node_base.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/node_iterators.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/point_iterators.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/traits.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/node.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rb_tree_map_/traits.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/node.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/splay_tree_/traits.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/standard_policies.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/tree_trace_base.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/type_utils.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/types_traits.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/unordered_iterator/iterator.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/exception.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/hash_policy.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/list_update_policy.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/priority_queue.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/tag_and_trait.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/tree_policy.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pb_ds/trie_policy.hpp
OLD_FILES+=usr/include/c++/4.2/ext/pod_char_traits.h
OLD_FILES+=usr/include/c++/4.2/ext/pool_allocator.h
OLD_FILES+=usr/include/c++/4.2/ext/rb_tree
OLD_FILES+=usr/include/c++/4.2/ext/rc_string_base.h
OLD_FILES+=usr/include/c++/4.2/ext/rope
OLD_FILES+=usr/include/c++/4.2/ext/ropeimpl.h
OLD_FILES+=usr/include/c++/4.2/ext/slist
OLD_FILES+=usr/include/c++/4.2/ext/sso_string_base.h
OLD_FILES+=usr/include/c++/4.2/ext/stdio_filebuf.h
OLD_FILES+=usr/include/c++/4.2/ext/stdio_sync_filebuf.h
OLD_FILES+=usr/include/c++/4.2/ext/throw_allocator.h
OLD_FILES+=usr/include/c++/4.2/ext/type_traits.h
OLD_FILES+=usr/include/c++/4.2/ext/typelist.h
OLD_FILES+=usr/include/c++/4.2/ext/vstring.h
OLD_FILES+=usr/include/c++/4.2/ext/vstring.tcc
OLD_FILES+=usr/include/c++/4.2/ext/vstring_fwd.h
OLD_FILES+=usr/include/c++/4.2/ext/vstring_util.h
OLD_FILES+=usr/include/c++/4.2/fstream
OLD_FILES+=usr/include/c++/4.2/functional
OLD_FILES+=usr/include/c++/4.2/iomanip
OLD_FILES+=usr/include/c++/4.2/ios
OLD_FILES+=usr/include/c++/4.2/iosfwd
OLD_FILES+=usr/include/c++/4.2/iostream
OLD_FILES+=usr/include/c++/4.2/istream
OLD_FILES+=usr/include/c++/4.2/iterator
OLD_FILES+=usr/include/c++/4.2/limits
OLD_FILES+=usr/include/c++/4.2/list
OLD_FILES+=usr/include/c++/4.2/locale
OLD_FILES+=usr/include/c++/4.2/map
OLD_FILES+=usr/include/c++/4.2/memory
OLD_FILES+=usr/include/c++/4.2/new
OLD_FILES+=usr/include/c++/4.2/numeric
OLD_FILES+=usr/include/c++/4.2/ostream
OLD_FILES+=usr/include/c++/4.2/queue
OLD_FILES+=usr/include/c++/4.2/set
OLD_FILES+=usr/include/c++/4.2/sstream
OLD_FILES+=usr/include/c++/4.2/stack
OLD_FILES+=usr/include/c++/4.2/stdexcept
OLD_FILES+=usr/include/c++/4.2/streambuf
OLD_FILES+=usr/include/c++/4.2/string
OLD_FILES+=usr/include/c++/4.2/tr1/array
OLD_FILES+=usr/include/c++/4.2/tr1/bind_iterate.h
OLD_FILES+=usr/include/c++/4.2/tr1/bind_repeat.h
OLD_FILES+=usr/include/c++/4.2/tr1/boost_shared_ptr.h
OLD_FILES+=usr/include/c++/4.2/tr1/cctype
OLD_FILES+=usr/include/c++/4.2/tr1/cfenv
OLD_FILES+=usr/include/c++/4.2/tr1/cfloat
OLD_FILES+=usr/include/c++/4.2/tr1/cinttypes
OLD_FILES+=usr/include/c++/4.2/tr1/climits
OLD_FILES+=usr/include/c++/4.2/tr1/cmath
OLD_FILES+=usr/include/c++/4.2/tr1/common.h
OLD_FILES+=usr/include/c++/4.2/tr1/complex
OLD_FILES+=usr/include/c++/4.2/tr1/cstdarg
OLD_FILES+=usr/include/c++/4.2/tr1/cstdbool
OLD_FILES+=usr/include/c++/4.2/tr1/cstdint
OLD_FILES+=usr/include/c++/4.2/tr1/cstdio
OLD_FILES+=usr/include/c++/4.2/tr1/cstdlib
OLD_FILES+=usr/include/c++/4.2/tr1/ctgmath
OLD_FILES+=usr/include/c++/4.2/tr1/ctime
OLD_FILES+=usr/include/c++/4.2/tr1/ctype.h
OLD_FILES+=usr/include/c++/4.2/tr1/cwchar
OLD_FILES+=usr/include/c++/4.2/tr1/cwctype
OLD_FILES+=usr/include/c++/4.2/tr1/fenv.h
OLD_FILES+=usr/include/c++/4.2/tr1/float.h
OLD_FILES+=usr/include/c++/4.2/tr1/functional
OLD_FILES+=usr/include/c++/4.2/tr1/functional_hash.h
OLD_FILES+=usr/include/c++/4.2/tr1/functional_iterate.h
OLD_FILES+=usr/include/c++/4.2/tr1/hashtable
OLD_FILES+=usr/include/c++/4.2/tr1/hashtable_policy.h
OLD_FILES+=usr/include/c++/4.2/tr1/inttypes.h
OLD_FILES+=usr/include/c++/4.2/tr1/limits.h
OLD_FILES+=usr/include/c++/4.2/tr1/math.h
OLD_FILES+=usr/include/c++/4.2/tr1/memory
OLD_FILES+=usr/include/c++/4.2/tr1/mu_iterate.h
OLD_FILES+=usr/include/c++/4.2/tr1/random
OLD_FILES+=usr/include/c++/4.2/tr1/random.tcc
OLD_FILES+=usr/include/c++/4.2/tr1/ref_fwd.h
OLD_FILES+=usr/include/c++/4.2/tr1/ref_wrap_iterate.h
OLD_FILES+=usr/include/c++/4.2/tr1/repeat.h
OLD_FILES+=usr/include/c++/4.2/tr1/stdarg.h
OLD_FILES+=usr/include/c++/4.2/tr1/stdbool.h
OLD_FILES+=usr/include/c++/4.2/tr1/stdint.h
OLD_FILES+=usr/include/c++/4.2/tr1/stdio.h
OLD_FILES+=usr/include/c++/4.2/tr1/stdlib.h
OLD_FILES+=usr/include/c++/4.2/tr1/tgmath.h
OLD_FILES+=usr/include/c++/4.2/tr1/tuple
OLD_FILES+=usr/include/c++/4.2/tr1/tuple_defs.h
OLD_FILES+=usr/include/c++/4.2/tr1/tuple_iterate.h
OLD_FILES+=usr/include/c++/4.2/tr1/type_traits
OLD_FILES+=usr/include/c++/4.2/tr1/type_traits_fwd.h
OLD_FILES+=usr/include/c++/4.2/tr1/unordered_map
OLD_FILES+=usr/include/c++/4.2/tr1/unordered_set
OLD_FILES+=usr/include/c++/4.2/tr1/utility
OLD_FILES+=usr/include/c++/4.2/tr1/wchar.h
OLD_FILES+=usr/include/c++/4.2/tr1/wctype.h
OLD_FILES+=usr/include/c++/4.2/typeinfo
OLD_FILES+=usr/include/c++/4.2/utility
OLD_FILES+=usr/include/c++/4.2/valarray
OLD_FILES+=usr/include/c++/4.2/vector
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/include/gcc/4.2/__wmmintrin_aes.h
OLD_FILES+=usr/include/gcc/4.2/__wmmintrin_pclmul.h
OLD_FILES+=usr/include/gcc/4.2/ammintrin.h
OLD_FILES+=usr/include/gcc/4.2/emmintrin.h
OLD_FILES+=usr/include/gcc/4.2/mm3dnow.h
OLD_FILES+=usr/include/gcc/4.2/mm_malloc.h
OLD_FILES+=usr/include/gcc/4.2/mmintrin.h
OLD_FILES+=usr/include/gcc/4.2/pmmintrin.h
OLD_FILES+=usr/include/gcc/4.2/tmmintrin.h
OLD_FILES+=usr/include/gcc/4.2/wmmintrin.h
OLD_FILES+=usr/include/gcc/4.2/xmmintrin.h
.elif ${TARGET_ARCH} == "arm"
OLD_FILES+=usr/include/gcc/4.2/mmintrin.h
.elif ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/include/gcc/4.2/altivec.h
OLD_FILES+=usr/include/gcc/4.2/ppc-asm.h
OLD_FILES+=usr/include/gcc/4.2/spe.h
.endif
OLD_FILES+=usr/lib/libgcov.a
OLD_FILES+=usr/lib/libgomp.a
OLD_FILES+=usr/lib/libstdc++.a
OLD_FILES+=usr/lib/libstdc++.so
OLD_LIBS+=usr/lib/libstdc++.so.6
OLD_FILES+=usr/lib/libstdc++_p.a
OLD_FILES+=usr/lib/libsupc++.a
OLD_FILES+=usr/lib/libsupc++.so
OLD_LIBS+=usr/lib/libsupc++.so.1
OLD_FILES+=usr/lib/libsupc++_p.a
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/libstdc++.a
OLD_FILES+=usr/lib32/libstdc++.so
OLD_LIBS+=usr/lib32/libstdc++.so.6
OLD_FILES+=usr/lib32/libstdc++_p.a
OLD_FILES+=usr/lib32/libsupc++.a
OLD_FILES+=usr/lib32/libsupc++.so
OLD_LIBS+=usr/lib32/libsupc++.so.1
OLD_FILES+=usr/lib32/libsupc++_p.a
.endif
OLD_LIBS+=usr/lib/libgomp.so.1
OLD_FILES+=usr/lib/libgomp_p.a
OLD_FILES+=usr/lib32/libgcov.a
OLD_FILES+=usr/lib32/libgomp.a
OLD_LIBS+=usr/lib32/libgomp.so.1
OLD_FILES+=usr/lib32/libgomp_p.a
OLD_FILES+=usr/libexec/cc1
OLD_FILES+=usr/libexec/cc1plus
OLD_FILES+=usr/share/man/man1/gcpp.1.gz
OLD_FILES+=usr/share/man/man1/gperf.1.gz
OLD_FILES+=usr/share/man/man1/gperf.7.gz
# 20200220: Upgrade of ncurses, shlib bumped to version 9
OLD_LIBS+=lib/libncurses.so.8
OLD_LIBS+=lib/libncursesw.so.8
OLD_LIBS+=usr/lib32/libncurses.so.8
OLD_LIBS+=usr/lib32/libncursesw.so.8
# 20200206: Remove elf2aout
OLD_FILES+=usr/bin/elf2aout
OLD_FILES+=usr/share/man/man1/elf2aout.1.gz
# 20200204: simple_httpd removed
OLD_FILES+=usr/sbin/simple_httpd
# 20200127: vpo removed
OLD_FILES+=usr/share/man/man4/imm.4.gz
OLD_FILES+=usr/share/man/man4/vpo.4.gz
# 20200104: gcc libssp removed
OLD_FILES+=usr/include/ssp/ssp.h
OLD_FILES+=usr/include/ssp/stdio.h
OLD_FILES+=usr/include/ssp/string.h
OLD_FILES+=usr/include/ssp/unistd.h
OLD_DIRS+=usr/include/ssp
# 20191229: GEOM_SCHED class and gsched tool removed
OLD_FILES+=sbin/gsched
OLD_LIBS+=lib/geom/geom_sched.so
# 20191222: new clang import which bumps version from 9.0.0 to 9.0.1.
OLD_FILES+=usr/lib/clang/9.0.0/include/cuda_wrappers/algorithm
OLD_FILES+=usr/lib/clang/9.0.0/include/cuda_wrappers/complex
OLD_FILES+=usr/lib/clang/9.0.0/include/cuda_wrappers/new
OLD_DIRS+=usr/lib/clang/9.0.0/include/cuda_wrappers
OLD_FILES+=usr/lib/clang/9.0.0/include/openmp_wrappers/__clang_openmp_math.h
OLD_FILES+=usr/lib/clang/9.0.0/include/openmp_wrappers/__clang_openmp_math_declares.h
OLD_FILES+=usr/lib/clang/9.0.0/include/openmp_wrappers/cmath
OLD_FILES+=usr/lib/clang/9.0.0/include/openmp_wrappers/math.h
OLD_DIRS+=usr/lib/clang/9.0.0/include/openmp_wrappers
OLD_FILES+=usr/lib/clang/9.0.0/include/ppc_wrappers/emmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/ppc_wrappers/mm_malloc.h
OLD_FILES+=usr/lib/clang/9.0.0/include/ppc_wrappers/mmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/ppc_wrappers/xmmintrin.h
OLD_DIRS+=usr/lib/clang/9.0.0/include/ppc_wrappers
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/hwasan_interface.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/netbsd_syscall_hooks.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/scudo_interface.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/tsan_interface.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/9.0.0/include/sanitizer
OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_cmath.h
OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_complex_builtins.h
OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_device_functions.h
OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_intrinsics.h
OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_libdevice_declares.h
OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_math_forward_declares.h
OLD_FILES+=usr/lib/clang/9.0.0/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/9.0.0/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/9.0.0/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/9.0.0/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/9.0.0/include/adxintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/altivec.h
OLD_FILES+=usr/lib/clang/9.0.0/include/ammintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/arm64intr.h
OLD_FILES+=usr/lib/clang/9.0.0/include/arm_acle.h
OLD_FILES+=usr/lib/clang/9.0.0/include/arm_fp16.h
OLD_FILES+=usr/lib/clang/9.0.0/include/arm_neon.h
OLD_FILES+=usr/lib/clang/9.0.0/include/armintr.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512bf16intrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512bitalgintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512ifmaintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512ifmavlintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512pfintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vbmi2intrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vbmiintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vbmivlintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlbf16intrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlbitalgintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlcdintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlvbmi2intrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlvnniintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vlvp2intersectintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vnniintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vp2intersectintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vpopcntdqintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avx512vpopcntdqvlintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/avxintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/cetintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/cldemoteintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/clflushoptintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/clwbintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/clzerointrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/cpuid.h
OLD_FILES+=usr/lib/clang/9.0.0/include/emmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/enqcmdintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/gfniintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/htmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/immintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/invpcidintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/lwpintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/9.0.0/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/9.0.0/include/mmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/module.modulemap
OLD_FILES+=usr/lib/clang/9.0.0/include/movdirintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/msa.h
OLD_FILES+=usr/lib/clang/9.0.0/include/mwaitxintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/opencl-c-base.h
OLD_FILES+=usr/lib/clang/9.0.0/include/opencl-c.h
OLD_FILES+=usr/lib/clang/9.0.0/include/pconfigintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/ptwriteintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/s390intrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/sgxintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/shaintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/smmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/vadefs.h
OLD_FILES+=usr/lib/clang/9.0.0/include/vaesintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/vecintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/vpclmulqdqintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/waitpkgintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/wbnoinvdintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/x86intrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/xopintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/9.0.0/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/9.0.0/include
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-aarch64.so
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-arm.so
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-armhf.so
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-i386.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-i386.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.dd-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.dd-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.fuzzer-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.fuzzer-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.fuzzer_no_main-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.fuzzer_no_main-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan_cxx-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-powerpc.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-powerpc64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.safestack-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-i386.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-i386.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.tsan-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.tsan-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.tsan_cxx-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-i386.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-basic-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-basic-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-basic-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-basic-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-fdr-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-fdr-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-fdr-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-fdr-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-profiling-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-profiling-arm.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-profiling-armhf.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-profiling-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-x86_64.a
OLD_DIRS+=usr/lib/clang/9.0.0/lib/freebsd
OLD_DIRS+=usr/lib/clang/9.0.0/lib
OLD_DIRS+=usr/lib/clang/9.0.0
# 20191214: Removal of sranddev(3)
OLD_FILES+=usr/share/man/man3/sranddev.3.gz
# 20191213: remove timeout(9)
OLD_FILES+=usr/share/man/man9/callout_handle_init.9.gz
OLD_FILES+=usr/share/man/man9/timeout.9.gz
OLD_FILES+=usr/share/man/man9/untimeout.9.gz
# 20191128: Removal of trm(4)
OLD_FILES+=usr/share/man/man4/trm.4.gz
# 20191121: Removal of sio(4)
OLD_FILES+=usr/share/man/man4/sio.4.gz
# 20191105: picobsd(8), et al, removed.
OLD_FILES+=usr/share/man/man8/picobsd.8.gz
# 20191009: new clang import which bumps version from 8.0.1 to 9.0.0.
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/esan_interface.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/hwasan_interface.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/netbsd_syscall_hooks.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/scudo_interface.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/tsan_interface.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/8.0.1/include/sanitizer
OLD_FILES+=usr/lib/clang/8.0.1/include/__clang_cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/8.0.1/include/__clang_cuda_cmath.h
OLD_FILES+=usr/lib/clang/8.0.1/include/__clang_cuda_complex_builtins.h
OLD_FILES+=usr/lib/clang/8.0.1/include/__clang_cuda_device_functions.h
OLD_FILES+=usr/lib/clang/8.0.1/include/__clang_cuda_intrinsics.h
OLD_FILES+=usr/lib/clang/8.0.1/include/__clang_cuda_libdevice_declares.h
OLD_FILES+=usr/lib/clang/8.0.1/include/__clang_cuda_math_forward_declares.h
OLD_FILES+=usr/lib/clang/8.0.1/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/8.0.1/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/8.0.1/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/8.0.1/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/8.0.1/include/adxintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/altivec.h
OLD_FILES+=usr/lib/clang/8.0.1/include/ammintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/arm64intr.h
OLD_FILES+=usr/lib/clang/8.0.1/include/arm_acle.h
OLD_FILES+=usr/lib/clang/8.0.1/include/arm_fp16.h
OLD_FILES+=usr/lib/clang/8.0.1/include/arm_neon.h
OLD_FILES+=usr/lib/clang/8.0.1/include/armintr.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512bitalgintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512ifmaintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512ifmavlintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512pfintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vbmi2intrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vbmiintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vbmivlintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vlbitalgintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vlcdintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vlvbmi2intrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vlvnniintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vnniintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vpopcntdqintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avx512vpopcntdqvlintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/avxintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/cetintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/cldemoteintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/clflushoptintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/clwbintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/clzerointrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/cpuid.h
OLD_FILES+=usr/lib/clang/8.0.1/include/emmintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/gfniintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/htmintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/immintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/invpcidintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/lwpintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/8.0.1/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/8.0.1/include/mmintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/module.modulemap
OLD_FILES+=usr/lib/clang/8.0.1/include/movdirintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/msa.h
OLD_FILES+=usr/lib/clang/8.0.1/include/mwaitxintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/opencl-c.h
OLD_FILES+=usr/lib/clang/8.0.1/include/pconfigintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/ptwriteintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/s390intrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/sgxintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/shaintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/smmintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/vadefs.h
OLD_FILES+=usr/lib/clang/8.0.1/include/vaesintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/vecintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/vpclmulqdqintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/waitpkgintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/wbnoinvdintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/x86intrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/xopintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/8.0.1/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/8.0.1/include
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.msan-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.msan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.profile-aarch64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.profile-armhf.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.stats-i386.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.stats-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.stats_client-i386.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.stats_client-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.tsan-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.ubsan_minimal-i386.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/8.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/8.0.1/lib/freebsd
OLD_DIRS+=usr/lib/clang/8.0.1/lib
OLD_DIRS+=usr/lib/clang/8.0.1
# 20191009: libc++ 9.0.0 removed some experimental files
OLD_FILES+=usr/include/c++/v1/experimental/any
OLD_FILES+=usr/include/c++/v1/experimental/chrono
OLD_FILES+=usr/include/c++/v1/experimental/numeric
OLD_FILES+=usr/include/c++/v1/experimental/optional
OLD_FILES+=usr/include/c++/v1/experimental/ratio
OLD_FILES+=usr/include/c++/v1/experimental/string_view
OLD_FILES+=usr/include/c++/v1/experimental/system_error
OLD_FILES+=usr/include/c++/v1/experimental/tuple
OLD_FILES+=usr/lib/libc++fs.a
OLD_FILES+=usr/lib32/libc++fs.a
# 20191003: Remove useless ZFS tests
OLD_FILES+=usr/tests/sys/cddl/zfs/tests/cli_root/zpool_create/zpool_create_013_neg.ksh
OLD_FILES+=usr/tests/sys/cddl/zfs/tests/cli_root/zpool_create/zpool_create_014_neg.ksh
OLD_FILES+=usr/tests/sys/cddl/zfs/tests/cli_root/zpool_create/zpool_create_016_pos.ksh
# 20190910: mklocale(1) and colldef(1) removed
OLD_FILES+=usr/bin/mklocale
OLD_FILES+=usr/share/man/man1/mklocale.1.gz
OLD_FILES+=usr/bin/colldef
OLD_FILES+=usr/share/man/man1/colldef.1.gz
# 20190904: Remove boot1.efifat
OLD_FILES+=boot/boot1.efifat
# 20190903: pc-sysinstall(8) removed
OLD_FILES+=usr/share/examples/pc-sysinstall/README
OLD_FILES+=usr/share/examples/pc-sysinstall/pc-autoinstall.conf
OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.fbsd-netinstall
OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.geli
OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.gmirror
OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.netinstall
OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.restore
OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.rsync
OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.upgrade
OLD_FILES+=usr/share/examples/pc-sysinstall/pcinstall.cfg.zfs
OLD_FILES+=usr/share/man/man8/pc-sysinstall.8.gz
OLD_FILES+=usr/share/pc-sysinstall/backend-partmanager/create-part.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-partmanager/delete-part.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/detect-emulation.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/detect-laptop.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/detect-nics.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/disk-info.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/disk-list.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/disk-part.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/enable-net.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/get-packages.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/list-components.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/list-config.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/list-mirrors.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/list-packages.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/list-rsync-backups.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/list-tzones.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/query-langs.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/send-logs.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/setup-ssh-keys.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/set-mirror.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/sys-mem.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/test-live.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/test-netup.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/update-part-list.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/xkeyboard-layouts.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/xkeyboard-models.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/xkeyboard-variants.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-bsdlabel.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-cleanup.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-disk.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-extractimage.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-ftp.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-installcomponents.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-installpackages.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-localize.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-mountdisk.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-mountoptical.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-networking.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-newfs.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-parse.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-packages.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-runcommands.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-unmount.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-upgrade.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions-users.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/functions.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/installimage.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/parseconfig.sh
OLD_FILES+=usr/share/pc-sysinstall/backend/startautoinstall.sh
OLD_FILES+=usr/share/pc-sysinstall/conf/avail-langs
OLD_FILES+=usr/share/pc-sysinstall/conf/exclude-from-upgrade
OLD_FILES+=usr/share/pc-sysinstall/conf/license/bsd-en.txt
OLD_FILES+=usr/share/pc-sysinstall/conf/license/intel-en.txt
OLD_FILES+=usr/share/pc-sysinstall/conf/license/nvidia-en.txt
OLD_FILES+=usr/share/pc-sysinstall/conf/pc-sysinstall.conf
OLD_FILES+=usr/share/pc-sysinstall/doc/help-disk-list
OLD_FILES+=usr/share/pc-sysinstall/doc/help-disk-size
OLD_FILES+=usr/share/pc-sysinstall/doc/help-index
OLD_FILES+=usr/share/pc-sysinstall/doc/help-start-autoinstall
OLD_FILES+=usr/sbin/pc-sysinstall
OLD_DIRS+=usr/share/examples/pc-sysinstall
OLD_DIRS+=usr/share/pc-sysinstall/backend
OLD_DIRS+=usr/share/pc-sysinstall/backend-partmanager
OLD_DIRS+=usr/share/pc-sysinstall/backend-query
OLD_DIRS+=usr/share/pc-sysinstall/conf/license
OLD_DIRS+=usr/share/pc-sysinstall/conf
OLD_DIRS+=usr/share/pc-sysinstall/doc
OLD_DIRS+=usr/share/pc-sysinstall
# 20190825: zlib 1.0.4 removed from kernel
OLD_FILES+=usr/include/sys/zlib.h
OLD_FILES+=usr/include/sys/zutil.h
# 20190817: pft_ping.py and sniffer.py moved to /usr/tests/sys/netpfil/common
OLD_FILES+=usr/tests/sys/netpfil/pf/sniffer.py
OLD_FILES+=usr/tests/sys/netpfil/pf/pft_ping.py
# 20190816: dir.h removed from POSIX
OLD_FILES+=usr/include/sys/dir.h
# 20190729: gzip'ed a.out support removed
OLD_FILES+=usr/include/sys/inflate.h
# 20190722: cap_random(3) removed
OLD_FILES+=lib/casper/libcap_random.so.1
OLD_FILES+=usr/include/casper/cap_random.h
OLD_FILES+=usr/share/man/man3/cap_random.3.gz
OLD_FILES+=usr/share/man/man3/cap_random_buf.3.gz
# 20190708: vm_page_hold() and _unhold() removed
OLD_FILES+=usr/share/man/man9/vm_page_hold.9.gz
# 20190618: sys/capability.h removed (sys/capsicum.h is the one to use)
OLD_FILES+=usr/include/sys/capability.h
# 20190615: sys/pwm.h renamed to dev/pwmc.h
OLD_FILES+=usr/include/sys/pwm.h
# 20190612: new clang import which bumps version from 8.0.0 to 8.0.1.
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/esan_interface.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/hwasan_interface.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/netbsd_syscall_hooks.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/scudo_interface.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/tsan_interface.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/8.0.0/include/sanitizer
OLD_FILES+=usr/lib/clang/8.0.0/include/__clang_cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/8.0.0/include/__clang_cuda_cmath.h
OLD_FILES+=usr/lib/clang/8.0.0/include/__clang_cuda_complex_builtins.h
OLD_FILES+=usr/lib/clang/8.0.0/include/__clang_cuda_device_functions.h
OLD_FILES+=usr/lib/clang/8.0.0/include/__clang_cuda_intrinsics.h
OLD_FILES+=usr/lib/clang/8.0.0/include/__clang_cuda_libdevice_declares.h
OLD_FILES+=usr/lib/clang/8.0.0/include/__clang_cuda_math_forward_declares.h
OLD_FILES+=usr/lib/clang/8.0.0/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/8.0.0/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/8.0.0/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/8.0.0/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/8.0.0/include/adxintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/altivec.h
OLD_FILES+=usr/lib/clang/8.0.0/include/ammintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/arm64intr.h
OLD_FILES+=usr/lib/clang/8.0.0/include/arm_acle.h
OLD_FILES+=usr/lib/clang/8.0.0/include/arm_fp16.h
OLD_FILES+=usr/lib/clang/8.0.0/include/arm_neon.h
OLD_FILES+=usr/lib/clang/8.0.0/include/armintr.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512bitalgintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512ifmaintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512ifmavlintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512pfintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vbmi2intrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vbmiintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vbmivlintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vlbitalgintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vlcdintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vlvbmi2intrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vlvnniintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vnniintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vpopcntdqintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avx512vpopcntdqvlintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/avxintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/cetintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/cldemoteintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/clflushoptintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/clwbintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/clzerointrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/cpuid.h
OLD_FILES+=usr/lib/clang/8.0.0/include/emmintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/gfniintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/htmintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/immintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/invpcidintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/lwpintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/8.0.0/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/8.0.0/include/mmintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/module.modulemap
OLD_FILES+=usr/lib/clang/8.0.0/include/movdirintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/msa.h
OLD_FILES+=usr/lib/clang/8.0.0/include/mwaitxintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/opencl-c.h
OLD_FILES+=usr/lib/clang/8.0.0/include/pconfigintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/ptwriteintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/s390intrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/sgxintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/shaintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/smmintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/vadefs.h
OLD_FILES+=usr/lib/clang/8.0.0/include/vaesintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/vecintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/vpclmulqdqintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/waitpkgintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/wbnoinvdintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/x86intrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/xopintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/8.0.0/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/8.0.0/include
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.msan-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.msan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.profile-armhf.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.stats-i386.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.stats-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.stats_client-i386.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.stats_client-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.tsan-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.ubsan_minimal-i386.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/8.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/8.0.0/lib/freebsd
OLD_DIRS+=usr/lib/clang/8.0.0/lib
OLD_DIRS+=usr/lib/clang/8.0.0
# 20190523: Remove obsolete kgzip and support files
OLD_FILES+=usr/sbin/kgzip
OLD_FILES+=usr/lib/kgzldr.o
OLD_FILES+=usr/share/man/man8/kgzip.8.gz
# 20190517: Remove obsolete 10 and 10/100 ethernet drivers.
OLD_FILES+=usr/share/man/man4/bm.4.gz
OLD_FILES+=usr/share/man/man4/cs.4.gz
OLD_FILES+=usr/share/man/man4/de.4.gz
OLD_FILES+=usr/share/man/man4/if_de.4.gz
OLD_FILES+=usr/share/man/man4/ed.4.gz
OLD_FILES+=usr/share/man/man4/if_ed.4.gz
OLD_FILES+=usr/share/man/man4/ep.4.gz
OLD_FILES+=usr/share/man/man4/ex.4.gz
OLD_FILES+=usr/share/man/man4/fe.4.gz
OLD_FILES+=usr/share/man/man4/pcn.4.gz
OLD_FILES+=usr/share/man/man4/if_pcn.4.gz
OLD_FILES+=usr/share/man/man4/sf.4.gz
OLD_FILES+=usr/share/man/man4/if_sf.4.gz
OLD_FILES+=usr/share/man/man4/sn.4.gz
OLD_FILES+=usr/share/man/man4/if_sn.4.gz
OLD_FILES+=usr/share/man/man4/tl.4.gz
OLD_FILES+=usr/share/man/man4/if_tl.4.gz
OLD_FILES+=usr/share/man/man4/tx.4.gz
OLD_FILES+=usr/share/man/man4/if_tx.4.gz
OLD_FILES+=usr/share/man/man4/txp.4.gz
OLD_FILES+=usr/share/man/man4/if_txp.4.gz
OLD_FILES+=usr/share/man/man4/vx.4.gz
OLD_FILES+=usr/share/man/man4/wb.4.gz
OLD_FILES+=usr/share/man/man4/xe.4.gz
OLD_FILES+=usr/share/man/man4/if_xe.4.gz
# 20190513: libcap_sysctl interface change
OLD_FILES+=lib/casper/libcap_sysctl.so.1
# 20190509: tests/sys/opencrypto requires the net/py-dpkt package.
OLD_FILES+=usr/tests/sys/opencrypto/dpkt.py
OLD_FILES+=usr/tests/sys/opencrypto/dpkt.pyc
# 20190326: tzdata 2019a import
OLD_FILES+=usr/share/zoneinfo/Etc/UCT
# 20190304: new libc++ import which bumps version from 7.0.1 to 8.0.0.
OLD_FILES+=usr/include/c++/v1/experimental/dynarray
# 20190304: new clang import which bumps version from 7.0.1 to 8.0.0.
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/esan_interface.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/hwasan_interface.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/netbsd_syscall_hooks.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/scudo_interface.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/tsan_interface.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/7.0.1/include/sanitizer
OLD_FILES+=usr/lib/clang/7.0.1/include/__clang_cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/7.0.1/include/__clang_cuda_cmath.h
OLD_FILES+=usr/lib/clang/7.0.1/include/__clang_cuda_complex_builtins.h
OLD_FILES+=usr/lib/clang/7.0.1/include/__clang_cuda_device_functions.h
OLD_FILES+=usr/lib/clang/7.0.1/include/__clang_cuda_intrinsics.h
OLD_FILES+=usr/lib/clang/7.0.1/include/__clang_cuda_libdevice_declares.h
OLD_FILES+=usr/lib/clang/7.0.1/include/__clang_cuda_math_forward_declares.h
OLD_FILES+=usr/lib/clang/7.0.1/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/7.0.1/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/7.0.1/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/7.0.1/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/7.0.1/include/adxintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/altivec.h
OLD_FILES+=usr/lib/clang/7.0.1/include/ammintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/arm64intr.h
OLD_FILES+=usr/lib/clang/7.0.1/include/arm_acle.h
OLD_FILES+=usr/lib/clang/7.0.1/include/arm_fp16.h
OLD_FILES+=usr/lib/clang/7.0.1/include/arm_neon.h
OLD_FILES+=usr/lib/clang/7.0.1/include/armintr.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512bitalgintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512ifmaintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512ifmavlintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512pfintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vbmi2intrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vbmiintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vbmivlintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vlbitalgintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vlcdintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vlvbmi2intrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vlvnniintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vnniintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vpopcntdqintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avx512vpopcntdqvlintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/avxintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/cetintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/cldemoteintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/clflushoptintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/clwbintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/clzerointrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/cpuid.h
OLD_FILES+=usr/lib/clang/7.0.1/include/emmintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/gfniintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/htmintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/immintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/invpcidintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/lwpintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/7.0.1/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/7.0.1/include/mmintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/module.modulemap
OLD_FILES+=usr/lib/clang/7.0.1/include/movdirintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/msa.h
OLD_FILES+=usr/lib/clang/7.0.1/include/mwaitxintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/opencl-c.h
OLD_FILES+=usr/lib/clang/7.0.1/include/pconfigintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/ptwriteintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/s390intrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/sgxintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/shaintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/smmintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/vadefs.h
OLD_FILES+=usr/lib/clang/7.0.1/include/vaesintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/vecintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/vpclmulqdqintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/waitpkgintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/wbnoinvdintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/x86intrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/xopintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/7.0.1/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/7.0.1/include
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.msan-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.msan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.profile-armhf.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.stats-i386.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.stats-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.stats_client-i386.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.stats_client-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.tsan-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.ubsan_minimal-i386.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/7.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/7.0.1/lib/freebsd
OLD_DIRS+=usr/lib/clang/7.0.1/lib
OLD_DIRS+=usr/lib/clang/7.0.1
# 20190227: rename seq.h to seqc.h
OLD_FILES+=usr/include/sys/seq.h
# 20190222: libifconfig made INTERNALLIB
OLD_FILES+=usr/lib/libprivateifconfig.a
OLD_FILES+=usr/lib/libprivateifconfig_p.a
OLD_FILES+=usr/lib32/libprivateifconfig.a
OLD_FILES+=usr/lib32/libprivateifconfig_p.a
# 20190131: pfil(9) changed
OLD_FILES+=usr/share/man/man9/pfil_hook_get.9.gz
OLD_FILES+=usr/share/man/man9/pfil_rlock.9.gz
OLD_FILES+=usr/share/man/man9/pfil_runlock.9.gz
OLD_FILES+=usr/share/man/man9/pfil_wlock.9.gz
OLD_FILES+=usr/share/man/man9/pfil_wunlock.9.gz
# 20190126: adv(4) / adw(4) removal
OLD_FILES+=usr/share/man/man4/adv.4.gz
OLD_FILES+=usr/share/man/man4/adw.4.gz
# 20190123: nonexistant cred_update_thread(9) removed
OLD_FILES+=usr/share/man/man9/cred_update_thread.9.gz
# 20190114: old pbuf allocator removed
OLD_FILES+=usr/share/man/man9/getpbuf.9.gz
OLD_FILES+=usr/share/man/man9/pbuf.9.gz
OLD_FILES+=usr/share/man/man9/relpbuf.9.gz
OLD_FILES+=usr/share/man/man9/trypbuf.9.gz
# 20181219: ibcs removal
OLD_FILES+=usr/share/examples/ibcs2/hello.uu
OLD_FILES+=usr/share/examples/ibcs2/README
OLD_DIRS+=usr/share/examples/ibcs2
# 20181215: Migration of CTM to ports
OLD_FILES+=usr/sbin/ctm
OLD_FILES+=usr/sbin/ctm_dequeue
OLD_FILES+=usr/sbin/ctm_rmail
OLD_FILES+=usr/sbin/ctm_smail
OLD_FILES+=usr/share/man/man1/ctm.1.gz
OLD_FILES+=usr/share/man/man1/ctm_dequeue.1.gz
OLD_FILES+=usr/share/man/man1/ctm_rmail.1.gz
OLD_FILES+=usr/share/man/man1/ctm_smail.1.gz
OLD_FILES+=usr/share/man/man5/ctm.5.gz
# 20181214: Remove timed files
OLD_FILES+=etc/rc.d/timed
OLD_FILES+=usr/sbin/timed
OLD_FILES+=usr/sbin/timedc
OLD_FILES+=usr/share/man/man8/timed.8.gz
OLD_FILES+=usr/share/man/man8/timedc.8.gz
# 20181211: new clang import which bumps version from 6.0.1 to 7.0.1.
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/esan_interface.h
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/hwasan_interface.h
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/scudo_interface.h
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/tsan_interface.h
OLD_FILES+=usr/lib/clang/6.0.1/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/6.0.1/include/sanitizer
OLD_FILES+=usr/lib/clang/6.0.1/include/__clang_cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/6.0.1/include/__clang_cuda_cmath.h
OLD_FILES+=usr/lib/clang/6.0.1/include/__clang_cuda_complex_builtins.h
OLD_FILES+=usr/lib/clang/6.0.1/include/__clang_cuda_intrinsics.h
OLD_FILES+=usr/lib/clang/6.0.1/include/__clang_cuda_math_forward_declares.h
OLD_FILES+=usr/lib/clang/6.0.1/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/6.0.1/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/6.0.1/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/6.0.1/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/6.0.1/include/adxintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/altivec.h
OLD_FILES+=usr/lib/clang/6.0.1/include/ammintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/arm64intr.h
OLD_FILES+=usr/lib/clang/6.0.1/include/arm_acle.h
OLD_FILES+=usr/lib/clang/6.0.1/include/arm_neon.h
OLD_FILES+=usr/lib/clang/6.0.1/include/armintr.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512bitalgintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512ifmaintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512ifmavlintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512pfintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vbmi2intrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vbmiintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vbmivlintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vlbitalgintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vlcdintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vlvbmi2intrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vlvnniintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vnniintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vpopcntdqintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avx512vpopcntdqvlintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/avxintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/cetintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/clflushoptintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/clwbintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/clzerointrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/cpuid.h
OLD_FILES+=usr/lib/clang/6.0.1/include/emmintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/gfniintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/htmintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/immintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/lwpintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/6.0.1/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/6.0.1/include/mmintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/module.modulemap
OLD_FILES+=usr/lib/clang/6.0.1/include/msa.h
OLD_FILES+=usr/lib/clang/6.0.1/include/mwaitxintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/opencl-c.h
OLD_FILES+=usr/lib/clang/6.0.1/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/s390intrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/shaintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/smmintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/vadefs.h
OLD_FILES+=usr/lib/clang/6.0.1/include/vaesintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/vecintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/vpclmulqdqintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/x86intrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/xopintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/6.0.1/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/6.0.1/include
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.profile-armhf.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.stats-i386.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.stats-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.stats_client-i386.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.stats_client-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.tsan-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.ubsan_minimal-i386.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/6.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/6.0.1/lib/freebsd
OLD_DIRS+=usr/lib/clang/6.0.1/lib
OLD_DIRS+=usr/lib/clang/6.0.1
# 20181116: Rename test file.
OLD_FILES+=usr/tests/sys/netinet/reuseport_lb
# 20181113: libufs version bumped to 7.
OLD_LIBS+=lib/libufs.so.6
OLD_LIBS+=usr/lib32/libufs.so.6
# 20181112: Cleanup old libcap_dns.
OLD_LIBS+=lib/casper/libcap_dns.so.1
OLD_LIBS+=usr/lib32/libcap_dns.so.1
# 20181030: malloc_domain(9) KPI change
OLD_FILES+=usr/share/man/man9/malloc_domain.9.gz
# 20181026: joy(4) removal
OLD_FILES+=usr/share/man/man4/joy.4.gz
# 20181025: OpenSSL libraries version bump to avoid conflict with ports
OLD_LIBS+=lib/libcrypto.so.9
OLD_LIBS+=usr/lib/libssl.so.9
OLD_LIBS+=usr/lib32/libcrypto.so.9
OLD_LIBS+=usr/lib32/libssl.so.9
# 20181021: mse(4) removal
OLD_FILES+=usr/share/man/man4/mse.4.gz
# 20181015: Stale libcasper(3) files following r329452
OLD_LIBS+=lib/casper/libcap_sysctl.so.0
OLD_LIBS+=lib/casper/libcap_grp.so.0
OLD_LIBS+=lib/casper/libcap_pwd.so.0
OLD_LIBS+=lib/casper/libcap_random.so.0
OLD_LIBS+=lib/casper/libcap_dns.so.0
OLD_LIBS+=lib/casper/libcap_syslog.so.0
OLD_LIBS+=usr/lib32/libcap_sysctl.so.0
OLD_LIBS+=usr/lib32/libcap_grp.so.0
OLD_LIBS+=usr/lib32/libcap_pwd.so.0
OLD_LIBS+=usr/lib32/libcap_random.so.0
OLD_LIBS+=usr/lib32/libcap_dns.so.0
OLD_LIBS+=usr/lib32/libcap_syslog.so.0
# 20181012: rename of ixlv(4) to iavf(4)
OLD_FILES+=usr/share/man/man4/ixlv.4.gz
# 20181009: OpenSSL 1.1.1
OLD_FILES+=usr/include/openssl/des_old.h
OLD_FILES+=usr/include/openssl/dso.h
OLD_FILES+=usr/include/openssl/krb5_asn.h
OLD_FILES+=usr/include/openssl/kssl.h
OLD_FILES+=usr/include/openssl/pqueue.h
OLD_FILES+=usr/include/openssl/ssl23.h
OLD_FILES+=usr/include/openssl/ui_compat.h
OLD_FILES+=usr/lib/debug/usr/lib/engines/lib4758cca.so.debug
OLD_FILES+=usr/lib/debug/usr/lib/engines/libaep.so.debug
OLD_FILES+=usr/lib/debug/usr/lib/engines/libatalla.so.debug
OLD_FILES+=usr/lib/debug/usr/lib/engines/libcapi.so.debug
OLD_FILES+=usr/lib/debug/usr/lib/engines/libchil.so.debug
OLD_FILES+=usr/lib/debug/usr/lib/engines/libcswift.so.debug
OLD_FILES+=usr/lib/debug/usr/lib/engines/libgost.so.debug
OLD_FILES+=usr/lib/debug/usr/lib/engines/libnuron.so.debug
OLD_FILES+=usr/lib/debug/usr/lib/engines/libsureware.so.debug
OLD_FILES+=usr/lib/debug/usr/lib/engines/libubsec.so.debug
OLD_FILES+=usr/share/openssl/man/man1/dss1.1.gz
OLD_FILES+=usr/share/openssl/man/man1/md2.1.gz
OLD_FILES+=usr/share/openssl/man/man1/md4.1.gz
OLD_FILES+=usr/share/openssl/man/man1/md5.1.gz
OLD_FILES+=usr/share/openssl/man/man1/mdc2.1.gz
OLD_FILES+=usr/share/openssl/man/man1/ripemd160.1.gz
OLD_FILES+=usr/share/openssl/man/man1/sha.1.gz
OLD_FILES+=usr/share/openssl/man/man1/sha1.1.gz
OLD_FILES+=usr/share/openssl/man/man1/sha224.1.gz
OLD_FILES+=usr/share/openssl/man/man1/sha256.1.gz
OLD_FILES+=usr/share/openssl/man/man1/sha384.1.gz
OLD_FILES+=usr/share/openssl/man/man1/sha512.1.gz
OLD_FILES+=usr/share/openssl/man/man1/x509v3_config.1.gz
OLD_FILES+=usr/share/openssl/man/man3/ASN1_STRING_length_set.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BIO_get_conn_int_port.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BIO_get_conn_ip.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BIO_set.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BIO_set_conn_int_port.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BIO_set_conn_ip.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BN_BLINDING_get_thread_id.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BN_BLINDING_set_thread_id.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BN_BLINDING_thread_id.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BN_CTX_init.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BN_MONT_CTX_init.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BN_RECP_CTX_init.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BN_init.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BUF_memdup.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BUF_memdup.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BUF_strdup.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BUF_strlcat.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BUF_strlcpy.3.gz
OLD_FILES+=usr/share/openssl/man/man3/BUF_strndup.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CMS_set1_signer_cert.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_THREADID_cmp.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_THREADID_cpy.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_THREADID_current.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_THREADID_get_callback.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_THREADID_hash.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_THREADID_set_callback.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_destroy_dynlockid.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_get_new_dynlockid.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_lock.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_num_locks.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_set_dynlock_create_callback.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_set_dynlock_destroy_callback.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_set_dynlock_lock_callback.3.gz
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_set_locking_callback.3.gz
OLD_FILES+=usr/share/openssl/man/man3/DES_ede3_cbcm_encrypt.3.gz
OLD_FILES+=usr/share/openssl/man/man3/DES_enc_read.3.gz
OLD_FILES+=usr/share/openssl/man/man3/DES_enc_write.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EC_KEY_get_key_method_data.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EC_KEY_insert_key_method_data.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EC_POINT_set_Jprojective_coordinates.3.gz
OLD_FILES+=usr/share/openssl/man/man3/ERR_load_UI_strings.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_CIPHER_CTX_cleanup.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_CIPHER_CTX_init.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_MAX_MD_SIZE.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_MD_CTX_cleanup.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_MD_CTX_create.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_MD_CTX_destroy.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_MD_CTX_init.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEVP_PKEY_CTX_set_app_data.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEY_CTX_set_rsa_rsa_keygen_bits.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEY_get_default_digest.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_dss.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_dss1.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_sha.3.gz
OLD_FILES+=usr/share/openssl/man/man3/HMAC_CTX_cleanup.3.gz
OLD_FILES+=usr/share/openssl/man/man3/HMAC_CTX_init.3.gz
OLD_FILES+=usr/share/openssl/man/man3/HMAC_cleanup.3.gz
OLD_FILES+=usr/share/openssl/man/man3/OPENSSL_ia32cap_loc.3.gz
OLD_FILES+=usr/share/openssl/man/man3/PEM.3.gz
OLD_FILES+=usr/share/openssl/man/man3/RAND_SSLeay.3.gz
OLD_FILES+=usr/share/openssl/man/man3/RSA_PKCS1_SSLeay.3.gz
OLD_FILES+=usr/share/openssl/man/man3/RSA_null_method.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_CTX_get_ex_new_index.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_CTX_need_tmp_rsa.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_CTX_set_custom_cli_ext.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_CTX_set_default_read_ahead.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_CTX_set_ecdh_auto.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_CTX_set_tmp_rsa.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_CTX_set_tmp_rsa_callback.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_SESSION_get_ex_new_index.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_add_session.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_flush_sessions.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_get_accept_state.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_get_ex_new_index.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_get_msg_callback_arg.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_need_tmp_rsa.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_remove_session.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_set_ecdh_auto.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_set_tmp_rsa.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSL_set_tmp_rsa_callback.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSLeay.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSLeay_add_ssl_algorithms.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSLeay_version.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSLv2_client_method.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSLv2_method.3.gz
OLD_FILES+=usr/share/openssl/man/man3/SSLv2_server_method.3.gz
OLD_FILES+=usr/share/openssl/man/man3/X509_STORE_CTX_set_chain.3.gz
OLD_FILES+=usr/share/openssl/man/man3/X509_STORE_CTX_trusted_stack.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bio.3.gz
OLD_FILES+=usr/share/openssl/man/man3/blowfish.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_add_words.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_check_top.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_cmp_words.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_div_words.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_dump.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_expand.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_expand2.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_fix_top.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_internal.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_mul_add_words.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_mul_comba4.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_mul_comba8.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_mul_high.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_mul_low_normal.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_mul_low_recursive.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_mul_normal.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_mul_part_recursive.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_mul_recursive.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_mul_words.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_print.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_set_high.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_set_low.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_set_max.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_sqr_comba4.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_sqr_comba8.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_sqr_normal.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_sqr_recursive.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_sqr_words.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_sub_words.3.gz
OLD_FILES+=usr/share/openssl/man/man3/bn_wexpand.3.gz
OLD_FILES+=usr/share/openssl/man/man3/buffer.3.gz
OLD_FILES+=usr/share/openssl/man/man3/crypto.3.gz
OLD_FILES+=usr/share/openssl/man/man3/d2i_ECPKParameters_bio.3.gz
OLD_FILES+=usr/share/openssl/man/man3/d2i_ECPKParameters_fp.3.gz
OLD_FILES+=usr/share/openssl/man/man3/d2i_ECPrivate_key.3.gz
OLD_FILES+=usr/share/openssl/man/man3/d2i_Netscape_RSA.3.gz
OLD_FILES+=usr/share/openssl/man/man3/d2i_PKCS8PrivateKey.3.gz
OLD_FILES+=usr/share/openssl/man/man3/d2i_Private_key.3.gz
OLD_FILES+=usr/share/openssl/man/man3/d2i_X509_bio.3.gz
OLD_FILES+=usr/share/openssl/man/man3/d2i_X509_fp.3.gz
OLD_FILES+=usr/share/openssl/man/man3/des.3.gz
OLD_FILES+=usr/share/openssl/man/man3/des_read_2passwords.3.gz
OLD_FILES+=usr/share/openssl/man/man3/des_read_password.3.gz
OLD_FILES+=usr/share/openssl/man/man3/des_read_pw.3.gz
OLD_FILES+=usr/share/openssl/man/man3/des_read_pw_string.3.gz
OLD_FILES+=usr/share/openssl/man/man3/dh.3.gz
OLD_FILES+=usr/share/openssl/man/man3/dsa.3.gz
OLD_FILES+=usr/share/openssl/man/man3/ec.3.gz
OLD_FILES+=usr/share/openssl/man/man3/ecdsa.3.gz
OLD_FILES+=usr/share/openssl/man/man3/engine.3.gz
OLD_FILES+=usr/share/openssl/man/man3/err.3.gz
OLD_FILES+=usr/share/openssl/man/man3/evp.3.gz
OLD_FILES+=usr/share/openssl/man/man3/hmac.3.gz
OLD_FILES+=usr/share/openssl/man/man3/i2d_ECPKParameters_bio.3.gz
OLD_FILES+=usr/share/openssl/man/man3/i2d_ECPKParameters_fp.3.gz
OLD_FILES+=usr/share/openssl/man/man3/i2d_Netscape_RSA.3.gz
OLD_FILES+=usr/share/openssl/man/man3/i2d_X509_bio.3.gz
OLD_FILES+=usr/share/openssl/man/man3/i2d_X509_fp.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_delete.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_doall.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_doall_arg.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_error.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_free.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_insert.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_new.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_node_stats.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_node_stats_bio.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_node_usage_stats.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_node_usage_stats_bio.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_retrieve.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_stats.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lh_stats_bio.3.gz
OLD_FILES+=usr/share/openssl/man/man3/lhash.3.gz
OLD_FILES+=usr/share/openssl/man/man3/md5.3.gz
OLD_FILES+=usr/share/openssl/man/man3/mdc2.3.gz
OLD_FILES+=usr/share/openssl/man/man3/pem.3.gz
OLD_FILES+=usr/share/openssl/man/man3/rand.3.gz
OLD_FILES+=usr/share/openssl/man/man3/rc4.3.gz
OLD_FILES+=usr/share/openssl/man/man3/ripemd.3.gz
OLD_FILES+=usr/share/openssl/man/man3/rsa.3.gz
OLD_FILES+=usr/share/openssl/man/man3/sha.3.gz
OLD_FILES+=usr/share/openssl/man/man3/ssl.3.gz
OLD_FILES+=usr/share/openssl/man/man3/threads.3.gz
OLD_FILES+=usr/share/openssl/man/man3/ui.3.gz
OLD_FILES+=usr/share/openssl/man/man3/ui_compat.3.gz
OLD_FILES+=usr/share/openssl/man/man3/x509.3.gz
OLD_LIBS+=lib/libcrypto.so.8
OLD_LIBS+=usr/lib/engines/lib4758cca.so
OLD_LIBS+=usr/lib/engines/libaep.so
OLD_LIBS+=usr/lib/engines/libatalla.so
OLD_LIBS+=usr/lib/engines/libcapi.so
OLD_LIBS+=usr/lib/engines/libchil.so
OLD_LIBS+=usr/lib/engines/libcswift.so
OLD_LIBS+=usr/lib/engines/libgost.so
OLD_LIBS+=usr/lib/engines/libnuron.so
OLD_LIBS+=usr/lib/engines/libsureware.so
OLD_LIBS+=usr/lib/engines/libubsec.so
OLD_LIBS+=usr/lib/libssl.so.8
OLD_LIBS+=usr/lib32/libcrypto.so.8
OLD_LIBS+=usr/lib32/lib4758cca.so
OLD_LIBS+=usr/lib32/libaep.so
OLD_LIBS+=usr/lib32/libatalla.so
OLD_LIBS+=usr/lib32/libcapi.so
OLD_LIBS+=usr/lib32/libchil.so
OLD_LIBS+=usr/lib32/libcswift.so
OLD_LIBS+=usr/lib32/libgost.so
OLD_LIBS+=usr/lib32/libnuron.so
OLD_LIBS+=usr/lib32/libsureware.so
OLD_LIBS+=usr/lib32/libubsec.so
OLD_LIBS+=usr/lib32/libssl.so.8
# 20180824: libbe(3) SHLIBDIR fixed to reflect correct location
OLD_LIBS+=usr/lib/libbe.so.1
# 20180819: Remove deprecated arc4random(3) stir/addrandom interfaces
OLD_FILES+=usr/share/man/man3/arc4random_addrandom.3.gz
OLD_FILES+=usr/share/man/man3/arc4random_stir.3.gz
# 20180819: send-pr(1) placeholder removal
OLD_FILES+=usr/bin/send-pr
# 20180725: Cleanup old libcasper.so.0
OLD_LIBS+=lib/libcasper.so.0
OLD_LIBS+=usr/lib32/libcasper.so.0
# 20180722: indent(1) option renamed, test files follow
OLD_FILES+=usr/bin/indent/tests/nsac.0
OLD_FILES+=usr/bin/indent/tests/nsac.0.pro
OLD_FILES+=usr/bin/indent/tests/nsac.0.stdout
OLD_FILES+=usr/bin/indent/tests/sac.0
OLD_FILES+=usr/bin/indent/tests/sac.0.pro
OLD_FILES+=usr/bin/indent/tests/sac.0.stdout
# 20180721: move of libmlx5.so.1 and libibverbs.so.1
OLD_LIBS+=usr/lib/libmlx5.so.1
OLD_LIBS+=usr/lib/libibverbs.so.1
# 20180710: old numa cleanup
OLD_FILES+=usr/include/sys/numa.h
OLD_FILES+=usr/share/man/man2/numa_getaffinity.2.gz
OLD_FILES+=usr/share/man/man2/numa_setaffinity.2.gz
OLD_FILES+=usr/share/man/man1/numactl.1.gz
OLD_FILES+=usr/bin/numactl
# 20180630: new clang import which bumps version from 6.0.0 to 6.0.1.
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/esan_interface.h
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/hwasan_interface.h
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/scudo_interface.h
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/tsan_interface.h
OLD_FILES+=usr/lib/clang/6.0.0/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/6.0.0/include/sanitizer
OLD_FILES+=usr/lib/clang/6.0.0/include/__clang_cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/6.0.0/include/__clang_cuda_cmath.h
OLD_FILES+=usr/lib/clang/6.0.0/include/__clang_cuda_complex_builtins.h
OLD_FILES+=usr/lib/clang/6.0.0/include/__clang_cuda_intrinsics.h
OLD_FILES+=usr/lib/clang/6.0.0/include/__clang_cuda_math_forward_declares.h
OLD_FILES+=usr/lib/clang/6.0.0/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/6.0.0/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/6.0.0/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/6.0.0/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/6.0.0/include/adxintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/altivec.h
OLD_FILES+=usr/lib/clang/6.0.0/include/ammintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/arm64intr.h
OLD_FILES+=usr/lib/clang/6.0.0/include/arm_acle.h
OLD_FILES+=usr/lib/clang/6.0.0/include/arm_neon.h
OLD_FILES+=usr/lib/clang/6.0.0/include/armintr.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512bitalgintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512ifmaintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512ifmavlintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512pfintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vbmi2intrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vbmiintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vbmivlintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vlbitalgintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vlcdintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vlvbmi2intrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vlvnniintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vnniintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vpopcntdqintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avx512vpopcntdqvlintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/avxintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/cetintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/clflushoptintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/clwbintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/clzerointrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/cpuid.h
OLD_FILES+=usr/lib/clang/6.0.0/include/emmintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/gfniintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/htmintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/immintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/lwpintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/6.0.0/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/6.0.0/include/mmintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/module.modulemap
OLD_FILES+=usr/lib/clang/6.0.0/include/msa.h
OLD_FILES+=usr/lib/clang/6.0.0/include/mwaitxintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/opencl-c.h
OLD_FILES+=usr/lib/clang/6.0.0/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/s390intrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/shaintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/smmintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/vadefs.h
OLD_FILES+=usr/lib/clang/6.0.0/include/vaesintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/vecintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/vpclmulqdqintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/x86intrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/xopintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/6.0.0/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/6.0.0/include
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.profile-armhf.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.stats-i386.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.stats-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.stats_client-i386.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.stats_client-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.tsan-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.ubsan_minimal-i386.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/6.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/6.0.0/lib/freebsd
OLD_DIRS+=usr/lib/clang/6.0.0/lib
OLD_DIRS+=usr/lib/clang/6.0.0
# 20180615: asf(8) removed
OLD_FILES+=usr/sbin/asf
OLD_FILES+=usr/share/man/man8/asf.8.gz
# 20180609: obsolete libc++ files missed from the 5.0.0 import
OLD_FILES+=usr/include/c++/v1/__refstring
OLD_FILES+=usr/include/c++/v1/__undef_min_max
OLD_FILES+=usr/include/c++/v1/tr1/__refstring
OLD_FILES+=usr/include/c++/v1/tr1/__undef_min_max
# 20180607: remove nls support from grep
OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/grep.cat
OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/grep.cat
OLD_FILES+=usr/share/nls/ja_JP.SJIS/grep.cat
OLD_FILES+=usr/share/nls/ja_JP.eucJP/grep.cat
OLD_FILES+=usr/share/nls/gl_ES.ISO8859-1/grep.cat
OLD_FILES+=usr/share/nls/zh_CN.UTF-8/grep.cat
OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/grep.cat
OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/grep.cat
OLD_FILES+=usr/share/nls/uk_UA.UTF-8/grep.cat
OLD_FILES+=usr/share/nls/ja_JP.UTF-8/grep.cat
# 20180528: libpcap update removed header file
OLD_FILES+=usr/include/pcap/export-defs.h
# 20180517: retire vxge
OLD_FILES+=usr/share/man/man4/if_vxge.4.gz
OLD_FILES+=usr/share/man/man4/vxge.4.gz
# 20180512: Rename Unbound tools
OLD_FILES+=usr/sbin/unbound
OLD_FILES+=usr/sbin/unbound-anchor
OLD_FILES+=usr/sbin/unbound-checkconf
OLD_FILES+=usr/sbin/unbound-control
OLD_FILES+=usr/share/man/man5/unbound.conf.5.gz
OLD_FILES+=usr/share/man/man8/unbound-anchor.8.gz
OLD_FILES+=usr/share/man/man8/unbound-checkconf.8.gz
OLD_FILES+=usr/share/man/man8/unbound-control.8.gz
OLD_FILES+=usr/share/man/man8/unbound.8.gz
# 20180508: retire nxge
OLD_FILES+=usr/share/man/man4/if_nxge.4.gz
OLD_FILES+=usr/share/man/man4/nxge.4.gz
# 20180505: rhosts
OLD_FILES+=usr/share/skel/dot.rhosts
# 20180502: retire ixgb
OLD_FILES+=usr/share/man/man4/if_ixgb.4.gz
OLD_FILES+=usr/share/man/man4/ixgb.4.gz
# 20180501: retire lmc
OLD_FILES+=usr/include/dev/lmc/if_lmc.h
OLD_DIRS+=usr/include/dev/lmc
OLD_FILES+=usr/sbin/lmcconfig
OLD_FILES+=usr/share/man/man4/lmc.4.gz
OLD_FILES+=usr/share/man/man4/if_lmc.4.gz
OLD_FILES+=usr/share/man/man8/lmcconfig.8.gz
# 20180417: remove fuswintr and suswintr
OLD_FILES+=usr/share/man/man9/fuswintr.9.gz
OLD_FILES+=usr/share/man/man9/suswintr.9.gz
# 20180413: remove Arcnet support
OLD_FILES+=usr/include/net/if_arc.h
OLD_FILES+=usr/share/man/man4/cm.4.gz
# 20180409: remove FDDI support
OLD_FILES+=usr/include/net/fddi.h
OLD_FILES+=usr/share/man/man4/fpa.4.gz
# 20180319: remove /boot/overlays, replaced by /boot/dtb/overlays
OLD_DIRS+=boot/overlays
# 20180311: remove sys/sys/i386/include/pcaudioio.h
.if ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/include/machine/pcaudioio.h
.endif
# 20180310: remove sys/sys/dataacq.h
OLD_FILES+=usr/include/sys/dataacq.h
# 20180306: remove DTrace scripts made obsolete by dwatch(1)
OLD_FILES+=usr/share/dtrace/watch_execve
OLD_FILES+=usr/share/dtrace/watch_kill
OLD_FILES+=usr/share/dtrace/watch_vop_remove
# 20180212: move devmatch
OLD_FILES+=usr/sbin/devmatch
# 20180211: remove usb.conf
OLD_FILES+=etc/devd/usb.conf
# 20180208: remove c_rehash(1)
OLD_FILES+=usr/share/openssl/man/man1/c_rehash.1.gz
# 20180206: remove gdbtui
OLD_FILES+=usr/bin/gdbtui
# 20180201: Obsolete forth files
OLD_FILES+=boot/pcibios.4th
# 20180114: new clang import which bumps version from 5.0.1 to 6.0.0.
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/esan_interface.h
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/tsan_interface.h
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/5.0.1/include/sanitizer
OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_cmath.h
OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_complex_builtins.h
OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_intrinsics.h
OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_math_forward_declares.h
OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/5.0.1/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/5.0.1/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/5.0.1/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/5.0.1/include/adxintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/altivec.h
OLD_FILES+=usr/lib/clang/5.0.1/include/ammintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/arm_acle.h
OLD_FILES+=usr/lib/clang/5.0.1/include/arm_neon.h
OLD_FILES+=usr/lib/clang/5.0.1/include/armintr.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512ifmaintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512ifmavlintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512pfintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vbmiintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vbmivlintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vlcdintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vpopcntdqintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/avxintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/clflushoptintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/clzerointrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/cpuid.h
OLD_FILES+=usr/lib/clang/5.0.1/include/emmintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/htmintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/immintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/lwpintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/5.0.1/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/5.0.1/include/mmintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/module.modulemap
OLD_FILES+=usr/lib/clang/5.0.1/include/msa.h
OLD_FILES+=usr/lib/clang/5.0.1/include/mwaitxintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/opencl-c.h
OLD_FILES+=usr/lib/clang/5.0.1/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/s390intrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/shaintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/smmintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/vadefs.h
OLD_FILES+=usr/lib/clang/5.0.1/include/vecintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/x86intrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/xopintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/5.0.1/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/5.0.1/include
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.profile-armhf.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.stats-i386.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.stats-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.stats_client-i386.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.stats_client-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/5.0.1/lib/freebsd
OLD_DIRS+=usr/lib/clang/5.0.1/lib
OLD_DIRS+=usr/lib/clang/5.0.1
# 20180109: Remove vestiges of digi(4) driver
OLD_FILES+=usr/include/sys/digiio.h
OLD_FILES+=usr/sbin/digictl
OLD_FILES+=usr/share/man/man8/digictl.8.gz
# 20180107: Convert remaining geli(8) tests to ATF
OLD_FILES+=tests/sys/geom/class/eli/nokey_test.sh
OLD_FILES+=tests/sys/geom/class/eli/readonly_test.sh
# 20180106: Convert most geli(8) tests to ATF
OLD_FILES+=tests/sys/geom/class/eli/attach_d_test.sh
OLD_FILES+=tests/sys/geom/class/eli/configure_b_B_test.sh
OLD_FILES+=tests/sys/geom/class/eli/detach_l_test.sh
OLD_FILES+=tests/sys/geom/class/eli/init_B_test.sh
OLD_FILES+=tests/sys/geom/class/eli/init_J_test.sh
OLD_FILES+=tests/sys/geom/class/eli/init_a_test.sh
OLD_FILES+=tests/sys/geom/class/eli/init_alias_test.sh
OLD_FILES+=tests/sys/geom/class/eli/init_i_P_test.sh
OLD_FILES+=tests/sys/geom/class/eli/integrity_copy_test.sh
OLD_FILES+=tests/sys/geom/class/eli/integrity_data_test.sh
OLD_FILES+=tests/sys/geom/class/eli/integrity_hmac_test.sh
OLD_FILES+=tests/sys/geom/class/eli/onetime_a_test.sh
OLD_FILES+=tests/sys/geom/class/eli/onetime_d_test.sh
# 20171230: Remove /etc/skel from mtree
OLD_DIRS+=etc/skel
# 20171208: Remove basename_r(3)
OLD_FILES+=usr/share/man/man3/basename_r.3.gz
# 20171204: Move fdformat man page from volume 1 to volume 8.
OLD_FILES+=usr/share/man/man1/fdformat.1.gz
# 20171203: libproc version bump
OLD_LIBS+=usr/lib/libproc.so.4
OLD_LIBS+=usr/lib32/libproc.so.4
# 20171203: new clang import which bumps version from 5.0.0 to 5.0.1.
OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/esan_interface.h
OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/tsan_interface.h
OLD_FILES+=usr/lib/clang/5.0.0/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/5.0.0/include/sanitizer
OLD_FILES+=usr/lib/clang/5.0.0/include/__clang_cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/5.0.0/include/__clang_cuda_cmath.h
OLD_FILES+=usr/lib/clang/5.0.0/include/__clang_cuda_complex_builtins.h
OLD_FILES+=usr/lib/clang/5.0.0/include/__clang_cuda_intrinsics.h
OLD_FILES+=usr/lib/clang/5.0.0/include/__clang_cuda_math_forward_declares.h
OLD_FILES+=usr/lib/clang/5.0.0/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/5.0.0/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/5.0.0/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/5.0.0/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/5.0.0/include/adxintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/altivec.h
OLD_FILES+=usr/lib/clang/5.0.0/include/ammintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/arm_acle.h
OLD_FILES+=usr/lib/clang/5.0.0/include/arm_neon.h
OLD_FILES+=usr/lib/clang/5.0.0/include/armintr.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512ifmaintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512ifmavlintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512pfintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vbmiintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vbmivlintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vlcdintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avx512vpopcntdqintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/avxintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/clflushoptintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/clzerointrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/cpuid.h
OLD_FILES+=usr/lib/clang/5.0.0/include/emmintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/htmintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/immintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/lwpintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/5.0.0/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/5.0.0/include/mmintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/module.modulemap
OLD_FILES+=usr/lib/clang/5.0.0/include/msa.h
OLD_FILES+=usr/lib/clang/5.0.0/include/mwaitxintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/opencl-c.h
OLD_FILES+=usr/lib/clang/5.0.0/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/s390intrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/shaintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/smmintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/vadefs.h
OLD_FILES+=usr/lib/clang/5.0.0/include/vecintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/x86intrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/xopintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/5.0.0/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/5.0.0/include
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.profile-armhf.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats-i386.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats_client-i386.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats_client-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/5.0.0/lib/freebsd
OLD_DIRS+=usr/lib/clang/5.0.0/lib
OLD_DIRS+=usr/lib/clang/5.0.0
# 20171118: Remove old etc casper files
OLD_FILES+=etc/casper/system.dns
OLD_FILES+=etc/casper/system.grp
OLD_FILES+=etc/casper/system.pwd
OLD_FILES+=etc/casper/system.random
OLD_FILES+=etc/casper/system.sysctl
OLD_DIRS+=etc/casper
# 20171116: lint(1) removal
OLD_FILES+=usr/bin/lint
OLD_FILES+=usr/libexec/lint1
OLD_FILES+=usr/libexec/lint2
OLD_FILES+=usr/libdata/lint/llib-lposix.ln
OLD_FILES+=usr/libdata/lint/llib-lstdc.ln
OLD_FILES+=usr/share/man/man1/lint.1.gz
OLD_FILES+=usr/share/man/man7/lint.7.gz
OLD_DIRS+=usr/libdata/lint
# 20171114: Removal of all fortune datfiles other than freebsd-tips
OLD_FILES+=usr/share/games/fortune/fortunes
OLD_FILES+=usr/share/games/fortune/fortunes.dat
OLD_FILES+=usr/share/games/fortune/gerrold.limerick
OLD_FILES+=usr/share/games/fortune/gerrold.limerick.dat
OLD_FILES+=usr/share/games/fortune/limerick
OLD_FILES+=usr/share/games/fortune/limerick.dat
OLD_FILES+=usr/share/games/fortune/murphy
OLD_FILES+=usr/share/games/fortune/murphy-o
OLD_FILES+=usr/share/games/fortune/murphy-o.dat
OLD_FILES+=usr/share/games/fortune/murphy.dat
OLD_FILES+=usr/share/games/fortune/startrek
OLD_FILES+=usr/share/games/fortune/startrek.dat
OLD_FILES+=usr/share/games/fortune/zippy
OLD_FILES+=usr/share/games/fortune/zippy.dat
# 20171112: Removal of eqnchar definition
OLD_FILES+=usr/share/misc/eqnchar
# 20171110: Removal of mailaddr man page
OLD_FILES+=usr/share/man/man7/mailaddr.7.gz
# 20171108: badsect(8) removal
OLD_FILES+=sbin/badsect
OLD_FILES+=rescue/badsect
OLD_FILES+=usr/share/man/man8/badsect.8.gz
# 20171105: fixing lib/libclang_rt CRTARCH for arm:armv[67].
.if ${MACHINE_ARCH:Marmv[67]*} != "" && \
(!defined(CPUTYPE) || ${CPUTYPE:M*soft*} == "")
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-preinit-arm.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-arm.a
OLD_LIBS+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan-arm.so
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.asan_cxx-arm.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.safestack-arm.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats-arm.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.stats_client-arm.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone-arm.a
OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a
.endif
# 20171104: libcap_random should be in /lib not in /usr/lib
OLD_LIBS+=usr/lib/libcap_random.so.0
# 20171104: Casper can work only as shared library
OLD_FILES+=usr/lib/libcap_dns.a
OLD_FILES+=usr/lib/libcap_dns_p.a
OLD_FILES+=usr/lib/libcap_grp.a
OLD_FILES+=usr/lib/libcap_grp_p.a
OLD_FILES+=usr/lib/libcap_pwd.a
OLD_FILES+=usr/lib/libcap_pwd_p.a
OLD_FILES+=usr/lib/libcap_random.a
OLD_FILES+=usr/lib/libcap_random_p.a
OLD_FILES+=usr/lib/libcap_sysctl.a
OLD_FILES+=usr/lib/libcap_sysctl_p.a
OLD_FILES+=usr/lib/libcasper.a
OLD_FILES+=usr/lib/libcasper_p.a
OLD_FILES+=usr/lib32/libcap_dns.a
OLD_FILES+=usr/lib32/libcap_dns_p.a
OLD_FILES+=usr/lib32/libcap_grp.a
OLD_FILES+=usr/lib32/libcap_grp_p.a
OLD_FILES+=usr/lib32/libcap_pwd.a
OLD_FILES+=usr/lib32/libcap_pwd_p.a
OLD_FILES+=usr/lib32/libcap_random.a
OLD_FILES+=usr/lib32/libcap_random_p.a
OLD_FILES+=usr/lib32/libcap_sysctl.a
OLD_FILES+=usr/lib32/libcap_sysctl_p.a
OLD_FILES+=usr/lib32/libcasper.a
OLD_FILES+=usr/lib32/libcasper_p.a
# 20171031: Removal of adding_user man page
OLD_FILES+=usr/share/man/man7/adding_user.7.gz
# 20171031: Disconnected libpathconv tests
OLD_DIRS+=usr/tests/lib/libpathconv
# 20171017: Removal of mbpool(9)
OLD_FILES+=usr/include/sys/mbpool.h
OLD_FILES+=usr/share/man/man9/mbpool.9.gz
OLD_FILES+=usr/share/man/man9/mbp_destroy.9.gz
OLD_FILES+=usr/share/man/man9/mbp_alloc.9.gz
OLD_FILES+=usr/share/man/man9/mbp_ext_free.9.gz
OLD_FILES+=usr/share/man/man9/mbp_count.9.gz
OLD_FILES+=usr/share/man/man9/mbp_card_free.9.gz
OLD_FILES+=usr/share/man/man9/mbp_get_keep.9.gz
OLD_FILES+=usr/share/man/man9/mbp_free.9.gz
OLD_FILES+=usr/share/man/man9/mbp_get.9.gz
OLD_FILES+=usr/share/man/man9/mbp_create.9.gz
OLD_FILES+=usr/share/man/man9/mbp_sync.9.gz
# 20171010: Remove libstand
OLD_FILES+=usr/lib/libstand.a
OLD_FILES+=usr/lib/libstand_p.a
OLD_FILES+=usr/lib32/libstand.a
OLD_FILES+=usr/lib32/libstand_p.a
OLD_FILES+=usr/include/stand.h
OLD_FILES+=usr/share/man/man3/libstand.3.gz
# 20171003: remove RCMDS
OLD_FILES+=bin/rcp
OLD_FILES+=rescue/rcp
OLD_FILES+=usr/bin/rlogin
OLD_FILES+=usr/bin/rsh
OLD_FILES+=usr/libexec/rlogind
OLD_FILES+=usr/libexec/rshd
OLD_FILES+=usr/share/man/man1/rcp.1.gz
OLD_FILES+=usr/share/man/man1/rlogin.1.gz
OLD_FILES+=usr/share/man/man1/rsh.1.gz
OLD_FILES+=usr/share/man/man8/rlogind.8.gz
OLD_FILES+=usr/share/man/man8/rshd.8.gz
# 20170927: crshared
OLD_FILES+=usr/share/man/man9/crshared.9.gz
# 20170927: procctl
OLD_FILES+=usr/share/man/man8/procctl.8.gz
OLD_FILES+=usr/sbin/procctl
# 20170926: remove unneeded man aliases and locales directory
OLD_FILES+=usr/share/man/en.ISO8859-1/man1
OLD_FILES+=usr/share/man/en.ISO8859-1/man2
OLD_FILES+=usr/share/man/en.ISO8859-1/man3
OLD_FILES+=usr/share/man/en.ISO8859-1/man4
OLD_FILES+=usr/share/man/en.ISO8859-1/man5
OLD_FILES+=usr/share/man/en.ISO8859-1/man6
OLD_FILES+=usr/share/man/en.ISO8859-1/man7
OLD_FILES+=usr/share/man/en.ISO8859-1/man8
OLD_FILES+=usr/share/man/en.ISO8859-1/man9
OLD_DIRS+=usr/share/man/en.ISO8859-1
OLD_FILES+=usr/share/man/en.ISO8859-1/mandoc.db
OLD_FILES+=usr/share/man/en.UTF-8/man1
OLD_FILES+=usr/share/man/en.UTF-8/man2
OLD_FILES+=usr/share/man/en.UTF-8/man3
OLD_FILES+=usr/share/man/en.UTF-8/man4
OLD_FILES+=usr/share/man/en.UTF-8/man5
OLD_FILES+=usr/share/man/en.UTF-8/man6
OLD_FILES+=usr/share/man/en.UTF-8/man7
OLD_FILES+=usr/share/man/en.UTF-8/man8
OLD_FILES+=usr/share/man/en.UTF-8/man9
OLD_FILES+=usr/share/man/en.UTF-8/mandoc.db
OLD_DIRS+=usr/share/man/en.UTF-8
OLD_FILES+=usr/share/man/en.ISO8859-15
OLD_FILES+=usr/share/openssl/man/en.ISO8859-1/man1
OLD_FILES+=usr/share/openssl/man/en.ISO8859-1/man3
OLD_FILES+=usr/share/openssl/man/en.ISO8859-1/mandoc.db
OLD_DIRS+=usr/share/openssl/man/en.ISO8859-1
OLD_FILES+=usr/share/openssl/man/en.ISO8859-15
OLD_DIRS+=usr/share/man/ja/man1
OLD_DIRS+=usr/share/man/ja/man2
OLD_DIRS+=usr/share/man/ja/man3
OLD_DIRS+=usr/share/man/ja/man4
OLD_DIRS+=usr/share/man/ja/man5
OLD_DIRS+=usr/share/man/ja/man6
OLD_DIRS+=usr/share/man/ja/man7
OLD_DIRS+=usr/share/man/ja/man8
OLD_DIRS+=usr/share/man/ja/man9
OLD_DIRS+=usr/share/man/ja
# 20170913: remove unneeded catman utility
OLD_FILES+=etc/periodic/weekly/330.catman
OLD_FILES+=usr/bin/catman
OLD_FILES+=usr/libexec/catman.local
OLD_FILES+=usr/share/man/man1/catman.1.gz
OLD_FILES+=usr/share/man/man8/catman.local.8.gz
OLD_DIRS+=usr/share/man/cat1
OLD_DIRS+=usr/share/man/cat2
OLD_DIRS+=usr/share/man/cat3
OLD_DIRS+=usr/share/man/cat4/amd64
OLD_DIRS+=usr/share/man/cat4/arm
OLD_DIRS+=usr/share/man/cat4/i386
OLD_DIRS+=usr/share/man/cat4/powerpc
OLD_DIRS+=usr/share/man/cat4/sparc64
OLD_DIRS+=usr/share/man/cat4
OLD_DIRS+=usr/share/man/cat5
OLD_DIRS+=usr/share/man/cat6
OLD_DIRS+=usr/share/man/cat7
OLD_DIRS+=usr/share/man/cat8/amd64
OLD_DIRS+=usr/share/man/cat8/arm
OLD_DIRS+=usr/share/man/cat8/i386
OLD_DIRS+=usr/share/man/cat8/powerpc
OLD_DIRS+=usr/share/man/cat8/sparc64
OLD_DIRS+=usr/share/man/cat8
OLD_DIRS+=usr/share/man/cat9
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat1
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat2
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat3
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat4/amd64
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat4/arm
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat4/i386
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat4/powerpc
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat4/sparc64
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat4
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat5
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat6
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat7
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat8/amd64
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat8/arm
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat8/i386
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat8/powerpc
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat8/sparc64
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat8
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat9
OLD_DIRS+=usr/share/man/en.UTF-8/cat1
OLD_DIRS+=usr/share/man/en.UTF-8/cat2
OLD_DIRS+=usr/share/man/en.UTF-8/cat3
OLD_DIRS+=usr/share/man/en.UTF-8/cat4/amd64
OLD_DIRS+=usr/share/man/en.UTF-8/cat4/arm
OLD_DIRS+=usr/share/man/en.UTF-8/cat4/i386
OLD_DIRS+=usr/share/man/en.UTF-8/cat4/powerpc
OLD_DIRS+=usr/share/man/en.UTF-8/cat4/sparc64
OLD_DIRS+=usr/share/man/en.UTF-8/cat4
OLD_DIRS+=usr/share/man/en.UTF-8/cat5
OLD_DIRS+=usr/share/man/en.UTF-8/cat6
OLD_DIRS+=usr/share/man/en.UTF-8/cat7
OLD_DIRS+=usr/share/man/en.UTF-8/cat8/amd64
OLD_DIRS+=usr/share/man/en.UTF-8/cat8/arm
OLD_DIRS+=usr/share/man/en.UTF-8/cat8/i386
OLD_DIRS+=usr/share/man/en.UTF-8/cat8/powerpc
OLD_DIRS+=usr/share/man/en.UTF-8/cat8/sparc64
OLD_DIRS+=usr/share/man/en.UTF-8/cat8
OLD_DIRS+=usr/share/man/en.UTF-8/cat9
OLD_DIRS+=usr/share/man/ja/cat1
OLD_DIRS+=usr/share/man/ja/cat2
OLD_DIRS+=usr/share/man/ja/cat3
OLD_DIRS+=usr/share/man/ja/cat4/amd64
OLD_DIRS+=usr/share/man/ja/cat4/arm
OLD_DIRS+=usr/share/man/ja/cat4/i386
OLD_DIRS+=usr/share/man/ja/cat4/powerpc
OLD_DIRS+=usr/share/man/ja/cat4/sparc64
OLD_DIRS+=usr/share/man/ja/cat4
OLD_DIRS+=usr/share/man/ja/cat5
OLD_DIRS+=usr/share/man/ja/cat6
OLD_DIRS+=usr/share/man/ja/cat7
OLD_DIRS+=usr/share/man/ja/cat8/amd64
OLD_DIRS+=usr/share/man/ja/cat8/arm
OLD_DIRS+=usr/share/man/ja/cat8/powerpc
OLD_DIRS+=usr/share/man/ja/cat8/sparc64
OLD_DIRS+=usr/share/man/ja/cat8
OLD_DIRS+=usr/share/man/ja/cat9
OLD_DIRS+=usr/share/openssl/man/cat1
OLD_DIRS+=usr/share/openssl/man/cat3
OLD_DIRS+=usr/share/openssl/man/en.ISO8859-1/cat1
OLD_DIRS+=usr/share/openssl/man/en.ISO8859-1/cat3
# 20170802: ksyms(4) ioctl interface was removed
OLD_FILES+=usr/include/sys/ksyms.h
# 20170729: the iicbus/pcf8563 driver is replaced with iicbus/nxprtc
OLD_FILES+=usr/include/dev/iicbus/pcf8563reg.h
# 20170722: new clang import which bumps version from 4.0.0 to 5.0.0.
OLD_FILES+=usr/lib/clang/4.0.0/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/4.0.0/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/4.0.0/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/4.0.0/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/4.0.0/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/4.0.0/include/sanitizer/esan_interface.h
OLD_FILES+=usr/lib/clang/4.0.0/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/4.0.0/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/4.0.0/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/4.0.0/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/4.0.0/include/sanitizer
OLD_FILES+=usr/lib/clang/4.0.0/include/__clang_cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/4.0.0/include/__clang_cuda_cmath.h
OLD_FILES+=usr/lib/clang/4.0.0/include/__clang_cuda_complex_builtins.h
OLD_FILES+=usr/lib/clang/4.0.0/include/__clang_cuda_intrinsics.h
OLD_FILES+=usr/lib/clang/4.0.0/include/__clang_cuda_math_forward_declares.h
OLD_FILES+=usr/lib/clang/4.0.0/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/4.0.0/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/4.0.0/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/4.0.0/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/4.0.0/include/adxintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/altivec.h
OLD_FILES+=usr/lib/clang/4.0.0/include/ammintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/arm_acle.h
OLD_FILES+=usr/lib/clang/4.0.0/include/arm_neon.h
OLD_FILES+=usr/lib/clang/4.0.0/include/armintr.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512ifmaintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512ifmavlintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512pfintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512vbmiintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512vbmivlintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512vlcdintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/avxintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/clflushoptintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/cpuid.h
OLD_FILES+=usr/lib/clang/4.0.0/include/emmintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/htmintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/immintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/4.0.0/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/4.0.0/include/mmintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/module.modulemap
OLD_FILES+=usr/lib/clang/4.0.0/include/msa.h
OLD_FILES+=usr/lib/clang/4.0.0/include/mwaitxintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/opencl-c.h
OLD_FILES+=usr/lib/clang/4.0.0/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/s390intrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/shaintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/smmintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/vadefs.h
OLD_FILES+=usr/lib/clang/4.0.0/include/vecintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/x86intrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/xopintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/4.0.0/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/4.0.0/include
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.stats-i386.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.stats-x86_64.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.stats_client-i386.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.stats_client-x86_64.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/4.0.0/lib/freebsd
OLD_DIRS+=usr/lib/clang/4.0.0/lib
OLD_DIRS+=usr/lib/clang/4.0.0
OLD_FILES+=usr/bin/llvm-pdbdump
# 20170610: chown-f_test replaced by chown_test
OLD_FILES+=usr/tests/usr.sbin/chown/chown-f_test
# 20170609: drop obsolete manpage link (if_rtwn.ko -> rtwn.ko)
OLD_FILES+=usr/share/man/man4/if_rtwn.4.gz
# 20170531: removal of groff
OLD_FILES+=usr/bin/addftinfo
OLD_FILES+=usr/bin/afmtodit
OLD_FILES+=usr/bin/checknr
OLD_FILES+=usr/bin/colcrt
OLD_FILES+=usr/bin/eqn
OLD_FILES+=usr/bin/grn
OLD_FILES+=usr/bin/grodvi
OLD_FILES+=usr/bin/groff
OLD_FILES+=usr/bin/grog
OLD_FILES+=usr/bin/grolbp
OLD_FILES+=usr/bin/grolj4
OLD_FILES+=usr/bin/grops
OLD_FILES+=usr/bin/grotty
OLD_FILES+=usr/bin/hpftodit
OLD_FILES+=usr/bin/indxbib
OLD_FILES+=usr/bin/lkbib
OLD_FILES+=usr/bin/lookbib
OLD_FILES+=usr/bin/mmroff
OLD_FILES+=usr/bin/neqn
OLD_FILES+=usr/bin/nroff
OLD_FILES+=usr/bin/pfbtops
OLD_FILES+=usr/bin/pic
OLD_FILES+=usr/bin/post-grohtml
OLD_FILES+=usr/bin/pre-grohtml
OLD_FILES+=usr/bin/psroff
OLD_FILES+=usr/bin/refer
OLD_FILES+=usr/bin/tbl
OLD_FILES+=usr/bin/tfmtodit
OLD_FILES+=usr/bin/troff
OLD_FILES+=usr/bin/vgrind
OLD_FILES+=usr/libexec/vfontedpr
OLD_FILES+=usr/share/dict/eign
OLD_FILES+=usr/share/groff_font/devX100-12/CB
OLD_FILES+=usr/share/groff_font/devX100-12/CBI
OLD_FILES+=usr/share/groff_font/devX100-12/CI
OLD_FILES+=usr/share/groff_font/devX100-12/CR
OLD_FILES+=usr/share/groff_font/devX100-12/DESC
OLD_FILES+=usr/share/groff_font/devX100-12/HB
OLD_FILES+=usr/share/groff_font/devX100-12/HBI
OLD_FILES+=usr/share/groff_font/devX100-12/HI
OLD_FILES+=usr/share/groff_font/devX100-12/HR
OLD_FILES+=usr/share/groff_font/devX100-12/NB
OLD_FILES+=usr/share/groff_font/devX100-12/NBI
OLD_FILES+=usr/share/groff_font/devX100-12/NI
OLD_FILES+=usr/share/groff_font/devX100-12/NR
OLD_FILES+=usr/share/groff_font/devX100-12/S
OLD_FILES+=usr/share/groff_font/devX100-12/TB
OLD_FILES+=usr/share/groff_font/devX100-12/TBI
OLD_FILES+=usr/share/groff_font/devX100-12/TI
OLD_FILES+=usr/share/groff_font/devX100-12/TR
OLD_DIRS+=usr/share/groff_font/devX100-12
OLD_FILES+=usr/share/groff_font/devX100/CB
OLD_FILES+=usr/share/groff_font/devX100/CBI
OLD_FILES+=usr/share/groff_font/devX100/CI
OLD_FILES+=usr/share/groff_font/devX100/CR
OLD_FILES+=usr/share/groff_font/devX100/DESC
OLD_FILES+=usr/share/groff_font/devX100/HB
OLD_FILES+=usr/share/groff_font/devX100/HBI
OLD_FILES+=usr/share/groff_font/devX100/HI
OLD_FILES+=usr/share/groff_font/devX100/HR
OLD_FILES+=usr/share/groff_font/devX100/NB
OLD_FILES+=usr/share/groff_font/devX100/NBI
OLD_FILES+=usr/share/groff_font/devX100/NI
OLD_FILES+=usr/share/groff_font/devX100/NR
OLD_FILES+=usr/share/groff_font/devX100/S
OLD_FILES+=usr/share/groff_font/devX100/TB
OLD_FILES+=usr/share/groff_font/devX100/TBI
OLD_FILES+=usr/share/groff_font/devX100/TI
OLD_FILES+=usr/share/groff_font/devX100/TR
OLD_DIRS+=usr/share/groff_font/devX100
OLD_FILES+=usr/share/groff_font/devX75-12/CB
OLD_FILES+=usr/share/groff_font/devX75-12/CBI
OLD_FILES+=usr/share/groff_font/devX75-12/CI
OLD_FILES+=usr/share/groff_font/devX75-12/CR
OLD_FILES+=usr/share/groff_font/devX75-12/DESC
OLD_FILES+=usr/share/groff_font/devX75-12/HB
OLD_FILES+=usr/share/groff_font/devX75-12/HBI
OLD_FILES+=usr/share/groff_font/devX75-12/HI
OLD_FILES+=usr/share/groff_font/devX75-12/HR
OLD_FILES+=usr/share/groff_font/devX75-12/NB
OLD_FILES+=usr/share/groff_font/devX75-12/NBI
OLD_FILES+=usr/share/groff_font/devX75-12/NI
OLD_FILES+=usr/share/groff_font/devX75-12/NR
OLD_FILES+=usr/share/groff_font/devX75-12/S
OLD_FILES+=usr/share/groff_font/devX75-12/TB
OLD_FILES+=usr/share/groff_font/devX75-12/TBI
OLD_FILES+=usr/share/groff_font/devX75-12/TI
OLD_FILES+=usr/share/groff_font/devX75-12/TR
OLD_DIRS+=usr/share/groff_font/devX75-12
OLD_FILES+=usr/share/groff_font/devX75/CB
OLD_FILES+=usr/share/groff_font/devX75/CBI
OLD_FILES+=usr/share/groff_font/devX75/CI
OLD_FILES+=usr/share/groff_font/devX75/CR
OLD_FILES+=usr/share/groff_font/devX75/DESC
OLD_FILES+=usr/share/groff_font/devX75/HB
OLD_FILES+=usr/share/groff_font/devX75/HBI
OLD_FILES+=usr/share/groff_font/devX75/HI
OLD_FILES+=usr/share/groff_font/devX75/HR
OLD_FILES+=usr/share/groff_font/devX75/NB
OLD_FILES+=usr/share/groff_font/devX75/NBI
OLD_FILES+=usr/share/groff_font/devX75/NI
OLD_FILES+=usr/share/groff_font/devX75/NR
OLD_FILES+=usr/share/groff_font/devX75/S
OLD_FILES+=usr/share/groff_font/devX75/TB
OLD_FILES+=usr/share/groff_font/devX75/TBI
OLD_FILES+=usr/share/groff_font/devX75/TI
OLD_FILES+=usr/share/groff_font/devX75/TR
OLD_DIRS+=usr/share/groff_font/devX75
OLD_FILES+=usr/share/groff_font/devascii/B
OLD_FILES+=usr/share/groff_font/devascii/BI
OLD_FILES+=usr/share/groff_font/devascii/CW
OLD_FILES+=usr/share/groff_font/devascii/DESC
OLD_FILES+=usr/share/groff_font/devascii/I
OLD_FILES+=usr/share/groff_font/devascii/L
OLD_FILES+=usr/share/groff_font/devascii/R
OLD_FILES+=usr/share/groff_font/devascii/S
OLD_DIRS+=usr/share/groff_font/devascii
OLD_FILES+=usr/share/groff_font/devcp1047/B
OLD_FILES+=usr/share/groff_font/devcp1047/BI
OLD_FILES+=usr/share/groff_font/devcp1047/CW
OLD_FILES+=usr/share/groff_font/devcp1047/DESC
OLD_FILES+=usr/share/groff_font/devcp1047/I
OLD_FILES+=usr/share/groff_font/devcp1047/L
OLD_FILES+=usr/share/groff_font/devcp1047/R
OLD_FILES+=usr/share/groff_font/devcp1047/S
OLD_DIRS+=usr/share/groff_font/devcp1047
OLD_FILES+=usr/share/groff_font/devdvi/CW
OLD_FILES+=usr/share/groff_font/devdvi/CWEC
OLD_FILES+=usr/share/groff_font/devdvi/CWI
OLD_FILES+=usr/share/groff_font/devdvi/CWIEC
OLD_FILES+=usr/share/groff_font/devdvi/CWITC
OLD_FILES+=usr/share/groff_font/devdvi/CWTC
OLD_FILES+=usr/share/groff_font/devdvi/CompileFonts
OLD_FILES+=usr/share/groff_font/devdvi/DESC
OLD_FILES+=usr/share/groff_font/devdvi/EX
OLD_FILES+=usr/share/groff_font/devdvi/HB
OLD_FILES+=usr/share/groff_font/devdvi/HBEC
OLD_FILES+=usr/share/groff_font/devdvi/HBI
OLD_FILES+=usr/share/groff_font/devdvi/HBIEC
OLD_FILES+=usr/share/groff_font/devdvi/HBITC
OLD_FILES+=usr/share/groff_font/devdvi/HBTC
OLD_FILES+=usr/share/groff_font/devdvi/HI
OLD_FILES+=usr/share/groff_font/devdvi/HIEC
OLD_FILES+=usr/share/groff_font/devdvi/HITC
OLD_FILES+=usr/share/groff_font/devdvi/HR
OLD_FILES+=usr/share/groff_font/devdvi/HREC
OLD_FILES+=usr/share/groff_font/devdvi/HRTC
OLD_FILES+=usr/share/groff_font/devdvi/MI
OLD_FILES+=usr/share/groff_font/devdvi/Makefile
OLD_FILES+=usr/share/groff_font/devdvi/S
OLD_FILES+=usr/share/groff_font/devdvi/SA
OLD_FILES+=usr/share/groff_font/devdvi/SB
OLD_FILES+=usr/share/groff_font/devdvi/SC
OLD_FILES+=usr/share/groff_font/devdvi/TB
OLD_FILES+=usr/share/groff_font/devdvi/TBEC
OLD_FILES+=usr/share/groff_font/devdvi/TBI
OLD_FILES+=usr/share/groff_font/devdvi/TBIEC
OLD_FILES+=usr/share/groff_font/devdvi/TBITC
OLD_FILES+=usr/share/groff_font/devdvi/TBTC
OLD_FILES+=usr/share/groff_font/devdvi/TI
OLD_FILES+=usr/share/groff_font/devdvi/TIEC
OLD_FILES+=usr/share/groff_font/devdvi/TITC
OLD_FILES+=usr/share/groff_font/devdvi/TR
OLD_FILES+=usr/share/groff_font/devdvi/TREC
OLD_FILES+=usr/share/groff_font/devdvi/TRTC
OLD_FILES+=usr/share/groff_font/devdvi/ec.map
OLD_FILES+=usr/share/groff_font/devdvi/msam.map
OLD_FILES+=usr/share/groff_font/devdvi/msbm.map
OLD_FILES+=usr/share/groff_font/devdvi/tc.map
OLD_FILES+=usr/share/groff_font/devdvi/texb.map
OLD_FILES+=usr/share/groff_font/devdvi/texex.map
OLD_FILES+=usr/share/groff_font/devdvi/texi.map
OLD_FILES+=usr/share/groff_font/devdvi/texmi.map
OLD_FILES+=usr/share/groff_font/devdvi/texr.map
OLD_FILES+=usr/share/groff_font/devdvi/texsy.map
OLD_FILES+=usr/share/groff_font/devdvi/textex.map
OLD_FILES+=usr/share/groff_font/devdvi/textt.map
OLD_DIRS+=usr/share/groff_font/devdvi
OLD_FILES+=usr/share/groff_font/devhtml/B
OLD_FILES+=usr/share/groff_font/devhtml/BI
OLD_FILES+=usr/share/groff_font/devhtml/CB
OLD_FILES+=usr/share/groff_font/devhtml/CBI
OLD_FILES+=usr/share/groff_font/devhtml/CI
OLD_FILES+=usr/share/groff_font/devhtml/CR
OLD_FILES+=usr/share/groff_font/devhtml/DESC
OLD_FILES+=usr/share/groff_font/devhtml/I
OLD_FILES+=usr/share/groff_font/devhtml/R
OLD_FILES+=usr/share/groff_font/devhtml/S
OLD_DIRS+=usr/share/groff_font/devhtml
OLD_FILES+=usr/share/groff_font/devkoi8-r/B
OLD_FILES+=usr/share/groff_font/devkoi8-r/BI
OLD_FILES+=usr/share/groff_font/devkoi8-r/CW
OLD_FILES+=usr/share/groff_font/devkoi8-r/DESC
OLD_FILES+=usr/share/groff_font/devkoi8-r/I
OLD_FILES+=usr/share/groff_font/devkoi8-r/L
OLD_FILES+=usr/share/groff_font/devkoi8-r/R
OLD_FILES+=usr/share/groff_font/devkoi8-r/S
OLD_DIRS+=usr/share/groff_font/devkoi8-r
OLD_FILES+=usr/share/groff_font/devlatin1/B
OLD_FILES+=usr/share/groff_font/devlatin1/BI
OLD_FILES+=usr/share/groff_font/devlatin1/CW
OLD_FILES+=usr/share/groff_font/devlatin1/DESC
OLD_FILES+=usr/share/groff_font/devlatin1/I
OLD_FILES+=usr/share/groff_font/devlatin1/L
OLD_FILES+=usr/share/groff_font/devlatin1/R
OLD_FILES+=usr/share/groff_font/devlatin1/S
OLD_DIRS+=usr/share/groff_font/devlatin1
OLD_FILES+=usr/share/groff_font/devlbp/CB
OLD_FILES+=usr/share/groff_font/devlbp/CI
OLD_FILES+=usr/share/groff_font/devlbp/CR
OLD_FILES+=usr/share/groff_font/devlbp/DESC
OLD_FILES+=usr/share/groff_font/devlbp/EB
OLD_FILES+=usr/share/groff_font/devlbp/EI
OLD_FILES+=usr/share/groff_font/devlbp/ER
OLD_FILES+=usr/share/groff_font/devlbp/HB
OLD_FILES+=usr/share/groff_font/devlbp/HBI
OLD_FILES+=usr/share/groff_font/devlbp/HI
OLD_FILES+=usr/share/groff_font/devlbp/HNB
OLD_FILES+=usr/share/groff_font/devlbp/HNBI
OLD_FILES+=usr/share/groff_font/devlbp/HNI
OLD_FILES+=usr/share/groff_font/devlbp/HNR
OLD_FILES+=usr/share/groff_font/devlbp/HR
OLD_FILES+=usr/share/groff_font/devlbp/TB
OLD_FILES+=usr/share/groff_font/devlbp/TBI
OLD_FILES+=usr/share/groff_font/devlbp/TI
OLD_FILES+=usr/share/groff_font/devlbp/TR
OLD_DIRS+=usr/share/groff_font/devlbp
OLD_FILES+=usr/share/groff_font/devlj4/AB
OLD_FILES+=usr/share/groff_font/devlj4/ABI
OLD_FILES+=usr/share/groff_font/devlj4/AI
OLD_FILES+=usr/share/groff_font/devlj4/ALBB
OLD_FILES+=usr/share/groff_font/devlj4/ALBR
OLD_FILES+=usr/share/groff_font/devlj4/AOB
OLD_FILES+=usr/share/groff_font/devlj4/AOI
OLD_FILES+=usr/share/groff_font/devlj4/AOR
OLD_FILES+=usr/share/groff_font/devlj4/AR
OLD_FILES+=usr/share/groff_font/devlj4/CB
OLD_FILES+=usr/share/groff_font/devlj4/CBI
OLD_FILES+=usr/share/groff_font/devlj4/CI
OLD_FILES+=usr/share/groff_font/devlj4/CLARENDON
OLD_FILES+=usr/share/groff_font/devlj4/CORONET
OLD_FILES+=usr/share/groff_font/devlj4/CR
OLD_FILES+=usr/share/groff_font/devlj4/DESC
OLD_FILES+=usr/share/groff_font/devlj4/GB
OLD_FILES+=usr/share/groff_font/devlj4/GBI
OLD_FILES+=usr/share/groff_font/devlj4/GI
OLD_FILES+=usr/share/groff_font/devlj4/GR
OLD_FILES+=usr/share/groff_font/devlj4/LGB
OLD_FILES+=usr/share/groff_font/devlj4/LGI
OLD_FILES+=usr/share/groff_font/devlj4/LGR
OLD_FILES+=usr/share/groff_font/devlj4/MARIGOLD
OLD_FILES+=usr/share/groff_font/devlj4/OB
OLD_FILES+=usr/share/groff_font/devlj4/OBI
OLD_FILES+=usr/share/groff_font/devlj4/OI
OLD_FILES+=usr/share/groff_font/devlj4/OR
OLD_FILES+=usr/share/groff_font/devlj4/S
OLD_FILES+=usr/share/groff_font/devlj4/SYMBOL
OLD_FILES+=usr/share/groff_font/devlj4/TB
OLD_FILES+=usr/share/groff_font/devlj4/TBI
OLD_FILES+=usr/share/groff_font/devlj4/TI
OLD_FILES+=usr/share/groff_font/devlj4/TNRB
OLD_FILES+=usr/share/groff_font/devlj4/TNRBI
OLD_FILES+=usr/share/groff_font/devlj4/TNRI
OLD_FILES+=usr/share/groff_font/devlj4/TNRR
OLD_FILES+=usr/share/groff_font/devlj4/TR
OLD_FILES+=usr/share/groff_font/devlj4/UB
OLD_FILES+=usr/share/groff_font/devlj4/UBI
OLD_FILES+=usr/share/groff_font/devlj4/UCB
OLD_FILES+=usr/share/groff_font/devlj4/UCBI
OLD_FILES+=usr/share/groff_font/devlj4/UCI
OLD_FILES+=usr/share/groff_font/devlj4/UCR
OLD_FILES+=usr/share/groff_font/devlj4/UI
OLD_FILES+=usr/share/groff_font/devlj4/UR
OLD_FILES+=usr/share/groff_font/devlj4/WINGDINGS
OLD_DIRS+=usr/share/groff_font/devlj4
OLD_FILES+=usr/share/groff_font/devps/AB
OLD_FILES+=usr/share/groff_font/devps/ABI
OLD_FILES+=usr/share/groff_font/devps/AI
OLD_FILES+=usr/share/groff_font/devps/AR
OLD_FILES+=usr/share/groff_font/devps/BMB
OLD_FILES+=usr/share/groff_font/devps/BMBI
OLD_FILES+=usr/share/groff_font/devps/BMI
OLD_FILES+=usr/share/groff_font/devps/BMR
OLD_FILES+=usr/share/groff_font/devps/CB
OLD_FILES+=usr/share/groff_font/devps/CBI
OLD_FILES+=usr/share/groff_font/devps/CI
OLD_FILES+=usr/share/groff_font/devps/CR
OLD_FILES+=usr/share/groff_font/devps/DESC
OLD_FILES+=usr/share/groff_font/devps/EURO
OLD_FILES+=usr/share/groff_font/devps/HB
OLD_FILES+=usr/share/groff_font/devps/HBI
OLD_FILES+=usr/share/groff_font/devps/HI
OLD_FILES+=usr/share/groff_font/devps/HNB
OLD_FILES+=usr/share/groff_font/devps/HNBI
OLD_FILES+=usr/share/groff_font/devps/HNI
OLD_FILES+=usr/share/groff_font/devps/HNR
OLD_FILES+=usr/share/groff_font/devps/HR
OLD_FILES+=usr/share/groff_font/devps/Makefile
OLD_FILES+=usr/share/groff_font/devps/NB
OLD_FILES+=usr/share/groff_font/devps/NBI
OLD_FILES+=usr/share/groff_font/devps/NI
OLD_FILES+=usr/share/groff_font/devps/NR
OLD_FILES+=usr/share/groff_font/devps/PB
OLD_FILES+=usr/share/groff_font/devps/PBI
OLD_FILES+=usr/share/groff_font/devps/PI
OLD_FILES+=usr/share/groff_font/devps/PR
OLD_FILES+=usr/share/groff_font/devps/S
OLD_FILES+=usr/share/groff_font/devps/SS
OLD_FILES+=usr/share/groff_font/devps/TB
OLD_FILES+=usr/share/groff_font/devps/TBI
OLD_FILES+=usr/share/groff_font/devps/TI
OLD_FILES+=usr/share/groff_font/devps/TR
OLD_FILES+=usr/share/groff_font/devps/ZCMI
OLD_FILES+=usr/share/groff_font/devps/ZD
OLD_FILES+=usr/share/groff_font/devps/ZDR
OLD_FILES+=usr/share/groff_font/devps/afmname
OLD_FILES+=usr/share/groff_font/devps/dingbats.map
OLD_FILES+=usr/share/groff_font/devps/dingbats.rmap
OLD_FILES+=usr/share/groff_font/devps/download
OLD_FILES+=usr/share/groff_font/devps/freeeuro.pfa
OLD_FILES+=usr/share/groff_font/devps/lgreekmap
OLD_FILES+=usr/share/groff_font/devps/prologue
OLD_FILES+=usr/share/groff_font/devps/symbol.sed
OLD_FILES+=usr/share/groff_font/devps/symbolchars
OLD_FILES+=usr/share/groff_font/devps/symbolsl.afm
OLD_FILES+=usr/share/groff_font/devps/symbolsl.pfa
OLD_FILES+=usr/share/groff_font/devps/text.enc
OLD_FILES+=usr/share/groff_font/devps/textmap
OLD_FILES+=usr/share/groff_font/devps/zapfdr.pfa
OLD_DIRS+=usr/share/groff_font/devps
OLD_FILES+=usr/share/groff_font/devutf8/B
OLD_FILES+=usr/share/groff_font/devutf8/BI
OLD_FILES+=usr/share/groff_font/devutf8/CW
OLD_FILES+=usr/share/groff_font/devutf8/DESC
OLD_FILES+=usr/share/groff_font/devutf8/I
OLD_FILES+=usr/share/groff_font/devutf8/L
OLD_FILES+=usr/share/groff_font/devutf8/R
OLD_FILES+=usr/share/groff_font/devutf8/S
OLD_DIRS+=usr/share/groff_font/devutf8
OLD_DIRS+=usr/share/groff_font
OLD_FILES+=usr/share/man/man1/addftinfo.1.gz
OLD_FILES+=usr/share/man/man1/afmtodit.1.gz
OLD_FILES+=usr/share/man/man1/checknr.1.gz
OLD_FILES+=usr/share/man/man1/colcrt.1.gz
OLD_FILES+=usr/share/man/man1/eqn.1.gz
OLD_FILES+=usr/share/man/man1/grn.1.gz
OLD_FILES+=usr/share/man/man1/grodvi.1.gz
OLD_FILES+=usr/share/man/man1/groff.1.gz
OLD_FILES+=usr/share/man/man1/grog.1.gz
OLD_FILES+=usr/share/man/man1/grolbp.1.gz
OLD_FILES+=usr/share/man/man1/grolj4.1.gz
OLD_FILES+=usr/share/man/man1/grops.1.gz
OLD_FILES+=usr/share/man/man1/grotty.1.gz
OLD_FILES+=usr/share/man/man1/hpftodit.1.gz
OLD_FILES+=usr/share/man/man1/indxbib.1.gz
OLD_FILES+=usr/share/man/man1/lkbib.1.gz
OLD_FILES+=usr/share/man/man1/lookbib.1.gz
OLD_FILES+=usr/share/man/man1/mmroff.1.gz
OLD_FILES+=usr/share/man/man1/neqn.1.gz
OLD_FILES+=usr/share/man/man1/nroff.1.gz
OLD_FILES+=usr/share/man/man1/pfbtops.1.gz
OLD_FILES+=usr/share/man/man1/pic.1.gz
OLD_FILES+=usr/share/man/man1/psroff.1.gz
OLD_FILES+=usr/share/man/man1/refer.1.gz
OLD_FILES+=usr/share/man/man1/tbl.1.gz
OLD_FILES+=usr/share/man/man1/tfmtodit.1.gz
OLD_FILES+=usr/share/man/man1/troff.1.gz
OLD_FILES+=usr/share/man/man1/vgrind.1.gz
OLD_FILES+=usr/share/man/man5/groff_font.5.gz
OLD_FILES+=usr/share/man/man5/groff_out.5.gz
OLD_FILES+=usr/share/man/man5/groff_tmac.5.gz
OLD_FILES+=usr/share/man/man5/lj4_font.5.gz
OLD_FILES+=usr/share/man/man5/tmac.5.gz
OLD_FILES+=usr/share/man/man5/vgrindefs.5.gz
OLD_FILES+=usr/share/man/man7/ditroff.7.gz
OLD_FILES+=usr/share/man/man7/groff.7.gz
OLD_FILES+=usr/share/man/man7/groff_char.7.gz
OLD_FILES+=usr/share/man/man7/groff_diff.7.gz
OLD_FILES+=usr/share/man/man7/groff_man.7.gz
OLD_FILES+=usr/share/man/man7/groff_mdoc.7.gz
OLD_FILES+=usr/share/man/man7/groff_me.7.gz
OLD_FILES+=usr/share/man/man7/groff_mm.7.gz
OLD_FILES+=usr/share/man/man7/groff_mmse.7.gz
OLD_FILES+=usr/share/man/man7/groff_ms.7.gz
OLD_FILES+=usr/share/man/man7/groff_trace.7.gz
OLD_FILES+=usr/share/man/man7/groff_www.7.gz
OLD_FILES+=usr/share/man/man7/mdoc.samples.7.gz
OLD_FILES+=usr/share/man/man7/me.7.gz
OLD_FILES+=usr/share/man/man7/mm.7.gz
OLD_FILES+=usr/share/man/man7/mmse.7.gz
OLD_FILES+=usr/share/man/man7/ms.7.gz
OLD_FILES+=usr/share/man/man7/orig_me.7.gz
OLD_FILES+=usr/share/me/acm.me
OLD_FILES+=usr/share/me/chars.me
OLD_FILES+=usr/share/me/deltext.me
OLD_FILES+=usr/share/me/eqn.me
OLD_FILES+=usr/share/me/float.me
OLD_FILES+=usr/share/me/footnote.me
OLD_FILES+=usr/share/me/index.me
OLD_FILES+=usr/share/me/letterhead.me
OLD_FILES+=usr/share/me/local.me
OLD_FILES+=usr/share/me/null.me
OLD_FILES+=usr/share/me/refer.me
OLD_FILES+=usr/share/me/revisions
OLD_FILES+=usr/share/me/sh.me
OLD_FILES+=usr/share/me/tbl.me
OLD_FILES+=usr/share/me/thesis.me
OLD_DIRS+=usr/share/me
OLD_FILES+=usr/share/misc/vgrindefs
OLD_FILES+=usr/share/misc/vgrindefs.db
OLD_FILES+=usr/share/tmac/X.tmac
OLD_FILES+=usr/share/tmac/Xps.tmac
OLD_FILES+=usr/share/tmac/a4.tmac
OLD_FILES+=usr/share/tmac/an-old.tmac
OLD_FILES+=usr/share/tmac/an.tmac
OLD_FILES+=usr/share/tmac/andoc.tmac
OLD_FILES+=usr/share/tmac/composite.tmac
OLD_FILES+=usr/share/tmac/cp1047.tmac
OLD_FILES+=usr/share/tmac/devtag.tmac
OLD_FILES+=usr/share/tmac/doc.tmac
OLD_FILES+=usr/share/tmac/dvi.tmac
OLD_FILES+=usr/share/tmac/e.tmac
OLD_FILES+=usr/share/tmac/ec.tmac
OLD_FILES+=usr/share/tmac/eqnrc
OLD_FILES+=usr/share/tmac/europs.tmac
OLD_FILES+=usr/share/tmac/html-end.tmac
OLD_FILES+=usr/share/tmac/html.tmac
OLD_FILES+=usr/share/tmac/hyphen.ru
OLD_FILES+=usr/share/tmac/hyphen.us
OLD_FILES+=usr/share/tmac/hyphenex.us
OLD_FILES+=usr/share/tmac/koi8-r.tmac
OLD_FILES+=usr/share/tmac/latin1.tmac
OLD_FILES+=usr/share/tmac/latin2.tmac
OLD_FILES+=usr/share/tmac/latin9.tmac
OLD_FILES+=usr/share/tmac/lbp.tmac
OLD_FILES+=usr/share/tmac/lj4.tmac
OLD_FILES+=usr/share/tmac/m.tmac
OLD_FILES+=usr/share/tmac/man.local
OLD_FILES+=usr/share/tmac/man.tmac
OLD_FILES+=usr/share/tmac/mandoc.tmac
OLD_FILES+=usr/share/tmac/mdoc.local
OLD_FILES+=usr/share/tmac/mdoc.tmac
OLD_FILES+=usr/share/tmac/mdoc/doc-common
OLD_FILES+=usr/share/tmac/mdoc/doc-ditroff
OLD_FILES+=usr/share/tmac/mdoc/doc-nroff
OLD_FILES+=usr/share/tmac/mdoc/doc-syms
OLD_FILES+=usr/share/tmac/mdoc/fr.ISO8859-1
OLD_FILES+=usr/share/tmac/mdoc/ru.KOI8-R
OLD_DIRS+=usr/share/tmac/mdoc
OLD_FILES+=usr/share/tmac/me.tmac
OLD_FILES+=usr/share/tmac/mm/0.MT
OLD_FILES+=usr/share/tmac/mm/4.MT
OLD_FILES+=usr/share/tmac/mm/5.MT
OLD_FILES+=usr/share/tmac/mm/locale
OLD_FILES+=usr/share/tmac/mm/mm.tmac
OLD_FILES+=usr/share/tmac/mm/mmse.tmac
OLD_FILES+=usr/share/tmac/mm/ms.cov
OLD_FILES+=usr/share/tmac/mm/se_locale
OLD_FILES+=usr/share/tmac/mm/se_ms.cov
OLD_DIRS+=usr/share/tmac/mm
OLD_FILES+=usr/share/tmac/ms.tmac
OLD_FILES+=usr/share/tmac/mse.tmac
OLD_FILES+=usr/share/tmac/papersize.tmac
OLD_FILES+=usr/share/tmac/pic.tmac
OLD_FILES+=usr/share/tmac/ps.tmac
OLD_FILES+=usr/share/tmac/psatk.tmac
OLD_FILES+=usr/share/tmac/psold.tmac
OLD_FILES+=usr/share/tmac/pspic.tmac
OLD_FILES+=usr/share/tmac/s.tmac
OLD_FILES+=usr/share/tmac/safer.tmac
OLD_FILES+=usr/share/tmac/tmac.orig_me
OLD_FILES+=usr/share/tmac/tmac.vgrind
OLD_FILES+=usr/share/tmac/trace.tmac
OLD_FILES+=usr/share/tmac/troffrc
OLD_FILES+=usr/share/tmac/troffrc-end
OLD_FILES+=usr/share/tmac/tty-char.tmac
OLD_FILES+=usr/share/tmac/tty.tmac
OLD_FILES+=usr/share/tmac/unicode.tmac
OLD_FILES+=usr/share/tmac/www.tmac
OLD_DIRS+=usr/share/tmac
# 20170607: remove incorrect atf_check(1) manpage link
OLD_FILES+=usr/share/man/man1/atf_check.1.gz
# 20170601: remove stale manpage
OLD_FILES+=usr/share/man/man2/cap_rights_get.2.gz
# 20170601: old libifconfig and libifc
OLD_FILES+=usr/lib/libifc.a
OLD_FILES+=usr/lib/libifc_p.a
OLD_FILES+=usr/lib/libifconfig.a
OLD_FILES+=usr/lib/libifconfig_p.a
OLD_FILES+=usr/lib32/libifc.a
OLD_FILES+=usr/lib32/libifc_p.a
OLD_FILES+=usr/lib32/libifconfig.a
OLD_FILES+=usr/lib32/libifconfig_p.a
# 20170529: mount.conf(8) -> mount.conf(5)
OLD_FILES+=usr/share/man/man8/mount.conf.8.gz
# 20170525: remove misleading template
OLD_FILES+=usr/share/misc/man.template
# 20170525: disconnect the roff docs from the build
OLD_FILES+=usr/share/doc/papers/beyond43.ascii.gz
OLD_FILES+=usr/share/doc/papers/bio.ascii.gz
OLD_FILES+=usr/share/doc/papers/contents.ascii.gz
OLD_FILES+=usr/share/doc/papers/devfs.ascii.gz
OLD_FILES+=usr/share/doc/papers/diskperf.ascii.gz
OLD_FILES+=usr/share/doc/papers/fsinterface.ascii.gz
OLD_FILES+=usr/share/doc/papers/hwpmc.ascii.gz
OLD_FILES+=usr/share/doc/papers/jail.ascii.gz
OLD_FILES+=usr/share/doc/papers/kernmalloc.ascii.gz
OLD_FILES+=usr/share/doc/papers/kerntune.ascii.gz
OLD_FILES+=usr/share/doc/papers/malloc.ascii.gz
OLD_FILES+=usr/share/doc/papers/newvm.ascii.gz
OLD_FILES+=usr/share/doc/papers/releng.ascii.gz
OLD_FILES+=usr/share/doc/papers/sysperf.ascii.gz
OLD_FILES+=usr/share/doc/papers/timecounter.ascii.gz
OLD_DIRS+=usr/share/doc/papers
OLD_FILES+=usr/share/doc/psd/01.cacm/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/01.cacm
OLD_FILES+=usr/share/doc/psd/02.implement/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/02.implement
OLD_FILES+=usr/share/doc/psd/03.iosys/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/03.iosys
OLD_FILES+=usr/share/doc/psd/04.uprog/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/04.uprog
OLD_FILES+=usr/share/doc/psd/05.sysman/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/05.sysman
OLD_FILES+=usr/share/doc/psd/06.Clang/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/06.Clang
OLD_FILES+=usr/share/doc/psd/12.make/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/12.make
OLD_FILES+=usr/share/doc/psd/13.rcs/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/13.rcs
OLD_FILES+=usr/share/doc/psd/13.rcs/rcs_func.ascii.gz
OLD_DIRS+=usr/share/doc/psd/13.rcs
OLD_FILES+=usr/share/doc/psd/15.yacc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/15.yacc
OLD_FILES+=usr/share/doc/psd/16.lex/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/16.lex
OLD_FILES+=usr/share/doc/psd/17.m4/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/17.m4
OLD_FILES+=usr/share/doc/psd/18.gprof/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/18.gprof
OLD_FILES+=usr/share/doc/psd/20.ipctut/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/20.ipctut
OLD_FILES+=usr/share/doc/psd/21.ipc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/21.ipc
OLD_FILES+=usr/share/doc/psd/22.rpcgen/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/22.rpcgen
OLD_FILES+=usr/share/doc/psd/23.rpc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/23.rpc
OLD_FILES+=usr/share/doc/psd/24.xdr/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/24.xdr
OLD_FILES+=usr/share/doc/psd/25.xdrrfc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/25.xdrrfc
OLD_FILES+=usr/share/doc/psd/26.rpcrfc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/26.rpcrfc
OLD_FILES+=usr/share/doc/psd/27.nfsrfc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/27.nfsrfc
OLD_FILES+=usr/share/doc/psd/Title.ascii.gz
OLD_FILES+=usr/share/doc/psd/contents.ascii.gz
OLD_DIRS+=usr/share/doc/psd/
OLD_FILES+=usr/share/doc/smm/01.setup/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/01.setup
OLD_FILES+=usr/share/doc/smm/02.config/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/02.config
OLD_FILES+=usr/share/doc/smm/03.fsck/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/03.fsck
OLD_FILES+=usr/share/doc/smm/04.quotas/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/04.quotas
OLD_FILES+=usr/share/doc/smm/05.fastfs/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/05.fastfs
OLD_FILES+=usr/share/doc/smm/06.nfs/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/06.nfs
OLD_FILES+=usr/share/doc/smm/07.lpd/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/07.lpd
OLD_FILES+=usr/share/doc/smm/08.sendmailop/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/08.sendmailop
OLD_FILES+=usr/share/doc/smm/11.timedop/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/11.timedop
OLD_FILES+=usr/share/doc/smm/12.timed/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/12.timed
OLD_FILES+=usr/share/doc/smm/18.net/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/18.net
OLD_FILES+=usr/share/doc/smm/Title.ascii.gz
OLD_FILES+=usr/share/doc/smm/contents.ascii.gz
OLD_DIRS+=usr/share/doc/smm
OLD_FILES+=usr/share/doc/usd/04.csh/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/04.csh
OLD_FILES+=usr/share/doc/usd/05.dc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/05.dc
OLD_FILES+=usr/share/doc/usd/06.bc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/06.bc
OLD_FILES+=usr/share/doc/usd/07.mail/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/07.mail
OLD_FILES+=usr/share/doc/usd/10.exref/paper.ascii.gz
OLD_FILES+=usr/share/doc/usd/10.exref/summary.ascii.gz
OLD_DIRS+=usr/share/doc/usd/10.exref
OLD_FILES+=usr/share/doc/usd/11.edit/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/11.edit
OLD_FILES+=usr/share/doc/usd/12.vi/paper.ascii.gz
OLD_FILES+=usr/share/doc/usd/12.vi/summary.ascii.gz
OLD_FILES+=usr/share/doc/usd/12.vi/viapwh.ascii.gz
OLD_DIRS+=usr/share/doc/usd/12.vi
OLD_FILES+=usr/share/doc/usd/13.viref/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/13.viref
OLD_FILES+=usr/share/doc/usd/18.msdiffs/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/18.msdiffs
OLD_FILES+=usr/share/doc/usd/19.memacros/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/19.memacros
OLD_FILES+=usr/share/doc/usd/20.meref/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/20.meref
OLD_FILES+=usr/share/doc/usd/21.troff/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/21.troff
OLD_FILES+=usr/share/doc/usd/22.trofftut/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/22.trofftut
OLD_FILES+=usr/share/doc/usd/Title.ascii.gz
OLD_FILES+=usr/share/doc/usd/contents.ascii.gz
OLD_DIRS+=usr/share/doc/usd
# 20170523: 64-bit inode support, library version bumps
OLD_LIBS+=lib/libzfs.so.2
OLD_LIBS+=usr/lib/libarchive.so.6
OLD_LIBS+=usr/lib/libmilter.so.5
OLD_LIBS+=usr/lib32/libzfs.so.2
OLD_LIBS+=usr/lib32/libarchive.so.6
OLD_LIBS+=usr/lib32/libmilter.so.5
# 20170427: NATM configuration support removed
OLD_FILES+=etc/rc.d/atm1
OLD_FILES+=etc/rc.d/atm2
OLD_FILES+=etc/rc.d/atm3
# 20170424: NATM support removed
OLD_FILES+=rescue/atmconfig
OLD_FILES+=sbin/atmconfig
OLD_FILES+=usr/include/bsnmp/snmp_atm.h
OLD_FILES+=usr/include/dev/utopia/idtphy.h
OLD_FILES+=usr/include/dev/utopia/suni.h
OLD_FILES+=usr/include/dev/utopia/utopia.h
OLD_FILES+=usr/include/dev/utopia/utopia_priv.h
OLD_DIRS+=usr/include/dev/utopia
OLD_FILES+=usr/include/net/if_atm.h
OLD_FILES+=usr/include/netgraph/atm/ng_atm.h
OLD_FILES+=usr/include/netinet/if_atm.h
OLD_FILES+=usr/include/netnatm/natm.h
OLD_FILES+=usr/lib/debug/sbin/atmconfig.debug
OLD_FILES+=usr/lib/debug/usr/lib/snmp_atm.so.6.debug
OLD_FILES+=usr/lib/snmp_atm.so
OLD_FILES+=usr/lib/snmp_atm.so.6
OLD_FILES+=usr/share/doc/atm/atmconfig.help
OLD_FILES+=usr/share/doc/atm/atmconfig_device.help
OLD_DIRS+=usr/share/doc/atm
OLD_FILES+=usr/share/man/man3/snmp_atm.3.gz
OLD_FILES+=usr/share/man/man4/en.4.gz
OLD_FILES+=usr/share/man/man4/fatm.4.gz
OLD_FILES+=usr/share/man/man4/hatm.4.gz
OLD_FILES+=usr/share/man/man4/if_en.4.gz
OLD_FILES+=usr/share/man/man4/if_fatm.4.gz
OLD_FILES+=usr/share/man/man4/if_hatm.4.gz
OLD_FILES+=usr/share/man/man4/if_patm.4.gz
OLD_FILES+=usr/share/man/man4/natm.4.gz
OLD_FILES+=usr/share/man/man4/natmip.4.gz
OLD_FILES+=usr/share/man/man4/ng_atm.4.gz
OLD_FILES+=usr/share/man/man4/patm.4.gz
OLD_FILES+=usr/share/man/man4/utopia.4.gz
OLD_FILES+=usr/share/man/man8/atmconfig.8.gz
OLD_FILES+=usr/share/man/man9/utopia.9.gz
OLD_FILES+=usr/share/snmp/defs/atm_freebsd.def
OLD_FILES+=usr/share/snmp/defs/atm_tree.def
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-ATM-FREEBSD-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-ATM.txt
# 20170420: remove GNU diff
OLD_FILES+=usr/share/man/man7/diff.7.gz
# 20170322: rename <x> to <x>_test to match the FreeBSD test suite name scheme
OLD_FILES+=usr/tests/usr.bin/col/col
OLD_FILES+=usr/tests/usr.bin/diff/diff
OLD_FILES+=usr/tests/usr.bin/ident/ident
OLD_FILES+=usr/tests/usr.bin/mkimg/mkimg
OLD_FILES+=usr/tests/usr.bin/sdiff/sdiff
OLD_FILES+=usr/tests/usr.bin/soelim/soelim
OLD_FILES+=usr/tests/usr.sbin/pw/pw_config
OLD_FILES+=usr/tests/usr.sbin/pw/pw_etcdir
OLD_FILES+=usr/tests/usr.sbin/pw/pw_groupadd
OLD_FILES+=usr/tests/usr.sbin/pw/pw_groupdel
OLD_FILES+=usr/tests/usr.sbin/pw/pw_groupmod
OLD_FILES+=usr/tests/usr.sbin/pw/pw_lock
OLD_FILES+=usr/tests/usr.sbin/pw/pw_useradd
OLD_FILES+=usr/tests/usr.sbin/pw/pw_userdel
OLD_FILES+=usr/tests/usr.sbin/pw/pw_usermod
OLD_FILES+=usr/tests/usr.sbin/pw/pw_usernext
# 20170319: io_test requires zh_TW.Big5 locale.
OLD_FILES+=usr/tests/lib/libc/locale/io_test
# 20170319: remove nls for non supported Big5* locales
OLD_DIRS+=usr/share/nls/zh_HK.Big5HKSCS
OLD_DIRS+=usr/share/nls/zh_TW.Big5
# 20170313: move .../sys/geom/eli/... to .../sys/geom/class/eli/...
OLD_FILES+=usr/tests/sys/geom/eli/pbkdf2/pbkdf2
OLD_FILES+=usr/tests/sys/geom/eli/pbkdf2/Kyuafile
OLD_FILES+=usr/tests/sys/geom/eli/Kyuafile
OLD_DIRS+=usr/tests/sys/geom/eli/pbkdf2
OLD_DIRS+=usr/tests/sys/geom/eli
# 20170313: sbin/ipftest and ipresend temporarily disconnected.
OLD_FILES+=sbin/ipftest
OLD_FILES+=sbin/ipresend
# 20170311: Remove WITHOUT_MANDOCDB option
OLD_FILES+=usr/share/man/man1/makewhatis.1.gz
# 20170308: rename some tests
OLD_FILES+=usr/tests/bin/pwait/pwait
OLD_FILES+=usr/tests/usr.bin/timeout/timeout
# 20170307: remove pcap-int.h
OLD_FILES+=usr/include/pcap-int.h
# 20170302: new libc++ import which bumps version from 3.9.1 to 4.0.0.
OLD_FILES+=usr/include/c++/v1/__undef___deallocate
OLD_FILES+=usr/include/c++/v1/tr1/__undef___deallocate
# 20170302: new clang import which bumps version from 3.9.1 to 4.0.0.
OLD_FILES+=usr/lib/clang/3.9.1/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/3.9.1/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/3.9.1/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/3.9.1/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/3.9.1/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/3.9.1/include/sanitizer/esan_interface.h
OLD_FILES+=usr/lib/clang/3.9.1/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/3.9.1/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/3.9.1/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/3.9.1/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/3.9.1/include/sanitizer
OLD_FILES+=usr/lib/clang/3.9.1/include/__clang_cuda_cmath.h
OLD_FILES+=usr/lib/clang/3.9.1/include/__clang_cuda_intrinsics.h
OLD_FILES+=usr/lib/clang/3.9.1/include/__clang_cuda_math_forward_declares.h
OLD_FILES+=usr/lib/clang/3.9.1/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/3.9.1/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/3.9.1/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/3.9.1/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/3.9.1/include/adxintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/altivec.h
OLD_FILES+=usr/lib/clang/3.9.1/include/ammintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/arm_acle.h
OLD_FILES+=usr/lib/clang/3.9.1/include/arm_neon.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512ifmaintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512ifmavlintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512pfintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512vbmiintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512vbmivlintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512vlcdintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/avxintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/clflushoptintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/cpuid.h
OLD_FILES+=usr/lib/clang/3.9.1/include/cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/3.9.1/include/emmintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/htmintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/immintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/3.9.1/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/3.9.1/include/mmintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/module.modulemap
OLD_FILES+=usr/lib/clang/3.9.1/include/msa.h
OLD_FILES+=usr/lib/clang/3.9.1/include/mwaitxintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/opencl-c.h
OLD_FILES+=usr/lib/clang/3.9.1/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/s390intrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/shaintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/smmintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/vadefs.h
OLD_FILES+=usr/lib/clang/3.9.1/include/vecintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/x86intrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/xopintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/3.9.1/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/3.9.1/include
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.stats-i386.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.stats-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.stats_client-i386.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.stats_client-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.9.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/3.9.1/lib/freebsd
OLD_DIRS+=usr/lib/clang/3.9.1/lib
OLD_DIRS+=usr/lib/clang/3.9.1
# 20170226: SVR4 compatibility removed
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/share/man/man4/streams.4
OLD_FILES+=usr/share/man/man4/svr4.4
.endif
# 20170219: OpenPAM RADULA upgrade removed the libpam tests
OLD_FILES+=usr/tests/lib/libpam/Kyuafile
OLD_FILES+=usr/tests/lib/libpam/t_openpam_ctype
OLD_FILES+=usr/tests/lib/libpam/t_openpam_readlinev
OLD_FILES+=usr/tests/lib/libpam/t_openpam_readword
OLD_DIRS+=usr/test/lib/libpam
# 20170206: remove bdes(1)
OLD_FILES+=usr/bin/bdes
OLD_FILES+=usr/lib/debug/usr/bin/bdes.debug
OLD_FILES+=usr/share/man/man1/bdes.1.gz
# 20170206: merged projects/ipsec
OLD_FILES+=usr/include/netinet/ip_ipsec.h
OLD_FILES+=usr/include/netinet6/ip6_ipsec.h
# 20170128: remove pc98 support
OLD_FILES+=usr/include/dev/ic/i8251.h
OLD_FILES+=usr/include/dev/ic/i8255.h
OLD_FILES+=usr/include/dev/ic/rsa.h
OLD_FILES+=usr/include/dev/ic/wd33c93reg.h
OLD_FILES+=usr/include/sys/disk/pc98.h
OLD_FILES+=usr/include/sys/diskpc98.h
OLD_FILES+=usr/share/man/man4/i386/ct.4.gz
OLD_FILES+=usr/share/man/man4/i386/snc.4.gz
OLD_FILES+=usr/share/syscons/keymaps/jp.pc98.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/jp.pc98.kbd
OLD_FILES+=usr/share/vt/keymaps/jp.pc98.iso.kbd
OLD_FILES+=usr/share/vt/keymaps/jp.pc98.kbd
# 20170110: Four files from ggate tests consolidated into one
OLD_FILES+=usr/tests/sys/geom/class/gate/1_test
OLD_FILES+=usr/tests/sys/geom/class/gate/2_test
OLD_FILES+=usr/tests/sys/geom/class/gate/3_test
OLD_FILES+=usr/tests/sys/geom/class/gate/conf.sh
# 20170103: libbsnmptools.so made into an INTERNALLIB
OLD_FILES+=usr/lib/libbsnmptools.a
OLD_FILES+=usr/lib/libbsnmptools_p.a
OLD_LIBS+=usr/lib/libbsnmptools.so.0
OLD_LIBS+=usr/lib/libbsnmptools.so
# 20170102: sysdecode_getfsstat_flags() renamed to sysdecode_getfsstat_mode()
OLD_FILES+=usr/share/man/man3/sysdecode_getfsstat_flags.3.gz
# 20161230: libarchive ACL pax test renamed to test_acl_pax_posix1e.tar.uu
OLD_FILES+=usr/tests/lib/libarchive/test_acl_pax.tar.uu
# 20161229: Three files from gnop tests consolidated into one
OLD_FILES+=usr/tests/sys/geom/class/nop/1_test
OLD_FILES+=usr/tests/sys/geom/class/nop/2_test
OLD_FILES+=usr/tests/sys/geom/class/nop/conf.sh
# 20161217: new clang import which bumps version from 3.9.0 to 3.9.1.
OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/esan_interface.h
OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/3.9.0/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/3.9.0/include/sanitizer
OLD_FILES+=usr/lib/clang/3.9.0/include/__clang_cuda_cmath.h
OLD_FILES+=usr/lib/clang/3.9.0/include/__clang_cuda_intrinsics.h
OLD_FILES+=usr/lib/clang/3.9.0/include/__clang_cuda_math_forward_declares.h
OLD_FILES+=usr/lib/clang/3.9.0/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/3.9.0/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/3.9.0/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/3.9.0/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/3.9.0/include/adxintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/altivec.h
OLD_FILES+=usr/lib/clang/3.9.0/include/ammintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/arm_acle.h
OLD_FILES+=usr/lib/clang/3.9.0/include/arm_neon.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512ifmaintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512ifmavlintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512pfintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512vbmiintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512vbmivlintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512vlcdintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/avxintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/clflushoptintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/cpuid.h
OLD_FILES+=usr/lib/clang/3.9.0/include/cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/3.9.0/include/emmintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/htmintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/immintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/3.9.0/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/3.9.0/include/mmintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/module.modulemap
OLD_FILES+=usr/lib/clang/3.9.0/include/mwaitxintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/opencl-c.h
OLD_FILES+=usr/lib/clang/3.9.0/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/s390intrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/shaintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/smmintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/vadefs.h
OLD_FILES+=usr/lib/clang/3.9.0/include/vecintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/x86intrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/xopintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/3.9.0/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/3.9.0/include
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.stats-i386.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.stats-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.stats_client-i386.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.stats_client-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.9.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/3.9.0/lib/freebsd
OLD_DIRS+=usr/lib/clang/3.9.0/lib
OLD_DIRS+=usr/lib/clang/3.9.0
# 20161205: libproc version bump
OLD_LIBS+=usr/lib/libproc.so.3
OLD_LIBS+=usr/lib32/libproc.so.3
# 20161127: Remove vm_page_cache(9)
OLD_FILES+=usr/share/man/man9/vm_page_cache.9.gz
# 20161124: new clang import which bumps version from 3.8.0 to 3.9.0.
OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/3.8.0/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/3.8.0/include/sanitizer
OLD_FILES+=usr/lib/clang/3.8.0/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/3.8.0/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/3.8.0/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/3.8.0/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/3.8.0/include/adxintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/altivec.h
OLD_FILES+=usr/lib/clang/3.8.0/include/ammintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/arm_acle.h
OLD_FILES+=usr/lib/clang/3.8.0/include/arm_neon.h
OLD_FILES+=usr/lib/clang/3.8.0/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/avxintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/cpuid.h
OLD_FILES+=usr/lib/clang/3.8.0/include/cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/3.8.0/include/emmintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/htmintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/immintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/3.8.0/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/3.8.0/include/mmintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/module.modulemap
OLD_FILES+=usr/lib/clang/3.8.0/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/s390intrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/shaintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/smmintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/vadefs.h
OLD_FILES+=usr/lib/clang/3.8.0/include/vecintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/x86intrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/xopintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/3.8.0/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/3.8.0/include
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.8.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/3.8.0/lib/freebsd
OLD_DIRS+=usr/lib/clang/3.8.0/lib
OLD_DIRS+=usr/lib/clang/3.8.0
# 20161121: Hyper-V manuals only apply to amd64 and i386.
.if ${TARGET_ARCH} != "amd64" && ${TARGET_ARCH} != "i386"
OLD_FILES+=usr/share/man/man4/hv_kvp.4.gz
OLD_FILES+=usr/share/man/man4/hv_netvsc.4.gz
OLD_FILES+=usr/share/man/man4/hv_storvsc.4.gz
OLD_FILES+=usr/share/man/man4/hv_utils.4.gz
OLD_FILES+=usr/share/man/man4/hv_vmbus.4.gz
OLD_FILES+=usr/share/man/man4/hv_vss.4.gz
.endif
# 20161118: Remove hv_ata_pci_disengage(4)
OLD_FILES+=usr/share/man/man4/hv_ata_pci_disengage.4.gz
# 20161017: urtwn(4) was merged into rtwn(4)
OLD_FILES+=usr/share/man/man4/urtwn.4.gz
OLD_FILES+=usr/share/man/man4/urtwnfw.4.gz
# 20161015: Remove GNU rcs
OLD_FILES+=usr/bin/ci
OLD_FILES+=usr/bin/co
OLD_FILES+=usr/bin/merge
OLD_FILES+=usr/bin/rcs
OLD_FILES+=usr/bin/rcsclean
OLD_FILES+=usr/bin/rcsdiff
OLD_FILES+=usr/bin/rcsfreeze
OLD_FILES+=usr/bin/rcsmerge
OLD_FILES+=usr/bin/rlog
OLD_FILES+=usr/share/doc/psd/13.rcs/paper.ascii.gz
OLD_FILES+=usr/share/doc/psd/13.rcs/rcs_func.ascii.gz
OLD_DIRS+=usr/share/doc/psd/13.rcs
OLD_FILES+=usr/share/man/man1/ci.1.gz
OLD_FILES+=usr/share/man/man1/co.1.gz
OLD_FILES+=usr/share/man/man1/merge.1.gz
OLD_FILES+=usr/share/man/man1/rcs.1.gz
OLD_FILES+=usr/share/man/man1/rcsclean.1.gz
OLD_FILES+=usr/share/man/man1/rcsdiff.1.gz
OLD_FILES+=usr/share/man/man1/rcsfreeze.1.gz
OLD_FILES+=usr/share/man/man1/rcsintro.1.gz
OLD_FILES+=usr/share/man/man1/rcsmerge.1.gz
OLD_FILES+=usr/share/man/man1/rlog.1.gz
OLD_FILES+=usr/share/man/man5/rcsfile.5.gz
# 20161010: remove link to removed m_getclr(9) macro
OLD_FILES+=usr/share/man/man9/m_getclr.9.gz
# 20161003: MK_ELFCOPY_AS_OBJCOPY option retired
OLD_FILES+=usr/bin/elfcopy
OLD_FILES+=usr/share/man/man1/elfcopy.1.gz
# 20160906: libkqueue tests moved to /usr/tests/sys/kqueue/libkqueue
OLD_FILES+=usr/tests/sys/kqueue/kqtest
OLD_FILES+=usr/tests/sys/kqueue/kqueue_test
# 20160903: idle page zeroing support removed
OLD_FILES+=usr/share/man/man9/pmap_zero_idle.9.gz
# 20160901: Remove digi(4)
OLD_FILES+=usr/share/man/man4/digi.4.gz
# 20160819: Remove ie(4)
OLD_FILES+=usr/share/man/man4/i386/ie.4.gz
# 20160819: Remove spic(4)
OLD_FILES+=usr/share/man/man4/spic.4.gz
# 20160819: Remove wl(4) and wlconfig(8)
OLD_FILES+=usr/share/man/man4/i386/wl.4.gz
OLD_FILES+=usr/sbin/wlconfig
OLD_FILES+=usr/share/man/man8/i386/wlconfig.8.gz
# 20160819: Remove si(4) and sicontrol(8)
OLD_FILES+=usr/share/man/man4/si.4.gz
OLD_FILES+=usr/sbin/sicontrol
OLD_FILES+=usr/share/man/man8/sicontrol.8.gz
# 20160819: Remove scd(4)
OLD_FILES+=usr/share/man/man4/scd.4.gz
# 20160815: Remove mcd(4)
OLD_FILES+=usr/share/man/man4/mcd.4.gz
# 20160805: lockmgr_waiters(9) removed
OLD_FILES+=usr/share/man/man9/lockmgr_waiters.9.gz
# 20160703: POSIXify locales with variants
OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_Hant_TW.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/zh_Hant_TW.UTF-8
OLD_FILES+=usr/share/locale/zh_Hant_TW.Big5/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_Hant_TW.Big5/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_Hant_TW.Big5/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_Hant_TW.Big5/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_Hant_TW.Big5/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_Hant_TW.Big5/LC_TIME
OLD_DIRS+=usr/share/locale/zh_Hant_TW.Big5
OLD_FILES+=usr/share/locale/zh_Hant_HK.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_Hant_HK.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_Hant_HK.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_Hant_HK.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_Hant_HK.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_Hant_HK.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/zh_Hant_HK.UTF-8
OLD_FILES+=usr/share/locale/zh_Hans_CN.eucCN/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_Hans_CN.eucCN/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_Hans_CN.eucCN/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_Hans_CN.eucCN/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_Hans_CN.eucCN/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_Hans_CN.eucCN/LC_TIME
OLD_DIRS+=usr/share/locale/zh_Hans_CN.eucCN
OLD_FILES+=usr/share/locale/zh_Hans_CN.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_Hans_CN.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_Hans_CN.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_Hans_CN.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_Hans_CN.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_Hans_CN.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/zh_Hans_CN.UTF-8
OLD_FILES+=usr/share/locale/zh_Hans_CN.GBK/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_Hans_CN.GBK/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_Hans_CN.GBK/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_Hans_CN.GBK/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_Hans_CN.GBK/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_Hans_CN.GBK/LC_TIME
OLD_DIRS+=usr/share/locale/zh_Hans_CN.GBK
OLD_FILES+=usr/share/locale/zh_Hans_CN.GB2312/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_Hans_CN.GB2312/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_Hans_CN.GB2312/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_Hans_CN.GB2312/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_Hans_CN.GB2312/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_Hans_CN.GB2312/LC_TIME
OLD_DIRS+=usr/share/locale/zh_Hans_CN.GB2312
OLD_FILES+=usr/share/locale/zh_Hans_CN.GB18030/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_Hans_CN.GB18030/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_Hans_CN.GB18030/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_Hans_CN.GB18030/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_Hans_CN.GB18030/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_Hans_CN.GB18030/LC_TIME
OLD_DIRS+=usr/share/locale/zh_Hans_CN.GB18030
OLD_FILES+=usr/share/locale/sr_Latn_RS.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/sr_Latn_RS.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/sr_Latn_RS.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/sr_Latn_RS.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/sr_Latn_RS.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/sr_Latn_RS.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/sr_Latn_RS.UTF-8
OLD_FILES+=usr/share/locale/sr_Latn_RS.ISO8859-2/LC_COLLATE
OLD_FILES+=usr/share/locale/sr_Latn_RS.ISO8859-2/LC_CTYPE
OLD_FILES+=usr/share/locale/sr_Latn_RS.ISO8859-2/LC_MESSAGES
OLD_FILES+=usr/share/locale/sr_Latn_RS.ISO8859-2/LC_MONETARY
OLD_FILES+=usr/share/locale/sr_Latn_RS.ISO8859-2/LC_NUMERIC
OLD_FILES+=usr/share/locale/sr_Latn_RS.ISO8859-2/LC_TIME
OLD_DIRS+=usr/share/locale/sr_Latn_RS.ISO8859-2
OLD_FILES+=usr/share/locale/sr_Cyrl_RS.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/sr_Cyrl_RS.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/sr_Cyrl_RS.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/sr_Cyrl_RS.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/sr_Cyrl_RS.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/sr_Cyrl_RS.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/sr_Cyrl_RS.UTF-8
OLD_FILES+=usr/share/locale/sr_Cyrl_RS.ISO8859-5/LC_COLLATE
OLD_FILES+=usr/share/locale/sr_Cyrl_RS.ISO8859-5/LC_CTYPE
OLD_FILES+=usr/share/locale/sr_Cyrl_RS.ISO8859-5/LC_MESSAGES
OLD_FILES+=usr/share/locale/sr_Cyrl_RS.ISO8859-5/LC_MONETARY
OLD_FILES+=usr/share/locale/sr_Cyrl_RS.ISO8859-5/LC_NUMERIC
OLD_FILES+=usr/share/locale/sr_Cyrl_RS.ISO8859-5/LC_TIME
OLD_DIRS+=usr/share/locale/sr_Cyrl_RS.ISO8859-5
OLD_FILES+=usr/share/locale/mn_Cyrl_MN.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/mn_Cyrl_MN.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/mn_Cyrl_MN.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/mn_Cyrl_MN.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/mn_Cyrl_MN.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/mn_Cyrl_MN.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/mn_Cyrl_MN.UTF-8
OLD_FILES+=usr/share/locale/kk_Cyrl_KZ.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/kk_Cyrl_KZ.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/kk_Cyrl_KZ.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/kk_Cyrl_KZ.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/kk_Cyrl_KZ.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/kk_Cyrl_KZ.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/kk_Cyrl_KZ.UTF-8
# 20160608: removed pam_verbose_error
OLD_LIBS+=usr/lib/libpam.so.5
OLD_LIBS+=usr/lib/pam_chroot.so.5
OLD_LIBS+=usr/lib/pam_deny.so.5
OLD_LIBS+=usr/lib/pam_echo.so.5
OLD_LIBS+=usr/lib/pam_exec.so.5
OLD_LIBS+=usr/lib/pam_ftpusers.so.5
OLD_LIBS+=usr/lib/pam_group.so.5
OLD_LIBS+=usr/lib/pam_guest.so.5
OLD_LIBS+=usr/lib/pam_krb5.so.5
OLD_LIBS+=usr/lib/pam_ksu.so.5
OLD_LIBS+=usr/lib/pam_lastlog.so.5
OLD_LIBS+=usr/lib/pam_login_access.so.5
OLD_LIBS+=usr/lib/pam_nologin.so.5
OLD_LIBS+=usr/lib/pam_opie.so.5
OLD_LIBS+=usr/lib/pam_opieaccess.so.5
OLD_LIBS+=usr/lib/pam_passwdqc.so.5
OLD_LIBS+=usr/lib/pam_permit.so.5
OLD_LIBS+=usr/lib/pam_radius.so.5
OLD_LIBS+=usr/lib/pam_rhosts.so.5
OLD_LIBS+=usr/lib/pam_rootok.so.5
OLD_LIBS+=usr/lib/pam_securetty.so.5
OLD_LIBS+=usr/lib/pam_self.so.5
OLD_LIBS+=usr/lib/pam_ssh.so.5
OLD_LIBS+=usr/lib/pam_tacplus.so.5
OLD_LIBS+=usr/lib/pam_unix.so.5
OLD_LIBS+=usr/lib32/libpam.so.5
OLD_LIBS+=usr/lib32/pam_chroot.so.5
OLD_LIBS+=usr/lib32/pam_deny.so.5
OLD_LIBS+=usr/lib32/pam_echo.so.5
OLD_LIBS+=usr/lib32/pam_exec.so.5
OLD_LIBS+=usr/lib32/pam_ftpusers.so.5
OLD_LIBS+=usr/lib32/pam_group.so.5
OLD_LIBS+=usr/lib32/pam_guest.so.5
OLD_LIBS+=usr/lib32/pam_krb5.so.5
OLD_LIBS+=usr/lib32/pam_ksu.so.5
OLD_LIBS+=usr/lib32/pam_lastlog.so.5
OLD_LIBS+=usr/lib32/pam_login_access.so.5
OLD_LIBS+=usr/lib32/pam_nologin.so.5
OLD_LIBS+=usr/lib32/pam_opie.so.5
OLD_LIBS+=usr/lib32/pam_opieaccess.so.5
OLD_LIBS+=usr/lib32/pam_passwdqc.so.5
OLD_LIBS+=usr/lib32/pam_permit.so.5
OLD_LIBS+=usr/lib32/pam_radius.so.5
OLD_LIBS+=usr/lib32/pam_rhosts.so.5
OLD_LIBS+=usr/lib32/pam_rootok.so.5
OLD_LIBS+=usr/lib32/pam_securetty.so.5
OLD_LIBS+=usr/lib32/pam_self.so.5
OLD_LIBS+=usr/lib32/pam_ssh.so.5
OLD_LIBS+=usr/lib32/pam_tacplus.so.5
OLD_LIBS+=usr/lib32/pam_unix.so.5
# 20160523: remove extranous ALTQ files
OLD_FILES+=usr/include/altq/altq_codel.h
OLD_FILES+=usr/include/altq/altq_fairq.h
# 20160519: remove DTrace Toolkit from base
OLD_FILES+=usr/sbin/dtruss
OLD_FILES+=usr/share/dtrace/toolkit/execsnoop
OLD_FILES+=usr/share/dtrace/toolkit/hotkernel
OLD_FILES+=usr/share/dtrace/toolkit/hotuser
OLD_FILES+=usr/share/dtrace/toolkit/opensnoop
OLD_FILES+=usr/share/dtrace/toolkit/procsystime
OLD_DIRS+=usr/share/dtrace/toolkit
OLD_FILES+=usr/share/man/man1/dtruss.1.gz
# 20160519: stale MLINK removed
OLD_FILES+=usr/share/man/man9/rman_await_resource.9.gz
# 20160517: ReiserFS removed
OLD_FILES+=usr/share/man/man5/reiserfs.5.gz
# 20160504: tests rework
OLD_FILES+=usr/tests/lib/libc/regex/data/README
# 20160430: kvm_getfiles(3) removed from kvm(3)
OLD_LIBS+=lib/libkvm.so.6
OLD_LIBS+=usr/lib32/libkvm.so.6
OLD_FILES+=usr/share/man/man3/kvm_getfiles.3.gz
# 20160423: remove mroute6d
OLD_FILES+=etc/rc.d/mroute6d
# 20160419: rename units.lib -> definitions.units
OLD_FILES+=usr/share/misc/units.lib
# 20160419: remove Big5HKSCS locales
OLD_FILES+=usr/share/locale/zh_HK.Big5HKSCS/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_HK.Big5HKSCS/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_HK.Big5HKSCS/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_HK.Big5HKSCS/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_HK.Big5HKSCS/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_HK.Big5HKSCS/LC_TIME
OLD_DIRS+=usr/share/locale/zh_HK.Big5HKSCS
OLD_FILES+=usr/share/locale/zh_Hant_HK.Big5HKSCS/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_Hant_HK.Big5HKSCS/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_Hant_HK.Big5HKSCS/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_Hant_HK.Big5HKSCS/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_Hant_HK.Big5HKSCS/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_Hant_HK.Big5HKSCS/LC_TIME
OLD_DIRS+=usr/share/locale/zh_Hant_HK.Big5HKSCS
# 20160317: rman_res_t size bump to uintmax_t
OLD_LIBS+=usr/lib/libdevinfo.so.5
OLD_LIBS+=usr/lib32/libdevinfo.so.5
# 20160305: new clang import which bumps version from 3.7.1 to 3.8.0.
OLD_FILES+=usr/bin/macho-dump
OLD_FILES+=usr/bin/tblgen
OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/3.7.1/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/3.7.1/include/sanitizer
OLD_FILES+=usr/lib/clang/3.7.1/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/3.7.1/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/3.7.1/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/3.7.1/include/adxintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/altivec.h
OLD_FILES+=usr/lib/clang/3.7.1/include/ammintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/arm_acle.h
OLD_FILES+=usr/lib/clang/3.7.1/include/arm_neon.h
OLD_FILES+=usr/lib/clang/3.7.1/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/avxintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/cpuid.h
OLD_FILES+=usr/lib/clang/3.7.1/include/cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/3.7.1/include/emmintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/htmintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/immintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/3.7.1/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/3.7.1/include/mmintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/module.modulemap
OLD_FILES+=usr/lib/clang/3.7.1/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/s390intrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/shaintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/smmintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/vadefs.h
OLD_FILES+=usr/lib/clang/3.7.1/include/vecintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/x86intrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/xopintrin.h
OLD_FILES+=usr/lib/clang/3.7.1/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/3.7.1/include
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.7.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/3.7.1/lib/freebsd
OLD_DIRS+=usr/lib/clang/3.7.1/lib
OLD_DIRS+=usr/lib/clang/3.7.1
# 20160301: Remove taskqueue_enqueue_fast
OLD_FILES+=usr/share/man/man9/taskqueue_enqueue_fast.9.gz
# 20160225: Remove casperd and libcapsicum.
OLD_FILES+=sbin/casperd
OLD_FILES+=etc/rc.d/casperd
OLD_FILES+=usr/share/man/man8/casperd.8.gz
OLD_FILES+=usr/include/libcapsicum.h
OLD_FILES+=usr/include/libcapsicum_service.h
OLD_FILES+=usr/include/libcapsicum.h
OLD_FILES+=usr/share/man/man3/libcapsicum.3.gz
OLD_FILES+=usr/include/libcapsicum_dns.h
OLD_FILES+=usr/include/libcapsicum_grp.h
OLD_FILES+=usr/include/libcapsicum_impl.h
OLD_FILES+=usr/include/libcapsicum_pwd.h
OLD_FILES+=usr/include/libcapsicum_random.h
OLD_FILES+=usr/include/libcapsicum_sysctl.h
OLD_FILES+=libexec/casper/dns
OLD_FILES+=libexec/casper/grp
OLD_FILES+=libexec/casper/pwd
OLD_FILES+=libexec/casper/random
OLD_FILES+=libexec/casper/sysctl
OLD_FILES+=libexec/casper/.debug/random.debug
OLD_FILES+=libexec/casper/.debug/dns.debug
OLD_FILES+=libexec/casper/.debug/sysctl.debug
OLD_FILES+=libexec/casper/.debug/pwd.debug
OLD_FILES+=libexec/casper/.debug/grp.debug
OLD_DIRS+=libexec/casper/.debug
OLD_DIRS+=libexec/casper
OLD_FILES+=usr/lib/libcapsicum.a
OLD_FILES+=usr/lib/libcapsicum.so
OLD_LIBS+=lib/libcapsicum.so.0
OLD_FILES+=usr/lib/libcapsicum_p.a
OLD_FILES+=usr/lib32/libcapsicum.a
OLD_FILES+=usr/lib32/libcapsicum.so
OLD_LIBS+=usr/lib32/libcapsicum.so.0
OLD_FILES+=usr/lib32/libcapsicum_p.a
# 20160223: functionality from mkulzma(1) merged into mkuzip(1)
OLD_FILES+=usr/bin/mkulzma
OLD_FILES+=usr/share/man/man4/geom_uncompress.4.gz
OLD_FILES+=usr/share/man/man8/mkulzma.8.gz
# 20160211: Remove obsolete unbound-control-setup
OLD_FILES+=usr/sbin/unbound-control-setup
# 20160121: cc.h moved
OLD_FILES+=usr/include/netinet/cc.h
# 20160116: Update mandoc to cvs snapshot 20160116
OLD_FILES+=usr/share/mdocml/example.style.css
OLD_FILES+=usr/share/mdocml/style.css
OLD_DIRS+=usr/share/mdocml
# 20160114: SA-16:06.snmpd
OLD_FILES+=usr/share/examples/etc/snmpd.config
# 20160107: GNU ld installed as ld.bfd and linked as ld
OLD_FILES+=usr/lib/debug/usr/bin/ld.debug
# 20151225: new clang import which bumps version from 3.7.0 to 3.7.1.
OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/3.7.0/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/3.7.0/include/sanitizer
OLD_FILES+=usr/lib/clang/3.7.0/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/3.7.0/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/3.7.0/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/3.7.0/include/adxintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/altivec.h
OLD_FILES+=usr/lib/clang/3.7.0/include/ammintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/arm_acle.h
OLD_FILES+=usr/lib/clang/3.7.0/include/arm_neon.h
OLD_FILES+=usr/lib/clang/3.7.0/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/avxintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/cpuid.h
OLD_FILES+=usr/lib/clang/3.7.0/include/cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/3.7.0/include/emmintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/htmintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/immintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/3.7.0/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/3.7.0/include/mmintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/module.modulemap
OLD_FILES+=usr/lib/clang/3.7.0/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/s390intrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/shaintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/smmintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/vadefs.h
OLD_FILES+=usr/lib/clang/3.7.0/include/vecintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/x86intrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/xopintrin.h
OLD_FILES+=usr/lib/clang/3.7.0/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/3.7.0/include
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.7.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/3.7.0/lib/freebsd
OLD_DIRS+=usr/lib/clang/3.7.0/lib
OLD_DIRS+=usr/lib/clang/3.7.0
# 20151130: libelf moved from /usr/lib to /lib (libkvm dependency in r291406)
OLD_LIBS+=usr/lib/libelf.so.2
# 20151115: Fox bad upgrade scheme
OLD_FILES+=usr/share/locale/zh_CN.GB18030/zh_Hans_CN.GB18030
OLD_FILES+=usr/share/locale/zh_CN.GB2312/zh_Hans_CN.GB2312
OLD_FILES+=usr/share/locale/zh_CN.GBK/zh_Hans_CN.GBK
OLD_FILES+=usr/share/locale/zh_CN.UTF-8/zh_Hans_CN.UTF-8
OLD_FILES+=usr/share/locale/zh_CN.eucCN/zh_Hans_CN.eucCN
OLD_FILES+=usr/share/locale/zh_TW.Big5/zh_Hant_TW.Big5
OLD_FILES+=usr/share/locale/zh_TW.UTF-8/zh_Hant_TW.UTF-8
# 20151107: String collation improvements
OLD_FILES+=usr/share/locale/UTF-8/LC_CTYPE
OLD_DIRS+=usr/share/locale/UTF-8
OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_COLLATE
OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_CTYPE
OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_MESSAGES
OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_MONETARY
OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_NUMERIC
OLD_FILES+=usr/share/locale/kk_KZ.PT154/LC_TIME
OLD_DIRS+=usr/share/locale/kk_KZ.PT154/
OLD_FILES+=usr/share/locale/la_LN.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/la_LN.ISO8859-1
OLD_FILES+=usr/share/locale/la_LN.ISO8859-13/LC_COLLATE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-13/LC_CTYPE
OLD_DIRS+=usr/share/locale/la_LN.ISO8859-13
OLD_FILES+=usr/share/locale/la_LN.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/la_LN.ISO8859-15
OLD_FILES+=usr/share/locale/la_LN.ISO8859-2/LC_COLLATE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-2/LC_CTYPE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-2/LC_TIME
OLD_DIRS+=usr/share/locale/la_LN.ISO8859-2
OLD_FILES+=usr/share/locale/la_LN.ISO8859-4/LC_COLLATE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-4/LC_CTYPE
OLD_FILES+=usr/share/locale/la_LN.ISO8859-4/LC_TIME
OLD_DIRS+=usr/share/locale/la_LN.ISO8859-4
OLD_FILES+=usr/share/locale/la_LN.US-ASCII/LC_COLLATE
OLD_FILES+=usr/share/locale/la_LN.US-ASCII/LC_CTYPE
OLD_FILES+=usr/share/locale/la_LN.US-ASCII/LC_TIME
OLD_DIRS+=usr/share/locale/la_LN.US-ASCII
OLD_FILES+=usr/share/locale/lt_LT.ISO8859-4/LC_MESSAGES
OLD_FILES+=usr/share/locale/lt_LT.ISO8859-4/LC_TIME
OLD_FILES+=usr/share/locale/lt_LT.ISO8859-4/LC_COLLATE
OLD_FILES+=usr/share/locale/lt_LT.ISO8859-4/LC_MONETARY
OLD_FILES+=usr/share/locale/lt_LT.ISO8859-4/LC_CTYPE
OLD_FILES+=usr/share/locale/lt_LT.ISO8859-4/LC_NUMERIC
OLD_DIRS+=usr/share/locale/lt_LT.ISO8859-4
OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/no_NO.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/no_NO.ISO8859-1
OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/no_NO.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/no_NO.ISO8859-15
OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/no_NO.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/no_NO.UTF-8
OLD_FILES+=usr/share/locale/sr_YU.ISO8859-2/LC_COLLATE
OLD_FILES+=usr/share/locale/sr_YU.ISO8859-2/LC_TIME
OLD_FILES+=usr/share/locale/sr_YU.ISO8859-2/LC_CTYPE
OLD_FILES+=usr/share/locale/sr_YU.ISO8859-2/LC_MESSAGES
OLD_FILES+=usr/share/locale/sr_YU.ISO8859-2/LC_NUMERIC
OLD_FILES+=usr/share/locale/sr_YU.ISO8859-2/LC_MONETARY
OLD_DIRS+=usr/share/locale/sr_YU.ISO8859-2
OLD_FILES+=usr/share/locale/sr_YU.ISO8859-5/LC_COLLATE
OLD_FILES+=usr/share/locale/sr_YU.ISO8859-5/LC_MONETARY
OLD_FILES+=usr/share/locale/sr_YU.ISO8859-5/LC_NUMERIC
OLD_FILES+=usr/share/locale/sr_YU.ISO8859-5/LC_CTYPE
OLD_FILES+=usr/share/locale/sr_YU.ISO8859-5/LC_TIME
OLD_FILES+=usr/share/locale/sr_YU.ISO8859-5/LC_MESSAGES
OLD_DIRS+=usr/share/locale/sr_YU.ISO8859-5
OLD_FILES+=usr/share/locale/sr_YU.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/sr_YU.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/sr_YU.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/sr_YU.UTF-8/LC_TIME
OLD_FILES+=usr/share/locale/sr_YU.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/sr_YU.UTF-8/LC_MESSAGES
OLD_DIRS+=usr/share/locale/sr_YU.UTF-8
# 20151101: added missing _test suffix on multiple tests in lib/libc
OLD_FILES+=usr/tests/lib/libc/c063/faccessat
OLD_FILES+=usr/tests/lib/libc/c063/fchmodat
OLD_FILES+=usr/tests/lib/libc/c063/fchownat
OLD_FILES+=usr/tests/lib/libc/c063/fexecve
OLD_FILES+=usr/tests/lib/libc/c063/fstatat
OLD_FILES+=usr/tests/lib/libc/c063/linkat
OLD_FILES+=usr/tests/lib/libc/c063/mkdirat
OLD_FILES+=usr/tests/lib/libc/c063/mkfifoat
OLD_FILES+=usr/tests/lib/libc/c063/mknodat
OLD_FILES+=usr/tests/lib/libc/c063/openat
OLD_FILES+=usr/tests/lib/libc/c063/readlinkat
OLD_FILES+=usr/tests/lib/libc/c063/renameat
OLD_FILES+=usr/tests/lib/libc/c063/symlinkat
OLD_FILES+=usr/tests/lib/libc/c063/unlinkat
OLD_FILES+=usr/tests/lib/libc/c063/utimensat
OLD_FILES+=usr/tests/lib/libc/string/memchr
OLD_FILES+=usr/tests/lib/libc/string/memcpy
OLD_FILES+=usr/tests/lib/libc/string/memmem
OLD_FILES+=usr/tests/lib/libc/string/memset
OLD_FILES+=usr/tests/lib/libc/string/strcat
OLD_FILES+=usr/tests/lib/libc/string/strchr
OLD_FILES+=usr/tests/lib/libc/string/strcmp
OLD_FILES+=usr/tests/lib/libc/string/strcpy
OLD_FILES+=usr/tests/lib/libc/string/strcspn
OLD_FILES+=usr/tests/lib/libc/string/strerror
OLD_FILES+=usr/tests/lib/libc/string/strlen
OLD_FILES+=usr/tests/lib/libc/string/strpbrk
OLD_FILES+=usr/tests/lib/libc/string/strrchr
OLD_FILES+=usr/tests/lib/libc/string/strspn
OLD_FILES+=usr/tests/lib/libc/string/swab
# 20151101: 430.status-rwho was renamed to 430.status-uptime
OLD_FILES+=etc/periodic/daily/430.status-rwho
# 20151030: OpenSSL 1.0.2d import
OLD_FILES+=usr/share/openssl/man/man3/CMS_set1_signer_certs.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEY_ctrl.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEY_ctrl_str.3.gz
OLD_FILES+=usr/share/openssl/man/man3/d2i_509_CRL_fp.3.gz
OLD_LIBS+=lib/libcrypto.so.7
OLD_LIBS+=usr/lib/libssl.so.7
OLD_LIBS+=usr/lib32/libcrypto.so.7
OLD_LIBS+=usr/lib32/libssl.so.7
# 20151029: LinuxKPI moved to sys/compat/linuxkpi
OLD_FILES+=usr/include/dev/usb/usb_compat_linux.h
# 20151015: test symbols moved to /usr/lib/debug
OLD_DIRS+=usr/tests/lib/atf/libatf-c++/.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/atf_c++_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/build_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/check_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/config_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/macros_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/tests_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/.debug/utils_test.debug
OLD_DIRS+=usr/tests/lib/atf/libatf-c++/detail/.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/application_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/env_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/exceptions_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/fs_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/process_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/sanity_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/text_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/.debug/version_helper.debug
OLD_DIRS+=usr/tests/lib/atf/libatf-c/.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/atf_c_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/build_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/check_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/config_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/error_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/macros_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/tc_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/tp_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/.debug/utils_test.debug
OLD_DIRS+=usr/tests/lib/atf/libatf-c/detail/.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/dynstr_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/env_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/fs_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/list_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/map_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/process_helpers.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/process_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/sanity_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/text_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/user_test.debug
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/.debug/version_helper.debug
OLD_DIRS+=usr/tests/lib/atf/test-programs/.debug
OLD_FILES+=usr/tests/lib/atf/test-programs/.debug/c_helpers.debug
OLD_FILES+=usr/tests/lib/atf/test-programs/.debug/cpp_helpers.debug
OLD_DIRS+=usr/tests/lib/libc/c063/.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/faccessat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/fchmodat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/fchownat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/fexecve.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/fstatat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/linkat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/mkdirat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/mkfifoat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/mknodat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/openat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/readlinkat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/renameat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/symlinkat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/unlinkat.debug
OLD_FILES+=usr/tests/lib/libc/c063/.debug/utimensat.debug
OLD_DIRS+=usr/tests/lib/libc/db/.debug
OLD_FILES+=usr/tests/lib/libc/db/.debug/h_db.debug
OLD_DIRS+=usr/tests/lib/libc/gen/.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/alarm_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/arc4random_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/assert_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/basedirname_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/dir_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/floatunditf_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/fnmatch_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/fpclassify2_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/fpclassify_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/fpsetmask_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/fpsetround_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/ftok_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/getcwd_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/getgrent_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/glob_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/humanize_number_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/isnan_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/nice_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/pause_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/raise_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/realpath_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/setdomainname_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/sethostname_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/sleep_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/syslog_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/time_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/ttyname_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/.debug/vis_test.debug
OLD_DIRS+=usr/tests/lib/libc/gen/execve/.debug
OLD_FILES+=usr/tests/lib/libc/gen/execve/.debug/execve_test.debug
OLD_DIRS+=usr/tests/lib/libc/gen/posix_spawn/.debug
OLD_FILES+=usr/tests/lib/libc/gen/posix_spawn/.debug/fileactions_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/posix_spawn/.debug/h_fileactions.debug
OLD_FILES+=usr/tests/lib/libc/gen/posix_spawn/.debug/h_spawn.debug
OLD_FILES+=usr/tests/lib/libc/gen/posix_spawn/.debug/h_spawnattr.debug
OLD_FILES+=usr/tests/lib/libc/gen/posix_spawn/.debug/spawn_test.debug
OLD_FILES+=usr/tests/lib/libc/gen/posix_spawn/.debug/spawnattr_test.debug
OLD_DIRS+=usr/tests/lib/libc/hash/.debug
OLD_FILES+=usr/tests/lib/libc/hash/.debug/h_hash.debug
OLD_FILES+=usr/tests/lib/libc/hash/.debug/sha2_test.debug
OLD_DIRS+=usr/tests/lib/libc/inet/.debug
OLD_FILES+=usr/tests/lib/libc/inet/.debug/inet_network_test.debug
OLD_DIRS+=usr/tests/lib/libc/locale/.debug
OLD_FILES+=usr/tests/lib/libc/locale/.debug/io_test.debug
OLD_FILES+=usr/tests/lib/libc/locale/.debug/mbrtowc_test.debug
OLD_FILES+=usr/tests/lib/libc/locale/.debug/mbsnrtowcs_test.debug
OLD_FILES+=usr/tests/lib/libc/locale/.debug/mbstowcs_test.debug
OLD_FILES+=usr/tests/lib/libc/locale/.debug/mbtowc_test.debug
OLD_FILES+=usr/tests/lib/libc/locale/.debug/wcscspn_test.debug
OLD_FILES+=usr/tests/lib/libc/locale/.debug/wcspbrk_test.debug
OLD_FILES+=usr/tests/lib/libc/locale/.debug/wcsspn_test.debug
OLD_FILES+=usr/tests/lib/libc/locale/.debug/wcstod_test.debug
OLD_FILES+=usr/tests/lib/libc/locale/.debug/wctomb_test.debug
OLD_DIRS+=usr/tests/lib/libc/net/.debug
OLD_FILES+=usr/tests/lib/libc/net/.debug/ether_aton_test.debug
OLD_FILES+=usr/tests/lib/libc/net/.debug/getprotoent_test.debug
OLD_FILES+=usr/tests/lib/libc/net/.debug/h_dns_server.debug
OLD_FILES+=usr/tests/lib/libc/net/.debug/h_nsd_recurse.debug
OLD_FILES+=usr/tests/lib/libc/net/.debug/h_protoent.debug
OLD_FILES+=usr/tests/lib/libc/net/.debug/h_servent.debug
OLD_DIRS+=usr/tests/lib/libc/regex/.debug
OLD_FILES+=usr/tests/lib/libc/regex/.debug/exhaust_test.debug
OLD_FILES+=usr/tests/lib/libc/regex/.debug/h_regex.debug
OLD_FILES+=usr/tests/lib/libc/regex/.debug/regex_att_test.debug
OLD_DIRS+=usr/tests/lib/libc/ssp/.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_fgets.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_getcwd.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_gets.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_memcpy.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_memmove.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_memset.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_raw.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_read.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_readlink.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_snprintf.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_sprintf.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_stpcpy.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_stpncpy.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_strcat.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_strcpy.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_strncat.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_strncpy.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_vsnprintf.debug
OLD_FILES+=usr/tests/lib/libc/ssp/.debug/h_vsprintf.debug
OLD_DIRS+=usr/tests/lib/libc/stdio/.debug
OLD_FILES+=usr/tests/lib/libc/stdio/.debug/clearerr_test.debug
OLD_FILES+=usr/tests/lib/libc/stdio/.debug/fflush_test.debug
OLD_FILES+=usr/tests/lib/libc/stdio/.debug/fmemopen2_test.debug
OLD_FILES+=usr/tests/lib/libc/stdio/.debug/fmemopen_test.debug
OLD_FILES+=usr/tests/lib/libc/stdio/.debug/fopen_test.debug
OLD_FILES+=usr/tests/lib/libc/stdio/.debug/fputc_test.debug
OLD_FILES+=usr/tests/lib/libc/stdio/.debug/mktemp_test.debug
OLD_FILES+=usr/tests/lib/libc/stdio/.debug/popen_test.debug
OLD_FILES+=usr/tests/lib/libc/stdio/.debug/printf_test.debug
OLD_FILES+=usr/tests/lib/libc/stdio/.debug/scanf_test.debug
OLD_DIRS+=usr/tests/lib/libc/stdlib/.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/abs_test.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/atoi_test.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/div_test.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/exit_test.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/getenv_test.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/h_getopt.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/h_getopt_long.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/hsearch_test.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/posix_memalign_test.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/random_test.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/strtod_test.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/strtol_test.debug
OLD_FILES+=usr/tests/lib/libc/stdlib/.debug/system_test.debug
OLD_DIRS+=usr/tests/lib/libc/string/.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/memchr.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/memcpy.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/memmem.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/memset.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/strcat.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/strchr.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/strcmp.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/strcpy.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/strcspn.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/strerror.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/strlen.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/strpbrk.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/strrchr.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/strspn.debug
OLD_FILES+=usr/tests/lib/libc/string/.debug/swab.debug
OLD_DIRS+=usr/tests/lib/libc/sys/.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/access_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/chroot_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/clock_gettime_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/connect_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/dup_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/fsync_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/getcontext_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/getgroups_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/getitimer_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/getlogin_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/getpid_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/getrusage_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/getsid_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/gettimeofday_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/issetugid_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/kevent_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/kill_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/link_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/listen_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/mincore_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/mkdir_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/mkfifo_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/mknod_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/mlock_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/mmap_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/mprotect_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/msgctl_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/msgget_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/msgrcv_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/msgsnd_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/msync_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/nanosleep_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/pipe2_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/pipe_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/poll_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/revoke_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/select_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/setrlimit_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/setuid_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/sigaction_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/sigqueue_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/sigtimedwait_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/socketpair_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/stat_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/timer_create_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/truncate_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/ucontext_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/umask_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/unlink_test.debug
OLD_FILES+=usr/tests/lib/libc/sys/.debug/write_test.debug
OLD_DIRS+=usr/tests/lib/libc/termios/.debug
OLD_FILES+=usr/tests/lib/libc/termios/.debug/tcsetpgrp_test.debug
OLD_DIRS+=usr/tests/lib/libc/tls/.debug
OLD_FILES+=usr/tests/lib/libc/tls/.debug/h_tls_dlopen.so.debug
OLD_FILES+=usr/tests/lib/libc/tls/.debug/libh_tls_dynamic.so.1.debug
OLD_FILES+=usr/tests/lib/libc/tls/.debug/tls_dlopen_test.debug
OLD_FILES+=usr/tests/lib/libc/tls/.debug/tls_dynamic_test.debug
OLD_DIRS+=usr/tests/lib/libc/ttyio/.debug
OLD_FILES+=usr/tests/lib/libc/ttyio/.debug/ttyio_test.debug
OLD_DIRS+=usr/tests/lib/libcrypt/.debug
OLD_FILES+=usr/tests/lib/libcrypt/.debug/crypt_tests.debug
OLD_DIRS+=usr/tests/lib/libmp/.debug
OLD_FILES+=usr/tests/lib/libmp/.debug/legacy_test.debug
OLD_DIRS+=usr/tests/lib/libnv/.debug
OLD_FILES+=usr/tests/lib/libnv/.debug/dnv_tests.debug
OLD_FILES+=usr/tests/lib/libnv/.debug/nv_array_tests.debug
OLD_FILES+=usr/tests/lib/libnv/.debug/nv_tests.debug
OLD_FILES+=usr/tests/lib/libnv/.debug/nvlist_add_test.debug
OLD_FILES+=usr/tests/lib/libnv/.debug/nvlist_exists_test.debug
OLD_FILES+=usr/tests/lib/libnv/.debug/nvlist_free_test.debug
OLD_FILES+=usr/tests/lib/libnv/.debug/nvlist_get_test.debug
OLD_FILES+=usr/tests/lib/libnv/.debug/nvlist_move_test.debug
OLD_FILES+=usr/tests/lib/libnv/.debug/nvlist_send_recv_test.debug
OLD_DIRS+=usr/tests/lib/libpam/.debug
OLD_FILES+=usr/tests/lib/libpam/.debug/t_openpam_ctype.debug
OLD_FILES+=usr/tests/lib/libpam/.debug/t_openpam_readlinev.debug
OLD_FILES+=usr/tests/lib/libpam/.debug/t_openpam_readword.debug
OLD_DIRS+=usr/tests/lib/libproc/.debug
OLD_FILES+=usr/tests/lib/libproc/.debug/proc_test.debug
OLD_FILES+=usr/tests/lib/libproc/.debug/target_prog.debug
OLD_DIRS+=usr/tests/lib/librt/.debug
OLD_FILES+=usr/tests/lib/librt/.debug/sched_test.debug
OLD_FILES+=usr/tests/lib/librt/.debug/sem_test.debug
OLD_DIRS+=usr/tests/lib/libthr/.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/barrier_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/cond_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/condwait_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/detach_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/equal_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/fork_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/fpu_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/h_atexit.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/h_cancel.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/h_exit.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/h_resolv.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/join_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/kill_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/mutex_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/once_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/preempt_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/rwlock_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/sem_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/siglongjmp_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/sigmask_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/sigsuspend_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/sleep_test.debug
OLD_FILES+=usr/tests/lib/libthr/.debug/swapcontext_test.debug
OLD_DIRS+=usr/tests/lib/libthr/dlopen/.debug
OLD_FILES+=usr/tests/lib/libthr/dlopen/.debug/dlopen_test.debug
OLD_FILES+=usr/tests/lib/libthr/dlopen/.debug/h_pthread_dlopen.so.1.debug
OLD_FILES+=usr/tests/lib/libthr/dlopen/.debug/main_pthread_create_test.debug
OLD_DIRS+=usr/tests/lib/libutil/.debug
OLD_FILES+=usr/tests/lib/libutil/.debug/flopen_test.debug
OLD_FILES+=usr/tests/lib/libutil/.debug/grp_test.debug
OLD_FILES+=usr/tests/lib/libutil/.debug/humanize_number_test.debug
OLD_FILES+=usr/tests/lib/libutil/.debug/pidfile_test.debug
OLD_FILES+=usr/tests/lib/libutil/.debug/trimdomain-nodomain_test.debug
OLD_FILES+=usr/tests/lib/libutil/.debug/trimdomain_test.debug
OLD_DIRS+=usr/tests/lib/libxo/.debug
OLD_FILES+=usr/tests/lib/libxo/.debug/libenc_test.so.debug
OLD_FILES+=usr/tests/lib/libxo/.debug/test_01.debug
OLD_FILES+=usr/tests/lib/libxo/.debug/test_02.debug
OLD_FILES+=usr/tests/lib/libxo/.debug/test_03.debug
OLD_FILES+=usr/tests/lib/libxo/.debug/test_04.debug
OLD_FILES+=usr/tests/lib/libxo/.debug/test_05.debug
OLD_FILES+=usr/tests/lib/libxo/.debug/test_06.debug
OLD_FILES+=usr/tests/lib/libxo/.debug/test_07.debug
OLD_FILES+=usr/tests/lib/libxo/.debug/test_08.debug
OLD_FILES+=usr/tests/lib/libxo/.debug/test_09.debug
OLD_FILES+=usr/tests/lib/libxo/.debug/test_10.debug
OLD_FILES+=usr/tests/lib/libxo/.debug/test_11.debug
OLD_DIRS+=usr/tests/lib/msun/.debug
OLD_FILES+=usr/tests/lib/msun/.debug/acos_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/asin_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/atan_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/cbrt_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/ceil_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/cos_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/cosh_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/erf_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/exp_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/fmod_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/infinity_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/ldexp_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/log_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/pow_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/precision_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/round_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/scalbn_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/sin_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/sinh_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/sqrt_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/tan_test.debug
OLD_FILES+=usr/tests/lib/msun/.debug/tanh_test.debug
OLD_DIRS+=usr/tests/libexec/rtld-elf/.debug
OLD_FILES+=usr/tests/libexec/rtld-elf/.debug/ld_library_pathfds.debug
OLD_FILES+=usr/tests/libexec/rtld-elf/.debug/libpythagoras.so.0.debug
OLD_FILES+=usr/tests/libexec/rtld-elf/.debug/target.debug
OLD_DIRS+=usr/tests/sbin/devd/.debug
OLD_FILES+=usr/tests/sbin/devd/.debug/client_test.debug
OLD_DIRS+=usr/tests/sbin/dhclient/.debug
OLD_FILES+=usr/tests/sbin/dhclient/.debug/option-domain-search_test.debug
OLD_DIRS+=usr/tests/share/examples/tests/atf/.debug
OLD_FILES+=usr/tests/share/examples/tests/atf/.debug/printf_test.debug
OLD_DIRS+=usr/tests/share/examples/tests/plain/.debug
OLD_FILES+=usr/tests/share/examples/tests/plain/.debug/printf_test.debug
OLD_DIRS+=usr/tests/sys/aio/.debug
OLD_FILES+=usr/tests/sys/aio/.debug/aio_kqueue_test.debug
OLD_FILES+=usr/tests/sys/aio/.debug/aio_test.debug
OLD_FILES+=usr/tests/sys/aio/.debug/lio_kqueue_test.debug
OLD_DIRS+=usr/tests/sys/fifo/.debug
OLD_FILES+=usr/tests/sys/fifo/.debug/fifo_create.debug
OLD_FILES+=usr/tests/sys/fifo/.debug/fifo_io.debug
OLD_FILES+=usr/tests/sys/fifo/.debug/fifo_misc.debug
OLD_FILES+=usr/tests/sys/fifo/.debug/fifo_open.debug
OLD_DIRS+=usr/tests/sys/file/.debug
OLD_FILES+=usr/tests/sys/file/.debug/closefrom_test.debug
OLD_FILES+=usr/tests/sys/file/.debug/dup_test.debug
OLD_FILES+=usr/tests/sys/file/.debug/fcntlflags_test.debug
OLD_FILES+=usr/tests/sys/file/.debug/flock_helper.debug
OLD_FILES+=usr/tests/sys/file/.debug/ftruncate_test.debug
OLD_FILES+=usr/tests/sys/file/.debug/newfileops_on_fork_test.debug
OLD_DIRS+=usr/tests/sys/kern/.debug
OLD_FILES+=usr/tests/sys/kern/.debug/kern_descrip_test.debug
OLD_FILES+=usr/tests/sys/kern/.debug/ptrace_test.debug
OLD_FILES+=usr/tests/sys/kern/.debug/unix_seqpacket_test.debug
OLD_DIRS+=usr/tests/sys/kern/execve/.debug
OLD_FILES+=usr/tests/sys/kern/execve/.debug/execve_helper.debug
OLD_FILES+=usr/tests/sys/kern/execve/.debug/good_aout.debug
OLD_DIRS+=usr/tests/sys/kqueue/.debug
OLD_FILES+=usr/tests/sys/kqueue/.debug/kqtest.debug
OLD_DIRS+=usr/tests/sys/mqueue/.debug
OLD_FILES+=usr/tests/sys/mqueue/.debug/mqtest1.debug
OLD_FILES+=usr/tests/sys/mqueue/.debug/mqtest2.debug
OLD_FILES+=usr/tests/sys/mqueue/.debug/mqtest3.debug
OLD_FILES+=usr/tests/sys/mqueue/.debug/mqtest4.debug
OLD_FILES+=usr/tests/sys/mqueue/.debug/mqtest5.debug
OLD_DIRS+=usr/tests/sys/netinet/.debug
OLD_FILES+=usr/tests/sys/netinet/.debug/udp_dontroute.debug
OLD_DIRS+=usr/tests/sys/pjdfstest/.debug
OLD_FILES+=usr/tests/sys/pjdfstest/.debug/pjdfstest.debug
OLD_DIRS+=usr/tests/sys/vm/.debug
OLD_FILES+=usr/tests/sys/vm/.debug/mmap_test.debug
# 20151015: Rename files due to file-installed-as-dir bug
OLD_FILES+=usr/share/doc/legal/realtek
OLD_FILES+=usr/share/doc/legal/realtek/LICENSE
OLD_DIRS+=usr/share/doc/legal/realtek
OLD_DIRS+=usr/share/doc/legal/intel_ipw
OLD_FILES+=usr/share/doc/legal/intel_ipw/LICENSE
OLD_FILES+=usr/share/doc/legal/intel_iwn
OLD_FILES+=usr/share/doc/legal/intel_iwn/LICENSE
OLD_DIRS+=usr/share/doc/legal/intel_iwn
OLD_DIRS+=usr/share/doc/legal/intel_iwi
OLD_FILES+=usr/share/doc/legal/intel_iwi/LICENSE
OLD_DIRS+=usr/share/doc/legal/intel_wpi
OLD_FILES+=usr/share/doc/legal/intel_wpi/LICENSE
# 20151006: new libc++ import
OLD_FILES+=usr/include/c++/__tuple_03
OLD_FILES+=usr/include/c++/v1/__tuple_03
OLD_FILES+=usr/include/c++/v1/tr1/__tuple_03
# 20151006: new clang import which bumps version from 3.6.1 to 3.7.0.
OLD_FILES+=usr/lib/clang/3.6.1/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/3.6.1/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/3.6.1/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/3.6.1/include/adxintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/altivec.h
OLD_FILES+=usr/lib/clang/3.6.1/include/ammintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/arm_acle.h
OLD_FILES+=usr/lib/clang/3.6.1/include/arm_neon.h
OLD_FILES+=usr/lib/clang/3.6.1/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/avxintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/cpuid.h
OLD_FILES+=usr/lib/clang/3.6.1/include/emmintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/immintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/3.6.1/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/3.6.1/include/mmintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/module.modulemap
OLD_FILES+=usr/lib/clang/3.6.1/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/shaintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/smmintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/x86intrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/3.6.1/include/xopintrin.h
OLD_DIRS+=usr/lib/clang/3.6.1/include
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.san-i386.a
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.san-x86_64.a
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.ubsan-i386.a
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.ubsan-x86_64.a
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.ubsan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.6.1/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/3.6.1/lib/freebsd
OLD_DIRS+=usr/lib/clang/3.6.1/lib
OLD_DIRS+=usr/lib/clang/3.6.1
# 20150928: unused sgsmsg utility is removed
OLD_FILES+=usr/bin/sgsmsg
# 20150926: remove links to removed/unimplemented mbuf(9) macros
OLD_FILES+=usr/share/man/man9/MEXT_ADD_REF.9.gz
OLD_FILES+=usr/share/man/man9/MEXTFREE.9.gz
OLD_FILES+=usr/share/man/man9/MEXT_IS_REF.9.gz
OLD_FILES+=usr/share/man/man9/MEXT_REM_REF.9.gz
OLD_FILES+=usr/share/man/man9/MFREE.9.gz
# 20150818: *allocm() are gone in jemalloc 4.0.0
OLD_FILES+=usr/share/man/man3/allocm.3.gz
OLD_FILES+=usr/share/man/man3/dallocm.3.gz
OLD_FILES+=usr/share/man/man3/nallocm.3.gz
OLD_FILES+=usr/share/man/man3/rallocm.3.gz
OLD_FILES+=usr/share/man/man3/sallocm.3.gz
# 20150802: Remove netbsd's test on pw(8)
OLD_FILES+=usr/tests/usr.sbin/pw/pw_test
# 20150719: Remove libarchive.pc
OLD_FILES+=usr/libdata/pkgconfig/libarchive.pc
# 20150705: Rename DTrace provider man pages.
OLD_FILES+=usr/share/man/man4/dtrace-io.4.gz
OLD_FILES+=usr/share/man/man4/dtrace-ip.4.gz
OLD_FILES+=usr/share/man/man4/dtrace-proc.4.gz
OLD_FILES+=usr/share/man/man4/dtrace-sched.4.gz
OLD_FILES+=usr/share/man/man4/dtrace-tcp.4.gz
OLD_FILES+=usr/share/man/man4/dtrace-udp.4.gz
# 20150704: nvlist private headers no longer installed
OLD_FILES+=usr/include/sys/nv_impl.h
OLD_FILES+=usr/include/sys/nvlist_impl.h
OLD_FILES+=usr/include/sys/nvpair_impl.h
# 20150624
OLD_LIBS+=usr/lib/libugidfw.so.4
OLD_LIBS+=usr/lib32/libugidfw.so.4
# 20150604: Move nvlist man pages to section 9.
OLD_FILES+=usr/share/man/man3/libnv.3.gz
OLD_FILES+=usr/share/man/man3/nv.3.gz
OLD_FILES+=usr/share/man/man3/nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_add_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_add_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_add_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_add_null.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_add_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_add_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_add_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_add_stringf.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_add_stringv.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_clone.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_create.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_destroy.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_dump.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_empty.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_error.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_exists.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_exists_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_exists_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_exists_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_exists_null.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_exists_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_exists_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_exists_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_exists_type.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_fdump.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_flags.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_free.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_free_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_free_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_free_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_free_null.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_free_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_free_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_free_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_free_type.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_get_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_get_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_get_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_get_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_get_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_get_parent.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_get_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_move_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_move_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_move_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_move_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_next.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_pack.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_recv.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_send.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_set_error.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_size.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_take_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_take_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_take_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_take_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_take_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_take_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_unpack.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_xfer.3.gz
# 20150702: Remove duplicated nvlist includes.
OLD_FILES+=usr/include/dnv.h
OLD_FILES+=usr/include/nv.h
# 20150528: PCI IOV device driver methods moved to a separate kobj interface.
OLD_FILES+=usr/share/man/man9/PCI_ADD_VF.9.gz
OLD_FILES+=usr/share/man/man9/PCI_INIT_IOV.9.gz
OLD_FILES+=usr/share/man/man9/PCI_UNINIT_IOV.9.gz
# 20150525: new clang import which bumps version from 3.6.0 to 3.6.1.
OLD_FILES+=usr/lib/clang/3.6.0/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/3.6.0/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/3.6.0/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/3.6.0/include/adxintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/altivec.h
OLD_FILES+=usr/lib/clang/3.6.0/include/ammintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/arm_acle.h
OLD_FILES+=usr/lib/clang/3.6.0/include/arm_neon.h
OLD_FILES+=usr/lib/clang/3.6.0/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/avxintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/cpuid.h
OLD_FILES+=usr/lib/clang/3.6.0/include/emmintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/immintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/3.6.0/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/3.6.0/include/mmintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/module.modulemap
OLD_FILES+=usr/lib/clang/3.6.0/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/shaintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/smmintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/x86intrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/3.6.0/include/xopintrin.h
OLD_DIRS+=usr/lib/clang/3.6.0/include
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.san-i386.a
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.san-x86_64.a
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan-i386.a
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan-x86_64.a
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.6.0/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/3.6.0/lib/freebsd
OLD_DIRS+=usr/lib/clang/3.6.0/lib
OLD_DIRS+=usr/lib/clang/3.6.0
# 20150521
OLD_FILES+=usr/bin/demandoc
OLD_FILES+=usr/share/man/man1/demandoc.1.gz
OLD_FILES+=usr/share/man/man3/mandoc.3.gz
OLD_FILES+=usr/share/man/man3/mandoc_headers.3.gz
# 20150520
OLD_FILES+=usr/lib/libheimsqlite.a
OLD_FILES+=usr/lib/libheimsqlite.so
OLD_LIBS+=usr/lib/libheimsqlite.so.11
OLD_FILES+=usr/lib/libheimsqlite_p.a
OLD_FILES+=usr/lib32/libheimsqlite.a
OLD_FILES+=usr/lib32/libheimsqlite.so
OLD_LIBS+=usr/lib32/libheimsqlite.so.11
OLD_FILES+=usr/lib32/libheimsqlite_p.a
# 20150518: tzdata2015c update
OLD_FILES+=usr/share/zoneinfo/America/Montreal
# 20150506
OLD_FILES+=usr/share/man/man9/NDHASGIANT.9.gz
# 20150504
OLD_FILES+=usr/share/examples/etc/libmap32.conf
OLD_FILES+=usr/include/bsdstat.h
OLD_LIBS+=usr/lib32/private/libatf-c++.so.2
OLD_LIBS+=usr/lib32/private/libbsdstat.so.1
OLD_LIBS+=usr/lib32/private/libheimipcs.so.11
OLD_LIBS+=usr/lib32/private/libsqlite3.so.0
OLD_LIBS+=usr/lib32/private/libunbound.so.5
OLD_LIBS+=usr/lib32/private/libatf-c.so.1
OLD_LIBS+=usr/lib32/private/libheimipcc.so.11
OLD_LIBS+=usr/lib32/private/libldns.so.5
OLD_LIBS+=usr/lib32/private/libssh.so.5
OLD_LIBS+=usr/lib32/private/libucl.so.1
OLD_DIRS+=usr/lib32/private
OLD_LIBS+=usr/lib/private/libatf-c++.so.2
OLD_LIBS+=usr/lib/private/libbsdstat.so.1
OLD_LIBS+=usr/lib/private/libheimipcs.so.11
OLD_LIBS+=usr/lib/private/libsqlite3.so.0
OLD_LIBS+=usr/lib/private/libunbound.so.5
OLD_LIBS+=usr/lib/private/libatf-c.so.1
OLD_LIBS+=usr/lib/private/libheimipcc.so.11
OLD_LIBS+=usr/lib/private/libldns.so.5
OLD_LIBS+=usr/lib/private/libssh.so.5
OLD_LIBS+=usr/lib/private/libucl.so.1
OLD_DIRS+=usr/lib/private
# 20150501
OLD_FILES+=usr/bin/soeliminate
OLD_FILES+=usr/share/man/man1/soeliminate.1.gz
# 20150501: Remove the nvlist_.*[vf] functions manpages.
OLD_FILES+=usr/share/man/man3/nvlist_addf_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addf_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addf_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addf_null.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addf_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addf_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addf_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addv_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addv_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addv_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addv_null.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addv_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addv_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_addv_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_null.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsf_type.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_null.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_existsv_type.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_null.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freef_type.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freev.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freev_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freev_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freev_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freev_null.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freev_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freev_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freev_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_freev_type.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getf_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getf_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getf_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getf_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getf_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getf_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getv_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getv_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getv_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getv_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getv_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_getv_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_movef_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_movef_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_movef_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_movef_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_movev_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_movev_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_movev_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_movev_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takef_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takef_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takef_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takef_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takef_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takef_string.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takev_binary.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takev_bool.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takev_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takev_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takev_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takev_string.3.gz
# 20150429: remove never written documentation
OLD_FILES+=usr/share/doc/papers/hwpmc.ascii.gz
# 20150427: test/sys/kern/mmap_test moved to test/sys/vm/mmap_test
OLD_FILES+=usr/tests/sys/kern/mmap_test
# 20150422: zlib.c moved from net to libkern
OLD_FILES+=usr/include/net/zlib.h
OLD_FILES+=usr/include/net/zutil.h
# 20150418
OLD_FILES+=sbin/mount_oldnfs
OLD_FILES+=usr/share/man/man8/mount_oldnfs.8.gz
# 20150416: ALTQ moved to net/altq
OLD_FILES+=usr/include/altq/altq_rmclass_debug.h
OLD_FILES+=usr/include/altq/altq.h
OLD_FILES+=usr/include/altq/altq_cdnr.h
OLD_FILES+=usr/include/altq/altq_hfsc.h
OLD_FILES+=usr/include/altq/altq_priq.h
OLD_FILES+=usr/include/altq/altqconf.h
OLD_FILES+=usr/include/altq/altq_classq.h
OLD_FILES+=usr/include/altq/altq_red.h
OLD_FILES+=usr/include/altq/if_altq.h
OLD_FILES+=usr/include/altq/altq_var.h
OLD_FILES+=usr/include/altq/altq_rmclass.h
OLD_FILES+=usr/include/altq/altq_cbq.h
OLD_FILES+=usr/include/altq/altq_rio.h
OLD_DIRS+=usr/include/altq
# 20150330: ntp 4.2.8p1
OLD_FILES+=usr/share/doc/ntp/driver1.html
OLD_FILES+=usr/share/doc/ntp/driver10.html
OLD_FILES+=usr/share/doc/ntp/driver11.html
OLD_FILES+=usr/share/doc/ntp/driver12.html
OLD_FILES+=usr/share/doc/ntp/driver16.html
OLD_FILES+=usr/share/doc/ntp/driver18.html
OLD_FILES+=usr/share/doc/ntp/driver19.html
OLD_FILES+=usr/share/doc/ntp/driver2.html
OLD_FILES+=usr/share/doc/ntp/driver20.html
OLD_FILES+=usr/share/doc/ntp/driver22.html
OLD_FILES+=usr/share/doc/ntp/driver26.html
OLD_FILES+=usr/share/doc/ntp/driver27.html
OLD_FILES+=usr/share/doc/ntp/driver28.html
OLD_FILES+=usr/share/doc/ntp/driver29.html
OLD_FILES+=usr/share/doc/ntp/driver3.html
OLD_FILES+=usr/share/doc/ntp/driver30.html
OLD_FILES+=usr/share/doc/ntp/driver32.html
OLD_FILES+=usr/share/doc/ntp/driver33.html
OLD_FILES+=usr/share/doc/ntp/driver34.html
OLD_FILES+=usr/share/doc/ntp/driver35.html
OLD_FILES+=usr/share/doc/ntp/driver36.html
OLD_FILES+=usr/share/doc/ntp/driver37.html
OLD_FILES+=usr/share/doc/ntp/driver4.html
OLD_FILES+=usr/share/doc/ntp/driver5.html
OLD_FILES+=usr/share/doc/ntp/driver6.html
OLD_FILES+=usr/share/doc/ntp/driver7.html
OLD_FILES+=usr/share/doc/ntp/driver8.html
OLD_FILES+=usr/share/doc/ntp/driver9.html
OLD_FILES+=usr/share/doc/ntp/ldisc.html
OLD_FILES+=usr/share/doc/ntp/measure.html
OLD_FILES+=usr/share/doc/ntp/mx4200data.html
OLD_FILES+=usr/share/doc/ntp/notes.html
OLD_FILES+=usr/share/doc/ntp/patches.html
OLD_FILES+=usr/share/doc/ntp/porting.html
OLD_FILES+=usr/share/man/man1/sntp.1.gz
# 20150329
.if ${TARGET_ARCH} == "arm"
OLD_FILES+=usr/include/bootconfig.h
.endif
# 20150326
OLD_FILES+=usr/share/man/man1/pmcstudy.1.gz
# 20150315: new clang import which bumps version from 3.5.1 to 3.6.0.
OLD_FILES+=usr/include/clang/3.5.1/__wmmintrin_aes.h
OLD_FILES+=usr/include/clang/3.5.1/__wmmintrin_pclmul.h
OLD_FILES+=usr/include/clang/3.5.1/altivec.h
OLD_FILES+=usr/include/clang/3.5.1/ammintrin.h
OLD_FILES+=usr/include/clang/3.5.1/arm_acle.h
OLD_FILES+=usr/include/clang/3.5.1/arm_neon.h
OLD_FILES+=usr/include/clang/3.5.1/avx2intrin.h
OLD_FILES+=usr/include/clang/3.5.1/avxintrin.h
OLD_FILES+=usr/include/clang/3.5.1/bmi2intrin.h
OLD_FILES+=usr/include/clang/3.5.1/bmiintrin.h
OLD_FILES+=usr/include/clang/3.5.1/cpuid.h
OLD_FILES+=usr/include/clang/3.5.1/emmintrin.h
OLD_FILES+=usr/include/clang/3.5.1/f16cintrin.h
OLD_FILES+=usr/include/clang/3.5.1/fma4intrin.h
OLD_FILES+=usr/include/clang/3.5.1/fmaintrin.h
OLD_FILES+=usr/include/clang/3.5.1/ia32intrin.h
OLD_FILES+=usr/include/clang/3.5.1/immintrin.h
OLD_FILES+=usr/include/clang/3.5.1/lzcntintrin.h
OLD_FILES+=usr/include/clang/3.5.1/mm3dnow.h
OLD_FILES+=usr/include/clang/3.5.1/mm_malloc.h
OLD_FILES+=usr/include/clang/3.5.1/mmintrin.h
OLD_FILES+=usr/include/clang/3.5.1/module.modulemap
OLD_FILES+=usr/include/clang/3.5.1/nmmintrin.h
OLD_FILES+=usr/include/clang/3.5.1/pmmintrin.h
OLD_FILES+=usr/include/clang/3.5.1/popcntintrin.h
OLD_FILES+=usr/include/clang/3.5.1/prfchwintrin.h
OLD_FILES+=usr/include/clang/3.5.1/rdseedintrin.h
OLD_FILES+=usr/include/clang/3.5.1/rtmintrin.h
OLD_FILES+=usr/include/clang/3.5.1/shaintrin.h
OLD_FILES+=usr/include/clang/3.5.1/smmintrin.h
OLD_FILES+=usr/include/clang/3.5.1/tbmintrin.h
OLD_FILES+=usr/include/clang/3.5.1/tmmintrin.h
OLD_FILES+=usr/include/clang/3.5.1/wmmintrin.h
OLD_FILES+=usr/include/clang/3.5.1/x86intrin.h
OLD_FILES+=usr/include/clang/3.5.1/xmmintrin.h
OLD_FILES+=usr/include/clang/3.5.1/xopintrin.h
OLD_DIRS+=usr/include/clang/3.5.1
OLD_DIRS+=usr/include/clang
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.san-i386.a
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.san-x86_64.a
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.ubsan-i386.a
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.ubsan-x86_64.a
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.ubsan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.5.1/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/3.5.1/lib/freebsd
OLD_DIRS+=usr/lib/clang/3.5.1/lib
OLD_DIRS+=usr/lib/clang/3.5.1
# 20150302: binutils documentation distributed as a manpage
OLD_FILES+=usr/share/doc/binutils/as.txt
OLD_FILES+=usr/share/doc/binutils/ld.txt
OLD_DIRS+=usr/share/doc/binutils
# 20150222: Removed bcd(6) and ppt(6)
OLD_FILES+=usr/bin/bcd
OLD_FILES+=usr/bin/ppt
OLD_FILES+=usr/share/man/man6/bcd.6.gz
OLD_FILES+=usr/share/man/man6/ppt.6.gz
# 20150217: Removed remnants of ar(4) driver
OLD_FILES+=usr/include/dev/ic/hd64570.h
# 20150212: /usr/games moving into /usr/bin
OLD_FILES+=usr/games/bcd
OLD_FILES+=usr/games/caesar
OLD_FILES+=usr/games/factor
OLD_FILES+=usr/games/fortune
OLD_FILES+=usr/games/grdc
OLD_FILES+=usr/games/morse
OLD_FILES+=usr/games/number
OLD_FILES+=usr/games/pom
OLD_FILES+=usr/games/ppt
OLD_FILES+=usr/games/primes
OLD_FILES+=usr/games/random
OLD_FILES+=usr/games/rot13
OLD_FILES+=usr/games/strfile
OLD_FILES+=usr/games/unstr
OLD_DIRS+=usr/games
# 20150209: liblzma header
OLD_FILES+=usr/include/lzma/lzma.h
# 20150124: spl.9 and friends
OLD_FILES+=usr/share/man/man9/spl.9.gz
OLD_FILES+=usr/share/man/man9/spl0.9.gz
OLD_FILES+=usr/share/man/man9/splbio.9.gz
OLD_FILES+=usr/share/man/man9/splclock.9.gz
OLD_FILES+=usr/share/man/man9/splhigh.9.gz
OLD_FILES+=usr/share/man/man9/splimp.9.gz
OLD_FILES+=usr/share/man/man9/splnet.9.gz
OLD_FILES+=usr/share/man/man9/splsoftclock.9.gz
OLD_FILES+=usr/share/man/man9/splsofttty.9.gz
OLD_FILES+=usr/share/man/man9/splstatclock.9.gz
OLD_FILES+=usr/share/man/man9/spltty.9.gz
OLD_FILES+=usr/share/man/man9/splvm.9.gz
OLD_FILES+=usr/share/man/man9/splx.9.gz
# 20150118: toeplitz.c moved from netinet to net
OLD_FILES+=usr/include/netinet/toeplitz.h
# 20150118: new clang import which bumps version from 3.5.0 to 3.5.1.
OLD_FILES+=usr/include/clang/3.5.0/__wmmintrin_aes.h
OLD_FILES+=usr/include/clang/3.5.0/__wmmintrin_pclmul.h
OLD_FILES+=usr/include/clang/3.5.0/altivec.h
OLD_FILES+=usr/include/clang/3.5.0/ammintrin.h
OLD_FILES+=usr/include/clang/3.5.0/arm_acle.h
OLD_FILES+=usr/include/clang/3.5.0/arm_neon.h
OLD_FILES+=usr/include/clang/3.5.0/avx2intrin.h
OLD_FILES+=usr/include/clang/3.5.0/avxintrin.h
OLD_FILES+=usr/include/clang/3.5.0/bmi2intrin.h
OLD_FILES+=usr/include/clang/3.5.0/bmiintrin.h
OLD_FILES+=usr/include/clang/3.5.0/cpuid.h
OLD_FILES+=usr/include/clang/3.5.0/emmintrin.h
OLD_FILES+=usr/include/clang/3.5.0/f16cintrin.h
OLD_FILES+=usr/include/clang/3.5.0/fma4intrin.h
OLD_FILES+=usr/include/clang/3.5.0/fmaintrin.h
OLD_FILES+=usr/include/clang/3.5.0/ia32intrin.h
OLD_FILES+=usr/include/clang/3.5.0/immintrin.h
OLD_FILES+=usr/include/clang/3.5.0/lzcntintrin.h
OLD_FILES+=usr/include/clang/3.5.0/mm3dnow.h
OLD_FILES+=usr/include/clang/3.5.0/mm_malloc.h
OLD_FILES+=usr/include/clang/3.5.0/mmintrin.h
OLD_FILES+=usr/include/clang/3.5.0/module.modulemap
OLD_FILES+=usr/include/clang/3.5.0/nmmintrin.h
OLD_FILES+=usr/include/clang/3.5.0/pmmintrin.h
OLD_FILES+=usr/include/clang/3.5.0/popcntintrin.h
OLD_FILES+=usr/include/clang/3.5.0/prfchwintrin.h
OLD_FILES+=usr/include/clang/3.5.0/rdseedintrin.h
OLD_FILES+=usr/include/clang/3.5.0/rtmintrin.h
OLD_FILES+=usr/include/clang/3.5.0/shaintrin.h
OLD_FILES+=usr/include/clang/3.5.0/smmintrin.h
OLD_FILES+=usr/include/clang/3.5.0/tbmintrin.h
OLD_FILES+=usr/include/clang/3.5.0/tmmintrin.h
OLD_FILES+=usr/include/clang/3.5.0/wmmintrin.h
OLD_FILES+=usr/include/clang/3.5.0/x86intrin.h
OLD_FILES+=usr/include/clang/3.5.0/xmmintrin.h
OLD_FILES+=usr/include/clang/3.5.0/xopintrin.h
OLD_DIRS+=usr/include/clang/3.5.0
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.san-i386.a
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.san-x86_64.a
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan-i386.a
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan-x86_64.a
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan_cxx-i386.a
OLD_FILES+=usr/lib/clang/3.5.0/lib/freebsd/libclang_rt.ubsan_cxx-x86_64.a
OLD_DIRS+=usr/lib/clang/3.5.0/lib/freebsd
OLD_DIRS+=usr/lib/clang/3.5.0/lib
OLD_DIRS+=usr/lib/clang/3.5.0
# 20150102: removal of asr(4)
OLD_FILES+=usr/share/man/man4/asr.4.gz
# 20150102: removal of texinfo
OLD_FILES+=usr/bin/info
OLD_FILES+=usr/bin/infokey
OLD_FILES+=usr/bin/install-info
OLD_FILES+=usr/bin/makeinfo
OLD_FILES+=usr/bin/texindex
OLD_FILES+=usr/share/info/am-utils.info.gz
OLD_FILES+=usr/share/info/as.info.gz
OLD_FILES+=usr/share/info/binutils.info.gz
OLD_FILES+=usr/share/info/com_err.info.gz
OLD_FILES+=usr/share/info/cpp.info.gz
OLD_FILES+=usr/share/info/cppinternals.info.gz
OLD_FILES+=usr/share/info/diff.info.gz
OLD_FILES+=usr/share/info/dir
OLD_FILES+=usr/share/info/gcc.info.gz
OLD_FILES+=usr/share/info/gccint.info.gz
OLD_FILES+=usr/share/info/gdb.info.gz
OLD_FILES+=usr/share/info/gdbint.info.gz
OLD_FILES+=usr/share/info/gperf.info.gz
OLD_FILES+=usr/share/info/grep.info.gz
OLD_FILES+=usr/share/info/groff.info.gz
OLD_FILES+=usr/share/info/heimdal.info.gz
OLD_FILES+=usr/share/info/history.info.gz
OLD_FILES+=usr/share/info/info-stnd.info.gz
OLD_FILES+=usr/share/info/info.info.gz
OLD_FILES+=usr/share/info/ld.info.gz
OLD_FILES+=usr/share/info/regex.info.gz
OLD_FILES+=usr/share/info/rluserman.info.gz
OLD_FILES+=usr/share/info/stabs.info.gz
OLD_FILES+=usr/share/info/texinfo.info.gz
OLD_FILES+=usr/share/man/man1/info.1.gz
OLD_FILES+=usr/share/man/man1/infokey.1.gz
OLD_FILES+=usr/share/man/man1/install-info.1.gz
OLD_FILES+=usr/share/man/man1/makeinfo.1.gz
OLD_FILES+=usr/share/man/man1/texindex.1.gz
OLD_FILES+=usr/share/man/man5/info.5.gz
OLD_FILES+=usr/share/man/man5/texinfo.5.gz
OLD_DIRS+=usr/share/info
# 20141231: new clang import which bumps version from 3.4.1 to 3.5.0.
OLD_FILES+=usr/include/clang/3.4.1/__wmmintrin_aes.h
OLD_FILES+=usr/include/clang/3.4.1/__wmmintrin_pclmul.h
OLD_FILES+=usr/include/clang/3.4.1/altivec.h
OLD_FILES+=usr/include/clang/3.4.1/ammintrin.h
OLD_FILES+=usr/include/clang/3.4.1/arm_neon.h
OLD_FILES+=usr/include/clang/3.4.1/avx2intrin.h
OLD_FILES+=usr/include/clang/3.4.1/avxintrin.h
OLD_FILES+=usr/include/clang/3.4.1/bmi2intrin.h
OLD_FILES+=usr/include/clang/3.4.1/bmiintrin.h
OLD_FILES+=usr/include/clang/3.4.1/cpuid.h
OLD_FILES+=usr/include/clang/3.4.1/emmintrin.h
OLD_FILES+=usr/include/clang/3.4.1/f16cintrin.h
OLD_FILES+=usr/include/clang/3.4.1/fma4intrin.h
OLD_FILES+=usr/include/clang/3.4.1/fmaintrin.h
OLD_FILES+=usr/include/clang/3.4.1/immintrin.h
OLD_FILES+=usr/include/clang/3.4.1/lzcntintrin.h
OLD_FILES+=usr/include/clang/3.4.1/mm3dnow.h
OLD_FILES+=usr/include/clang/3.4.1/mm_malloc.h
OLD_FILES+=usr/include/clang/3.4.1/mmintrin.h
OLD_FILES+=usr/include/clang/3.4.1/module.map
OLD_FILES+=usr/include/clang/3.4.1/nmmintrin.h
OLD_FILES+=usr/include/clang/3.4.1/pmmintrin.h
OLD_FILES+=usr/include/clang/3.4.1/popcntintrin.h
OLD_FILES+=usr/include/clang/3.4.1/prfchwintrin.h
OLD_FILES+=usr/include/clang/3.4.1/rdseedintrin.h
OLD_FILES+=usr/include/clang/3.4.1/rtmintrin.h
OLD_FILES+=usr/include/clang/3.4.1/shaintrin.h
OLD_FILES+=usr/include/clang/3.4.1/smmintrin.h
OLD_FILES+=usr/include/clang/3.4.1/tbmintrin.h
OLD_FILES+=usr/include/clang/3.4.1/tmmintrin.h
OLD_FILES+=usr/include/clang/3.4.1/wmmintrin.h
OLD_FILES+=usr/include/clang/3.4.1/x86intrin.h
OLD_FILES+=usr/include/clang/3.4.1/xmmintrin.h
OLD_FILES+=usr/include/clang/3.4.1/xopintrin.h
OLD_DIRS+=usr/include/clang/3.4.1
# 20141225: Remove gpib/ieee488
OLD_FILES+=usr/include/dev/ieee488/ibfoo_int.h
OLD_FILES+=usr/include/dev/ieee488/tnt4882.h
OLD_FILES+=usr/include/dev/ieee488/ugpib.h
OLD_FILES+=usr/include/dev/ieee488/upd7210.h
OLD_DIRS+=usr/include/dev/ieee488
OLD_FILES+=usr/include/gpib/gpib.h
OLD_DIRS+=usr/include/gpib
OLD_FILES+=usr/lib/libgpib.a
OLD_FILES+=usr/lib/libgpib_p.a
OLD_FILES+=usr/lib/libgpib.so
OLD_LIBS+=usr/lib/libgpib.so.3
OLD_FILES+=usr/lib/libgpib_p.a
OLD_FILES+=usr/lib32/libgpib.a
OLD_FILES+=usr/lib32/libgpib_p.a
OLD_FILES+=usr/lib32/libgpib.so
OLD_LIBS+=usr/lib32/libgpib.so.3
OLD_FILES+=usr/share/man/man3/gpib.3.gz
OLD_FILES+=usr/share/man/man3/ibclr.3.gz
OLD_FILES+=usr/share/man/man3/ibdev.3.gz
OLD_FILES+=usr/share/man/man3/ibdma.3.gz
OLD_FILES+=usr/share/man/man3/ibeos.3.gz
OLD_FILES+=usr/share/man/man3/ibeot.3.gz
OLD_FILES+=usr/share/man/man3/ibloc.3.gz
OLD_FILES+=usr/share/man/man3/ibonl.3.gz
OLD_FILES+=usr/share/man/man3/ibpad.3.gz
OLD_FILES+=usr/share/man/man3/ibrd.3.gz
OLD_FILES+=usr/share/man/man3/ibsad.3.gz
OLD_FILES+=usr/share/man/man3/ibsic.3.gz
OLD_FILES+=usr/share/man/man3/ibtmo.3.gz
OLD_FILES+=usr/share/man/man3/ibtrg.3.gz
OLD_FILES+=usr/share/man/man3/ibwrt.3.gz
OLD_FILES+=usr/share/man/man4/gpib.4.gz
OLD_FILES+=usr/share/man/man4/pcii.4.gz
OLD_FILES+=usr/share/man/man4/tnt4882.4.gz
# 20141224: libxo moved to /lib
OLD_LIBS+=usr/lib/libxo.so.0
# 20141223: remove in6_gif.h, in_gif.h and if_stf.h
OLD_FILES+=usr/include/net/if_stf.h
OLD_FILES+=usr/include/netinet/in_gif.h
OLD_FILES+=usr/include/netinet6/in6_gif.h
# 20141209: pw tests broken into a file per command
OLD_FILES+=usr/tests/usr.sbin/pw/pw_delete
OLD_FILES+=usr/tests/usr.sbin/pw/pw_modify
# 20141202: update to mandoc CVS 20141201
OLD_FILES+=usr.bin/preconv
OLD_FILES+=share/man/man1/preconv.1.gz
# 20141129: mrouted rc.d scripts removed from base
OLD_FILES+=etc/rc.d/mrouted
# 20141126: convert sbin/mdconfig/tests to ATF format tests
OLD_FILES+=usr/tests/sbin/mdconfig/legacy_test
OLD_FILES+=usr/tests/sbin/mdconfig/mdconfig.test
OLD_FILES+=usr/tests/sbin/mdconfig/run.pl
# 20141126: remove xform_ipip decapsulation fallback
OLD_FILES+=usr/include/netipsec/ipip_var.h
# 20141122: mandoc updated to 1.13.1
OLD_FILES+=usr/share/mdocml/external.png
# 20141111: SF_KQUEUE code removed
OLD_FILES+=usr/include/sys/sf_base.h
OLD_FILES+=usr/include/sys/sf_sync.h
# 20141109: faith/faithd removal
OLD_FILES+=etc/rc.d/faith
OLD_FILES+=usr/share/man/man4/faith.4.gz
OLD_FILES+=usr/share/man/man4/if_faith.4.gz
OLD_FILES+=usr/sbin/faithd
OLD_FILES+=usr/share/man/man8/faithd.8.gz
# 20141107: overhaul if_gre(4)
OLD_FILES+=usr/include/netinet/ip_gre.h
# 20141102: postrandom obsoleted by new /dev/random code
OLD_FILES+=etc/rc.d/postrandom
# 20141031: initrandom obsoleted by new /dev/random code
OLD_FILES+=etc/rc.d/initrandom
# 20141030: atf 0.21 import
OLD_FILES+=usr/share/man/man3/atf-c++-api.3.gz
# 20141028: debug files accidentally installed as directory name
OLD_FILES+=usr/lib/debug/usr/lib/i18n
OLD_FILES+=usr/lib/debug/usr/lib/private
OLD_FILES+=usr/lib/debug/usr/lib32/i18n
OLD_FILES+=usr/lib/debug/usr/lib32/private
# 20141015: OpenSSL 1.0.1j import
OLD_FILES+=usr/share/openssl/man/man3/CMS_sign_add1_signer.3.gz
# 20141003: libproc version bump
OLD_LIBS+=usr/lib/libproc.so.2
OLD_LIBS+=usr/lib32/libproc.so.2
# 20140922: sleepq_calc_signal_retval.9 and sleepq_catch_signals.9 removed
OLD_FILES+=usr/share/man/man9/sleepq_calc_signal_retval.9.gz
OLD_FILES+=usr/share/man/man9/sleepq_catch_signals.9.gz
# 20140917: hv_kvpd rc.d script removed in favor of devd configuration
OLD_FILES+=etc/rc.d/hv_kvpd
# 20140917: libnv was accidentally being installed to /usr/lib instead of /lib
OLD_LIBS+=usr/lib/libnv.so.0
# 20140829: rc.d/kerberos removed
OLD_FILES+=etc/rc.d/kerberos
# 20140827: tzdata2014f import
OLD_FILES+=usr/share/zoneinfo/Asia/Chongqing
OLD_FILES+=usr/share/zoneinfo/Asia/Harbin
OLD_FILES+=usr/share/zoneinfo/Asia/Kashgar
# 20140814: libopie version bump
OLD_LIBS+=usr/lib/libopie.so.7
OLD_LIBS+=usr/lib32/libopie.so.7
# 20140811: otp-sha renamed to otp-sha1
OLD_FILES+=usr/bin/otp-sha
OLD_FILES+=usr/share/man/man1/otp-sha.1.gz
# 20140807: Remove private lib files that should not be installed.
OLD_FILES+=usr/lib32/private/libatf-c.a
OLD_FILES+=usr/lib32/private/libatf-c.so
OLD_FILES+=usr/lib32/private/libatf-c_p.a
OLD_FILES+=usr/lib32/private/libatf-c++.a
OLD_FILES+=usr/lib32/private/libatf-c++.so
OLD_FILES+=usr/lib32/private/libatf-c++_p.a
OLD_FILES+=usr/lib32/private/libbsdstat.a
OLD_FILES+=usr/lib32/private/libbsdstat.so
OLD_FILES+=usr/lib32/private/libbsdstat_p.a
OLD_FILES+=usr/lib32/private/libheimipcc.a
OLD_FILES+=usr/lib32/private/libheimipcc.so
OLD_FILES+=usr/lib32/private/libheimipcc_p.a
OLD_FILES+=usr/lib32/private/libheimipcs.a
OLD_FILES+=usr/lib32/private/libheimipcs.so
OLD_FILES+=usr/lib32/private/libheimipcs_p.a
OLD_FILES+=usr/lib32/private/libldns.a
OLD_FILES+=usr/lib32/private/libldns.so
OLD_FILES+=usr/lib32/private/libldns_p.a
OLD_FILES+=usr/lib32/private/libssh.a
OLD_FILES+=usr/lib32/private/libssh.so
OLD_FILES+=usr/lib32/private/libssh_p.a
OLD_FILES+=usr/lib32/private/libunbound.a
OLD_FILES+=usr/lib32/private/libunbound.so
OLD_FILES+=usr/lib32/private/libunbound_p.a
OLD_FILES+=usr/lib32/private/libucl.a
OLD_FILES+=usr/lib32/private/libucl.so
OLD_FILES+=usr/lib32/private/libucl_p.a
OLD_FILES+=usr/lib/private/libatf-c.a
OLD_FILES+=usr/lib/private/libatf-c.so
OLD_FILES+=usr/lib/private/libatf-c_p.a
OLD_FILES+=usr/lib/private/libatf-c++.a
OLD_FILES+=usr/lib/private/libatf-c++.so
OLD_FILES+=usr/lib/private/libatf-c++_p.a
OLD_FILES+=usr/lib/private/libbsdstat.a
OLD_FILES+=usr/lib/private/libbsdstat.so
OLD_FILES+=usr/lib/private/libbsdstat_p.a
OLD_FILES+=usr/lib/private/libheimipcc.a
OLD_FILES+=usr/lib/private/libheimipcc.so
OLD_FILES+=usr/lib/private/libheimipcc_p.a
OLD_FILES+=usr/lib/private/libheimipcs.a
OLD_FILES+=usr/lib/private/libheimipcs.so
OLD_FILES+=usr/lib/private/libheimipcs_p.a
OLD_FILES+=usr/lib/private/libldns.a
OLD_FILES+=usr/lib/private/libldns.so
OLD_FILES+=usr/lib/private/libldns_p.a
OLD_FILES+=usr/lib/private/libssh.a
OLD_FILES+=usr/lib/private/libssh.so
OLD_FILES+=usr/lib/private/libssh_p.a
OLD_FILES+=usr/lib/private/libunbound.a
OLD_FILES+=usr/lib/private/libunbound.so
OLD_FILES+=usr/lib/private/libunbound_p.a
OLD_FILES+=usr/lib/private/libucl.a
OLD_FILES+=usr/lib/private/libucl.so
OLD_FILES+=usr/lib/private/libucl_p.a
# 20140803: Remove an obsolete man page
OLD_FILES+=usr/share/man/man9/pmap_change_wiring.9.gz
# 20140731
OLD_FILES+=usr/share/man/man9/SYSCTL_ADD_OID.9.gz
# 20140728: libsbuf restored to old version.
OLD_LIBS+=lib/libsbuf.so.7
OLD_LIBS+=usr/lib32/libsbuf.so.7
# 20140728: Remove an obsolete man page
OLD_FILES+=usr/share/man/man9/VOP_GETVOBJECT.9.gz
OLD_FILES+=usr/share/man/man9/VOP_CREATEVOBJECT.9.gz
OLD_FILES+=usr/share/man/man9/VOP_DESTROYVOBJECT.9.gz
# 20140723: renamed to PCBGROUP.9
OLD_FILES+=usr/share/man/man9/PCBGROUPS.9.gz
# 20140722: browse_packages_ftp.sh removed
OLD_FILES+=usr/share/examples/bsdconfig/browse_packages_ftp.sh
# 20140718: Remove obsolete man pages
OLD_FILES+=usr/share/man/man9/zero_copy.9.gz
OLD_FILES+=usr/share/man/man9/zero_copy_sockets.9.gz
# 20140718: Remove an obsolete man page
OLD_FILES+=usr/share/man/man9/pmap_page_protect.9.gz
# 20140717: Remove an obsolete man page
OLD_FILES+=usr/share/man/man9/pmap_clear_reference.9.gz
# 20140716: Remove an incorrectly named man page
OLD_FILES+=usr/share/man/man9/pmap_ts_modified.9.gz
# 20140712: Removal of bsd.dtrace.mk
OLD_FILES+=usr/share/mk/bsd.dtrace.mk
# 20140705: turn libreadline into an internal lib
OLD_LIBS+=lib/libreadline.so.8
OLD_FILES+=usr/lib/libreadline.a
OLD_FILES+=usr/lib/libreadline_p.a
OLD_FILES+=usr/lib/libreadline.so
OLD_FILES+=usr/lib/libhistory.a
OLD_FILES+=usr/lib/libhistory_p.a
OLD_FILES+=usr/lib/libhistory.so
OLD_LIBS+=usr/lib/libhistory.so.8
OLD_FILES+=usr/lib32/libhistory.a
OLD_FILES+=usr/lib32/libhistory.so
OLD_LIBS+=usr/lib32/libhistory.so.8
OLD_FILES+=usr/lib32/libhistory_p.a
OLD_FILES+=usr/lib32/libreadline.a
OLD_FILES+=usr/lib32/libreadline.so
OLD_LIBS+=usr/lib32/libreadline.so.8
OLD_FILES+=usr/lib32/libreadline_p.a
OLD_FILES+=usr/include/readline/chardefs.h
OLD_FILES+=usr/include/readline/history.h
OLD_FILES+=usr/include/readline/keymaps.h
OLD_FILES+=usr/include/readline/readline.h
OLD_FILES+=usr/include/readline/tilde.h
OLD_FILES+=usr/include/readline/rlconf.h
OLD_FILES+=usr/include/readline/rlstdc.h
OLD_FILES+=usr/include/readline/rltypedefs.h
OLD_FILES+=usr/include/readline/rltypedefs.h
OLD_DIRS+=usr/include/readline
OLD_FILES+=usr/share/info/readline.info.gz
OLD_FILES+=usr/share/man/man3/readline.3.gz
OLD_FILES+=usr/share/man/man3/rlhistory.3.gz
# 20140625: csup removal
OLD_FILES+=usr/bin/csup
OLD_FILES+=usr/bin/cpasswd
OLD_FILES+=usr/share/man/man1/csup.1.gz
OLD_FILES+=usr/share/man/man1/cpasswd.1.gz
OLD_FILES+=usr/share/examples/cvsup/README
OLD_FILES+=usr/share/examples/cvsup/cvs-supfile
OLD_FILES+=usr/share/examples/cvsup/stable-supfile
OLD_FILES+=usr/share/examples/cvsup/standard-supfile
OLD_DIRS+=usr/share/examples/cvsup
# 20140614: send-pr removal
OLD_FILES+=usr/bin/sendbug
OLD_FILES+=usr/share/info/send-pr.info.gz
OLD_FILES+=usr/share/man/man1/send-pr.1.gz
OLD_FILES+=usr/share/man/man1/sendbug.1.gz
OLD_FILES+=etc/gnats/freefall
OLD_DIRS+=etc/gnats
# 20140512: new clang import which bumps version from 3.4 to 3.4.1.
OLD_FILES+=usr/include/clang/3.4/__wmmintrin_aes.h
OLD_FILES+=usr/include/clang/3.4/__wmmintrin_pclmul.h
OLD_FILES+=usr/include/clang/3.4/altivec.h
OLD_FILES+=usr/include/clang/3.4/ammintrin.h
OLD_FILES+=usr/include/clang/3.4/avx2intrin.h
OLD_FILES+=usr/include/clang/3.4/avxintrin.h
OLD_FILES+=usr/include/clang/3.4/bmi2intrin.h
OLD_FILES+=usr/include/clang/3.4/bmiintrin.h
OLD_FILES+=usr/include/clang/3.4/cpuid.h
OLD_FILES+=usr/include/clang/3.4/emmintrin.h
OLD_FILES+=usr/include/clang/3.4/f16cintrin.h
OLD_FILES+=usr/include/clang/3.4/fma4intrin.h
OLD_FILES+=usr/include/clang/3.4/fmaintrin.h
OLD_FILES+=usr/include/clang/3.4/immintrin.h
OLD_FILES+=usr/include/clang/3.4/lzcntintrin.h
OLD_FILES+=usr/include/clang/3.4/mm3dnow.h
OLD_FILES+=usr/include/clang/3.4/mm_malloc.h
OLD_FILES+=usr/include/clang/3.4/mmintrin.h
OLD_FILES+=usr/include/clang/3.4/module.map
OLD_FILES+=usr/include/clang/3.4/nmmintrin.h
OLD_FILES+=usr/include/clang/3.4/pmmintrin.h
OLD_FILES+=usr/include/clang/3.4/popcntintrin.h
OLD_FILES+=usr/include/clang/3.4/prfchwintrin.h
OLD_FILES+=usr/include/clang/3.4/rdseedintrin.h
OLD_FILES+=usr/include/clang/3.4/rtmintrin.h
OLD_FILES+=usr/include/clang/3.4/shaintrin.h
OLD_FILES+=usr/include/clang/3.4/smmintrin.h
OLD_FILES+=usr/include/clang/3.4/tbmintrin.h
OLD_FILES+=usr/include/clang/3.4/tmmintrin.h
OLD_FILES+=usr/include/clang/3.4/wmmintrin.h
OLD_FILES+=usr/include/clang/3.4/x86intrin.h
OLD_FILES+=usr/include/clang/3.4/xmmintrin.h
OLD_FILES+=usr/include/clang/3.4/xopintrin.h
OLD_FILES+=usr/include/clang/3.4/arm_neon.h
OLD_FILES+=usr/include/clang/3.4/module.map
OLD_DIRS+=usr/include/clang/3.4
# 20140505: Bogusly installing src.opts.mk
OLD_FILES+=usr/share/mk/src.opts.mk
# 20140505: Reject PR kern/187551
OLD_FILES+=usr/tests/sbin/ifconfig/fibs_test
# 20140502: Removal of lindev(4)
OLD_FILES+=usr/share/man/man4/lindev.4.gz
# 20140425
OLD_FILES+=usr/lib/libssp_p.a
OLD_FILES+=usr/lib/libstand_p.a
OLD_FILES+=usr/lib32/libssp_p.a
OLD_FILES+=usr/lib32/libstand_p.a
# 20140314: AppleTalk
OLD_DIRS+=usr/include/netatalk
OLD_FILES+=usr/include/netatalk/aarp.h
OLD_FILES+=usr/include/netatalk/at.h
OLD_FILES+=usr/include/netatalk/at_extern.h
OLD_FILES+=usr/include/netatalk/at_var.h
OLD_FILES+=usr/include/netatalk/ddp.h
OLD_FILES+=usr/include/netatalk/ddp_pcb.h
OLD_FILES+=usr/include/netatalk/ddp_var.h
OLD_FILES+=usr/include/netatalk/endian.h
OLD_FILES+=usr/include/netatalk/phase2.h
# 20140314: Remove IPX/SPX
OLD_LIBS+=lib/libipx.so.5
OLD_FILES+=usr/include/netipx/ipx.h
OLD_FILES+=usr/include/netipx/ipx_if.h
OLD_FILES+=usr/include/netipx/ipx_pcb.h
OLD_FILES+=usr/include/netipx/ipx_var.h
OLD_FILES+=usr/include/netipx/spx.h
OLD_FILES+=usr/include/netipx/spx_debug.h
OLD_FILES+=usr/include/netipx/spx_timer.h
OLD_FILES+=usr/include/netipx/spx_var.h
OLD_DIRS+=usr/include/netipx
OLD_FILES+=usr/lib/libipx.a
OLD_FILES+=usr/lib/libipx.so
OLD_FILES+=usr/lib/libipx_p.a
OLD_FILES+=usr/lib32/libipx.a
OLD_FILES+=usr/lib32/libipx.so
OLD_LIBS+=usr/lib32/libipx.so.5
OLD_FILES+=usr/lib32/libipx_p.a
OLD_FILES+=usr/sbin/IPXrouted
OLD_FILES+=usr/share/man/man3/ipx.3.gz
OLD_FILES+=usr/share/man/man3/ipx_addr.3.gz
OLD_FILES+=usr/share/man/man3/ipx_ntoa.3.gz
OLD_FILES+=usr/share/man/man4/ef.4.gz
OLD_FILES+=usr/share/man/man4/if_ef.4.gz
OLD_FILES+=usr/share/man/man8/IPXrouted.8.gz
# 20140314: bsdconfig usermgmt rewrite
OLD_FILES+=usr/libexec/bsdconfig/070.usermgmt/userinput
# 20140307: bsdconfig groupmgmt rewrite
OLD_FILES+=usr/libexec/bsdconfig/070.usermgmt/groupinput
# 20140223: Remove libyaml
OLD_FILES+=usr/lib/private/libyaml.a
OLD_FILES+=usr/lib/private/libyaml.so
OLD_LIBS+=usr/lib/private/libyaml.so.1
OLD_FILES+=usr/lib/private/libyaml_p.a
OLD_FILES+=usr/lib32/private/libyaml.a
OLD_FILES+=usr/lib32/private/libyaml.so
OLD_LIBS+=usr/lib32/private/libyaml.so.1
OLD_FILES+=usr/lib32/private/libyaml_p.a
# 20140216: new clang import which bumps version from 3.3 to 3.4.
OLD_FILES+=usr/bin/llvm-prof
OLD_FILES+=usr/include/clang/3.3/__wmmintrin_aes.h
OLD_FILES+=usr/include/clang/3.3/__wmmintrin_pclmul.h
OLD_FILES+=usr/include/clang/3.3/altivec.h
OLD_FILES+=usr/include/clang/3.3/ammintrin.h
OLD_FILES+=usr/include/clang/3.3/avx2intrin.h
OLD_FILES+=usr/include/clang/3.3/avxintrin.h
OLD_FILES+=usr/include/clang/3.3/bmi2intrin.h
OLD_FILES+=usr/include/clang/3.3/bmiintrin.h
OLD_FILES+=usr/include/clang/3.3/cpuid.h
OLD_FILES+=usr/include/clang/3.3/emmintrin.h
OLD_FILES+=usr/include/clang/3.3/f16cintrin.h
OLD_FILES+=usr/include/clang/3.3/fma4intrin.h
OLD_FILES+=usr/include/clang/3.3/fmaintrin.h
OLD_FILES+=usr/include/clang/3.3/immintrin.h
OLD_FILES+=usr/include/clang/3.3/lzcntintrin.h
OLD_FILES+=usr/include/clang/3.3/mm3dnow.h
OLD_FILES+=usr/include/clang/3.3/mm_malloc.h
OLD_FILES+=usr/include/clang/3.3/mmintrin.h
OLD_FILES+=usr/include/clang/3.3/module.map
OLD_FILES+=usr/include/clang/3.3/nmmintrin.h
OLD_FILES+=usr/include/clang/3.3/pmmintrin.h
OLD_FILES+=usr/include/clang/3.3/popcntintrin.h
OLD_FILES+=usr/include/clang/3.3/prfchwintrin.h
OLD_FILES+=usr/include/clang/3.3/rdseedintrin.h
OLD_FILES+=usr/include/clang/3.3/rtmintrin.h
OLD_FILES+=usr/include/clang/3.3/smmintrin.h
OLD_FILES+=usr/include/clang/3.3/tmmintrin.h
OLD_FILES+=usr/include/clang/3.3/wmmintrin.h
OLD_FILES+=usr/include/clang/3.3/x86intrin.h
OLD_FILES+=usr/include/clang/3.3/xmmintrin.h
OLD_FILES+=usr/include/clang/3.3/xopintrin.h
OLD_FILES+=usr/share/man/man1/llvm-prof.1.gz
OLD_FILES+=usr/share/man/man1/llvm-ranlib.1.gz
OLD_DIRS+=usr/include/clang/3.3
# 20140216: nve(4) removed
OLD_FILES+=usr/share/man/man4/if_nve.4.gz
OLD_FILES+=usr/share/man/man4/nve.4.gz
# 20140205: Open Firmware device moved
OLD_FILES+=usr/include/dev/ofw/ofw_nexus.h
# 20140128: libelf and libdwarf import
OLD_LIBS+=usr/lib/libelf.so.1
OLD_LIBS+=usr/lib32/libelf.so.1
OLD_LIBS+=usr/lib/libdwarf.so.3
OLD_LIBS+=usr/lib32/libdwarf.so.3
# 20140123: apicvar header moved to x86
OLD_FILES+=usr/include/machine/apicvar.h
# 20131215: libcam version bumped
OLD_LIBS+=lib/libcam.so.6 usr/lib32/libcam.so.6
# 20131202: libcapsicum and libcasper moved to /lib/
OLD_LIBS+=usr/lib/libcapsicum.so.0
OLD_LIBS+=usr/lib/libcasper.so.0
# 20131109: extattr(2) mlinks fixed
OLD_FILES+=usr/share/man/man2/extattr_delete_list.2.gz
OLD_FILES+=usr/share/man/man2/extattr_get_list.2.gz
# 20131107: example files removed
OLD_FILES+=usr/share/examples/libusb20/aux.c
OLD_FILES+=usr/share/examples/libusb20/aux.h
# 20131105: tzdata 2013h import
OLD_FILES+=usr/share/zoneinfo/America/Shiprock
OLD_FILES+=usr/share/zoneinfo/Antarctica/South_Pole
# 20131103: WITH_LIBICONV_COMPAT removal
OLD_FILES+=usr/include/_libiconv_compat.h
OLD_FILES+=usr/lib/libiconv.a
OLD_FILES+=usr/lib/libiconv.so
OLD_FILES+=usr/lib/libiconv.so.3
OLD_FILES+=usr/lib/libiconv_p.a
OLD_FILES+=usr/lib32/libiconv.a
OLD_FILES+=usr/lib32/libiconv.so
OLD_FILES+=usr/lib32/libiconv.so.3
OLD_FILES+=usr/lib32/libiconv_p.a
# 20131103: removal of utxrm(8), use 'utx rm' instead.
OLD_FILES+=usr/sbin/utxrm
OLD_FILES+=usr/share/man/man8/utxrm.8.gz
# 20131031: pkg_install has been removed
OLD_FILES+=etc/periodic/daily/220.backup-pkgdb
OLD_FILES+=etc/periodic/daily/490.status-pkg-changes
OLD_FILES+=etc/periodic/security/460.chkportsum
OLD_FILES+=etc/periodic/weekly/400.status-pkg
OLD_FILES+=usr/sbin/pkg_add
OLD_FILES+=usr/sbin/pkg_create
OLD_FILES+=usr/sbin/pkg_delete
OLD_FILES+=usr/sbin/pkg_info
OLD_FILES+=usr/sbin/pkg_updating
OLD_FILES+=usr/sbin/pkg_version
OLD_FILES+=usr/share/man/man1/pkg_add.1.gz
OLD_FILES+=usr/share/man/man1/pkg_create.1.gz
OLD_FILES+=usr/share/man/man1/pkg_delete.1.gz
OLD_FILES+=usr/share/man/man1/pkg_info.1.gz
OLD_FILES+=usr/share/man/man1/pkg_updating.1.gz
OLD_FILES+=usr/share/man/man1/pkg_version.1.gz
# 20131030: /etc/keys moved to /usr/share/keys
OLD_DIRS+=etc/keys
OLD_DIRS+=etc/keys/pkg
OLD_DIRS+=etc/keys/pkg/revoked
OLD_DIRS+=etc/keys/pkg/trusted
OLD_FILES+=etc/keys/pkg/trusted/pkg.freebsd.org.2013102301
# 20131028: ng_fec(4) removed
OLD_FILES+=usr/include/netgraph/ng_fec.h
OLD_FILES+=usr/share/man/man4/ng_fec.4.gz
# 20131027: header moved
OLD_FILES+=usr/include/net/pf_mtag.h
# 20131023: remove never used iscsi directory
OLD_DIRS+=usr/share/examples/iscsi
# 20131021: isf(4) removed
OLD_FILES+=usr/sbin/isfctl
OLD_FILES+=usr/share/man/man4/isf.4.gz
OLD_FILES+=usr/share/man/man8/isfctl.8.gz
# 20131014: libbsdyml becomes private
OLD_FILES+=usr/lib/libbsdyml.a
OLD_FILES+=usr/lib/libbsdyml.so
OLD_LIBS+=usr/lib/libbsdyml.so.0
OLD_FILES+=usr/lib/libbsdyml_p.a
OLD_FILES+=usr/lib32/libbsdyml.a
OLD_FILES+=usr/lib32/libbsdyml.so
OLD_LIBS+=usr/lib32/libbsdyml.so.0
OLD_FILES+=usr/lib32/libbsdyml_p.a
OLD_FILES+=usr/share/man/man3/libbsdyml.3.gz
OLD_FILES+=usr/include/bsdyml.h
# 20131013: Removal of the ATF tools
OLD_FILES+=etc/atf/FreeBSD.conf
OLD_FILES+=etc/atf/atf-run.hooks
OLD_FILES+=etc/atf/common.conf
OLD_FILES+=usr/bin/atf-config
OLD_FILES+=usr/bin/atf-report
OLD_FILES+=usr/bin/atf-run
OLD_FILES+=usr/bin/atf-version
OLD_FILES+=usr/share/atf/atf-run.hooks
OLD_FILES+=usr/share/examples/atf/atf-run.hooks
OLD_FILES+=usr/share/examples/atf/tests-results.css
OLD_FILES+=usr/share/man/man1/atf-config.1.gz
OLD_FILES+=usr/share/man/man1/atf-report.1.gz
OLD_FILES+=usr/share/man/man1/atf-run.1.gz
OLD_FILES+=usr/share/man/man1/atf-version.1.gz
OLD_FILES+=usr/share/man/man5/atf-formats.5.gz
OLD_FILES+=usr/share/xml/atf/tests-results.dtd
OLD_FILES+=usr/share/xsl/atf/tests-results.xsl
OLD_DIRS+=etc/atf
OLD_DIRS+=usr/share/examples/atf
OLD_DIRS+=usr/share/xml/atf
OLD_DIRS+=usr/share/xml
OLD_DIRS+=usr/share/xsl/atf
OLD_DIRS+=usr/share/xsl
# 20131009: freebsd-version moved from /libexec to /bin
OLD_FILES+=libexec/freebsd-version
# 20131001: ar and ranlib from binutils not used
OLD_FILES+=usr/bin/gnu-ar
OLD_FILES+=usr/bin/gnu-ranlib
OLD_FILES+=usr/share/man/man1/gnu-ar.1.gz
OLD_FILES+=usr/share/man/man1/gnu-ranlib.1.gz
# 20130930: BIND removed from base
OLD_FILES+=etc/mtree/BIND.chroot.dist
OLD_FILES+=etc/namedb
OLD_FILES+=etc/periodic/daily/470.status-named
OLD_FILES+=usr/bin/dig
OLD_FILES+=usr/bin/nslookup
OLD_FILES+=usr/bin/nsupdate
OLD_DIRS+=usr/include/lwres
OLD_FILES+=usr/include/lwres/context.h
OLD_FILES+=usr/include/lwres/int.h
OLD_FILES+=usr/include/lwres/ipv6.h
OLD_FILES+=usr/include/lwres/lang.h
OLD_FILES+=usr/include/lwres/list.h
OLD_FILES+=usr/include/lwres/lwbuffer.h
OLD_FILES+=usr/include/lwres/lwpacket.h
OLD_FILES+=usr/include/lwres/lwres.h
OLD_FILES+=usr/include/lwres/net.h
OLD_FILES+=usr/include/lwres/netdb.h
OLD_FILES+=usr/include/lwres/platform.h
OLD_FILES+=usr/include/lwres/result.h
OLD_FILES+=usr/include/lwres/string.h
OLD_FILES+=usr/include/lwres/version.h
OLD_FILES+=usr/lib/liblwres.a
OLD_FILES+=usr/lib/liblwres.so
OLD_LIBS+=usr/lib/liblwres.so.90
OLD_FILES+=usr/lib/liblwres_p.a
OLD_FILES+=usr/sbin/arpaname
OLD_FILES+=usr/sbin/ddns-confgen
OLD_FILES+=usr/sbin/dnssec-dsfromkey
OLD_FILES+=usr/sbin/dnssec-keyfromlabel
OLD_FILES+=usr/sbin/dnssec-keygen
OLD_FILES+=usr/sbin/dnssec-revoke
OLD_FILES+=usr/sbin/dnssec-settime
OLD_FILES+=usr/sbin/dnssec-signzone
OLD_FILES+=usr/sbin/dnssec-verify
OLD_FILES+=usr/sbin/genrandom
OLD_FILES+=usr/sbin/isc-hmac-fixup
OLD_FILES+=usr/sbin/lwresd
OLD_FILES+=usr/sbin/named
OLD_FILES+=usr/sbin/named-checkconf
OLD_FILES+=usr/sbin/named-checkzone
OLD_FILES+=usr/sbin/named-compilezone
OLD_FILES+=usr/sbin/named-journalprint
OLD_FILES+=usr/sbin/named.reconfig
OLD_FILES+=usr/sbin/named.reload
OLD_FILES+=usr/sbin/nsec3hash
OLD_FILES+=usr/sbin/rndc
OLD_FILES+=usr/sbin/rndc-confgen
OLD_DIRS+=usr/share/doc/bind9
OLD_FILES+=usr/share/doc/bind9/CHANGES
OLD_FILES+=usr/share/doc/bind9/COPYRIGHT
OLD_FILES+=usr/share/doc/bind9/FAQ
OLD_FILES+=usr/share/doc/bind9/HISTORY
OLD_FILES+=usr/share/doc/bind9/README
OLD_DIRS+=usr/share/doc/bind9/arm
OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch01.html
OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch02.html
OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch03.html
OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch04.html
OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch05.html
OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch06.html
OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch07.html
OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch08.html
OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch09.html
OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.ch10.html
OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.html
OLD_FILES+=usr/share/doc/bind9/arm/Bv9ARM.pdf
OLD_FILES+=usr/share/doc/bind9/arm/man.arpaname.html
OLD_FILES+=usr/share/doc/bind9/arm/man.ddns-confgen.html
OLD_FILES+=usr/share/doc/bind9/arm/man.dig.html
OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-dsfromkey.html
OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-keyfromlabel.html
OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-keygen.html
OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-revoke.html
OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-settime.html
OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-signzone.html
OLD_FILES+=usr/share/doc/bind9/arm/man.dnssec-verify.html
OLD_FILES+=usr/share/doc/bind9/arm/man.genrandom.html
OLD_FILES+=usr/share/doc/bind9/arm/man.host.html
OLD_FILES+=usr/share/doc/bind9/arm/man.isc-hmac-fixup.html
OLD_FILES+=usr/share/doc/bind9/arm/man.named-checkconf.html
OLD_FILES+=usr/share/doc/bind9/arm/man.named-checkzone.html
OLD_FILES+=usr/share/doc/bind9/arm/man.named-journalprint.html
OLD_FILES+=usr/share/doc/bind9/arm/man.named.html
OLD_FILES+=usr/share/doc/bind9/arm/man.nsec3hash.html
OLD_FILES+=usr/share/doc/bind9/arm/man.nsupdate.html
OLD_FILES+=usr/share/doc/bind9/arm/man.rndc-confgen.html
OLD_FILES+=usr/share/doc/bind9/arm/man.rndc.conf.html
OLD_FILES+=usr/share/doc/bind9/arm/man.rndc.html
OLD_DIRS+=usr/share/doc/bind9/misc
OLD_FILES+=usr/share/doc/bind9/misc/dnssec
OLD_FILES+=usr/share/doc/bind9/misc/format-options.pl
OLD_FILES+=usr/share/doc/bind9/misc/ipv6
OLD_FILES+=usr/share/doc/bind9/misc/migration
OLD_FILES+=usr/share/doc/bind9/misc/migration-4to9
OLD_FILES+=usr/share/doc/bind9/misc/options
OLD_FILES+=usr/share/doc/bind9/misc/rfc-compliance
OLD_FILES+=usr/share/doc/bind9/misc/roadmap
OLD_FILES+=usr/share/doc/bind9/misc/sdb
OLD_FILES+=usr/share/doc/bind9/misc/sort-options.pl
OLD_FILES+=usr/share/man/man1/arpaname.1.gz
OLD_FILES+=usr/share/man/man1/dig.1.gz
OLD_FILES+=usr/share/man/man1/nslookup.1.gz
OLD_FILES+=usr/share/man/man1/nsupdate.1.gz
OLD_FILES+=usr/share/man/man3/lwres.3.gz
OLD_FILES+=usr/share/man/man3/lwres_addr_parse.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_add.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_back.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_clear.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_first.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_forward.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_getmem.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_getuint16.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_getuint32.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_getuint8.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_init.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_invalidate.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_putmem.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_putuint16.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_putuint32.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_putuint8.3.gz
OLD_FILES+=usr/share/man/man3/lwres_buffer_subtract.3.gz
OLD_FILES+=usr/share/man/man3/lwres_conf_clear.3.gz
OLD_FILES+=usr/share/man/man3/lwres_conf_get.3.gz
OLD_FILES+=usr/share/man/man3/lwres_conf_init.3.gz
OLD_FILES+=usr/share/man/man3/lwres_conf_parse.3.gz
OLD_FILES+=usr/share/man/man3/lwres_conf_print.3.gz
OLD_FILES+=usr/share/man/man3/lwres_config.3.gz
OLD_FILES+=usr/share/man/man3/lwres_context.3.gz
OLD_FILES+=usr/share/man/man3/lwres_context_allocmem.3.gz
OLD_FILES+=usr/share/man/man3/lwres_context_create.3.gz
OLD_FILES+=usr/share/man/man3/lwres_context_destroy.3.gz
OLD_FILES+=usr/share/man/man3/lwres_context_freemem.3.gz
OLD_FILES+=usr/share/man/man3/lwres_context_initserial.3.gz
OLD_FILES+=usr/share/man/man3/lwres_context_nextserial.3.gz
OLD_FILES+=usr/share/man/man3/lwres_context_sendrecv.3.gz
OLD_FILES+=usr/share/man/man3/lwres_endhostent.3.gz
OLD_FILES+=usr/share/man/man3/lwres_endhostent_r.3.gz
OLD_FILES+=usr/share/man/man3/lwres_freeaddrinfo.3.gz
OLD_FILES+=usr/share/man/man3/lwres_freehostent.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gabn.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gabnrequest_free.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gabnrequest_parse.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gabnrequest_render.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gabnresponse_free.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gabnresponse_parse.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gabnresponse_render.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gai_strerror.3.gz
OLD_FILES+=usr/share/man/man3/lwres_getaddrinfo.3.gz
OLD_FILES+=usr/share/man/man3/lwres_getaddrsbyname.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gethostbyaddr.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gethostbyaddr_r.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gethostbyname.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gethostbyname2.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gethostbyname_r.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gethostent.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gethostent_r.3.gz
OLD_FILES+=usr/share/man/man3/lwres_getipnode.3.gz
OLD_FILES+=usr/share/man/man3/lwres_getipnodebyaddr.3.gz
OLD_FILES+=usr/share/man/man3/lwres_getipnodebyname.3.gz
OLD_FILES+=usr/share/man/man3/lwres_getnamebyaddr.3.gz
OLD_FILES+=usr/share/man/man3/lwres_getnameinfo.3.gz
OLD_FILES+=usr/share/man/man3/lwres_getrrsetbyname.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gnba.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gnbarequest_free.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gnbarequest_parse.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gnbarequest_render.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gnbaresponse_free.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gnbaresponse_parse.3.gz
OLD_FILES+=usr/share/man/man3/lwres_gnbaresponse_render.3.gz
OLD_FILES+=usr/share/man/man3/lwres_herror.3.gz
OLD_FILES+=usr/share/man/man3/lwres_hstrerror.3.gz
OLD_FILES+=usr/share/man/man3/lwres_inetntop.3.gz
OLD_FILES+=usr/share/man/man3/lwres_lwpacket_parseheader.3.gz
OLD_FILES+=usr/share/man/man3/lwres_lwpacket_renderheader.3.gz
OLD_FILES+=usr/share/man/man3/lwres_net_ntop.3.gz
OLD_FILES+=usr/share/man/man3/lwres_noop.3.gz
OLD_FILES+=usr/share/man/man3/lwres_nooprequest_free.3.gz
OLD_FILES+=usr/share/man/man3/lwres_nooprequest_parse.3.gz
OLD_FILES+=usr/share/man/man3/lwres_nooprequest_render.3.gz
OLD_FILES+=usr/share/man/man3/lwres_noopresponse_free.3.gz
OLD_FILES+=usr/share/man/man3/lwres_noopresponse_parse.3.gz
OLD_FILES+=usr/share/man/man3/lwres_noopresponse_render.3.gz
OLD_FILES+=usr/share/man/man3/lwres_packet.3.gz
OLD_FILES+=usr/share/man/man3/lwres_resutil.3.gz
OLD_FILES+=usr/share/man/man3/lwres_sethostent.3.gz
OLD_FILES+=usr/share/man/man3/lwres_sethostent_r.3.gz
OLD_FILES+=usr/share/man/man3/lwres_string_parse.3.gz
OLD_FILES+=usr/share/man/man5/named.conf.5.gz
OLD_FILES+=usr/share/man/man5/rndc.conf.5.gz
OLD_FILES+=usr/share/man/man8/ddns-confgen.8.gz
OLD_FILES+=usr/share/man/man8/dnssec-dsfromkey.8.gz
OLD_FILES+=usr/share/man/man8/dnssec-keyfromlabel.8.gz
OLD_FILES+=usr/share/man/man8/dnssec-keygen.8.gz
OLD_FILES+=usr/share/man/man8/dnssec-revoke.8.gz
OLD_FILES+=usr/share/man/man8/dnssec-settime.8.gz
OLD_FILES+=usr/share/man/man8/dnssec-signzone.8.gz
OLD_FILES+=usr/share/man/man8/dnssec-verify.8.gz
OLD_FILES+=usr/share/man/man8/genrandom.8.gz
OLD_FILES+=usr/share/man/man8/isc-hmac-fixup.8.gz
OLD_FILES+=usr/share/man/man8/lwresd.8.gz
OLD_FILES+=usr/share/man/man8/named-checkconf.8.gz
OLD_FILES+=usr/share/man/man8/named-checkzone.8.gz
OLD_FILES+=usr/share/man/man8/named-compilezone.8.gz
OLD_FILES+=usr/share/man/man8/named-journalprint.8.gz
OLD_FILES+=usr/share/man/man8/named.8.gz
OLD_FILES+=usr/share/man/man8/named.reconfig.8.gz
OLD_FILES+=usr/share/man/man8/named.reload.8.gz
OLD_FILES+=usr/share/man/man8/nsec3hash.8.gz
OLD_FILES+=usr/share/man/man8/rndc-confgen.8.gz
OLD_FILES+=usr/share/man/man8/rndc.8.gz
OLD_DIRS+=var/named/dev
OLD_DIRS+=var/named/etc
OLD_DIRS+=var/named/etc/namedb
OLD_FILES+=var/named/etc/namedb/PROTO.localhost-v6.rev
OLD_FILES+=var/named/etc/namedb/PROTO.localhost.rev
OLD_DIRS+=var/named/etc/namedb/dynamic
OLD_FILES+=var/named/etc/namedb/make-localhost
OLD_DIRS+=var/named/etc/namedb/master
OLD_FILES+=var/named/etc/namedb/master/empty.db
OLD_FILES+=var/named/etc/namedb/master/localhost-forward.db
OLD_FILES+=var/named/etc/namedb/master/localhost-reverse.db
#OLD_FILES+=var/named/etc/namedb/named.conf # intentionally left out
OLD_FILES+=var/named/etc/namedb/named.root
OLD_DIRS+=var/named/etc/namedb/working
OLD_DIRS+=var/named/etc/namedb/slave
OLD_DIRS+=var/named/var
OLD_DIRS+=var/named/var/dump
OLD_DIRS+=var/named/var/log
OLD_DIRS+=var/named/var/run
OLD_DIRS+=var/named/var/run/named
OLD_DIRS+=var/named/var/stats
OLD_DIRS+=var/run/named
# 20130923: example moved
OLD_FILES+=usr/share/examples/bsdconfig/browse_packages.sh
# 20130908: libssh becomes private
OLD_FILES+=usr/lib/libssh.a
OLD_FILES+=usr/lib/libssh.so
OLD_LIBS+=usr/lib/libssh.so.5
OLD_FILES+=usr/lib/libssh_p.a
OLD_FILES+=usr/lib32/libssh.a
OLD_FILES+=usr/lib32/libssh.so
OLD_LIBS+=usr/lib32/libssh.so.5
OLD_FILES+=usr/lib32/libssh_p.a
# 20130903: gnupatch is no more
OLD_FILES+=usr/bin/gnupatch
OLD_FILES+=usr/share/man/man1/gnupatch.1.gz
# 20130829: bsdpatch is patch unconditionally
OLD_FILES+=usr/bin/bsdpatch
OLD_FILES+=usr/share/man/man1/bsdpatch.1.gz
# 20130822: bind 9.9.3-P2 import
OLD_LIBS+=usr/lib/liblwres.so.80
# 20130814: vm_page_busy(9)
OLD_FILES+=usr/share/man/man9/vm_page_flash.9.gz
OLD_FILES+=usr/share/man/man9/vm_page_io.9.gz
OLD_FILES+=usr/share/man/man9/vm_page_io_finish.9.gz
OLD_FILES+=usr/share/man/man9/vm_page_io_start.9.gz
OLD_FILES+=usr/share/man/man9/vm_page_wakeup.9.gz
# 20130710: libkvm version bump
OLD_LIBS+=lib/libkvm.so.5
OLD_LIBS+=usr/lib32/libkvm.so.5
# 20130623: dialog update from 1.1 to 1.2
OLD_LIBS+=usr/lib/libdialog.so.7
OLD_LIBS+=usr/lib32/libdialog.so.7
# 20130616: vfs_mount.9 removed
OLD_FILES+=usr/share/man/man9/vfs_mount.9.gz
# 20130614: remove CVS from base
OLD_FILES+=usr/bin/cvs
OLD_FILES+=usr/bin/cvsbug
OLD_FILES+=usr/share/doc/psd/28.cvs/paper.ascii.gz
OLD_FILES+=usr/share/doc/psd/28.cvs/paper.ps.gz
OLD_DIRS+=usr/share/doc/psd/28.cvs
OLD_FILES+=usr/share/examples/cvs/contrib/README
OLD_FILES+=usr/share/examples/cvs/contrib/clmerge
OLD_FILES+=usr/share/examples/cvs/contrib/cln_hist
OLD_FILES+=usr/share/examples/cvs/contrib/commit_prep
OLD_FILES+=usr/share/examples/cvs/contrib/cvs2vendor
OLD_FILES+=usr/share/examples/cvs/contrib/cvs_acls
OLD_FILES+=usr/share/examples/cvs/contrib/cvscheck
OLD_FILES+=usr/share/examples/cvs/contrib/cvscheck.man
OLD_FILES+=usr/share/examples/cvs/contrib/cvshelp.man
OLD_FILES+=usr/share/examples/cvs/contrib/descend.man
OLD_FILES+=usr/share/examples/cvs/contrib/easy-import
OLD_FILES+=usr/share/examples/cvs/contrib/intro.doc
OLD_FILES+=usr/share/examples/cvs/contrib/log
OLD_FILES+=usr/share/examples/cvs/contrib/log_accum
OLD_FILES+=usr/share/examples/cvs/contrib/mfpipe
OLD_FILES+=usr/share/examples/cvs/contrib/rcs-to-cvs
OLD_FILES+=usr/share/examples/cvs/contrib/rcs2log
OLD_FILES+=usr/share/examples/cvs/contrib/rcslock
OLD_FILES+=usr/share/examples/cvs/contrib/sccs2rcs
OLD_DIRS+=usr/share/examples/cvs/contrib
OLD_DIRS+=usr/share/examples/cvs
OLD_FILES+=usr/share/info/cvs.info.gz
OLD_FILES+=usr/share/info/cvsclient.info.gz
OLD_FILES+=usr/share/man/man1/cvs.1.gz
OLD_FILES+=usr/share/man/man5/cvs.5.gz
OLD_FILES+=usr/share/man/man8/cvsbug.8.gz
# 20130607: WITH_DEBUG_FILES added
OLD_FILES+=lib/libufs.so.6.symbols
OLD_FILES+=usr/lib32/libufs.so.6.symbols
# 20130417: nfs fha moved from nfsserver to nfs
OLD_FILES+=usr/include/nfsserver/nfs_fha.h
# 20130411: new clang import which bumps version from 3.2 to 3.3.
OLD_FILES+=usr/include/clang/3.2/__wmmintrin_aes.h
OLD_FILES+=usr/include/clang/3.2/__wmmintrin_pclmul.h
OLD_FILES+=usr/include/clang/3.2/altivec.h
OLD_FILES+=usr/include/clang/3.2/ammintrin.h
OLD_FILES+=usr/include/clang/3.2/avx2intrin.h
OLD_FILES+=usr/include/clang/3.2/avxintrin.h
OLD_FILES+=usr/include/clang/3.2/bmi2intrin.h
OLD_FILES+=usr/include/clang/3.2/bmiintrin.h
OLD_FILES+=usr/include/clang/3.2/cpuid.h
OLD_FILES+=usr/include/clang/3.2/emmintrin.h
OLD_FILES+=usr/include/clang/3.2/f16cintrin.h
OLD_FILES+=usr/include/clang/3.2/fma4intrin.h
OLD_FILES+=usr/include/clang/3.2/fmaintrin.h
OLD_FILES+=usr/include/clang/3.2/immintrin.h
OLD_FILES+=usr/include/clang/3.2/lzcntintrin.h
OLD_FILES+=usr/include/clang/3.2/mm3dnow.h
OLD_FILES+=usr/include/clang/3.2/mm_malloc.h
OLD_FILES+=usr/include/clang/3.2/mmintrin.h
OLD_FILES+=usr/include/clang/3.2/module.map
OLD_FILES+=usr/include/clang/3.2/nmmintrin.h
OLD_FILES+=usr/include/clang/3.2/pmmintrin.h
OLD_FILES+=usr/include/clang/3.2/popcntintrin.h
OLD_FILES+=usr/include/clang/3.2/rtmintrin.h
OLD_FILES+=usr/include/clang/3.2/smmintrin.h
OLD_FILES+=usr/include/clang/3.2/tmmintrin.h
OLD_FILES+=usr/include/clang/3.2/wmmintrin.h
OLD_FILES+=usr/include/clang/3.2/x86intrin.h
OLD_FILES+=usr/include/clang/3.2/xmmintrin.h
OLD_FILES+=usr/include/clang/3.2/xopintrin.h
OLD_DIRS+=usr/include/clang/3.2
# 20130404: legacy ATA stack removed
OLD_FILES+=etc/periodic/daily/405.status-ata-raid
OLD_FILES+=rescue/atacontrol
OLD_FILES+=sbin/atacontrol
OLD_FILES+=usr/share/man/man8/atacontrol.8.gz
OLD_FILES+=usr/share/man/man4/atapicam.4.gz
OLD_FILES+=usr/share/man/man4/ataraid.4.gz
OLD_FILES+=usr/sbin/burncd
OLD_FILES+=usr/share/man/man8/burncd.8.gz
# 20130316: vinum.4 removed
OLD_FILES+=usr/share/man/man4/vinum.4.gz
# 20130312: fortunes-o removed
OLD_FILES+=usr/share/games/fortune/fortunes-o
OLD_FILES+=usr/share/games/fortune/fortunes-o.dat
# 20130311: Ports are no more available via cvsup
OLD_FILES+=usr/share/examples/cvsup/ports-supfile
OLD_FILES+=usr/share/examples/cvsup/refuse
OLD_FILES+=usr/share/examples/cvsup/refuse.README
# 20130309: NWFS and NCP supports removed
OLD_FILES+=usr/bin/ncplist
OLD_FILES+=usr/bin/ncplogin
OLD_FILES+=usr/bin/ncplogout
OLD_FILES+=usr/include/fs/nwfs/nwfs.h
OLD_FILES+=usr/include/fs/nwfs/nwfs_mount.h
OLD_FILES+=usr/include/fs/nwfs/nwfs_node.h
OLD_FILES+=usr/include/fs/nwfs/nwfs_subr.h
OLD_DIRS+=usr/include/fs/nwfs
OLD_FILES+=usr/include/netncp/ncp.h
OLD_FILES+=usr/include/netncp/ncp_cfg.h
OLD_FILES+=usr/include/netncp/ncp_conn.h
OLD_FILES+=usr/include/netncp/ncp_file.h
OLD_FILES+=usr/include/netncp/ncp_lib.h
OLD_FILES+=usr/include/netncp/ncp_ncp.h
OLD_FILES+=usr/include/netncp/ncp_nls.h
OLD_FILES+=usr/include/netncp/ncp_rcfile.h
OLD_FILES+=usr/include/netncp/ncp_rq.h
OLD_FILES+=usr/include/netncp/ncp_sock.h
OLD_FILES+=usr/include/netncp/ncp_subr.h
OLD_FILES+=usr/include/netncp/ncp_user.h
OLD_FILES+=usr/include/netncp/ncpio.h
OLD_FILES+=usr/include/netncp/nwerror.h
OLD_DIRS+=usr/include/netncp
OLD_FILES+=usr/lib/libncp.a
OLD_FILES+=usr/lib/libncp.so
OLD_LIBS+=usr/lib/libncp.so.4
OLD_FILES+=usr/lib/libncp_p.a
OLD_FILES+=usr/lib32/libncp.a
OLD_FILES+=usr/lib32/libncp.so
OLD_LIBS+=usr/lib32/libncp.so.4
OLD_FILES+=usr/lib32/libncp_p.a
OLD_FILES+=usr/sbin/mount_nwfs
OLD_FILES+=usr/share/examples/nwclient/dot.nwfsrc
OLD_FILES+=usr/share/examples/nwclient/nwfs.sh.sample
OLD_DIRS+=usr/share/examples/nwclient
OLD_FILES+=usr/share/man/man1/ncplist.1.gz
OLD_FILES+=usr/share/man/man1/ncplogin.1.gz
OLD_FILES+=usr/share/man/man1/ncplogout.1.gz
OLD_FILES+=usr/share/man/man8/mount_nwfs.8.gz
# 20130302: NTFS support removed
OLD_FILES+=rescue/mount_ntfs
OLD_FILES+=sbin/mount_ntfs
OLD_FILES+=usr/include/fs/ntfs/ntfs.h
OLD_FILES+=usr/include/fs/ntfs/ntfs_compr.h
OLD_FILES+=usr/include/fs/ntfs/ntfs_ihash.h
OLD_FILES+=usr/include/fs/ntfs/ntfs_inode.h
OLD_FILES+=usr/include/fs/ntfs/ntfs_subr.h
OLD_FILES+=usr/include/fs/ntfs/ntfs_vfsops.h
OLD_FILES+=usr/include/fs/ntfs/ntfsmount.h
OLD_DIRS+=usr/include/fs/ntfs
OLD_FILES+=usr/share/man/man8/mount_ntfs.8.gz
# 20130302: PORTALFS support removed
OLD_FILES+=usr/include/fs/portalfs/portal.h
OLD_DIRS+=usr/include/fs/portalfs
OLD_FILES+=usr/sbin/mount_portalfs
OLD_FILES+=usr/share/examples/portal/README
OLD_FILES+=usr/share/examples/portal/portal.conf
OLD_DIRS+=usr/share/examples/portal
OLD_FILES+=usr/share/man/man8/mount_portalfs.8.gz
# 20130302: CODAFS support removed
OLD_FILES+=usr/share/man/man4/coda.4.gz
# 20130302: XFS support removed
OLD_FILES+=usr/share/man/man5/xfs.5.gz
# 20130302: Capsicum overhaul
OLD_FILES+=usr/share/man/man2/cap_getrights.2.gz
OLD_FILES+=usr/share/man/man2/cap_new.2.gz
# 20130213: OpenSSL 1.0.1e import
OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEY_verifyrecover.3.gz
OLD_FILES+=usr/share/openssl/man/man3/EVP_PKEY_verifyrecover_init.3.gz
# 20130116: removed long unused directories for .1aout section manpages
OLD_FILES+=usr/share/man/en.ISO8859-1/man1aout
OLD_FILES+=usr/share/man/en.UTF-8/man1aout
OLD_DIRS+=usr/share/man/man1aout
OLD_DIRS+=usr/share/man/cat1aout
OLD_DIRS+=usr/share/man/en.ISO8859-1/cat1aout
OLD_DIRS+=usr/share/man/en.UTF-8/cat1aout
# 20130103: gnats-supfile removed
OLD_FILES+=usr/share/examples/cvsup/gnats-supfile
# 20121230: libdisk removed
OLD_FILES+=usr/share/man/man3/libdisk.3.gz usr/include/libdisk.h
OLD_FILES+=usr/lib/libdisk.a usr/lib32/libdisk.a
# 20121230: remove wrongly created directories for auditdistd
OLD_DIRS+=var/dist
OLD_DIRS+=var/remote
# 20121114: zpool-features manual page moved from section 5 to 7
OLD_FILES+=usr/share/man/man5/zpool-features.5.gz
# 20121022: remove harp, hfa and idt man page
OLD_FILES+=usr/share/man/man4/harp.4.gz
OLD_FILES+=usr/share/man/man4/hfa.4.gz
OLD_FILES+=usr/share/man/man4/idt.4.gz
OLD_FILES+=usr/share/man/man4/if_idt.4.gz
# 20121022: VFS_LOCK_GIANT elimination
OLD_FILES+=usr/share/man/man9/VFS_LOCK_GIANT.9.gz
OLD_FILES+=usr/share/man/man9/VFS_UNLOCK_GIANT.9.gz
# 20121004: remove incomplete unwind.h
OLD_FILES+=usr/include/clang/3.2/unwind.h
# 20120910: NetBSD compat shims removed
OLD_FILES+=usr/include/cam/scsi/scsi_low_pisa.h
OLD_FILES+=usr/include/sys/device_port.h
# 20120909: doc and www supfiles removed
OLD_FILES+=usr/share/examples/cvsup/doc-supfile
OLD_FILES+=usr/share/examples/cvsup/www-supfile
# 20120908: pf cleanup
OLD_FILES+=usr/include/net/if_pflow.h
# 20120816: new clang import which bumps version from 3.1 to 3.2
OLD_FILES+=usr/bin/llvm-ld
OLD_FILES+=usr/bin/llvm-stub
OLD_FILES+=usr/include/clang/3.1/altivec.h
OLD_FILES+=usr/include/clang/3.1/avx2intrin.h
OLD_FILES+=usr/include/clang/3.1/avxintrin.h
OLD_FILES+=usr/include/clang/3.1/bmi2intrin.h
OLD_FILES+=usr/include/clang/3.1/bmiintrin.h
OLD_FILES+=usr/include/clang/3.1/cpuid.h
OLD_FILES+=usr/include/clang/3.1/emmintrin.h
OLD_FILES+=usr/include/clang/3.1/fma4intrin.h
OLD_FILES+=usr/include/clang/3.1/immintrin.h
OLD_FILES+=usr/include/clang/3.1/lzcntintrin.h
OLD_FILES+=usr/include/clang/3.1/mm3dnow.h
OLD_FILES+=usr/include/clang/3.1/mm_malloc.h
OLD_FILES+=usr/include/clang/3.1/mmintrin.h
OLD_FILES+=usr/include/clang/3.1/module.map
OLD_FILES+=usr/include/clang/3.1/nmmintrin.h
OLD_FILES+=usr/include/clang/3.1/pmmintrin.h
OLD_FILES+=usr/include/clang/3.1/popcntintrin.h
OLD_FILES+=usr/include/clang/3.1/smmintrin.h
OLD_FILES+=usr/include/clang/3.1/tmmintrin.h
OLD_FILES+=usr/include/clang/3.1/unwind.h
OLD_FILES+=usr/include/clang/3.1/wmmintrin.h
OLD_FILES+=usr/include/clang/3.1/x86intrin.h
OLD_FILES+=usr/include/clang/3.1/xmmintrin.h
OLD_DIRS+=usr/include/clang/3.1
OLD_FILES+=usr/share/man/man1/llvm-ld.1.gz
# 20120712: OpenSSL 1.0.1c import
OLD_LIBS+=lib/libcrypto.so.6
OLD_LIBS+=usr/lib/libssl.so.6
OLD_LIBS+=usr/lib32/libcrypto.so.6
OLD_LIBS+=usr/lib32/libssl.so.6
OLD_FILES+=usr/include/openssl/aes_locl.h
OLD_FILES+=usr/include/openssl/bio_lcl.h
OLD_FILES+=usr/include/openssl/e_os.h
OLD_FILES+=usr/include/openssl/fips.h
OLD_FILES+=usr/include/openssl/fips_rand.h
OLD_FILES+=usr/include/openssl/pq_compat.h
OLD_FILES+=usr/include/openssl/tmdiff.h
OLD_FILES+=usr/include/openssl/ui_locl.h
OLD_FILES+=usr/share/openssl/man/man3/CRYPTO_set_id_callback.3.gz
# 20120621: remove old man page
OLD_FILES+=usr/share/man/man8/vnconfig.8.gz
# 20120619: TOE support updated
OLD_FILES+=usr/include/netinet/toedev.h
# 20120613: auth.conf removed
OLD_FILES+=etc/auth.conf
OLD_FILES+=usr/share/examples/etc/auth.conf
OLD_FILES+=usr/share/man/man3/auth.3.gz
OLD_FILES+=usr/share/man/man3/auth_getval.3.gz
OLD_FILES+=usr/share/man/man5/auth.conf.5.gz
# 20120530: kde pam lives now in ports
OLD_FILES+=etc/pam.d/kde
# 20120521: byacc import
OLD_FILES+=usr/bin/yyfix
OLD_FILES+=usr/share/man/man1/yyfix.1.gz
# 20120505: new clang import installed a redundant internal header
OLD_FILES+=usr/include/clang/3.1/stdalign.h
# 20120428: MD2 removed from libmd
OLD_LIBS+=lib/libmd.so.5
OLD_FILES+=usr/include/md2.h
OLD_LIBS+=usr/lib32/libmd.so.5
OLD_FILES+=usr/share/man/man3/MD2Data.3.gz
OLD_FILES+=usr/share/man/man3/MD2End.3.gz
OLD_FILES+=usr/share/man/man3/MD2File.3.gz
OLD_FILES+=usr/share/man/man3/MD2FileChunk.3.gz
OLD_FILES+=usr/share/man/man3/MD2Final.3.gz
OLD_FILES+=usr/share/man/man3/MD2Init.3.gz
OLD_FILES+=usr/share/man/man3/MD2Update.3.gz
OLD_FILES+=usr/share/man/man3/md2.3.gz
# 20120425: libusb version bump (r234684)
OLD_LIBS+=usr/lib/libusb.so.2
OLD_LIBS+=usr/lib32/libusb.so.2
OLD_FILES+=usr/share/man/man3/libsub_get_active_config_descriptor.3.gz
# 20120415: new clang import which bumps version from 3.0 to 3.1
OLD_FILES+=usr/include/clang/3.0/altivec.h
OLD_FILES+=usr/include/clang/3.0/avxintrin.h
OLD_FILES+=usr/include/clang/3.0/emmintrin.h
OLD_FILES+=usr/include/clang/3.0/immintrin.h
OLD_FILES+=usr/include/clang/3.0/mm3dnow.h
OLD_FILES+=usr/include/clang/3.0/mm_malloc.h
OLD_FILES+=usr/include/clang/3.0/mmintrin.h
OLD_FILES+=usr/include/clang/3.0/nmmintrin.h
OLD_FILES+=usr/include/clang/3.0/pmmintrin.h
OLD_FILES+=usr/include/clang/3.0/smmintrin.h
OLD_FILES+=usr/include/clang/3.0/tmmintrin.h
OLD_FILES+=usr/include/clang/3.0/wmmintrin.h
OLD_FILES+=usr/include/clang/3.0/x86intrin.h
OLD_FILES+=usr/include/clang/3.0/xmmintrin.h
OLD_DIRS+=usr/include/clang/3.0
# 20120412: BIND 9.8.1 release notes removed
OLD_FILES+=usr/share/doc/bind9/RELEASE-NOTES-BIND-9.8.1.pdf
OLD_FILES+=usr/share/doc/bind9/RELEASE-NOTES-BIND-9.8.1.txt
OLD_FILES+=usr/share/doc/bind9/RELEASE-NOTES-BIND-9.8.1.html
OLD_FILES+=usr/share/doc/bind9/release-notes.css
# 20120330: legacy(4) moved to x86
OLD_FILES+=usr/include/machine/legacyvar.h
# 20120324: MPI headers updated
OLD_FILES+=usr/include/dev/mpt/mpilib/mpi_inb.h
# 20120322: hwpmc_mips24k.h removed
OLD_FILES+=usr/include/dev/hwpmc/hwpmc_mips24k.h
# 20120322: Update heimdal to 1.5.1.
OLD_FILES+=usr/include/krb5-v4compat.h \
usr/include/krb_err.h \
usr/include/hdb-private.h \
usr/share/man/man3/krb5_addresses.3.gz \
usr/share/man/man3/krb5_cc_cursor.3.gz \
usr/share/man/man3/krb5_cc_ops.3.gz \
usr/share/man/man3/krb5_config.3.gz \
usr/share/man/man3/krb5_config_get_int_default.3.gz \
usr/share/man/man3/krb5_context.3.gz \
usr/share/man/man3/krb5_data.3.gz \
usr/share/man/man3/krb5_err.3.gz \
usr/share/man/man3/krb5_errx.3.gz \
usr/share/man/man3/krb5_keyblock.3.gz \
usr/share/man/man3/krb5_keytab_entry.3.gz \
usr/share/man/man3/krb5_kt_cursor.3.gz \
usr/share/man/man3/krb5_kt_ops.3.gz \
usr/share/man/man3/krb5_set_warn_dest.3.gz \
usr/share/man/man3/krb5_verr.3.gz \
usr/share/man/man3/krb5_verrx.3.gz \
usr/share/man/man3/krb5_vwarnx.3.gz \
usr/share/man/man3/krb5_warn.3.gz \
usr/share/man/man3/krb5_warnx.3.gz
OLD_LIBS+=usr/lib/libasn1.so.10 \
usr/lib/libhdb.so.10 \
usr/lib/libheimntlm.so.10 \
usr/lib/libhx509.so.10 \
usr/lib/libkadm5clnt.so.10 \
usr/lib/libkadm5srv.so.10 \
usr/lib/libkafs5.so.10 \
usr/lib/libkrb5.so.10 \
usr/lib/libroken.so.10 \
usr/lib32/libasn1.so.10 \
usr/lib32/libhdb.so.10 \
usr/lib32/libheimntlm.so.10 \
usr/lib32/libhx509.so.10 \
usr/lib32/libkadm5clnt.so.10 \
usr/lib32/libkadm5srv.so.10 \
usr/lib32/libkafs5.so.10 \
usr/lib32/libkrb5.so.10 \
usr/lib32/libroken.so.10
# 20120309: Remove fifofs header files.
OLD_FILES+=usr/include/fs/fifofs/fifo.h
OLD_DIRS+=usr/include/fs/fifofs
# 20120304: xlocale cleanup
OLD_FILES+=usr/include/_xlocale_ctype.h
# 20120225: libarchive 3.0.3
OLD_FILES+=usr/share/man/man3/archive_read_data_into_buffer.3.gz \
usr/share/man/man3/archive_read_support_compression_all.3.gz \
usr/share/man/man3/archive_read_support_compression_bzip2.3.gz \
usr/share/man/man3/archive_read_support_compression_compress.3.gz \
usr/share/man/man3/archive_read_support_compression_gzip.3.gz \
usr/share/man/man3/archive_read_support_compression_lzma.3.gz \
usr/share/man/man3/archive_read_support_compression_none.3.gz \
usr/share/man/man3/archive_read_support_compression_program.3.gz \
usr/share/man/man3/archive_read_support_compression_program_signature.3.gz \
usr/share/man/man3/archive_read_support_compression_xz.3.gz \
usr/share/man/man3/archive_write_set_callbacks.3.gz \
usr/share/man/man3/archive_write_set_compression_bzip2.3.gz \
usr/share/man/man3/archive_write_set_compression_compress.3.gz \
usr/share/man/man3/archive_write_set_compression_gzip.3.gz \
usr/share/man/man3/archive_write_set_compression_none.3.gz \
usr/share/man/man3/archive_write_set_compression_program.3.gz
OLD_LIBS+=usr/lib/libarchive.so.5
OLD_LIBS+=usr/lib32/libarchive.so.5
# 20120113: removal of wtmpcvt(1)
OLD_FILES+=usr/bin/wtmpcvt
OLD_FILES+=usr/share/man/man1/wtmpcvt.1.gz
# 20111214: eventtimers(7) moved to eventtimers(4)
OLD_FILES+=usr/share/man/man7/eventtimers.7.gz
# 20111125: amd(4) removed
OLD_FILES+=usr/share/man/man4/amd.4.gz
# 20111125: libodialog removed
OLD_FILES+=usr/lib/libodialog.a
OLD_FILES+=usr/lib/libodialog.so
OLD_LIBS+=usr/lib/libodialog.so.7
OLD_FILES+=usr/lib/libodialog_p.a
OLD_FILES+=usr/lib32/libodialog.a
OLD_FILES+=usr/lib32/libodialog.so
OLD_LIBS+=usr/lib32/libodialog.so.7
OLD_FILES+=usr/lib32/libodialog_p.a
# 20110930: sysinstall removed
OLD_FILES+=usr/sbin/sysinstall
OLD_FILES+=usr/share/man/man8/sysinstall.8.gz
OLD_FILES+=usr/lib/libftpio.a
OLD_FILES+=usr/lib/libftpio.so
OLD_LIBS+=usr/lib/libftpio.so.8
OLD_FILES+=usr/lib/libftpio_p.a
OLD_FILES+=usr/lib32/libftpio.a
OLD_FILES+=usr/lib32/libftpio.so
OLD_LIBS+=usr/lib32/libftpio.so.8
OLD_FILES+=usr/lib32/libftpio_p.a
OLD_FILES+=usr/include/ftpio.h
OLD_FILES+=usr/share/man/man3/ftpio.3.gz
# 20110915: rename congestion control manpages
OLD_FILES+=usr/share/man/man9/cc.9.gz
# 20110831: atomic page flags operations
OLD_FILES+=usr/share/man/man9/vm_page_flag.9.gz
OLD_FILES+=usr/share/man/man9/vm_page_flag_clear.9.gz
OLD_FILES+=usr/share/man/man9/vm_page_flag_set.9.gz
# 20110828: library version bump for 9.0
OLD_LIBS+=lib/libcam.so.5
OLD_LIBS+=lib/libpcap.so.7
OLD_LIBS+=lib/libufs.so.5
OLD_LIBS+=usr/lib/libbsnmp.so.5
OLD_LIBS+=usr/lib/libdwarf.so.2
OLD_LIBS+=usr/lib/libopie.so.6
OLD_LIBS+=usr/lib/librtld_db.so.1
OLD_LIBS+=usr/lib/libtacplus.so.4
OLD_LIBS+=usr/lib32/libcam.so.5
OLD_LIBS+=usr/lib32/libpcap.so.7
OLD_LIBS+=usr/lib32/libufs.so.5
OLD_LIBS+=usr/lib32/libbsnmp.so.5
OLD_LIBS+=usr/lib32/libdwarf.so.2
OLD_LIBS+=usr/lib32/libopie.so.6
OLD_LIBS+=usr/lib32/librtld_db.so.1
OLD_LIBS+=usr/lib32/libtacplus.so.4
# 20110817: no more acd.4, ad.4, afd.4 and ast.4
OLD_FILES+=usr/share/man/man4/acd.4.gz
OLD_FILES+=usr/share/man/man4/ad.4.gz
OLD_FILES+=usr/share/man/man4/afd.4.gz
OLD_FILES+=usr/share/man/man4/ast.4.gz
# 20110718: no longer useful in the age of rc.d
OLD_FILES+=usr/sbin/named.reconfig
OLD_FILES+=usr/sbin/named.reload
OLD_FILES+=usr/share/man/man8/named.reconfig.8.gz
OLD_FILES+=usr/share/man/man8/named.reload.8.gz
# 20110716: bind 9.8.0 import
OLD_LIBS+=usr/lib/liblwres.so.50
OLD_FILES+=usr/share/doc/bind9/KNOWN-DEFECTS
OLD_FILES+=usr/share/doc/bind9/NSEC3-NOTES
OLD_FILES+=usr/share/doc/bind9/README.idnkit
OLD_FILES+=usr/share/doc/bind9/README.pkcs11
# 20110709: vm_map_clean.9 -> vm_map_sync.9
OLD_FILES+=usr/share/man/man9/vm_map_clean.9.gz
# 20110709: Catch up with removal of these functions.
OLD_FILES+=usr/share/man/man9/vm_page_copy.9.gz
OLD_FILES+=usr/share/man/man9/vm_page_protect.9.gz
OLD_FILES+=usr/share/man/man9/vm_page_zero_fill.9.gz
# 20110707: script no longer needed by /etc/rc.d/nfsd
OLD_FILES+=etc/rc.d/nfsserver
# 20110705: files moved so both NFS clients can share them
OLD_FILES+=usr/include/nfsclient/krpc.h
OLD_FILES+=usr/include/nfsclient/nfsdiskless.h
# 20110705: the switch of default NFS client to the new one
OLD_FILES+=sbin/mount_newnfs
OLD_FILES+=usr/share/man/man8/mount_newnfs.8.gz
OLD_FILES+=usr/include/nfsclient/nfs_kdtrace.h
# 20110628: calendar.msk removed
OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.msk
# 20110517: libpkg removed
OLD_FILES+=usr/include/pkg.h
OLD_FILES+=usr/lib/libpkg.a
OLD_FILES+=usr/lib/libpkg.so
OLD_LIBS+=usr/lib/libpkg.so.0
OLD_FILES+=usr/lib/libpkg_p.a
OLD_FILES+=usr/lib32/libpkg.a
OLD_FILES+=usr/lib32/libpkg.so
OLD_LIBS+=usr/lib32/libpkg.so.0
OLD_FILES+=usr/lib32/libpkg_p.a
# 20110517: libsbuf version bump
OLD_LIBS+=lib/libsbuf.so.5
OLD_LIBS+=usr/lib32/libsbuf.so.5
# 20110502: new clang import which bumps version from 2.9 to 3.0
OLD_FILES+=usr/include/clang/2.9/emmintrin.h
OLD_FILES+=usr/include/clang/2.9/mm_malloc.h
OLD_FILES+=usr/include/clang/2.9/mmintrin.h
OLD_FILES+=usr/include/clang/2.9/pmmintrin.h
OLD_FILES+=usr/include/clang/2.9/tmmintrin.h
OLD_FILES+=usr/include/clang/2.9/xmmintrin.h
OLD_DIRS+=usr/include/clang/2.9
# 20110417: removal of Objective-C support
OLD_FILES+=usr/include/objc/encoding.h
OLD_FILES+=usr/include/objc/hash.h
OLD_FILES+=usr/include/objc/NXConstStr.h
OLD_FILES+=usr/include/objc/objc-api.h
OLD_FILES+=usr/include/objc/objc-decls.h
OLD_FILES+=usr/include/objc/objc-list.h
OLD_FILES+=usr/include/objc/objc.h
OLD_FILES+=usr/include/objc/Object.h
OLD_FILES+=usr/include/objc/Protocol.h
OLD_FILES+=usr/include/objc/runtime.h
OLD_FILES+=usr/include/objc/sarray.h
OLD_FILES+=usr/include/objc/thr.h
OLD_FILES+=usr/include/objc/typedstream.h
OLD_FILES+=usr/lib/libobjc.a
OLD_FILES+=usr/lib/libobjc.so
OLD_FILES+=usr/lib/libobjc_p.a
OLD_FILES+=usr/libexec/cc1obj
OLD_LIBS+=usr/lib/libobjc.so.4
OLD_DIRS+=usr/include/objc
OLD_FILES+=usr/lib32/libobjc.a
OLD_FILES+=usr/lib32/libobjc.so
OLD_FILES+=usr/lib32/libobjc_p.a
OLD_LIBS+=usr/lib32/libobjc.so.4
# 20110331: firmware.img created at build time
OLD_FILES+=usr/share/examples/kld/firmware/fwimage/firmware.img
# 20110224: sticky.8 -> sticky.7
OLD_FILES+=usr/share/man/man8/sticky.8.gz
# 20110220: new clang import which bumps version from 2.8 to 2.9
OLD_FILES+=usr/include/clang/2.8/emmintrin.h
OLD_FILES+=usr/include/clang/2.8/mm_malloc.h
OLD_FILES+=usr/include/clang/2.8/mmintrin.h
OLD_FILES+=usr/include/clang/2.8/pmmintrin.h
OLD_FILES+=usr/include/clang/2.8/tmmintrin.h
OLD_FILES+=usr/include/clang/2.8/xmmintrin.h
OLD_DIRS+=usr/include/clang/2.8
# 20110119: netinet/sctp_cc_functions.h removed
OLD_FILES+=usr/include/netinet/sctp_cc_functions.h
# 20110119: Remove SYSCTL_*X* sysctl additions.
OLD_FILES+=usr/share/man/man9/SYSCTL_XINT.9.gz \
usr/share/man/man9/SYSCTL_XLONG.9.gz
# 20110112: Update dialog to new version, rename old libdialog to libodialog,
# removing associated man pages and header files.
OLD_FILES+=usr/share/man/man3/draw_shadow.3.gz \
usr/share/man/man3/draw_box.3.gz usr/share/man/man3/line_edit.3.gz \
usr/share/man/man3/strheight.3.gz usr/share/man/man3/strwidth.3.gz \
usr/share/man/man3/dialog_create_rc.3.gz \
usr/share/man/man3/dialog_yesno.3.gz usr/share/man/man3/dialog_noyes.3.gz \
usr/share/man/man3/dialog_prgbox.3.gz \
usr/share/man/man3/dialog_textbox.3.gz usr/share/man/man3/dialog_menu.3.gz \
usr/share/man/man3/dialog_checklist.3.gz \
usr/share/man/man3/dialog_radiolist.3.gz \
usr/share/man/man3/dialog_inputbox.3.gz \
usr/share/man/man3/dialog_clear_norefresh.3.gz \
usr/share/man/man3/dialog_clear.3.gz usr/share/man/man3/dialog_update.3.gz \
usr/share/man/man3/dialog_fselect.3.gz \
usr/share/man/man3/dialog_notify.3.gz \
usr/share/man/man3/dialog_mesgbox.3.gz \
usr/share/man/man3/dialog_gauge.3.gz usr/share/man/man3/init_dialog.3.gz \
usr/share/man/man3/end_dialog.3.gz usr/share/man/man3/use_helpfile.3.gz \
usr/share/man/man3/use_helpline.3.gz usr/share/man/man3/get_helpline.3.gz \
usr/share/man/man3/restore_helpline.3.gz \
usr/share/man/man3/dialog_msgbox.3.gz \
usr/share/man/man3/dialog_ftree.3.gz usr/share/man/man3/dialog_tree.3.gz \
usr/share/examples/dialog/README usr/share/examples/dialog/checklist \
usr/share/examples/dialog/ftreebox usr/share/examples/dialog/infobox \
usr/share/examples/dialog/inputbox usr/share/examples/dialog/menubox \
usr/share/examples/dialog/msgbox usr/share/examples/dialog/prgbox \
usr/share/examples/dialog/radiolist usr/share/examples/dialog/textbox \
usr/share/examples/dialog/treebox usr/share/examples/dialog/yesno \
usr/share/examples/libdialog/Makefile usr/share/examples/libdialog/check1.c\
usr/share/examples/libdialog/check2.c usr/share/examples/libdialog/check3.c\
usr/share/examples/libdialog/dselect.c \
usr/share/examples/libdialog/fselect.c \
usr/share/examples/libdialog/ftree1.c \
usr/share/examples/libdialog/ftree1.test \
usr/share/examples/libdialog/ftree2.c \
usr/share/examples/libdialog/ftree2.test \
usr/share/examples/libdialog/gauge.c usr/share/examples/libdialog/input1.c \
usr/share/examples/libdialog/input2.c usr/share/examples/libdialog/menu1.c \
usr/share/examples/libdialog/menu2.c usr/share/examples/libdialog/menu3.c \
usr/share/examples/libdialog/msg.c usr/share/examples/libdialog/prgbox.c \
usr/share/examples/libdialog/radio1.c usr/share/examples/libdialog/radio2.c\
usr/share/examples/libdialog/radio3.c usr/share/examples/libdialog/text.c \
usr/share/examples/libdialog/tree.c usr/share/examples/libdialog/yesno.c
OLD_DIRS+=usr/share/examples/libdialog usr/share/examples/dialog
# 20101114: Remove long-obsolete MAKEDEV.8
OLD_FILES+=usr/share/man/man8/MAKEDEV.8.gz
# 20101112: vgonel(9) has gone to private API a while ago
OLD_FILES+=usr/share/man/man9/vgonel.9.gz
# 20101112: removed gasp.info
OLD_FILES+=usr/share/info/gasp.info.gz
# 20101109: machine/mutex.h removed
OLD_FILES+=usr/include/machine/mutex.h
# 20101109: headers moved from machine/ to x86/
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/include/machine/mptable.h
.endif
# 20101101: headers moved from machine/ to x86/
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/include/machine/apicreg.h
OLD_FILES+=usr/include/machine/mca.h
.endif
# 20101020: catch up with vm_page_sleep_if_busy rename
OLD_FILES+=usr/share/man/man9/vm_page_sleep_busy.9.gz
# 20101018: taskqueue(9) updates
OLD_FILES+=usr/share/man/man9/taskqueue_find.9.gz
# 20101011: removed subblock.h from liblzma
OLD_FILES+=usr/include/lzma/subblock.h
# 20101002: removed manpath.config
OLD_FILES+=etc/manpath.config
OLD_FILES+=usr/share/examples/etc/manpath.config
# 20100910: renamed sbuf_overflowed to sbuf_error
OLD_FILES+=usr/share/man/man9/sbuf_overflowed.9.gz
# 20100815: retired last traces of chooseproc(9)
OLD_FILES+=usr/share/man/man9/chooseproc.9.gz
# 20100806: removal of unused libcompat routines
OLD_FILES+=usr/share/man/man3/ascftime.3.gz
OLD_FILES+=usr/share/man/man3/cfree.3.gz
OLD_FILES+=usr/share/man/man3/cftime.3.gz
OLD_FILES+=usr/share/man/man3/getpw.3.gz
# 20100801: tzdata2010k import
OLD_FILES+=usr/share/zoneinfo/Pacific/Ponape
OLD_FILES+=usr/share/zoneinfo/Pacific/Truk
# 20100725: acpi_aiboost(4) removal.
OLD_FILES+=usr/share/man/man4/acpi_aiboost.4.gz
# 20100724: nfsclient/nfs_lock.h moved to nfs/nfs_lock.h
OLD_FILES+=usr/include/nfsclient/nfs_lock.h
# 20100720: new clang import which bumps version from 2.0 to 2.8
OLD_FILES+=usr/include/clang/2.0/emmintrin.h
OLD_FILES+=usr/include/clang/2.0/mm_malloc.h
OLD_FILES+=usr/include/clang/2.0/mmintrin.h
OLD_FILES+=usr/include/clang/2.0/pmmintrin.h
OLD_FILES+=usr/include/clang/2.0/tmmintrin.h
OLD_FILES+=usr/include/clang/2.0/xmmintrin.h
OLD_DIRS+=usr/include/clang/2.0
# 20100706: removed pc-sysinstall's detect-vmware.sh
OLD_FILES+=usr/share/pc-sysinstall/backend-query/detect-vmware.sh
# 20100701: [powerpc] removed <machine/intr.h>
.if ${TARGET_ARCH} == "powerpc"
OLD_FILES+=usr/include/machine/intr.h
.endif
# 20100514: library version bump for versioned symbols for liblzma
OLD_LIBS+=usr/lib/liblzma.so.0
OLD_LIBS+=usr/lib32/liblzma.so.0
# 20100511: move GCC-specific headers to /usr/include/gcc
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/include/emmintrin.h
OLD_FILES+=usr/include/mm_malloc.h
OLD_FILES+=usr/include/pmmintrin.h
OLD_FILES+=usr/include/xmmintrin.h
.endif
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" || ${TARGET_ARCH} == "arm"
OLD_FILES+=usr/include/mmintrin.h
.endif
.if ${TARGET_ARCH} == "powerpc"
OLD_FILES+=usr/include/altivec.h
OLD_FILES+=usr/include/ppc-asm.h
OLD_FILES+=usr/include/spe.h
.endif
# 20100416: [mips] removed <machine/psl.h>
.if ${TARGET_ARCH} == "mips"
OLD_FILES+=usr/include/machine/psl.h
.endif
# 20100415: [mips] removed unused headers
.if ${TARGET_ARCH} == "mips"
OLD_FILES+=usr/include/machine/archtype.h
OLD_FILES+=usr/include/machine/segments.h
OLD_FILES+=usr/include/machine/rm7000.h
OLD_FILES+=usr/include/machine/defs.h
OLD_FILES+=usr/include/machine/queue.h
.endif
# 20100326: gcpio removal
OLD_FILES+=usr/bin/gcpio
OLD_FILES+=usr/share/info/cpio.info.gz
OLD_FILES+=usr/share/man/man1/gcpio.1.gz
# 20100322: libz update
OLD_LIBS+=lib/libz.so.5
OLD_LIBS+=usr/lib32/libz.so.5
# 20100314: removal of regexp.h
OLD_FILES+=usr/include/regexp.h
OLD_FILES+=usr/share/man/man3/regexp.3.gz
OLD_FILES+=usr/share/man/man3/regsub.3.gz
# 20100303: actual removal of utmp.h
OLD_FILES+=usr/include/utmp.h
# 20100208: man pages moved
.if ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/share/man/man4/i386/alpm.4.gz
OLD_FILES+=usr/share/man/man4/i386/amdpm.4.gz
OLD_FILES+=usr/share/man/man4/i386/mcd.4.gz
OLD_FILES+=usr/share/man/man4/i386/padlock.4.gz
OLD_FILES+=usr/share/man/man4/i386/pcf.4.gz
OLD_FILES+=usr/share/man/man4/i386/scd.4.gz
OLD_FILES+=usr/share/man/man4/i386/viapm.4.gz
.endif
# 20100122: move BSDL bc/dc USD documents to /usr/share/doc/usd
OLD_FILES+=usr/share/doc/papers/bc.ascii.gz
OLD_FILES+=usr/share/doc/papers/dc.ascii.gz
# 20100120: replacing GNU bc/dc with BSDL versions
OLD_FILES+=usr/share/examples/bc/ckbook.b
OLD_FILES+=usr/share/examples/bc/pi.b
OLD_FILES+=usr/share/examples/bc/primes.b
OLD_FILES+=usr/share/examples/bc/twins.b
OLD_FILES+=usr/share/info/dc.info.gz
OLD_DIRS+=usr/share/examples/bc
# 20100114: removal of ttyslot(3)
OLD_FILES+=usr/share/man/man3/ttyslot.3.gz
# 20100113: remove utmp.h, replace it by utmpx.h
OLD_FILES+=usr/share/man/man3/login.3.gz
OLD_FILES+=usr/share/man/man3/logout.3.gz
OLD_FILES+=usr/share/man/man3/logwtmp.3.gz
OLD_FILES+=usr/share/man/man3/ulog_endutxent.3.gz
OLD_FILES+=usr/share/man/man3/ulog_getutxent.3.gz
OLD_FILES+=usr/share/man/man3/ulog_getutxline.3.gz
OLD_FILES+=usr/share/man/man3/ulog_getutxuser.3.gz
OLD_FILES+=usr/share/man/man3/ulog_pututxline.3.gz
OLD_FILES+=usr/share/man/man3/ulog_setutxent.3.gz
OLD_FILES+=usr/share/man/man3/ulog_setutxfile.3.gz
OLD_FILES+=usr/share/man/man5/lastlog.5.gz
OLD_FILES+=usr/share/man/man5/utmp.5.gz
OLD_FILES+=usr/share/man/man5/wtmp.5.gz
OLD_LIBS+=lib/libutil.so.8
OLD_LIBS+=usr/lib32/libutil.so.8
# 20100105: new userland semaphore implementation
OLD_FILES+=usr/include/sys/semaphore.h
# 20100103: ntptrace(8) removed
OLD_FILES+=usr/sbin/ntptrace
OLD_FILES+=usr/share/man/man8/ntptrace.8.gz
# 20091229: remove no longer relevant examples
OLD_FILES+=usr/share/examples/pppd/auth-down.sample
OLD_FILES+=usr/share/examples/pppd/auth-up.sample
OLD_FILES+=usr/share/examples/pppd/chap-secrets.sample
OLD_FILES+=usr/share/examples/pppd/chat.sh.sample
OLD_FILES+=usr/share/examples/pppd/ip-down.sample
OLD_FILES+=usr/share/examples/pppd/ip-up.sample
OLD_FILES+=usr/share/examples/pppd/options.sample
OLD_FILES+=usr/share/examples/pppd/pap-secrets.sample
OLD_FILES+=usr/share/examples/pppd/ppp.deny.sample
OLD_FILES+=usr/share/examples/pppd/ppp.shells.sample
OLD_DIRS+=usr/share/examples/pppd
OLD_FILES+=usr/share/examples/slattach/unit-command.sh
OLD_DIRS+=usr/share/examples/slattach
OLD_FILES+=usr/share/examples/sliplogin/slip.hosts
OLD_FILES+=usr/share/examples/sliplogin/slip.login
OLD_FILES+=usr/share/examples/sliplogin/slip.logout
OLD_FILES+=usr/share/examples/sliplogin/slip.slparms
OLD_DIRS+=usr/share/examples/sliplogin
OLD_FILES+=usr/share/examples/startslip/sldown.sh
OLD_FILES+=usr/share/examples/startslip/slip.sh
OLD_FILES+=usr/share/examples/startslip/slup.sh
OLD_DIRS+=usr/share/examples/startslip
# 20091202: unify rc.firewall and rc.firewall6.
OLD_FILES+=etc/rc.d/ip6fw
OLD_FILES+=etc/rc.firewall6
OLD_FILES+=usr/share/examples/etc/rc.firewall6
# 20091117: removal of rc.early(8) link
OLD_FILES+=usr/share/man/man8/rc.early.8.gz
# 20091117: usr/share/zoneinfo/GMT link removed
OLD_FILES+=usr/share/zoneinfo/GMT
# 20091027: pselect.3 implemented as syscall
OLD_FILES+=usr/share/man/man3/pselect.3.gz
# 20091005: fusword.9 and susword.9 removed
OLD_FILES+=usr/share/man/man9/fusword.9.gz
OLD_FILES+=usr/share/man/man9/susword.9.gz
# 20090909: vesa and dpms promoted to be i386/amd64 common
OLD_FILES+=usr/include/machine/pc/vesa.h
OLD_FILES+=usr/share/man/man4/i386/dpms.4.gz
# 20090904: remove lukemftpd
OLD_FILES+=usr/libexec/lukemftpd
OLD_FILES+=usr/share/man/man5/ftpd.conf.5.gz
OLD_FILES+=usr/share/man/man5/ftpusers.5.gz
OLD_FILES+=usr/share/man/man8/lukemftpd.8.gz
# 20090902: BSD.{x11,x11-4}.dist are dead and BSD.local.dist lives in ports/
OLD_FILES+=etc/mtree/BSD.local.dist
OLD_FILES+=etc/mtree/BSD.x11.dist
OLD_FILES+=etc/mtree/BSD.x11-4.dist
# 20090812: net80211 documentation overhaul
OLD_FILES+=usr/share/man/man9/ieee80211_add_rates.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_add_xrates.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_alloc_node.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_attach.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_begin_scan.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_cfgget.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_cfgset.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_chan2ieee.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_chan2mode.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_create_ibss.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_crypto_attach.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_crypto_detach.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_decap.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_dump_pkt.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_dup_bss.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_encap.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_end_scan.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_find_node.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_fix_rate.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_free_allnodes.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_ieee2mhz.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_ioctl.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_lookup_node.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_media2rate.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_media_change.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_media_init.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_media_status.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_mhz2ieee.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_next_scan.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_node_attach.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_node_detach.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_node_lateattach.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_print_essid.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_proto_attach.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_proto_detach.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_rate2media.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_recv_mgmt.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_send_mgmt.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_setmode.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_timeout_nodes.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_watchdog.9.gz
OLD_FILES+=usr/share/man/man9/ieee80211_wep_crypt.9.gz
# 20090801: vimage.h removed in favour of vnet.h
OLD_FILES+=usr/include/sys/vimage.h
# 20101208: libbsnmp was moved to usr/lib
OLD_LIBS+=lib/libbsnmp.so.5
# 20090719: library version bump for 8.0
OLD_LIBS+=lib/libalias.so.6
OLD_LIBS+=lib/libavl.so.1
OLD_LIBS+=lib/libbegemot.so.3
OLD_LIBS+=lib/libbsdxml.so.3
OLD_LIBS+=lib/libbsnmp.so.4
OLD_LIBS+=lib/libcam.so.4
OLD_LIBS+=lib/libcrypt.so.4
OLD_LIBS+=lib/libcrypto.so.5
OLD_LIBS+=lib/libctf.so.1
OLD_LIBS+=lib/libdevstat.so.6
OLD_LIBS+=lib/libdtrace.so.1
OLD_LIBS+=lib/libedit.so.6
OLD_LIBS+=lib/libgeom.so.4
OLD_LIBS+=lib/libipsec.so.3
OLD_LIBS+=lib/libipx.so.4
OLD_LIBS+=lib/libkiconv.so.3
OLD_LIBS+=lib/libkvm.so.4
OLD_LIBS+=lib/libmd.so.4
OLD_LIBS+=lib/libncurses.so.7
OLD_LIBS+=lib/libncursesw.so.7
OLD_LIBS+=lib/libnvpair.so.1
OLD_LIBS+=lib/libpcap.so.6
OLD_LIBS+=lib/libreadline.so.7
OLD_LIBS+=lib/libsbuf.so.4
OLD_LIBS+=lib/libufs.so.4
OLD_LIBS+=lib/libumem.so.1
OLD_LIBS+=lib/libutil.so.7
OLD_LIBS+=lib/libuutil.so.1
OLD_LIBS+=lib/libz.so.4
OLD_LIBS+=lib/libzfs.so.1
OLD_LIBS+=lib/libzpool.so.1
OLD_LIBS+=usr/lib/libarchive.so.4
OLD_LIBS+=usr/lib/libauditd.so.4
OLD_LIBS+=usr/lib/libbluetooth.so.3
OLD_LIBS+=usr/lib/libbsm.so.2
OLD_LIBS+=usr/lib/libbz2.so.3
OLD_LIBS+=usr/lib/libcalendar.so.4
OLD_LIBS+=usr/lib/libcom_err.so.4
OLD_LIBS+=usr/lib/libdevinfo.so.4
OLD_LIBS+=usr/lib/libdialog.so.6
OLD_LIBS+=usr/lib/libdwarf.so.1
OLD_LIBS+=usr/lib/libfetch.so.5
OLD_LIBS+=usr/lib/libform.so.4
OLD_LIBS+=usr/lib/libformw.so.4
OLD_LIBS+=usr/lib/libftpio.so.7
OLD_LIBS+=usr/lib/libgnuregex.so.4
OLD_LIBS+=usr/lib/libgpib.so.2
OLD_LIBS+=usr/lib/libhistory.so.7
OLD_LIBS+=usr/lib/libmagic.so.3
OLD_LIBS+=usr/lib/libmemstat.so.2
OLD_LIBS+=usr/lib/libmenu.so.4
OLD_LIBS+=usr/lib/libmenuw.so.4
OLD_LIBS+=usr/lib/libmilter.so.4
OLD_LIBS+=usr/lib/libncp.so.3
OLD_LIBS+=usr/lib/libnetgraph.so.3
OLD_LIBS+=usr/lib/libngatm.so.3
OLD_LIBS+=usr/lib/libobjc.so.3
OLD_LIBS+=usr/lib/libopie.so.5
OLD_LIBS+=usr/lib/libpam.so.4
OLD_LIBS+=usr/lib/libpanel.so.4
OLD_LIBS+=usr/lib/libpanelw.so.4
OLD_LIBS+=usr/lib/libpmc.so.4
OLD_LIBS+=usr/lib/libproc.so.1
OLD_LIBS+=usr/lib/libradius.so.3
OLD_LIBS+=usr/lib/librpcsvc.so.4
OLD_LIBS+=usr/lib/libsdp.so.3
OLD_LIBS+=usr/lib/libsmb.so.3
OLD_LIBS+=usr/lib/libssh.so.4
OLD_LIBS+=usr/lib/libssl.so.5
OLD_LIBS+=usr/lib/libtacplus.so.3
OLD_LIBS+=usr/lib/libugidfw.so.3
OLD_LIBS+=usr/lib/libusb.so.1
OLD_LIBS+=usr/lib/libusbhid.so.3
OLD_LIBS+=usr/lib/libvgl.so.5
OLD_LIBS+=usr/lib/libwrap.so.5
OLD_LIBS+=usr/lib/libypclnt.so.3
OLD_LIBS+=usr/lib/pam_chroot.so.4
OLD_LIBS+=usr/lib/pam_deny.so.4
OLD_LIBS+=usr/lib/pam_echo.so.4
OLD_LIBS+=usr/lib/pam_exec.so.4
OLD_LIBS+=usr/lib/pam_ftpusers.so.4
OLD_LIBS+=usr/lib/pam_group.so.4
OLD_LIBS+=usr/lib/pam_guest.so.4
OLD_LIBS+=usr/lib/pam_krb5.so.4
OLD_LIBS+=usr/lib/pam_ksu.so.4
OLD_LIBS+=usr/lib/pam_lastlog.so.4
OLD_LIBS+=usr/lib/pam_login_access.so.4
OLD_LIBS+=usr/lib/pam_nologin.so.4
OLD_LIBS+=usr/lib/pam_opie.so.4
OLD_LIBS+=usr/lib/pam_opieaccess.so.4
OLD_LIBS+=usr/lib/pam_passwdqc.so.4
OLD_LIBS+=usr/lib/pam_permit.so.4
OLD_LIBS+=usr/lib/pam_radius.so.4
OLD_LIBS+=usr/lib/pam_rhosts.so.4
OLD_LIBS+=usr/lib/pam_rootok.so.4
OLD_LIBS+=usr/lib/pam_securetty.so.4
OLD_LIBS+=usr/lib/pam_self.so.4
OLD_LIBS+=usr/lib/pam_ssh.so.4
OLD_LIBS+=usr/lib/pam_tacplus.so.4
OLD_LIBS+=usr/lib/pam_unix.so.4
OLD_LIBS+=usr/lib/snmp_atm.so.5
OLD_LIBS+=usr/lib/snmp_bridge.so.5
OLD_LIBS+=usr/lib/snmp_hostres.so.5
OLD_LIBS+=usr/lib/snmp_mibII.so.5
OLD_LIBS+=usr/lib/snmp_netgraph.so.5
OLD_LIBS+=usr/lib/snmp_pf.so.5
OLD_LIBS+=usr/lib32/libalias.so.6
OLD_LIBS+=usr/lib32/libarchive.so.4
OLD_LIBS+=usr/lib32/libauditd.so.4
OLD_LIBS+=usr/lib32/libavl.so.1
OLD_LIBS+=usr/lib32/libbegemot.so.3
OLD_LIBS+=usr/lib32/libbluetooth.so.3
OLD_LIBS+=usr/lib32/libbsdxml.so.3
OLD_LIBS+=usr/lib32/libbsm.so.2
OLD_LIBS+=usr/lib32/libbsnmp.so.4
OLD_LIBS+=usr/lib32/libbz2.so.3
OLD_LIBS+=usr/lib32/libcalendar.so.4
OLD_LIBS+=usr/lib32/libcam.so.4
OLD_LIBS+=usr/lib32/libcom_err.so.4
OLD_LIBS+=usr/lib32/libcrypt.so.4
OLD_LIBS+=usr/lib32/libcrypto.so.5
OLD_LIBS+=usr/lib32/libctf.so.1
OLD_LIBS+=usr/lib32/libdevinfo.so.4
OLD_LIBS+=usr/lib32/libdevstat.so.6
OLD_LIBS+=usr/lib32/libdialog.so.6
OLD_LIBS+=usr/lib32/libdtrace.so.1
OLD_LIBS+=usr/lib32/libdwarf.so.1
OLD_LIBS+=usr/lib32/libedit.so.6
OLD_LIBS+=usr/lib32/libfetch.so.5
OLD_LIBS+=usr/lib32/libform.so.4
OLD_LIBS+=usr/lib32/libformw.so.4
OLD_LIBS+=usr/lib32/libftpio.so.7
OLD_LIBS+=usr/lib32/libgeom.so.4
OLD_LIBS+=usr/lib32/libgnuregex.so.4
OLD_LIBS+=usr/lib32/libgpib.so.2
OLD_LIBS+=usr/lib32/libhistory.so.7
OLD_LIBS+=usr/lib32/libipsec.so.3
OLD_LIBS+=usr/lib32/libipx.so.4
OLD_LIBS+=usr/lib32/libkiconv.so.3
OLD_LIBS+=usr/lib32/libkvm.so.4
OLD_LIBS+=usr/lib32/libmagic.so.3
OLD_LIBS+=usr/lib32/libmd.so.4
OLD_LIBS+=usr/lib32/libmemstat.so.2
OLD_LIBS+=usr/lib32/libmenu.so.4
OLD_LIBS+=usr/lib32/libmenuw.so.4
OLD_LIBS+=usr/lib32/libmilter.so.4
OLD_LIBS+=usr/lib32/libncp.so.3
OLD_LIBS+=usr/lib32/libncurses.so.7
OLD_LIBS+=usr/lib32/libncursesw.so.7
OLD_LIBS+=usr/lib32/libnetgraph.so.3
OLD_LIBS+=usr/lib32/libngatm.so.3
OLD_LIBS+=usr/lib32/libnvpair.so.1
OLD_LIBS+=usr/lib32/libobjc.so.3
OLD_LIBS+=usr/lib32/libopie.so.5
OLD_LIBS+=usr/lib32/libpam.so.4
OLD_LIBS+=usr/lib32/libpanel.so.4
OLD_LIBS+=usr/lib32/libpanelw.so.4
OLD_LIBS+=usr/lib32/libpcap.so.6
OLD_LIBS+=usr/lib32/libpmc.so.4
OLD_LIBS+=usr/lib32/libproc.so.1
OLD_LIBS+=usr/lib32/libradius.so.3
OLD_LIBS+=usr/lib32/libreadline.so.7
OLD_LIBS+=usr/lib32/librpcsvc.so.4
OLD_LIBS+=usr/lib32/libsbuf.so.4
OLD_LIBS+=usr/lib32/libsdp.so.3
OLD_LIBS+=usr/lib32/libsmb.so.3
OLD_LIBS+=usr/lib32/libssh.so.4
OLD_LIBS+=usr/lib32/libssl.so.5
OLD_LIBS+=usr/lib32/libtacplus.so.3
OLD_LIBS+=usr/lib32/libufs.so.4
OLD_LIBS+=usr/lib32/libugidfw.so.3
OLD_LIBS+=usr/lib32/libumem.so.1
OLD_LIBS+=usr/lib32/libusb.so.1
OLD_LIBS+=usr/lib32/libusbhid.so.3
OLD_LIBS+=usr/lib32/libutil.so.7
OLD_LIBS+=usr/lib32/libuutil.so.1
OLD_LIBS+=usr/lib32/libvgl.so.5
OLD_LIBS+=usr/lib32/libwrap.so.5
OLD_LIBS+=usr/lib32/libypclnt.so.3
OLD_LIBS+=usr/lib32/libz.so.4
OLD_LIBS+=usr/lib32/libzfs.so.1
OLD_LIBS+=usr/lib32/libzpool.so.1
OLD_LIBS+=usr/lib32/pam_chroot.so.4
OLD_LIBS+=usr/lib32/pam_deny.so.4
OLD_LIBS+=usr/lib32/pam_echo.so.4
OLD_LIBS+=usr/lib32/pam_exec.so.4
OLD_LIBS+=usr/lib32/pam_ftpusers.so.4
OLD_LIBS+=usr/lib32/pam_group.so.4
OLD_LIBS+=usr/lib32/pam_guest.so.4
OLD_LIBS+=usr/lib32/pam_krb5.so.4
OLD_LIBS+=usr/lib32/pam_ksu.so.4
OLD_LIBS+=usr/lib32/pam_lastlog.so.4
OLD_LIBS+=usr/lib32/pam_login_access.so.4
OLD_LIBS+=usr/lib32/pam_nologin.so.4
OLD_LIBS+=usr/lib32/pam_opie.so.4
OLD_LIBS+=usr/lib32/pam_opieaccess.so.4
OLD_LIBS+=usr/lib32/pam_passwdqc.so.4
OLD_LIBS+=usr/lib32/pam_permit.so.4
OLD_LIBS+=usr/lib32/pam_radius.so.4
OLD_LIBS+=usr/lib32/pam_rhosts.so.4
OLD_LIBS+=usr/lib32/pam_rootok.so.4
OLD_LIBS+=usr/lib32/pam_securetty.so.4
OLD_LIBS+=usr/lib32/pam_self.so.4
OLD_LIBS+=usr/lib32/pam_ssh.so.4
OLD_LIBS+=usr/lib32/pam_tacplus.so.4
OLD_LIBS+=usr/lib32/pam_unix.so.4
# 20090718: the gdm pam.d file is no longer required.
OLD_FILES+=etc/pam.d/gdm
# 20090714: net_add_domain(9) renamed to domain_add(9)
OLD_FILES+=usr/share/man/man9/net_add_domain.9.gz
# 20090713: vimage container structs removed.
OLD_FILES+=usr/include/netinet/vinet.h
OLD_FILES+=usr/include/netinet6/vinet6.h
OLD_FILES+=usr/include/netipsec/vipsec.h
# 20090712: ieee80211.4 -> net80211.4
OLD_FILES+=usr/share/man/man4/ieee80211.4.gz
# 20090711: typo fixed, kproc_resume,.9 -> kproc_resume.9
OLD_FILES+=usr/share/man/man9/kproc_resume,.9.gz
# 20090709: msgctl.3 msgget.3 msgrcv.3 msgsnd.3 manual pages moved
OLD_FILES+=usr/share/man/man3/msgctl.3.gz
OLD_FILES+=usr/share/man/man3/msgget.3.gz
OLD_FILES+=usr/share/man/man3/msgrcv.3.gz
OLD_FILES+=usr/share/man/man3/msgsnd.3.gz
# 20090630: old kernel RPC implementation removal
OLD_FILES+=usr/include/nfs/rpcv2.h
# 20090624: update usbdi(9)
OLD_FILES+=usr/share/man/man9/usbd_abort_default_pipe.9.gz
OLD_FILES+=usr/share/man/man9/usbd_abort_pipe.9.gz
OLD_FILES+=usr/share/man/man9/usbd_alloc_buffer.9.gz
OLD_FILES+=usr/share/man/man9/usbd_alloc_xfer.9.gz
OLD_FILES+=usr/share/man/man9/usbd_clear_endpoint_stall.9.gz
OLD_FILES+=usr/share/man/man9/usbd_clear_endpoint_stall_async.9.gz
OLD_FILES+=usr/share/man/man9/usbd_clear_endpoint_toggle.9.gz
OLD_FILES+=usr/share/man/man9/usbd_close_pipe.9.gz
OLD_FILES+=usr/share/man/man9/usbd_device2interface_handle.9.gz
OLD_FILES+=usr/share/man/man9/usbd_do_request_async.9.gz
OLD_FILES+=usr/share/man/man9/usbd_do_request_flags_pipe.9.gz
OLD_FILES+=usr/share/man/man9/usbd_endpoint_count.9.gz
OLD_FILES+=usr/share/man/man9/usbd_find_edesc.9.gz
OLD_FILES+=usr/share/man/man9/usbd_find_idesc.9.gz
OLD_FILES+=usr/share/man/man9/usbd_free_buffer.9.gz
OLD_FILES+=usr/share/man/man9/usbd_free_xfer.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_buffer.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_config.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_config_desc.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_config_desc_full.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_config_descriptor.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_device_descriptor.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_endpoint_descriptor.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_interface_altindex.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_interface_descriptor.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_no_alts.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_quirks.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_speed.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_string.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_string_desc.9.gz
OLD_FILES+=usr/share/man/man9/usbd_get_xfer_status.9.gz
OLD_FILES+=usr/share/man/man9/usbd_interface2device_handle.9.gz
OLD_FILES+=usr/share/man/man9/usbd_interface2endpoint_descriptor.9.gz
OLD_FILES+=usr/share/man/man9/usbd_interface_count.9.gz
OLD_FILES+=usr/share/man/man9/usbd_open_pipe.9.gz
OLD_FILES+=usr/share/man/man9/usbd_open_pipe_intr.9.gz
OLD_FILES+=usr/share/man/man9/usbd_pipe2device_handle.9.gz
OLD_FILES+=usr/share/man/man9/usbd_set_config_index.9.gz
OLD_FILES+=usr/share/man/man9/usbd_set_config_no.9.gz
OLD_FILES+=usr/share/man/man9/usbd_set_interface.9.gz
OLD_FILES+=usr/share/man/man9/usbd_setup_default_xfer.9.gz
OLD_FILES+=usr/share/man/man9/usbd_setup_isoc_xfer.9.gz
OLD_FILES+=usr/share/man/man9/usbd_setup_xfer.9.gz
OLD_FILES+=usr/share/man/man9/usbd_sync_transfer.9.gz
OLD_FILES+=usr/share/man/man9/usbd_transfer.9.gz
OLD_FILES+=usr/share/man/man9/usb_find_desc.9.gz
# 20090623: number of headers needed for a usb driver reduced
OLD_FILES+=usr/include/dev/usb/usb_defs.h
OLD_FILES+=usr/include/dev/usb/usb_error.h
OLD_FILES+=usr/include/dev/usb/usb_handle_request.h
OLD_FILES+=usr/include/dev/usb/usb_hid.h
OLD_FILES+=usr/include/dev/usb/usb_lookup.h
OLD_FILES+=usr/include/dev/usb/usb_mfunc.h
OLD_FILES+=usr/include/dev/usb/usb_parse.h
OLD_FILES+=usr/include/dev/usb/usb_revision.h
# 20090609: devclass_add_driver is no longer public
OLD_FILES+=usr/share/man/man9/devclass_add_driver.9.gz
OLD_FILES+=usr/share/man/man9/devclass_delete_driver.9.gz
OLD_FILES+=usr/share/man/man9/devclass_find_driver.9.gz
# 20090605: removal of clists
OLD_FILES+=usr/include/sys/clist.h
# 20090602: removal of window(1)
OLD_FILES+=usr/bin/window
OLD_FILES+=usr/share/man/man1/window.1.gz
# 20090531: bind 9.6.1rc1 import
OLD_LIBS+=usr/lib/liblwres.so.30
# 20090530: removal of early.sh
OLD_FILES+=etc/rc.d/early.sh
# 20090527: renaming of S{LIST,TAILQ}_REMOVE_NEXT() to _REMOVE_AFTER()
OLD_FILES+=usr/share/man/man3/SLIST_REMOVE_NEXT.3.gz
OLD_FILES+=usr/share/man/man3/STAILQ_REMOVE_NEXT.3.gz
# 20090527: removal of legacy USB stack
OLD_FILES+=usr/include/legacy/dev/usb/dsbr100io.h
OLD_FILES+=usr/include/legacy/dev/usb/ehcireg.h
OLD_FILES+=usr/include/legacy/dev/usb/ehcivar.h
OLD_FILES+=usr/include/legacy/dev/usb/hid.h
OLD_FILES+=usr/include/legacy/dev/usb/if_urtwreg.h
OLD_FILES+=usr/include/legacy/dev/usb/if_urtwvar.h
OLD_FILES+=usr/include/legacy/dev/usb/ohcireg.h
OLD_FILES+=usr/include/legacy/dev/usb/ohcivar.h
OLD_FILES+=usr/include/legacy/dev/usb/rio500_usb.h
OLD_FILES+=usr/include/legacy/dev/usb/rt2573_ucode.h
OLD_FILES+=usr/include/legacy/dev/usb/sl811hsreg.h
OLD_FILES+=usr/include/legacy/dev/usb/sl811hsvar.h
OLD_FILES+=usr/include/legacy/dev/usb/ubser.h
OLD_FILES+=usr/include/legacy/dev/usb/ucomvar.h
OLD_FILES+=usr/include/legacy/dev/usb/udbp.h
OLD_FILES+=usr/include/legacy/dev/usb/uftdireg.h
OLD_FILES+=usr/include/legacy/dev/usb/ugraphire_rdesc.h
OLD_FILES+=usr/include/legacy/dev/usb/uhcireg.h
OLD_FILES+=usr/include/legacy/dev/usb/uhcivar.h
OLD_FILES+=usr/include/legacy/dev/usb/usb.h
OLD_FILES+=usr/include/legacy/dev/usb/usb_mem.h
OLD_FILES+=usr/include/legacy/dev/usb/usb_port.h
OLD_FILES+=usr/include/legacy/dev/usb/usb_quirks.h
OLD_FILES+=usr/include/legacy/dev/usb/usbcdc.h
OLD_FILES+=usr/include/legacy/dev/usb/usbdi.h
OLD_FILES+=usr/include/legacy/dev/usb/usbdi_util.h
OLD_FILES+=usr/include/legacy/dev/usb/usbdivar.h
OLD_FILES+=usr/include/legacy/dev/usb/usbhid.h
OLD_FILES+=usr/include/legacy/dev/usb/uxb360gp_rdesc.h
OLD_DIRS+=usr/include/legacy/dev/usb
OLD_DIRS+=usr/include/legacy/dev
OLD_DIRS+=usr/include/legacy
# 20090526: removal of makekey(8)
OLD_FILES+=usr/libexec/makekey
OLD_FILES+=usr/share/man/man8/makekey.8.gz
# 20090522: removal of University of Michigan NFSv4 client
OLD_FILES+=etc/rc.d/idmapd
OLD_FILES+=sbin/idmapd
OLD_FILES+=sbin/mount_nfs4
OLD_FILES+=usr/share/man/man8/idmapd.8.gz
OLD_FILES+=usr/share/man/man8/mount_nfs4.8.gz
# 20090513: removal of legacy versions of USB network interface drivers
OLD_FILES+=usr/include/legacy/dev/usb/if_upgtvar.h
OLD_FILES+=usr/include/legacy/dev/usb/usb_ethersubr.h
# 20090417: removal of legacy versions of USB network interface drivers
OLD_FILES+=usr/include/legacy/dev/usb/if_auereg.h
OLD_FILES+=usr/include/legacy/dev/usb/if_axereg.h
OLD_FILES+=usr/include/legacy/dev/usb/if_cdcereg.h
OLD_FILES+=usr/include/legacy/dev/usb/if_cuereg.h
OLD_FILES+=usr/include/legacy/dev/usb/if_kuereg.h
OLD_FILES+=usr/include/legacy/dev/usb/if_ruereg.h
OLD_FILES+=usr/include/legacy/dev/usb/if_rumreg.h
OLD_FILES+=usr/include/legacy/dev/usb/if_rumvar.h
OLD_FILES+=usr/include/legacy/dev/usb/if_udavreg.h
OLD_FILES+=usr/include/legacy/dev/usb/if_uralreg.h
OLD_FILES+=usr/include/legacy/dev/usb/if_uralvar.h
OLD_FILES+=usr/include/legacy/dev/usb/if_zydfw.h
OLD_FILES+=usr/include/legacy/dev/usb/if_zydreg.h
OLD_FILES+=usr/include/legacy/dev/usb/kue_fw.h
# 20090416: removal of ar(4), ray(4), sr(4), raycontrol(8)
OLD_FILES+=usr/sbin/raycontrol
OLD_FILES+=usr/share/man/man4/i386/ar.4.gz
OLD_FILES+=usr/share/man/man4/i386/ray.4.gz
OLD_FILES+=usr/share/man/man4/i386/sr.4.gz
OLD_FILES+=usr/share/man/man8/raycontrol.8.gz
# 20090410: VOP_LEASE.9 removed
OLD_FILES+=usr/share/man/man9/VOP_LEASE.9.gz
# 20090406: usb_sw_transfer.h removed
OLD_FILES+=usr/include/dev/usb/usb_sw_transfer.h
# 20090405: removal of if_ppp(4) and if_sl(4)
OLD_FILES+=sbin/slattach rescue/slattach
OLD_FILES+=sbin/startslip rescue/startslip
OLD_FILES+=usr/include/net/if_ppp.h
OLD_FILES+=usr/include/net/if_pppvar.h
OLD_FILES+=usr/include/net/if_slvar.h
OLD_FILES+=usr/include/net/ppp_comp.h
OLD_FILES+=usr/include/net/slip.h
OLD_FILES+=usr/sbin/sliplogin
OLD_FILES+=usr/sbin/slstat
OLD_FILES+=usr/sbin/pppd
OLD_FILES+=usr/sbin/pppstats
OLD_FILES+=usr/share/man/man1/startslip.1.gz
OLD_FILES+=usr/share/man/man4/if_ppp.4.gz
OLD_FILES+=usr/share/man/man4/if_sl.4.gz
OLD_FILES+=usr/share/man/man4/ppp.4.gz
OLD_FILES+=usr/share/man/man4/sl.4.gz
OLD_FILES+=usr/share/man/man8/pppd.8.gz
OLD_FILES+=usr/share/man/man8/pppstats.8.gz
OLD_FILES+=usr/share/man/man8/slattach.8.gz
OLD_FILES+=usr/share/man/man8/slip.8.gz
OLD_FILES+=usr/share/man/man8/sliplogin.8.gz
OLD_FILES+=usr/share/man/man8/slstat.8.gz
# 20090321: libpcap upgraded to 1.0.0
OLD_LIBS+=lib/libpcap.so.5
OLD_LIBS+=usr/lib32/libpcap.so.5
# 20090319: uscanner(4) has been removed
OLD_FILES+=usr/share/man/man4/uscanner.4.gz
# 20090313: k8temp(4) renamed to amdtemp(4)
OLD_FILES+=usr/share/man/man4/k8temp.4.gz
# 20090308: libusb.so.1 renamed
OLD_LIBS+=usr/lib/libusb20.so.1
OLD_FILES+=usr/lib/libusb20.a
OLD_FILES+=usr/lib/libusb20.so
OLD_FILES+=usr/lib/libusb20_p.a
OLD_FILES+=usr/include/libusb20_compat01.h
OLD_FILES+=usr/include/libusb20_compat10.h
OLD_LIBS+=usr/lib32/libusb20.so.1
OLD_FILES+=usr/lib32/libusb20.a
OLD_FILES+=usr/lib32/libusb20.so
OLD_FILES+=usr/lib32/libusb20_p.a
# 20090226: libmp(3) functions renamed
OLD_LIBS+=usr/lib/libmp.so.6
OLD_LIBS+=usr/lib32/libmp.so.6
# 20090223: changeover of USB stacks
OLD_FILES+=usr/include/dev/usb2/include/ufm2_ioctl.h
OLD_FILES+=usr/include/dev/usb2/include/urio2_ioctl.h
OLD_FILES+=usr/include/dev/usb2/include/usb2_cdc.h
OLD_FILES+=usr/include/dev/usb2/include/usb2_defs.h
OLD_FILES+=usr/include/dev/usb2/include/usb2_devid.h
OLD_FILES+=usr/include/dev/usb2/include/usb2_devtable.h
OLD_FILES+=usr/include/dev/usb2/include/usb2_endian.h
OLD_FILES+=usr/include/dev/usb2/include/usb2_error.h
OLD_FILES+=usr/include/dev/usb2/include/usb2_hid.h
OLD_FILES+=usr/include/dev/usb2/include/usb2_ioctl.h
OLD_FILES+=usr/include/dev/usb2/include/usb2_mfunc.h
OLD_FILES+=usr/include/dev/usb2/include/usb2_revision.h
OLD_FILES+=usr/include/dev/usb2/include/usb2_standard.h
OLD_DIRS+=usr/include/dev/usb2/include
OLD_DIRS+=usr/include/dev/usb2
OLD_FILES+=usr/include/dev/usb/dsbr100io.h
OLD_FILES+=usr/include/dev/usb/ehcireg.h
OLD_FILES+=usr/include/dev/usb/ehcivar.h
OLD_FILES+=usr/include/dev/usb/hid.h
OLD_FILES+=usr/include/dev/usb/if_auereg.h
OLD_FILES+=usr/include/dev/usb/if_axereg.h
OLD_FILES+=usr/include/dev/usb/if_cdcereg.h
OLD_FILES+=usr/include/dev/usb/if_cuereg.h
OLD_FILES+=usr/include/dev/usb/if_kuereg.h
OLD_FILES+=usr/include/dev/usb/if_ruereg.h
OLD_FILES+=usr/include/dev/usb/if_rumreg.h
OLD_FILES+=usr/include/dev/usb/if_rumvar.h
OLD_FILES+=usr/include/dev/usb/if_udavreg.h
OLD_FILES+=usr/include/dev/usb/if_upgtvar.h
OLD_FILES+=usr/include/dev/usb/if_uralreg.h
OLD_FILES+=usr/include/dev/usb/if_uralvar.h
OLD_FILES+=usr/include/dev/usb/if_urtwreg.h
OLD_FILES+=usr/include/dev/usb/if_urtwvar.h
OLD_FILES+=usr/include/dev/usb/if_zydfw.h
OLD_FILES+=usr/include/dev/usb/if_zydreg.h
OLD_FILES+=usr/include/dev/usb/kue_fw.h
OLD_FILES+=usr/include/dev/usb/ohcireg.h
OLD_FILES+=usr/include/dev/usb/ohcivar.h
OLD_FILES+=usr/include/dev/usb/rio500_usb.h
OLD_FILES+=usr/include/dev/usb/rt2573_ucode.h
OLD_FILES+=usr/include/dev/usb/sl811hsreg.h
OLD_FILES+=usr/include/dev/usb/sl811hsvar.h
OLD_FILES+=usr/include/dev/usb/ubser.h
OLD_FILES+=usr/include/dev/usb/ucomvar.h
OLD_FILES+=usr/include/dev/usb/udbp.h
OLD_FILES+=usr/include/dev/usb/uftdireg.h
OLD_FILES+=usr/include/dev/usb/ugraphire_rdesc.h
OLD_FILES+=usr/include/dev/usb/uhcireg.h
OLD_FILES+=usr/include/dev/usb/uhcivar.h
OLD_FILES+=usr/include/dev/usb/usb_ethersubr.h
OLD_FILES+=usr/include/dev/usb/usb_mem.h
OLD_FILES+=usr/include/dev/usb/usb_port.h
OLD_FILES+=usr/include/dev/usb/usb_quirks.h
OLD_FILES+=usr/include/dev/usb/usbcdc.h
OLD_FILES+=usr/include/dev/usb/usbdivar.h
OLD_FILES+=usr/include/dev/usb/uxb360gp_rdesc.h
OLD_FILES+=usr/sbin/usbdevs
OLD_FILES+=usr/share/man/man8/usbdevs.8.gz
# 20090203: removal of pccard header files
OLD_FILES+=usr/include/pccard/cardinfo.h
OLD_FILES+=usr/include/pccard/cis.h
OLD_DIRS+=usr/include/pccard
# 20090203: adding_user.8 moved to adding_user.7
OLD_FILES+=usr/share/man/man8/adding_user.8.gz
# 20090122: tzdata2009a import
OLD_FILES+=usr/share/zoneinfo/Asia/Katmandu
# 20090102: file 4.26 import
OLD_FILES+=usr/share/misc/magic.mime
OLD_FILES+=usr/share/misc/magic.mime.mgc
# 20081223: bind 9.4.3 import, nsupdate.8 moved to nsupdate.1
OLD_FILES+=usr/share/man/man8/nsupdate.8.gz
# 20081223: ipprotosw.h removed
OLD_FILES+=usr/include/netinet/ipprotosw.h
# 20081123: vfs_mountedon.9 removed
OLD_FILES+=usr/share/man/man9/vfs_mountedon.9.gz
# 20081023: FREE.9 and MALLOC.9 removed
OLD_FILES+=usr/share/man/man9/FREE.9.gz
OLD_FILES+=usr/share/man/man9/MALLOC.9.gz
# 20080928: removal of inaccurate device_ids(9) manual page
OLD_FILES+=usr/share/man/man9/device_ids.9.gz
OLD_FILES+=usr/share/man/man9/major.9.gz
OLD_FILES+=usr/share/man/man9/minor.9.gz
OLD_FILES+=usr/share/man/man9/umajor.9.gz
OLD_FILES+=usr/share/man/man9/uminor.9.gz
# 20080917: removal of manpage for axed kernel primitive suser(9)
OLD_FILES+=usr/share/man/man9/suser.9.gz
OLD_FILES+=usr/share/man/man9/suser_cred.9.gz
# 20080913: pax removed from rescue
OLD_FILES+=rescue/pax
# 20080823: removal of unneeded pt_chown, to implement grantpt(3)
OLD_FILES+=usr/libexec/pt_chown
# 20080822: ntp 4.2.4p5 import
OLD_FILES+=usr/share/doc/ntp/driver23.html
OLD_FILES+=usr/share/doc/ntp/driver24.html
# 20080821: several man pages moved from man4.i386 to man4
.if ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/share/man/man4/i386/acpi_aiboost.4.gz
OLD_FILES+=usr/share/man/man4/i386/acpi_asus.4.gz
OLD_FILES+=usr/share/man/man4/i386/acpi_fujitsu.4.gz
OLD_FILES+=usr/share/man/man4/i386/acpi_ibm.4.gz
OLD_FILES+=usr/share/man/man4/i386/acpi_panasonic.4.gz
OLD_FILES+=usr/share/man/man4/i386/acpi_sony.4.gz
OLD_FILES+=usr/share/man/man4/i386/acpi_toshiba.4.gz
OLD_FILES+=usr/share/man/man4/i386/ichwd.4.gz
OLD_FILES+=usr/share/man/man4/i386/if_ndis.4.gz
OLD_FILES+=usr/share/man/man4/i386/io.4.gz
OLD_FILES+=usr/share/man/man4/i386/linux.4.gz
OLD_FILES+=usr/share/man/man4/i386/ndis.4.gz
.endif
# 20080820: MPSAFE TTY layer integrated
OLD_FILES+=usr/include/sys/linedisc.h
OLD_FILES+=usr/share/man/man3/posix_openpt.3.gz
# 20080725: sgtty.h removed
OLD_FILES+=usr/include/sgtty.h
# 20080706: bsdlabel(8) removed on powerpc
.if ${TARGET_ARCH} == "powerpc"
OLD_FILES+=sbin/bsdlabel
OLD_FILES+=usr/share/man/man8/bsdlabel.8.gz
.endif
# 20080704: sbsh(4) removed
OLD_FILES+=usr/share/man/man4/if_sbsh.4.gz
OLD_FILES+=usr/share/man/man4/sbsh.4.gz
# 20080704: cnw(4) removed
OLD_FILES+=usr/share/man/man4/if_cnw.4.gz
OLD_FILES+=usr/share/man/man4/cnw.4.gz
# 20080704: oltr(4) removed
.if ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/share/man/man4/i386/if_oltr.4.gz
OLD_FILES+=usr/share/man/man4/i386/oltr.4.gz
.endif
# 20080704: arl(4) removed
.if ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/sbin/arlcontrol
OLD_FILES+=usr/share/man/man4/i386/arl.4.gz
OLD_FILES+=usr/share/man/man8/arlcontrol.8.gz
.endif
# 20080703: sunlabel only for sparc64
.if ${TARGET_ARCH} != "sparc64"
OLD_FILES+=sbin/sunlabel
OLD_FILES+=usr/share/man/man8/sunlabel.8.gz
.endif
# 20080701: wpa_supplicant.conf moved to share/examples/etc/
OLD_FILES+=usr/share/examples/wpa_supplicant/wpa_supplicant.conf
OLD_DIRS+=usr/share/examples/wpa_supplicant
# 20080614: pecoff image activator removed
.if ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/include/machine/pecoff_machdep.h
.endif
# 20080614: sgtty removed
OLD_FILES+=usr/include/sys/ttychars.h
OLD_FILES+=usr/include/sys/ttydev.h
OLD_FILES+=usr/share/man/man3/gtty.3.gz
OLD_FILES+=usr/share/man/man3/stty.3.gz
# 20080609: gpt(8) removed
OLD_FILES+=sbin/gpt
OLD_FILES+=usr/share/man/man8/gpt.8.gz
# 20080525: I4B removed
OLD_FILES+=etc/isdn/answer
OLD_FILES+=etc/isdn/isdntel
OLD_FILES+=etc/isdn/record
OLD_FILES+=etc/isdn/tell
OLD_FILES+=etc/isdn/tell-record
OLD_FILES+=etc/isdn/unknown_incoming
OLD_FILES+=etc/isdn/holidays.D
OLD_FILES+=etc/isdn/isdnd.rates.A
OLD_FILES+=etc/isdn/isdnd.rates.D
OLD_FILES+=etc/isdn/isdnd.rates.F
OLD_FILES+=etc/isdn/isdnd.rates.L
OLD_FILES+=etc/isdn/isdnd.rates.UK.BT
OLD_FILES+=etc/isdn/isdnd.rc.sample
OLD_FILES+=etc/isdn/isdntel.alias.sample
OLD_DIRS+=etc/isdn
OLD_FILES+=etc/rc.d/isdnd
OLD_FILES+=usr/include/i4b/i4b_cause.h
OLD_FILES+=usr/include/i4b/i4b_debug.h
OLD_FILES+=usr/include/i4b/i4b_ioctl.h
OLD_FILES+=usr/include/i4b/i4b_rbch_ioctl.h
OLD_FILES+=usr/include/i4b/i4b_tel_ioctl.h
OLD_FILES+=usr/include/i4b/i4b_trace.h
OLD_DIRS+=usr/include/i4b
OLD_FILES+=usr/sbin/dtmfdecode
OLD_FILES+=usr/sbin/g711conv
OLD_FILES+=usr/sbin/isdnd
OLD_FILES+=usr/sbin/isdndebug
OLD_FILES+=usr/sbin/isdndecode
OLD_FILES+=usr/sbin/isdnmonitor
OLD_FILES+=usr/sbin/isdnphone
OLD_FILES+=usr/sbin/isdntel
OLD_FILES+=usr/sbin/isdntelctl
OLD_FILES+=usr/sbin/isdntrace
OLD_FILES+=usr/share/isdn/0.al
OLD_FILES+=usr/share/isdn/1.al
OLD_FILES+=usr/share/isdn/2.al
OLD_FILES+=usr/share/isdn/3.al
OLD_FILES+=usr/share/isdn/4.al
OLD_FILES+=usr/share/isdn/5.al
OLD_FILES+=usr/share/isdn/6.al
OLD_FILES+=usr/share/isdn/7.al
OLD_FILES+=usr/share/isdn/8.al
OLD_FILES+=usr/share/isdn/9.al
OLD_FILES+=usr/share/isdn/beep.al
OLD_FILES+=usr/share/isdn/msg.al
OLD_DIRS+=usr/share/isdn
OLD_FILES+=usr/share/man/man1/dtmfdecode.1.gz
OLD_FILES+=usr/share/man/man1/g711conv.1.gz
OLD_FILES+=usr/share/man/man4/i4b.4.gz
OLD_FILES+=usr/share/man/man4/i4bcapi.4.gz
OLD_FILES+=usr/share/man/man4/i4bctl.4.gz
OLD_FILES+=usr/share/man/man4/i4bing.4.gz
OLD_FILES+=usr/share/man/man4/i4bipr.4.gz
OLD_FILES+=usr/share/man/man4/i4bisppp.4.gz
OLD_FILES+=usr/share/man/man4/i4bq921.4.gz
OLD_FILES+=usr/share/man/man4/i4bq931.4.gz
OLD_FILES+=usr/share/man/man4/i4brbch.4.gz
OLD_FILES+=usr/share/man/man4/i4btel.4.gz
OLD_FILES+=usr/share/man/man4/i4btrc.4.gz
OLD_FILES+=usr/share/man/man4/iavc.4.gz
OLD_FILES+=usr/share/man/man4/isic.4.gz
OLD_FILES+=usr/share/man/man4/ifpi.4.gz
OLD_FILES+=usr/share/man/man4/ifpi2.4.gz
OLD_FILES+=usr/share/man/man4/ifpnp.4.gz
OLD_FILES+=usr/share/man/man4/ihfc.4.gz
OLD_FILES+=usr/share/man/man4/itjc.4.gz
OLD_FILES+=usr/share/man/man4/iwic.4.gz
OLD_FILES+=usr/share/man/man5/isdnd.rc.5.gz
OLD_FILES+=usr/share/man/man5/isdnd.rates.5.gz
OLD_FILES+=usr/share/man/man5/isdnd.acct.5.gz
OLD_FILES+=usr/share/man/man8/isdnd.8.gz
OLD_FILES+=usr/share/man/man8/isdndebug.8.gz
OLD_FILES+=usr/share/man/man8/isdndecode.8.gz
OLD_FILES+=usr/share/man/man8/isdnmonitor.8.gz
OLD_FILES+=usr/share/man/man8/isdnphone.8.gz
OLD_FILES+=usr/share/man/man8/isdntel.8.gz
OLD_FILES+=usr/share/man/man8/isdntelctl.8.gz
OLD_FILES+=usr/share/man/man8/isdntrace.8.gz
OLD_FILES+=usr/share/examples/isdn/contrib/README
OLD_FILES+=usr/share/examples/isdn/contrib/anleitung.ppp
OLD_FILES+=usr/share/examples/isdn/contrib/answer.c
OLD_FILES+=usr/share/examples/isdn/contrib/answer.sh
OLD_FILES+=usr/share/examples/isdn/contrib/convert.sh
OLD_FILES+=usr/share/examples/isdn/contrib/hplay.c
OLD_FILES+=usr/share/examples/isdn/contrib/i4b-ppp-newbie.txt
OLD_FILES+=usr/share/examples/isdn/contrib/isdnctl
OLD_FILES+=usr/share/examples/isdn/contrib/isdnd_acct
OLD_FILES+=usr/share/examples/isdn/contrib/isdnd_acct.pl
OLD_FILES+=usr/share/examples/isdn/contrib/isdntelmux.c
OLD_FILES+=usr/share/examples/isdn/contrib/mrtg-isp0.sh
OLD_FILES+=usr/share/examples/isdn/i4brunppp/Makefile
OLD_FILES+=usr/share/examples/isdn/i4brunppp/README
OLD_FILES+=usr/share/examples/isdn/i4brunppp/i4brunppp-isdnd.rc
OLD_FILES+=usr/share/examples/isdn/i4brunppp/i4brunppp.8
OLD_FILES+=usr/share/examples/isdn/i4brunppp/i4brunppp.c
OLD_FILES+=usr/share/examples/isdn/v21/Makefile
OLD_FILES+=usr/share/examples/isdn/v21/README
OLD_FILES+=usr/share/examples/isdn/v21/v21modem.c
OLD_FILES+=usr/share/examples/isdn/FAQ
OLD_FILES+=usr/share/examples/isdn/KERNEL
OLD_FILES+=usr/share/examples/isdn/Overview
OLD_FILES+=usr/share/examples/isdn/README
OLD_FILES+=usr/share/examples/isdn/ROADMAP
OLD_FILES+=usr/share/examples/isdn/ReleaseNotes
OLD_FILES+=usr/share/examples/isdn/Resources
OLD_FILES+=usr/share/examples/isdn/SupportedCards
OLD_FILES+=usr/share/examples/isdn/ThankYou
OLD_DIRS+=usr/share/examples/isdn/contrib
OLD_DIRS+=usr/share/examples/isdn/i4brunppp
OLD_DIRS+=usr/share/examples/isdn/v21
OLD_DIRS+=usr/share/examples/isdn
OLD_FILES+=usr/share/examples/ppp/isdnd.rc
OLD_FILES+=usr/share/examples/ppp/ppp.conf.isdn
# 20080525: ng_atmpif removed
OLD_FILES+=usr/include/netgraph/atm/ng_atmpif.h
OLD_FILES+=usr/share/man/man4/ng_atmpif.4.gz
# 20080522: pmap_addr_hint removed
OLD_FILES+=usr/share/man/man9/pmap_addr_hint.9.gz
# 20080517: ipsec_osdep.h removed
OLD_FILES+=usr/include/netipsec/ipsec_osdep.h
# 20080507: heimdal 1.1 import
OLD_LIBS+=usr/lib/libasn1.so.9
OLD_LIBS+=usr/lib/libgssapi.so.9
OLD_LIBS+=usr/lib/libgssapi_krb5.so.9
OLD_LIBS+=usr/lib/libhdb.so.9
OLD_LIBS+=usr/lib/libkadm5clnt.so.9
OLD_LIBS+=usr/lib/libkadm5srv.so.9
OLD_LIBS+=usr/lib/libkafs5.so.9
OLD_LIBS+=usr/lib/libkrb5.so.9
OLD_LIBS+=usr/lib/libroken.so.9
OLD_LIBS+=usr/lib32/libgssapi.so.9
# 20080420: Symbol card support dropped
OLD_FILES+=usr/include/dev/wi/spectrum24t_cf.h
# 20080420: awi removal
OLD_FILES+=usr/share/man/man4/awi.4.gz
OLD_FILES+=usr/share/man/man4/if_awi.4.gz
# 20080331: pkg_sign has been removed
OLD_FILES+=usr/sbin/pkg_check
OLD_FILES+=usr/sbin/pkg_sign
OLD_FILES+=usr/share/man/man1/pkg_check.1.gz
OLD_FILES+=usr/share/man/man1/pkg_sign.1.gz
# 20080325: tzdata2008b import
OLD_FILES+=usr/share/zoneinfo/Asia/Calcutta
OLD_FILES+=usr/share/zoneinfo/Asia/Saigon
# 20080314: stack_print(9) mlink fixed
OLD_FILES+=usr/share/man/man9/stack_printf.9.gz
# 20080312: libkse removal
OLD_FILES+=usr/include/sys/kse.h
OLD_FILES+=usr/lib/libkse.so
OLD_LIBS+=usr/lib/libkse.so.3
OLD_FILES+=usr/share/man/man2/kse.2.gz
OLD_FILES+=usr/share/man/man2/kse_create.2.gz
OLD_FILES+=usr/share/man/man2/kse_exit.2.gz
OLD_FILES+=usr/share/man/man2/kse_release.2.gz
OLD_FILES+=usr/share/man/man2/kse_switchin.2.gz
OLD_FILES+=usr/share/man/man2/kse_thr_interrupt.2.gz
OLD_FILES+=usr/share/man/man2/kse_wakeup.2.gz
OLD_FILES+=usr/lib32/libkse.so
OLD_LIBS+=usr/lib32/libkse.so.3
# 20080225: bsdar/bsdranlib rename to ar/ranlib
OLD_FILES+=usr/bin/bsdar
OLD_FILES+=usr/bin/bsdranlib
OLD_FILES+=usr/share/man/man1/bsdar.1.gz
OLD_FILES+=usr/share/man/man1/bsdranlib.1.gz
# 20080220: geom_lvm rename to geom_linux_lvm
OLD_FILES+=usr/share/man/man4/geom_lvm.4.gz
# 20080126: oldcard.4 removal
OLD_FILES+=usr/share/man/man4/card.4.gz
OLD_FILES+=usr/share/man/man4/oldcard.4.gz
# 20080122: Removed from the tree
OLD_FILES+=usr/share/man/man9/BUF_REFCNT.9.gz
# 20080108: Moved to section 2
OLD_FILES+=usr/share/man/man3/shm_open.3.gz
OLD_FILES+=usr/share/man/man3/shm_unlink.3.gz
# 20071207: Merged with fortunes-o.real
OLD_FILES+=usr/share/games/fortune/fortunes2-o
OLD_FILES+=usr/share/games/fortune/fortunes2-o.dat
# 20071201: Removal of XRPU driver
OLD_FILES+=usr/include/sys/xrpuio.h
# 20071129: Disabled static versions of libkse by default
OLD_FILES+=usr/lib/libkse.a
OLD_FILES+=usr/lib/libkse_p.a
OLD_FILES+=usr/lib/libkse_pic.a
OLD_FILES+=usr/lib32/libkse.a
OLD_FILES+=usr/lib32/libkse_p.a
OLD_FILES+=usr/lib32/libkse_pic.a
# 20071129: Removed a Solaris compatibility header
OLD_FILES+=usr/include/sys/_elf_solaris.h
# 20071125: Renamed to pmc_get_msr()
OLD_FILES+=usr/share/man/man3/pmc_x86_get_msr.3.gz
# 20071108: Removed very crunch OLDCARD support file
OLD_FILES+=etc/defaults/pccard.conf
# 20071025: rc.d/nfslocking superseded by rc.d/lockd and rc.d/statd
OLD_FILES+=etc/rc.d/nfslocking
# 20070930: rename of cached to nscd
OLD_FILES+=etc/cached.conf
OLD_FILES+=etc/rc.d/cached
OLD_FILES+=usr/sbin/cached
OLD_FILES+=usr/share/man/man5/cached.conf.5.gz
OLD_FILES+=usr/share/man/man8/cached.8.gz
# 20070807: removal of PowerPC specific header file.
.if ${TARGET_ARCH} == "powerpc"
OLD_FILES+=usr/include/machine/interruptvar.h
.endif
# 20070801: fast_ipsec.4 gone
OLD_FILES+=usr/share/man/man4/fast_ipsec.4.gz
# 20070715: netatm temporarily disconnected (removed 20080525)
OLD_FILES+=rescue/atm
OLD_FILES+=rescue/fore_dnld
OLD_FILES+=rescue/ilmid
OLD_FILES+=sbin/atm
OLD_FILES+=sbin/fore_dnld
OLD_FILES+=sbin/ilmid
OLD_FILES+=usr/include/libatm.h
OLD_FILES+=usr/include/netatm/atm.h
OLD_FILES+=usr/include/netatm/atm_cm.h
OLD_FILES+=usr/include/netatm/atm_if.h
OLD_FILES+=usr/include/netatm/atm_ioctl.h
OLD_FILES+=usr/include/netatm/atm_pcb.h
OLD_FILES+=usr/include/netatm/atm_sap.h
OLD_FILES+=usr/include/netatm/atm_sigmgr.h
OLD_FILES+=usr/include/netatm/atm_stack.h
OLD_FILES+=usr/include/netatm/atm_sys.h
OLD_FILES+=usr/include/netatm/atm_var.h
OLD_FILES+=usr/include/netatm/atm_vc.h
OLD_FILES+=usr/include/netatm/ipatm/ipatm.h
OLD_FILES+=usr/include/netatm/ipatm/ipatm_serv.h
OLD_FILES+=usr/include/netatm/ipatm/ipatm_var.h
OLD_FILES+=usr/include/netatm/port.h
OLD_FILES+=usr/include/netatm/queue.h
OLD_FILES+=usr/include/netatm/sigpvc/sigpvc_var.h
OLD_FILES+=usr/include/netatm/spans/spans_cls.h
OLD_FILES+=usr/include/netatm/spans/spans_kxdr.h
OLD_FILES+=usr/include/netatm/spans/spans_var.h
OLD_FILES+=usr/include/netatm/uni/sscf_uni.h
OLD_FILES+=usr/include/netatm/uni/sscf_uni_var.h
OLD_FILES+=usr/include/netatm/uni/sscop.h
OLD_FILES+=usr/include/netatm/uni/sscop_misc.h
OLD_FILES+=usr/include/netatm/uni/sscop_pdu.h
OLD_FILES+=usr/include/netatm/uni/sscop_var.h
OLD_FILES+=usr/include/netatm/uni/uni.h
OLD_FILES+=usr/include/netatm/uni/uniip_var.h
OLD_FILES+=usr/include/netatm/uni/unisig.h
OLD_FILES+=usr/include/netatm/uni/unisig_decode.h
OLD_FILES+=usr/include/netatm/uni/unisig_mbuf.h
OLD_FILES+=usr/include/netatm/uni/unisig_msg.h
OLD_FILES+=usr/include/netatm/uni/unisig_print.h
OLD_FILES+=usr/include/netatm/uni/unisig_var.h
OLD_FILES+=usr/lib/libatm.a
OLD_FILES+=usr/lib/libatm_p.a
OLD_FILES+=usr/sbin/atmarpd
OLD_FILES+=usr/sbin/scspd
OLD_FILES+=usr/share/man/en.ISO8859-1/man8/atm.8.gz
OLD_FILES+=usr/share/man/en.ISO8859-1/man8/atmarpd.8.gz
OLD_FILES+=usr/share/man/en.ISO8859-1/man8/fore_dnld.8.gz
OLD_FILES+=usr/share/man/en.ISO8859-1/man8/ilmid.8.gz
OLD_FILES+=usr/share/man/en.ISO8859-1/man8/scspd.8.gz
OLD_FILES+=usr/share/man/man8/atm.8.gz
OLD_FILES+=usr/share/man/man8/atmarpd.8.gz
OLD_FILES+=usr/share/man/man8/fore_dnld.8.gz
OLD_FILES+=usr/share/man/man8/ilmid.8.gz
OLD_FILES+=usr/share/man/man8/scspd.8.gz
OLD_FILES+=usr/share/examples/atm/NOTES
OLD_FILES+=usr/share/examples/atm/README
OLD_FILES+=usr/share/examples/atm/Startup
OLD_FILES+=usr/share/examples/atm/atm-config.sh
OLD_FILES+=usr/share/examples/atm/atm-sockets.txt
OLD_FILES+=usr/share/examples/atm/cpcs-design.txt
OLD_FILES+=usr/share/examples/atm/fore-microcode.txt
OLD_FILES+=usr/share/examples/atm/sscf-design.txt
OLD_FILES+=usr/share/examples/atm/sscop-design.txt
OLD_LIBS+=lib/libatm.so.5
OLD_LIBS+=usr/lib/libatm.so
OLD_DIRS+=usr/include/netatm/sigpvc
OLD_DIRS+=usr/include/netatm/spans
OLD_DIRS+=usr/include/netatm/ipatm
OLD_DIRS+=usr/include/netatm/uni
OLD_DIRS+=usr/include/netatm
OLD_DIRS+=usr/share/examples/atm
OLD_FILES+=usr/lib32/libatm.a
OLD_FILES+=usr/lib32/libatm.so
OLD_LIBS+=usr/lib32/libatm.so.5
OLD_FILES+=usr/lib32/libatm_p.a
# 20070705: I4B headers repo-copied to include/i4b/
.if ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/include/machine/i4b_cause.h
OLD_FILES+=usr/include/machine/i4b_debug.h
OLD_FILES+=usr/include/machine/i4b_ioctl.h
OLD_FILES+=usr/include/machine/i4b_rbch_ioctl.h
OLD_FILES+=usr/include/machine/i4b_tel_ioctl.h
OLD_FILES+=usr/include/machine/i4b_trace.h
.endif
# 20070703: pf 4.1 import
OLD_FILES+=usr/libexec/ftp-proxy
# 20070701: KAME IPSec removal
OLD_FILES+=usr/include/netinet6/ah.h
OLD_FILES+=usr/include/netinet6/ah6.h
OLD_FILES+=usr/include/netinet6/ah_aesxcbcmac.h
OLD_FILES+=usr/include/netinet6/esp.h
OLD_FILES+=usr/include/netinet6/esp6.h
OLD_FILES+=usr/include/netinet6/esp_aesctr.h
OLD_FILES+=usr/include/netinet6/esp_camellia.h
OLD_FILES+=usr/include/netinet6/esp_rijndael.h
OLD_FILES+=usr/include/netinet6/ipsec.h
OLD_FILES+=usr/include/netinet6/ipsec6.h
OLD_FILES+=usr/include/netinet6/ipcomp.h
OLD_FILES+=usr/include/netinet6/ipcomp6.h
OLD_FILES+=usr/include/netkey/key.h
OLD_FILES+=usr/include/netkey/key_debug.h
OLD_FILES+=usr/include/netkey/key_var.h
OLD_FILES+=usr/include/netkey/keydb.h
OLD_FILES+=usr/include/netkey/keysock.h
OLD_DIRS+=usr/include/netkey
# 20070701: remove wicontrol
OLD_FILES+=usr/sbin/wicontrol
OLD_FILES+=usr/share/man/man8/wicontrol.8.gz
# 20070625: umapfs removal
OLD_FILES+=rescue/mount_umapfs
OLD_FILES+=sbin/mount_umapfs
OLD_FILES+=usr/include/fs/umapfs/umap.h
OLD_FILES+=usr/share/man/man8/mount_umapfs.8.gz
OLD_DIRS+=usr/include/fs/umapfs
# 20070618: Removal of the PROTO.localhost* files
OLD_FILES+=etc/namedb/PROTO.localhost-v6.rev
OLD_FILES+=etc/namedb/PROTO.localhost.rev
OLD_FILES+=etc/namedb/make-localhost
# 20070618: shared library version bump
OLD_LIBS+=lib/libalias.so.5
OLD_LIBS+=lib/libbsnmp.so.3
OLD_LIBS+=lib/libncurses.so.6
OLD_LIBS+=lib/libncursesw.so.6
OLD_LIBS+=lib/libreadline.so.6
OLD_LIBS+=usr/lib/libdialog.so.5
OLD_LIBS+=usr/lib/libgnuregex.so.3
OLD_LIBS+=usr/lib/libhistory.so.6
OLD_LIBS+=usr/lib/libpam.so.3
OLD_LIBS+=usr/lib/libssh.so.3
OLD_LIBS+=usr/lib/pam_chroot.so.3
OLD_LIBS+=usr/lib/pam_deny.so.3
OLD_LIBS+=usr/lib/pam_echo.so.3
OLD_LIBS+=usr/lib/pam_exec.so.3
OLD_LIBS+=usr/lib/pam_ftpusers.so.3
OLD_LIBS+=usr/lib/pam_group.so.3
OLD_LIBS+=usr/lib/pam_guest.so.3
OLD_LIBS+=usr/lib/pam_krb5.so.3
OLD_LIBS+=usr/lib/pam_ksu.so.3
OLD_LIBS+=usr/lib/pam_lastlog.so.3
OLD_LIBS+=usr/lib/pam_login_access.so.3
OLD_LIBS+=usr/lib/pam_nologin.so.3
OLD_LIBS+=usr/lib/pam_opie.so.3
OLD_LIBS+=usr/lib/pam_opieaccess.so.3
OLD_LIBS+=usr/lib/pam_passwdqc.so.3
OLD_LIBS+=usr/lib/pam_permit.so.3
OLD_LIBS+=usr/lib/pam_radius.so.3
OLD_LIBS+=usr/lib/pam_rhosts.so.3
OLD_LIBS+=usr/lib/pam_rootok.so.3
OLD_LIBS+=usr/lib/pam_securetty.so.3
OLD_LIBS+=usr/lib/pam_self.so.3
OLD_LIBS+=usr/lib/pam_ssh.so.3
OLD_LIBS+=usr/lib/pam_tacplus.so.3
OLD_LIBS+=usr/lib/pam_unix.so.3
OLD_LIBS+=usr/lib/snmp_atm.so.4
OLD_LIBS+=usr/lib/snmp_bridge.so.4
OLD_LIBS+=usr/lib/snmp_hostres.so.4
OLD_LIBS+=usr/lib/snmp_mibII.so.4
OLD_LIBS+=usr/lib/snmp_netgraph.so.4
OLD_LIBS+=usr/lib/snmp_pf.so.4
OLD_LIBS+=usr/lib32/libalias.so.5
OLD_LIBS+=usr/lib32/libbsnmp.so.3
OLD_LIBS+=usr/lib32/libdialog.so.5
OLD_LIBS+=usr/lib32/libgnuregex.so.3
OLD_LIBS+=usr/lib32/libhistory.so.6
OLD_LIBS+=usr/lib32/libncurses.so.6
OLD_LIBS+=usr/lib32/libncursesw.so.6
OLD_LIBS+=usr/lib32/libpam.so.3
OLD_LIBS+=usr/lib32/libreadline.so.6
OLD_LIBS+=usr/lib32/libssh.so.3
OLD_LIBS+=usr/lib32/pam_chroot.so.3
OLD_LIBS+=usr/lib32/pam_deny.so.3
OLD_LIBS+=usr/lib32/pam_echo.so.3
OLD_LIBS+=usr/lib32/pam_exec.so.3
OLD_LIBS+=usr/lib32/pam_ftpusers.so.3
OLD_LIBS+=usr/lib32/pam_group.so.3
OLD_LIBS+=usr/lib32/pam_guest.so.3
OLD_LIBS+=usr/lib32/pam_krb5.so.3
OLD_LIBS+=usr/lib32/pam_ksu.so.3
OLD_LIBS+=usr/lib32/pam_lastlog.so.3
OLD_LIBS+=usr/lib32/pam_login_access.so.3
OLD_LIBS+=usr/lib32/pam_nologin.so.3
OLD_LIBS+=usr/lib32/pam_opie.so.3
OLD_LIBS+=usr/lib32/pam_opieaccess.so.3
OLD_LIBS+=usr/lib32/pam_passwdqc.so.3
OLD_LIBS+=usr/lib32/pam_permit.so.3
OLD_LIBS+=usr/lib32/pam_radius.so.3
OLD_LIBS+=usr/lib32/pam_rhosts.so.3
OLD_LIBS+=usr/lib32/pam_rootok.so.3
OLD_LIBS+=usr/lib32/pam_securetty.so.3
OLD_LIBS+=usr/lib32/pam_self.so.3
OLD_LIBS+=usr/lib32/pam_ssh.so.3
OLD_LIBS+=usr/lib32/pam_tacplus.so.3
OLD_LIBS+=usr/lib32/pam_unix.so.3
# 20070613: IPX over IP tunnel removal
OLD_FILES+=usr/include/netipx/ipx_ip.h
# 20070605: sched_core removal
OLD_FILES+=usr/share/man/man4/sched_core.4.gz
# 20070603: BIND 9.4.1 import
OLD_LIBS+=usr/lib/liblwres.so.10
# 20070521: shared library version bump
OLD_LIBS+=lib/libatm.so.4
OLD_LIBS+=lib/libbegemot.so.2
OLD_LIBS+=lib/libbsdxml.so.2
OLD_LIBS+=lib/libcam.so.3
OLD_LIBS+=lib/libcrypt.so.3
OLD_LIBS+=lib/libdevstat.so.5
OLD_LIBS+=lib/libedit.so.5
OLD_LIBS+=lib/libgeom.so.3
OLD_LIBS+=lib/libipsec.so.2
OLD_LIBS+=lib/libipx.so.3
OLD_LIBS+=lib/libkiconv.so.2
OLD_LIBS+=lib/libkse.so.2
OLD_LIBS+=lib/libkvm.so.3
OLD_LIBS+=lib/libm.so.4
OLD_LIBS+=lib/libmd.so.3
OLD_LIBS+=lib/libpcap.so.4
OLD_LIBS+=lib/libpthread.so.2
OLD_LIBS+=lib/libsbuf.so.3
OLD_LIBS+=lib/libthr.so.2
OLD_LIBS+=lib/libufs.so.3
OLD_LIBS+=lib/libutil.so.6
OLD_LIBS+=lib/libz.so.3
OLD_LIBS+=usr/lib/libbluetooth.so.2
OLD_LIBS+=usr/lib/libbsm.so.1
OLD_LIBS+=usr/lib/libbz2.so.2
OLD_LIBS+=usr/lib/libcalendar.so.3
OLD_LIBS+=usr/lib/libcom_err.so.3
OLD_LIBS+=usr/lib/libdevinfo.so.3
OLD_LIBS+=usr/lib/libfetch.so.4
OLD_LIBS+=usr/lib/libform.so.3
OLD_LIBS+=usr/lib/libformw.so.3
OLD_LIBS+=usr/lib/libftpio.so.6
OLD_LIBS+=usr/lib/libgpib.so.1
OLD_LIBS+=usr/lib/libkse.so.2
OLD_LIBS+=usr/lib/libmagic.so.2
OLD_LIBS+=usr/lib/libmemstat.so.1
OLD_LIBS+=usr/lib/libmenu.so.3
OLD_LIBS+=usr/lib/libmenuw.so.3
OLD_LIBS+=usr/lib/libmilter.so.3
OLD_LIBS+=usr/lib/libmp.so.5
OLD_LIBS+=usr/lib/libncp.so.2
OLD_LIBS+=usr/lib/libnetgraph.so.2
OLD_LIBS+=usr/lib/libngatm.so.2
OLD_LIBS+=usr/lib/libopie.so.4
OLD_LIBS+=usr/lib/libpanel.so.3
OLD_LIBS+=usr/lib/libpanelw.so.3
OLD_LIBS+=usr/lib/libpmc.so.3
OLD_LIBS+=usr/lib/libradius.so.2
OLD_LIBS+=usr/lib/librpcsvc.so.3
OLD_LIBS+=usr/lib/libsdp.so.2
OLD_LIBS+=usr/lib/libsmb.so.2
OLD_LIBS+=usr/lib/libstdc++.so.5
OLD_LIBS+=usr/lib/libtacplus.so.2
OLD_LIBS+=usr/lib/libthr.so.2
OLD_LIBS+=usr/lib/libthread_db.so.2
OLD_LIBS+=usr/lib/libugidfw.so.2
OLD_LIBS+=usr/lib/libusbhid.so.2
OLD_LIBS+=usr/lib/libvgl.so.4
OLD_LIBS+=usr/lib/libwrap.so.4
OLD_LIBS+=usr/lib/libypclnt.so.2
OLD_LIBS+=usr/lib/snmp_bridge.so.3
OLD_LIBS+=usr/lib/snmp_hostres.so.3
OLD_LIBS+=usr/lib32/libatm.so.4
OLD_LIBS+=usr/lib32/libbegemot.so.2
OLD_LIBS+=usr/lib32/libbluetooth.so.2
OLD_LIBS+=usr/lib32/libbsdxml.so.2
OLD_LIBS+=usr/lib32/libbsm.so.1
OLD_LIBS+=usr/lib32/libbz2.so.2
OLD_LIBS+=usr/lib32/libcalendar.so.3
OLD_LIBS+=usr/lib32/libcam.so.3
OLD_LIBS+=usr/lib32/libcom_err.so.3
OLD_LIBS+=usr/lib32/libcrypt.so.3
OLD_LIBS+=usr/lib32/libdevinfo.so.3
OLD_LIBS+=usr/lib32/libdevstat.so.5
OLD_LIBS+=usr/lib32/libedit.so.5
OLD_LIBS+=usr/lib32/libfetch.so.4
OLD_LIBS+=usr/lib32/libform.so.3
OLD_LIBS+=usr/lib32/libformw.so.3
OLD_LIBS+=usr/lib32/libftpio.so.6
OLD_LIBS+=usr/lib32/libgeom.so.3
OLD_LIBS+=usr/lib32/libgpib.so.1
OLD_LIBS+=usr/lib32/libipsec.so.2
OLD_LIBS+=usr/lib32/libipx.so.3
OLD_LIBS+=usr/lib32/libkiconv.so.2
OLD_LIBS+=usr/lib32/libkse.so.2
OLD_LIBS+=usr/lib32/libkvm.so.3
OLD_LIBS+=usr/lib32/libm.so.4
OLD_LIBS+=usr/lib32/libmagic.so.2
OLD_LIBS+=usr/lib32/libmd.so.3
OLD_LIBS+=usr/lib32/libmemstat.so.1
OLD_LIBS+=usr/lib32/libmenu.so.3
OLD_LIBS+=usr/lib32/libmenuw.so.3
OLD_LIBS+=usr/lib32/libmilter.so.3
OLD_LIBS+=usr/lib32/libmp.so.5
OLD_LIBS+=usr/lib32/libncp.so.2
OLD_LIBS+=usr/lib32/libnetgraph.so.2
OLD_LIBS+=usr/lib32/libngatm.so.2
OLD_LIBS+=usr/lib32/libopie.so.4
OLD_LIBS+=usr/lib32/libpanel.so.3
OLD_LIBS+=usr/lib32/libpanelw.so.3
OLD_LIBS+=usr/lib32/libpcap.so.4
OLD_LIBS+=usr/lib32/libpmc.so.3
OLD_LIBS+=usr/lib32/libpthread.so.2
OLD_LIBS+=usr/lib32/libradius.so.2
OLD_LIBS+=usr/lib32/librpcsvc.so.3
OLD_LIBS+=usr/lib32/libsbuf.so.3
OLD_LIBS+=usr/lib32/libsdp.so.2
OLD_LIBS+=usr/lib32/libsmb.so.2
OLD_LIBS+=usr/lib32/libstdc++.so.5
OLD_LIBS+=usr/lib32/libtacplus.so.2
OLD_LIBS+=usr/lib32/libthr.so.2
OLD_LIBS+=usr/lib32/libthread_db.so.2
OLD_LIBS+=usr/lib32/libufs.so.3
OLD_LIBS+=usr/lib32/libugidfw.so.2
OLD_LIBS+=usr/lib32/libusbhid.so.2
OLD_LIBS+=usr/lib32/libutil.so.6
OLD_LIBS+=usr/lib32/libvgl.so.4
OLD_LIBS+=usr/lib32/libwrap.so.4
OLD_LIBS+=usr/lib32/libypclnt.so.2
OLD_LIBS+=usr/lib32/libz.so.3
# 20070519: GCC 4.2
OLD_FILES+=usr/bin/f77
OLD_FILES+=usr/bin/protoize
OLD_FILES+=usr/include/g2c.h
OLD_FILES+=usr/libexec/f771
OLD_FILES+=usr/share/info/g77.info.gz
OLD_FILES+=usr/share/man/man1/f77.1.gz
OLD_FILES+=usr/include/c++/3.4/algorithm
OLD_FILES+=usr/include/c++/3.4/backward/algo.h
OLD_FILES+=usr/include/c++/3.4/backward/algobase.h
OLD_FILES+=usr/include/c++/3.4/backward/alloc.h
OLD_FILES+=usr/include/c++/3.4/backward/backward_warning.h
OLD_FILES+=usr/include/c++/3.4/backward/bvector.h
OLD_FILES+=usr/include/c++/3.4/backward/complex.h
OLD_FILES+=usr/include/c++/3.4/backward/defalloc.h
OLD_FILES+=usr/include/c++/3.4/backward/deque.h
OLD_FILES+=usr/include/c++/3.4/backward/fstream.h
OLD_FILES+=usr/include/c++/3.4/backward/function.h
OLD_FILES+=usr/include/c++/3.4/backward/hash_map.h
OLD_FILES+=usr/include/c++/3.4/backward/hash_set.h
OLD_FILES+=usr/include/c++/3.4/backward/hashtable.h
OLD_FILES+=usr/include/c++/3.4/backward/heap.h
OLD_FILES+=usr/include/c++/3.4/backward/iomanip.h
OLD_FILES+=usr/include/c++/3.4/backward/iostream.h
OLD_FILES+=usr/include/c++/3.4/backward/istream.h
OLD_FILES+=usr/include/c++/3.4/backward/iterator.h
OLD_FILES+=usr/include/c++/3.4/backward/list.h
OLD_FILES+=usr/include/c++/3.4/backward/map.h
OLD_FILES+=usr/include/c++/3.4/backward/multimap.h
OLD_FILES+=usr/include/c++/3.4/backward/multiset.h
OLD_FILES+=usr/include/c++/3.4/backward/new.h
OLD_FILES+=usr/include/c++/3.4/backward/ostream.h
OLD_FILES+=usr/include/c++/3.4/backward/pair.h
OLD_FILES+=usr/include/c++/3.4/backward/queue.h
OLD_FILES+=usr/include/c++/3.4/backward/rope.h
OLD_FILES+=usr/include/c++/3.4/backward/set.h
OLD_FILES+=usr/include/c++/3.4/backward/slist.h
OLD_FILES+=usr/include/c++/3.4/backward/stack.h
OLD_FILES+=usr/include/c++/3.4/backward/stream.h
OLD_FILES+=usr/include/c++/3.4/backward/streambuf.h
OLD_FILES+=usr/include/c++/3.4/backward/strstream
OLD_FILES+=usr/include/c++/3.4/backward/tempbuf.h
OLD_FILES+=usr/include/c++/3.4/backward/tree.h
OLD_FILES+=usr/include/c++/3.4/backward/vector.h
OLD_FILES+=usr/include/c++/3.4/bits/allocator.h
OLD_FILES+=usr/include/c++/3.4/bits/atomic_word.h
OLD_FILES+=usr/include/c++/3.4/bits/atomicity.h
OLD_FILES+=usr/include/c++/3.4/bits/basic_file.h
OLD_FILES+=usr/include/c++/3.4/bits/basic_ios.h
OLD_FILES+=usr/include/c++/3.4/bits/basic_ios.tcc
OLD_FILES+=usr/include/c++/3.4/bits/basic_string.h
OLD_FILES+=usr/include/c++/3.4/bits/basic_string.tcc
OLD_FILES+=usr/include/c++/3.4/bits/boost_concept_check.h
OLD_FILES+=usr/include/c++/3.4/bits/c++allocator.h
OLD_FILES+=usr/include/c++/3.4/bits/c++config.h
OLD_FILES+=usr/include/c++/3.4/bits/c++io.h
OLD_FILES+=usr/include/c++/3.4/bits/c++locale.h
OLD_FILES+=usr/include/c++/3.4/bits/c++locale_internal.h
OLD_FILES+=usr/include/c++/3.4/bits/char_traits.h
OLD_FILES+=usr/include/c++/3.4/bits/cmath.tcc
OLD_FILES+=usr/include/c++/3.4/bits/codecvt.h
OLD_FILES+=usr/include/c++/3.4/bits/codecvt_specializations.h
OLD_FILES+=usr/include/c++/3.4/bits/concept_check.h
OLD_FILES+=usr/include/c++/3.4/bits/concurrence.h
OLD_FILES+=usr/include/c++/3.4/bits/cpp_type_traits.h
OLD_FILES+=usr/include/c++/3.4/bits/ctype_base.h
OLD_FILES+=usr/include/c++/3.4/bits/ctype_inline.h
OLD_FILES+=usr/include/c++/3.4/bits/ctype_noninline.h
OLD_FILES+=usr/include/c++/3.4/bits/deque.tcc
OLD_FILES+=usr/include/c++/3.4/bits/fstream.tcc
OLD_FILES+=usr/include/c++/3.4/bits/functexcept.h
OLD_FILES+=usr/include/c++/3.4/bits/gslice.h
OLD_FILES+=usr/include/c++/3.4/bits/gslice_array.h
OLD_FILES+=usr/include/c++/3.4/bits/gthr-default.h
OLD_FILES+=usr/include/c++/3.4/bits/gthr-posix.h
OLD_FILES+=usr/include/c++/3.4/bits/gthr-single.h
OLD_FILES+=usr/include/c++/3.4/bits/gthr.h
OLD_FILES+=usr/include/c++/3.4/bits/indirect_array.h
OLD_FILES+=usr/include/c++/3.4/bits/ios_base.h
OLD_FILES+=usr/include/c++/3.4/bits/istream.tcc
OLD_FILES+=usr/include/c++/3.4/bits/list.tcc
OLD_FILES+=usr/include/c++/3.4/bits/locale_classes.h
OLD_FILES+=usr/include/c++/3.4/bits/locale_facets.h
OLD_FILES+=usr/include/c++/3.4/bits/locale_facets.tcc
OLD_FILES+=usr/include/c++/3.4/bits/localefwd.h
OLD_FILES+=usr/include/c++/3.4/bits/mask_array.h
OLD_FILES+=usr/include/c++/3.4/bits/messages_members.h
OLD_FILES+=usr/include/c++/3.4/bits/os_defines.h
OLD_FILES+=usr/include/c++/3.4/bits/ostream.tcc
OLD_FILES+=usr/include/c++/3.4/bits/postypes.h
OLD_FILES+=usr/include/c++/3.4/bits/slice_array.h
OLD_FILES+=usr/include/c++/3.4/bits/sstream.tcc
OLD_FILES+=usr/include/c++/3.4/bits/stl_algo.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_algobase.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_bvector.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_construct.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_deque.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_function.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_heap.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_iterator.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_iterator_base_funcs.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_iterator_base_types.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_list.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_map.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_multimap.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_multiset.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_numeric.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_pair.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_queue.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_raw_storage_iter.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_relops.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_set.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_stack.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_tempbuf.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_threads.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_tree.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_uninitialized.h
OLD_FILES+=usr/include/c++/3.4/bits/stl_vector.h
OLD_FILES+=usr/include/c++/3.4/bits/stream_iterator.h
OLD_FILES+=usr/include/c++/3.4/bits/streambuf.tcc
OLD_FILES+=usr/include/c++/3.4/bits/streambuf_iterator.h
OLD_FILES+=usr/include/c++/3.4/bits/stringfwd.h
OLD_FILES+=usr/include/c++/3.4/bits/time_members.h
OLD_FILES+=usr/include/c++/3.4/bits/type_traits.h
OLD_FILES+=usr/include/c++/3.4/bits/valarray_after.h
OLD_FILES+=usr/include/c++/3.4/bits/valarray_array.h
OLD_FILES+=usr/include/c++/3.4/bits/valarray_array.tcc
OLD_FILES+=usr/include/c++/3.4/bits/valarray_before.h
OLD_FILES+=usr/include/c++/3.4/bits/vector.tcc
OLD_FILES+=usr/include/c++/3.4/bitset
OLD_FILES+=usr/include/c++/3.4/cassert
OLD_FILES+=usr/include/c++/3.4/cctype
OLD_FILES+=usr/include/c++/3.4/cerrno
OLD_FILES+=usr/include/c++/3.4/cfloat
OLD_FILES+=usr/include/c++/3.4/ciso646
OLD_FILES+=usr/include/c++/3.4/climits
OLD_FILES+=usr/include/c++/3.4/clocale
OLD_FILES+=usr/include/c++/3.4/cmath
OLD_FILES+=usr/include/c++/3.4/complex
OLD_FILES+=usr/include/c++/3.4/csetjmp
OLD_FILES+=usr/include/c++/3.4/csignal
OLD_FILES+=usr/include/c++/3.4/cstdarg
OLD_FILES+=usr/include/c++/3.4/cstddef
OLD_FILES+=usr/include/c++/3.4/cstdio
OLD_FILES+=usr/include/c++/3.4/cstdlib
OLD_FILES+=usr/include/c++/3.4/cstring
OLD_FILES+=usr/include/c++/3.4/ctime
OLD_FILES+=usr/include/c++/3.4/cwchar
OLD_FILES+=usr/include/c++/3.4/cwctype
OLD_FILES+=usr/include/c++/3.4/cxxabi.h
OLD_FILES+=usr/include/c++/3.4/debug/bitset
OLD_FILES+=usr/include/c++/3.4/debug/debug.h
OLD_FILES+=usr/include/c++/3.4/debug/deque
OLD_FILES+=usr/include/c++/3.4/debug/formatter.h
OLD_FILES+=usr/include/c++/3.4/debug/hash_map
OLD_FILES+=usr/include/c++/3.4/debug/hash_map.h
OLD_FILES+=usr/include/c++/3.4/debug/hash_multimap.h
OLD_FILES+=usr/include/c++/3.4/debug/hash_multiset.h
OLD_FILES+=usr/include/c++/3.4/debug/hash_set
OLD_FILES+=usr/include/c++/3.4/debug/hash_set.h
OLD_FILES+=usr/include/c++/3.4/debug/list
OLD_FILES+=usr/include/c++/3.4/debug/map
OLD_FILES+=usr/include/c++/3.4/debug/map.h
OLD_FILES+=usr/include/c++/3.4/debug/multimap.h
OLD_FILES+=usr/include/c++/3.4/debug/multiset.h
OLD_FILES+=usr/include/c++/3.4/debug/safe_base.h
OLD_FILES+=usr/include/c++/3.4/debug/safe_iterator.h
OLD_FILES+=usr/include/c++/3.4/debug/safe_iterator.tcc
OLD_FILES+=usr/include/c++/3.4/debug/safe_sequence.h
OLD_FILES+=usr/include/c++/3.4/debug/set
OLD_FILES+=usr/include/c++/3.4/debug/set.h
OLD_FILES+=usr/include/c++/3.4/debug/string
OLD_FILES+=usr/include/c++/3.4/debug/vector
OLD_FILES+=usr/include/c++/3.4/deque
OLD_FILES+=usr/include/c++/3.4/exception
OLD_FILES+=usr/include/c++/3.4/exception_defines.h
OLD_FILES+=usr/include/c++/3.4/ext/algorithm
OLD_FILES+=usr/include/c++/3.4/ext/bitmap_allocator.h
OLD_FILES+=usr/include/c++/3.4/ext/debug_allocator.h
OLD_FILES+=usr/include/c++/3.4/ext/enc_filebuf.h
OLD_FILES+=usr/include/c++/3.4/ext/functional
OLD_FILES+=usr/include/c++/3.4/ext/hash_fun.h
OLD_FILES+=usr/include/c++/3.4/ext/hash_map
OLD_FILES+=usr/include/c++/3.4/ext/hash_set
OLD_FILES+=usr/include/c++/3.4/ext/hashtable.h
OLD_FILES+=usr/include/c++/3.4/ext/iterator
OLD_FILES+=usr/include/c++/3.4/ext/malloc_allocator.h
OLD_FILES+=usr/include/c++/3.4/ext/memory
OLD_FILES+=usr/include/c++/3.4/ext/mt_allocator.h
OLD_FILES+=usr/include/c++/3.4/ext/new_allocator.h
OLD_FILES+=usr/include/c++/3.4/ext/numeric
OLD_FILES+=usr/include/c++/3.4/ext/pod_char_traits.h
OLD_FILES+=usr/include/c++/3.4/ext/pool_allocator.h
OLD_FILES+=usr/include/c++/3.4/ext/rb_tree
OLD_FILES+=usr/include/c++/3.4/ext/rope
OLD_FILES+=usr/include/c++/3.4/ext/ropeimpl.h
OLD_FILES+=usr/include/c++/3.4/ext/slist
OLD_FILES+=usr/include/c++/3.4/ext/stdio_filebuf.h
OLD_FILES+=usr/include/c++/3.4/ext/stdio_sync_filebuf.h
OLD_FILES+=usr/include/c++/3.4/fstream
OLD_FILES+=usr/include/c++/3.4/functional
OLD_FILES+=usr/include/c++/3.4/iomanip
OLD_FILES+=usr/include/c++/3.4/ios
OLD_FILES+=usr/include/c++/3.4/iosfwd
OLD_FILES+=usr/include/c++/3.4/iostream
OLD_FILES+=usr/include/c++/3.4/istream
OLD_FILES+=usr/include/c++/3.4/iterator
OLD_FILES+=usr/include/c++/3.4/limits
OLD_FILES+=usr/include/c++/3.4/list
OLD_FILES+=usr/include/c++/3.4/locale
OLD_FILES+=usr/include/c++/3.4/map
OLD_FILES+=usr/include/c++/3.4/memory
OLD_FILES+=usr/include/c++/3.4/new
OLD_FILES+=usr/include/c++/3.4/numeric
OLD_FILES+=usr/include/c++/3.4/ostream
OLD_FILES+=usr/include/c++/3.4/queue
OLD_FILES+=usr/include/c++/3.4/set
OLD_FILES+=usr/include/c++/3.4/sstream
OLD_FILES+=usr/include/c++/3.4/stack
OLD_FILES+=usr/include/c++/3.4/stdexcept
OLD_FILES+=usr/include/c++/3.4/streambuf
OLD_FILES+=usr/include/c++/3.4/string
OLD_FILES+=usr/include/c++/3.4/typeinfo
OLD_FILES+=usr/include/c++/3.4/utility
OLD_FILES+=usr/include/c++/3.4/valarray
OLD_FILES+=usr/include/c++/3.4/vector
OLD_DIRS+=usr/include/c++/3.4/backward
OLD_DIRS+=usr/include/c++/3.4/bits
OLD_DIRS+=usr/include/c++/3.4/debug
OLD_DIRS+=usr/include/c++/3.4/ext
OLD_DIRS+=usr/include/c++/3.4
# 20070510: zpool/zfs moved to /sbin
OLD_FILES+=usr/sbin/zfs
OLD_FILES+=usr/sbin/zpool
# 20070423: rc.bluetooth (examples) removed
OLD_FILES+=usr/share/examples/netgraph/bluetooth/rc.bluetooth
OLD_DIRS+=usr/share/examples/netgraph/bluetooth
# 20070421: worm.4 removed
OLD_FILES+=usr/share/man/man4/worm.4.gz
# 20070417: trunk(4) renamed to lagg(4)
OLD_FILES+=usr/include/net/if_trunk.h
# 20070409: uuidgen moved to /bin/
OLD_FILES+=usr/bin/uuidgen
# 20070328: bzip2 1.0.4
OLD_FILES+=usr/share/info/bzip2.info.gz
# 20070303: libarchive 2.0
OLD_LIBS+=usr/lib/libarchive.so.3
OLD_LIBS+=usr/lib32/libarchive.so.3
# 20070301: remove addr2ascii and ascii2addr
OLD_FILES+=usr/share/man/man3/addr2ascii.3.gz
OLD_FILES+=usr/share/man/man3/ascii2addr.3.gz
# 20070225: vm_page_unmanage() removed
OLD_FILES+=usr/share/man/man9/vm_page_unmanage.9.gz
# 20070216: VFS_VPTOFH(9) -> VOP_VPTOFH(9)
OLD_FILES+=usr/share/man/man9/VFS_VPTOFH.9.gz
# 20070212: kame.4 removed
OLD_FILES+=usr/share/man/man4/kame.4.gz
# 20070201: remove libmytinfo link
OLD_FILES+=usr/lib/libmytinfo.a
OLD_FILES+=usr/lib/libmytinfo.so
OLD_FILES+=usr/lib/libmytinfo_p.a
OLD_FILES+=usr/lib/libmytinfow.a
OLD_FILES+=usr/lib/libmytinfow.so
OLD_FILES+=usr/lib/libmytinfow_p.a
OLD_FILES+=usr/lib32/libmytinfo.a
OLD_FILES+=usr/lib32/libmytinfo.so
OLD_FILES+=usr/lib32/libmytinfo_p.a
OLD_FILES+=usr/lib32/libmytinfow.a
OLD_FILES+=usr/lib32/libmytinfow.so
OLD_FILES+=usr/lib32/libmytinfow_p.a
# 20070128: remove vnconfig
OLD_FILES+=usr/sbin/vnconfig
# 20070127: remove bpf_compat.h
OLD_FILES+=usr/include/net/bpf_compat.h
# 20070125: objformat bites the dust
OLD_FILES+=usr/bin/objformat
OLD_FILES+=usr/share/man/man1/objformat.1.gz
OLD_FILES+=usr/include/objformat.h
OLD_FILES+=usr/share/man/man3/getobjformat.3.gz
# 20061201: remove symlink to *.so.4 libalias modules
OLD_FILES+=usr/lib/libalias_cuseeme.so
OLD_FILES+=usr/lib/libalias_dummy.so
OLD_FILES+=usr/lib/libalias_ftp.so
OLD_FILES+=usr/lib/libalias_irc.so
OLD_FILES+=usr/lib/libalias_nbt.so
OLD_FILES+=usr/lib/libalias_pptp.so
OLD_FILES+=usr/lib/libalias_skinny.so
OLD_FILES+=usr/lib/libalias_smedia.so
# 20061201: remove old *.so.4 libalias modules
OLD_FILES+=lib/libalias_cuseeme.so.4
OLD_FILES+=lib/libalias_dummy.so.4
OLD_FILES+=lib/libalias_ftp.so.4
OLD_FILES+=lib/libalias_irc.so.4
OLD_FILES+=lib/libalias_nbt.so.4
OLD_FILES+=lib/libalias_pptp.so.4
OLD_FILES+=lib/libalias_skinny.so.4
OLD_FILES+=lib/libalias_smedia.so.4
# 20061126: remove old man page
OLD_FILES+=usr/share/man/man3/archive_read_set_bytes_per_block.3.gz
# 20061125: remove old man page
OLD_FILES+=usr/share/man/man9/devsw.9.gz
# 20061122: remove obsolete mount programs
OLD_FILES+=sbin/mount_devfs
OLD_FILES+=sbin/mount_ext2fs
OLD_FILES+=sbin/mount_fdescfs
OLD_FILES+=sbin/mount_linprocfs
OLD_FILES+=sbin/mount_procfs
OLD_FILES+=sbin/mount_std
OLD_FILES+=rescue/mount_devfs
OLD_FILES+=rescue/mount_ext2fs
OLD_FILES+=rescue/mount_fdescfs
OLD_FILES+=rescue/mount_linprocfs
OLD_FILES+=rescue/mount_procfs
OLD_FILES+=rescue/mount_std
OLD_FILES+=usr/share/man/man8/mount_devfs.8.gz
OLD_FILES+=usr/share/man/man8/mount_ext2fs.8.gz
OLD_FILES+=usr/share/man/man8/mount_fdescfs.8.gz
OLD_FILES+=usr/share/man/man8/mount_linprocfs.8.gz
OLD_FILES+=usr/share/man/man8/mount_procfs.8.gz
OLD_FILES+=usr/share/man/man8/mount_std.8.gz
# 20061116: uhidev.4 removed
OLD_FILES+=usr/share/man/man4/uhidev.4.gz
# 20061106: archive_write_prepare.3 removed
OLD_FILES+=usr/share/man/man3/archive_write_prepare.3.gz
# 20061018: pccardc removed
OLD_FILES+=usr/sbin/pccardc usr/share/man/man8/pccardc.8.gz
# 20060930: demangle.h from contrib/libstdc++/include/ext/
OLD_FILES+=usr/include/c++/3.4/ext/demangle.h
# 20060929: mrouted removed
OLD_FILES+=usr/sbin/map-mbone
OLD_FILES+=usr/sbin/mrinfo
OLD_FILES+=usr/sbin/mrouted
OLD_FILES+=usr/sbin/mtrace
OLD_FILES+=usr/share/man/man8/map-mbone.8.gz
OLD_FILES+=usr/share/man/man8/mrinfo.8.gz
OLD_FILES+=usr/share/man/man8/mrouted.8.gz
OLD_FILES+=usr/share/man/man8/mtrace.8.gz
# 20060924: tcpslice removed
OLD_FILES+=usr/sbin/tcpslice
OLD_FILES+=usr/share/man/man1/tcpslice.1.gz
# 20060829: kvmdb cleanup script removed
OLD_FILES+=etc/periodic/weekly/120.clean-kvmdb
# 20060822: ramdisk{,-own} have been replaced by mdconfig{,2}
OLD_FILES+=etc/rc.d/ramdisk
OLD_FILES+=etc/rc.d/ramdisk-own
# 20060729: OpenSSL 0.9.7e -> 0.9.8b upgrade
OLD_FILES+=usr/include/openssl/eng_int.h
OLD_FILES+=usr/include/openssl/hw_4758_cca_err.h
OLD_FILES+=usr/include/openssl/hw_aep_err.h
OLD_FILES+=usr/include/openssl/hw_atalla_err.h
OLD_FILES+=usr/include/openssl/hw_cswift_err.h
OLD_FILES+=usr/include/openssl/hw_ncipher_err.h
OLD_FILES+=usr/include/openssl/hw_nuron_err.h
OLD_FILES+=usr/include/openssl/hw_sureware_err.h
OLD_FILES+=usr/include/openssl/hw_ubsec_err.h
# 20060713: mount_linsysfs(8) never existed in 7.x
OLD_FILES+=sbin/mount_linsysfs
OLD_FILES+=usr/share/man/man8/mount_linsysfs.8.gz
# 20060704: KAME compat file net_osdep.h removed
OLD_FILES+=usr/include/net/net_osdep.h
# 20060605: man page links removed by OpenBSM 1.0 alpha 6 import
OLD_FILES+=usr/share/man/man3/au_to_socket.3.gz
OLD_FILES+=usr/share/man/man3/au_to_socket_ex_128.3.gz
OLD_FILES+=usr/share/man/man3/au_to_socket_ex_32.3.gz
# 20060517: pcvt removed
OLD_FILES+=usr/share/pcvt/README.FIRST
OLD_FILES+=usr/share/pcvt/Etc/xmodmap-german
OLD_FILES+=usr/share/pcvt/Etc/pcvt.sh
OLD_FILES+=usr/share/pcvt/Etc/pcvt.el
OLD_FILES+=usr/share/pcvt/Etc/Terminfo
OLD_FILES+=usr/share/pcvt/Etc/Termcap
OLD_DIRS+=usr/share/pcvt/Etc
OLD_FILES+=usr/share/pcvt/Doc/NotesAndHints
OLD_FILES+=usr/share/pcvt/Doc/Keyboard.VT
OLD_FILES+=usr/share/pcvt/Doc/Keyboard.HP
OLD_FILES+=usr/share/pcvt/Doc/EscapeSequences
OLD_FILES+=usr/share/pcvt/Doc/Charsets
OLD_FILES+=usr/share/pcvt/Doc/CharGen
OLD_FILES+=usr/share/pcvt/Doc/Bibliography
OLD_FILES+=usr/share/pcvt/Doc/Acknowledgements
OLD_DIRS+=usr/share/pcvt/Doc
OLD_DIRS+=usr/share/pcvt
OLD_FILES+=usr/share/misc/pcvtfonts/vt220l.816
OLD_FILES+=usr/share/misc/pcvtfonts/vt220l.814
OLD_FILES+=usr/share/misc/pcvtfonts/vt220l.810
OLD_FILES+=usr/share/misc/pcvtfonts/vt220l.808
OLD_FILES+=usr/share/misc/pcvtfonts/vt220h.816
OLD_FILES+=usr/share/misc/pcvtfonts/vt220h.814
OLD_FILES+=usr/share/misc/pcvtfonts/vt220h.810
OLD_FILES+=usr/share/misc/pcvtfonts/vt220h.808
OLD_DIRS+=usr/share/misc/pcvtfonts
OLD_FILES+=usr/share/misc/keycap.pcvt
OLD_FILES+=usr/share/man/man8/ispcvt.8.gz
OLD_FILES+=usr/share/man/man5/keycap.5.gz
OLD_FILES+=usr/share/man/man4/pcvt.4.gz
OLD_FILES+=usr/share/man/man3/kgetstr.3.gz
OLD_FILES+=usr/share/man/man3/kgetnum.3.gz
OLD_FILES+=usr/share/man/man3/kgetflag.3.gz
OLD_FILES+=usr/share/man/man3/kgetent.3.gz
OLD_FILES+=usr/share/man/man3/keycap.3.gz
OLD_FILES+=usr/share/man/man1/vt220keys.1.gz
OLD_FILES+=usr/share/man/man1/scon.1.gz
OLD_FILES+=usr/share/man/man1/loadfont.1.gz
OLD_FILES+=usr/share/man/man1/kcon.1.gz
OLD_FILES+=usr/share/man/man1/fontedit.1.gz
OLD_FILES+=usr/share/man/man1/cursor.1.gz
OLD_FILES+=usr/sbin/vt220keys
OLD_FILES+=usr/sbin/scon
OLD_FILES+=usr/sbin/loadfont
OLD_FILES+=usr/sbin/kcon
OLD_FILES+=usr/sbin/ispcvt
OLD_FILES+=usr/sbin/fontedit
OLD_FILES+=usr/sbin/cursor
OLD_FILES+=usr/lib/libkeycap_p.a
OLD_FILES+=usr/lib/libkeycap.a
OLD_FILES+=usr/include/machine/pcvt_ioctl.h
# 20060514: lnc(4) replaced by le(4)
OLD_FILES+=usr/share/man/man4/i386/lnc.4.gz
# 20060512: remove ip6fw
OLD_FILES+=etc/periodic/security/600.ip6fwdenied
OLD_FILES+=etc/periodic/security/650.ip6fwlimit
OLD_FILES+=sbin/ip6fw
OLD_FILES+=usr/include/netinet6/ip6_fw.h
OLD_FILES+=usr/share/man/man8/ip6fw.8.gz
# 20060424: sab(4) removed
OLD_FILES+=usr/share/man/man4/sab.4.gz
# 20060328: remove redundant rc.d script
OLD_FILES+=etc/rc.d/ike
# 20060127: revert libdisk to static-only
OLD_FILES+=usr/lib/libdisk.so
# 20060115: sys/pccard includes cleanup
OLD_FILES+=usr/include/pccard/driver.h
OLD_FILES+=usr/include/pccard/i82365.h
OLD_FILES+=usr/include/pccard/meciareg.h
OLD_FILES+=usr/include/pccard/pccard_nbk.h
OLD_FILES+=usr/include/pccard/pcic_pci.h
OLD_FILES+=usr/include/pccard/pcicvar.h
OLD_FILES+=usr/include/pccard/slot.h
# 20051215: rescue/nextboot.sh renamed to rescue/nextboot
OLD_FILES+=rescue/nextboot.sh
# 20051214: usbd(8) removed
OLD_FILES+=etc/rc.d/usbd
OLD_FILES+=etc/usbd.conf
OLD_FILES+=usr/sbin/usbd
OLD_FILES+=usr/share/man/man8/usbd.8.gz
# 20051029: rc.d/ppp-user renamed to rc.d/ppp for convenience
OLD_FILES+=etc/rc.d/ppp-user
# 20051012: setkey(8) moved to /sbin/
OLD_FILES+=usr/sbin/setkey
# 20050930: pccardd(8) removed
OLD_FILES+=usr/sbin/pccardd
OLD_FILES+=usr/share/man/man5/pccard.conf.5.gz
OLD_FILES+=usr/share/man/man8/pccardd.8.gz
# 20050927: bridge(4) replaced by if_bridge(4)
OLD_FILES+=usr/include/net/bridge.h
# 20050831: not implemented
OLD_FILES+=usr/share/man/man3/getino.3.gz
OLD_FILES+=usr/share/man/man3/putino.3.gz
# 20050825: T/TCP retired several months ago
OLD_FILES+=usr/share/man/man4/ttcp.4.gz
# 20050805 tn3270 retired long ago
OLD_FILES+=usr/share/misc/map3270
# 20050801: too old to be interesting here
OLD_FILES+=usr/share/doc/papers/px.ps.gz
# 20050721: moved to ports
OLD_FILES+=usr/sbin/vttest
OLD_FILES+=usr/share/man/man1/vttest.1.gz
# 20050617: wpa man pages moved to section 8
OLD_FILES+=usr/share/man/man1/hostapd.1.gz
OLD_FILES+=usr/share/man/man1/hostapd_cli.1.gz
OLD_FILES+=usr/share/man/man1/wpa_cli.1.gz
OLD_FILES+=usr/share/man/man1/wpa_supplicant.1.gz
# 20050610: rexecd (insecure by design)
OLD_FILES+=etc/pam.d/rexecd
OLD_FILES+=usr/share/man/man8/rexecd.8.gz
OLD_FILES+=usr/libexec/rexecd
# 20050606: OpenBSD dhclient replaces ISC one
OLD_FILES+=bin/omshell
OLD_FILES+=sbin/omshell
OLD_FILES+=usr/share/man/man1/omshell.1.gz
OLD_FILES+=usr/share/man/man5/dhcp-eval.5.gz
# 200504XX: ipf tools moved from /usr to /
OLD_FILES+=rescue/ipfs
OLD_FILES+=rescue/ipfstat
OLD_FILES+=rescue/ipmon
OLD_FILES+=rescue/ipnat
OLD_FILES+=usr/sbin/ipftest
OLD_FILES+=usr/sbin/ipresend
OLD_FILES+=usr/sbin/ipsend
OLD_FILES+=usr/sbin/iptest
OLD_FILES+=usr/share/man/man1/ipnat.1.gz
OLD_FILES+=usr/share/man/man1/ipsend.1.gz
OLD_FILES+=usr/share/man/man1/iptest.1.gz
OLD_FILES+=usr/share/man/man5/ipsend.5.gz
# 200503XX: bsdtar takes over gtar
OLD_FILES+=usr/bin/gtar
OLD_FILES+=usr/share/man/man1/gtar.1.gz
# 200503XX
OLD_FILES+=usr/share/man/man3/exp10.3.gz
OLD_FILES+=usr/share/man/man3/exp10f.3.gz
OLD_FILES+=usr/share/man/man3/fpsetsticky.3.gz
# 20050324: updated release infrastructure
OLD_FILES+=usr/share/man/man5/drivers.conf.5.gz
# 20050317: removed from BIND 9 distribution
OLD_FILES+=usr/share/doc/bind9/KNOWN_DEFECTS
# 2005XXXX:
OLD_FILES+=sbin/mount_autofs
OLD_FILES+=usr/lib/libautofs.a
OLD_FILES+=usr/lib/libautofs.so
OLD_FILES+=usr/share/man/man8/mount_autofs.8.gz
# 20050203: Merged with fortunes
OLD_FILES+=usr/share/games/fortune/fortunes2
OLD_FILES+=usr/share/games/fortune/fortunes2.dat
# 200501XX:
OLD_FILES+=usr/libexec/getNAME
# 200411XX: gvinum replaces vinum
OLD_FILES+=bin/vinum
OLD_FILES+=rescue/vinum
OLD_FILES+=sbin/vinum
OLD_FILES+=usr/share/man/man8/vinum.8.gz
# 200411XX: libxpg4 removal
OLD_FILES+=usr/lib/libxpg4.a
OLD_FILES+=usr/lib/libxpg4.so
OLD_FILES+=usr/lib/libxpg4_p.a
# 20041109: replaced by em(4)
OLD_FILES+=usr/share/man/man4/gx.4.gz
OLD_FILES+=usr/share/man/man4/if_gx.4.gz
# 20041017: rune interface removed
OLD_FILES+=usr/include/rune.h
OLD_FILES+=usr/share/man/man3/fgetrune.3.gz
OLD_FILES+=usr/share/man/man3/fputrune.3.gz
OLD_FILES+=usr/share/man/man3/fungetrune.3.gz
OLD_FILES+=usr/share/man/man3/mbrrune.3.gz
OLD_FILES+=usr/share/man/man3/mbrune.3.gz
OLD_FILES+=usr/share/man/man3/rune.3.gz
OLD_FILES+=usr/share/man/man3/setinvalidrune.3.gz
OLD_FILES+=usr/share/man/man3/sgetrune.3.gz
OLD_FILES+=usr/share/man/man3/sputrune.3.gz
# 20040925: bind9 import
OLD_FILES+=usr/bin/dnskeygen
OLD_FILES+=usr/bin/dnsquery
OLD_FILES+=usr/lib/libisc.a
OLD_FILES+=usr/lib/libisc.so
OLD_FILES+=usr/lib/libisc_p.a
OLD_FILES+=usr/libexec/named-xfer
OLD_FILES+=usr/sbin/named.restart
OLD_FILES+=usr/sbin/ndc
OLD_FILES+=usr/sbin/nslookup
OLD_FILES+=usr/sbin/nsupdate
OLD_FILES+=usr/share/doc/bind/html/acl.html
OLD_FILES+=usr/share/doc/bind/html/address_list.html
OLD_FILES+=usr/share/doc/bind/html/comments.html
OLD_FILES+=usr/share/doc/bind/html/config.html
OLD_FILES+=usr/share/doc/bind/html/controls.html
OLD_FILES+=usr/share/doc/bind/html/docdef.html
OLD_FILES+=usr/share/doc/bind/html/example.html
OLD_FILES+=usr/share/doc/bind/html/include.html
OLD_FILES+=usr/share/doc/bind/html/index.html
OLD_FILES+=usr/share/doc/bind/html/key.html
OLD_FILES+=usr/share/doc/bind/html/logging.html
OLD_FILES+=usr/share/doc/bind/html/master.html
OLD_FILES+=usr/share/doc/bind/html/options.html
OLD_FILES+=usr/share/doc/bind/html/server.html
OLD_FILES+=usr/share/doc/bind/html/trusted-keys.html
OLD_FILES+=usr/share/doc/bind/html/zone.html
OLD_FILES+=usr/share/doc/bind/misc/DynamicUpdate
OLD_FILES+=usr/share/doc/bind/misc/FAQ.1of2
OLD_FILES+=usr/share/doc/bind/misc/FAQ.2of2
OLD_FILES+=usr/share/doc/bind/misc/rfc2317-notes.txt
OLD_FILES+=usr/share/doc/bind/misc/style.txt
OLD_FILES+=usr/share/man/man1/dnskeygen.1.gz
OLD_FILES+=usr/share/man/man1/dnsquery.1.gz
OLD_FILES+=usr/share/man/man8/named-bootconf.8.gz
OLD_FILES+=usr/share/man/man8/named-xfer.8.gz
OLD_FILES+=usr/share/man/man8/named.restart.8.gz
OLD_FILES+=usr/share/man/man8/ndc.8.gz
OLD_FILES+=usr/share/man/man8/nslookup.8.gz
# 200409XX
OLD_FILES+=usr/share/man/man3/ENSURE.3.gz
OLD_FILES+=usr/share/man/man3/ENSURE_ERR.3.gz
OLD_FILES+=usr/share/man/man3/INSIST.3.gz
OLD_FILES+=usr/share/man/man3/INSIST_ERR.3.gz
OLD_FILES+=usr/share/man/man3/INVARIANT.3.gz
OLD_FILES+=usr/share/man/man3/INVARIANT_ERR.3.gz
OLD_FILES+=usr/share/man/man3/REQUIRE.3.gz
OLD_FILES+=usr/share/man/man3/REQUIRE_ERR.3.gz
OLD_FILES+=usr/share/man/man3/assertion_type_to_text.3.gz
OLD_FILES+=usr/share/man/man3/assertions.3.gz
OLD_FILES+=usr/share/man/man3/bitncmp.3.gz
OLD_FILES+=usr/share/man/man3/evAddTime.3.gz
OLD_FILES+=usr/share/man/man3/evCancelConn.3.gz
OLD_FILES+=usr/share/man/man3/evCancelRW.3.gz
OLD_FILES+=usr/share/man/man3/evClearIdleTimer.3.gz
OLD_FILES+=usr/share/man/man3/evClearTimer.3.gz
OLD_FILES+=usr/share/man/man3/evCmpTime.3.gz
OLD_FILES+=usr/share/man/man3/evConnFunc.3.gz
OLD_FILES+=usr/share/man/man3/evConnect.3.gz
OLD_FILES+=usr/share/man/man3/evConsIovec.3.gz
OLD_FILES+=usr/share/man/man3/evConsTime.3.gz
OLD_FILES+=usr/share/man/man3/evCreate.3.gz
OLD_FILES+=usr/share/man/man3/evDefer.3.gz
OLD_FILES+=usr/share/man/man3/evDeselectFD.3.gz
OLD_FILES+=usr/share/man/man3/evDestroy.3.gz
OLD_FILES+=usr/share/man/man3/evDispatch.3.gz
OLD_FILES+=usr/share/man/man3/evDo.3.gz
OLD_FILES+=usr/share/man/man3/evDrop.3.gz
OLD_FILES+=usr/share/man/man3/evFileFunc.3.gz
OLD_FILES+=usr/share/man/man3/evGetNext.3.gz
OLD_FILES+=usr/share/man/man3/evHold.3.gz
OLD_FILES+=usr/share/man/man3/evInitID.3.gz
OLD_FILES+=usr/share/man/man3/evLastEventTime.3.gz
OLD_FILES+=usr/share/man/man3/evListen.3.gz
OLD_FILES+=usr/share/man/man3/evMainLoop.3.gz
OLD_FILES+=usr/share/man/man3/evNowTime.3.gz
OLD_FILES+=usr/share/man/man3/evPrintf.3.gz
OLD_FILES+=usr/share/man/man3/evRead.3.gz
OLD_FILES+=usr/share/man/man3/evResetTimer.3.gz
OLD_FILES+=usr/share/man/man3/evSelectFD.3.gz
OLD_FILES+=usr/share/man/man3/evSetDebug.3.gz
OLD_FILES+=usr/share/man/man3/evSetIdleTimer.3.gz
OLD_FILES+=usr/share/man/man3/evSetTimer.3.gz
OLD_FILES+=usr/share/man/man3/evStreamFunc.3.gz
OLD_FILES+=usr/share/man/man3/evSubTime.3.gz
OLD_FILES+=usr/share/man/man3/evTestID.3.gz
OLD_FILES+=usr/share/man/man3/evTimeRW.3.gz
OLD_FILES+=usr/share/man/man3/evTimeSpec.3.gz
OLD_FILES+=usr/share/man/man3/evTimeVal.3.gz
OLD_FILES+=usr/share/man/man3/evTimerFunc.3.gz
OLD_FILES+=usr/share/man/man3/evTouchIdleTimer.3.gz
OLD_FILES+=usr/share/man/man3/evTryAccept.3.gz
OLD_FILES+=usr/share/man/man3/evUnhold.3.gz
OLD_FILES+=usr/share/man/man3/evUntimeRW.3.gz
OLD_FILES+=usr/share/man/man3/evUnwait.3.gz
OLD_FILES+=usr/share/man/man3/evWaitFor.3.gz
OLD_FILES+=usr/share/man/man3/evWaitFunc.3.gz
OLD_FILES+=usr/share/man/man3/evWrite.3.gz
OLD_FILES+=usr/share/man/man3/eventlib.3.gz
OLD_FILES+=usr/share/man/man3/heap.3.gz
OLD_FILES+=usr/share/man/man3/heap_decreased.3.gz
OLD_FILES+=usr/share/man/man3/heap_delete.3.gz
OLD_FILES+=usr/share/man/man3/heap_element.3.gz
OLD_FILES+=usr/share/man/man3/heap_for_each.3.gz
OLD_FILES+=usr/share/man/man3/heap_free.3.gz
OLD_FILES+=usr/share/man/man3/heap_increased.3.gz
OLD_FILES+=usr/share/man/man3/heap_insert.3.gz
OLD_FILES+=usr/share/man/man3/heap_new.3.gz
OLD_FILES+=usr/share/man/man3/log_add_channel.3.gz
OLD_FILES+=usr/share/man/man3/log_category_is_active.3.gz
OLD_FILES+=usr/share/man/man3/log_close_stream.3.gz
OLD_FILES+=usr/share/man/man3/log_dec_references.3.gz
OLD_FILES+=usr/share/man/man3/log_free_channel.3.gz
OLD_FILES+=usr/share/man/man3/log_free_context.3.gz
OLD_FILES+=usr/share/man/man3/log_get_filename.3.gz
OLD_FILES+=usr/share/man/man3/log_get_stream.3.gz
OLD_FILES+=usr/share/man/man3/log_inc_references.3.gz
OLD_FILES+=usr/share/man/man3/log_new_context.3.gz
OLD_FILES+=usr/share/man/man3/log_new_file_channel.3.gz
OLD_FILES+=usr/share/man/man3/log_new_null_channel.3.gz
OLD_FILES+=usr/share/man/man3/log_new_syslog_channel.3.gz
OLD_FILES+=usr/share/man/man3/log_open_stream.3.gz
OLD_FILES+=usr/share/man/man3/log_option.3.gz
OLD_FILES+=usr/share/man/man3/log_remove_channel.3.gz
OLD_FILES+=usr/share/man/man3/log_set_file_owner.3.gz
OLD_FILES+=usr/share/man/man3/log_vwrite.3.gz
OLD_FILES+=usr/share/man/man3/log_write.3.gz
OLD_FILES+=usr/share/man/man3/logging.3.gz
OLD_FILES+=usr/share/man/man3/memcluster.3.gz
OLD_FILES+=usr/share/man/man3/memget.3.gz
OLD_FILES+=usr/share/man/man3/memput.3.gz
OLD_FILES+=usr/share/man/man3/memstats.3.gz
OLD_FILES+=usr/share/man/man3/set_assertion_failure_callback.3.
OLD_FILES+=usr/share/man/man3/sigwait.3.gz
OLD_FILES+=usr/share/man/man3/tree_add.3.gz
OLD_FILES+=usr/share/man/man3/tree_delete.3.gz
OLD_FILES+=usr/share/man/man3/tree_init.3.gz
OLD_FILES+=usr/share/man/man3/tree_mung.3.gz
OLD_FILES+=usr/share/man/man3/tree_srch.3.gz
OLD_FILES+=usr/share/man/man3/tree_trav.3.gz
# 2004XXYY: OS internal libs, no ports use them, no need to use OLD_LIBS
OLD_FILES+=lib/geom/geom_concat.so.1
OLD_FILES+=lib/geom/geom_label.so.1
OLD_FILES+=lib/geom/geom_nop.so.1
OLD_FILES+=lib/geom/geom_stripe.so.1
# 20040728: GCC 3.4.2
OLD_DIRS+=usr/include/c++/3.3
OLD_FILES+=usr/include/c++/3.3/FlexLexer.h
OLD_FILES+=usr/include/c++/3.3/algorithm
OLD_FILES+=usr/include/c++/3.3/backward/algo.h
OLD_FILES+=usr/include/c++/3.3/backward/algobase.h
OLD_FILES+=usr/include/c++/3.3/backward/alloc.h
OLD_FILES+=usr/include/c++/3.3/backward/backward_warning.h
OLD_FILES+=usr/include/c++/3.3/backward/bvector.h
OLD_FILES+=usr/include/c++/3.3/backward/complex.h
OLD_FILES+=usr/include/c++/3.3/backward/defalloc.h
OLD_FILES+=usr/include/c++/3.3/backward/deque.h
OLD_FILES+=usr/include/c++/3.3/backward/fstream.h
OLD_FILES+=usr/include/c++/3.3/backward/function.h
OLD_FILES+=usr/include/c++/3.3/backward/hash_map.h
OLD_FILES+=usr/include/c++/3.3/backward/hash_set.h
OLD_FILES+=usr/include/c++/3.3/backward/hashtable.h
OLD_FILES+=usr/include/c++/3.3/backward/heap.h
OLD_FILES+=usr/include/c++/3.3/backward/iomanip.h
OLD_FILES+=usr/include/c++/3.3/backward/iostream.h
OLD_FILES+=usr/include/c++/3.3/backward/istream.h
OLD_FILES+=usr/include/c++/3.3/backward/iterator.h
OLD_FILES+=usr/include/c++/3.3/backward/list.h
OLD_FILES+=usr/include/c++/3.3/backward/map.h
OLD_FILES+=usr/include/c++/3.3/backward/multimap.h
OLD_FILES+=usr/include/c++/3.3/backward/multiset.h
OLD_FILES+=usr/include/c++/3.3/backward/new.h
OLD_FILES+=usr/include/c++/3.3/backward/ostream.h
OLD_FILES+=usr/include/c++/3.3/backward/pair.h
OLD_FILES+=usr/include/c++/3.3/backward/queue.h
OLD_FILES+=usr/include/c++/3.3/backward/rope.h
OLD_FILES+=usr/include/c++/3.3/backward/set.h
OLD_FILES+=usr/include/c++/3.3/backward/slist.h
OLD_FILES+=usr/include/c++/3.3/backward/stack.h
OLD_FILES+=usr/include/c++/3.3/backward/stream.h
OLD_FILES+=usr/include/c++/3.3/backward/streambuf.h
OLD_FILES+=usr/include/c++/3.3/backward/strstream
OLD_FILES+=usr/include/c++/3.3/backward/strstream.h
OLD_FILES+=usr/include/c++/3.3/backward/tempbuf.h
OLD_FILES+=usr/include/c++/3.3/backward/tree.h
OLD_FILES+=usr/include/c++/3.3/backward/vector.h
OLD_DIRS+=usr/include/c++/3.3/backward
OLD_FILES+=usr/include/c++/3.3/bits/atomicity.h
OLD_FILES+=usr/include/c++/3.3/bits/basic_file.h
OLD_FILES+=usr/include/c++/3.3/bits/basic_ios.h
OLD_FILES+=usr/include/c++/3.3/bits/basic_ios.tcc
OLD_FILES+=usr/include/c++/3.3/bits/basic_string.h
OLD_FILES+=usr/include/c++/3.3/bits/basic_string.tcc
OLD_FILES+=usr/include/c++/3.3/bits/boost_concept_check.h
OLD_FILES+=usr/include/c++/3.3/bits/c++config.h
OLD_FILES+=usr/include/c++/3.3/bits/c++io.h
OLD_FILES+=usr/include/c++/3.3/bits/c++locale.h
OLD_FILES+=usr/include/c++/3.3/bits/c++locale_internal.h
OLD_FILES+=usr/include/c++/3.3/bits/char_traits.h
OLD_FILES+=usr/include/c++/3.3/bits/cmath.tcc
OLD_FILES+=usr/include/c++/3.3/bits/codecvt.h
OLD_FILES+=usr/include/c++/3.3/bits/codecvt_specializations.h
OLD_FILES+=usr/include/c++/3.3/bits/concept_check.h
OLD_FILES+=usr/include/c++/3.3/bits/cpp_type_traits.h
OLD_FILES+=usr/include/c++/3.3/bits/ctype_base.h
OLD_FILES+=usr/include/c++/3.3/bits/ctype_inline.h
OLD_FILES+=usr/include/c++/3.3/bits/ctype_noninline.h
OLD_FILES+=usr/include/c++/3.3/bits/deque.tcc
OLD_FILES+=usr/include/c++/3.3/bits/fpos.h
OLD_FILES+=usr/include/c++/3.3/bits/fstream.tcc
OLD_FILES+=usr/include/c++/3.3/bits/functexcept.h
OLD_FILES+=usr/include/c++/3.3/bits/generic_shadow.h
OLD_FILES+=usr/include/c++/3.3/bits/gslice.h
OLD_FILES+=usr/include/c++/3.3/bits/gslice_array.h
OLD_FILES+=usr/include/c++/3.3/bits/gthr-default.h
OLD_FILES+=usr/include/c++/3.3/bits/gthr-posix.h
OLD_FILES+=usr/include/c++/3.3/bits/gthr-single.h
OLD_FILES+=usr/include/c++/3.3/bits/gthr.h
OLD_FILES+=usr/include/c++/3.3/bits/indirect_array.h
OLD_FILES+=usr/include/c++/3.3/bits/ios_base.h
OLD_FILES+=usr/include/c++/3.3/bits/istream.tcc
OLD_FILES+=usr/include/c++/3.3/bits/list.tcc
OLD_FILES+=usr/include/c++/3.3/bits/locale_classes.h
OLD_FILES+=usr/include/c++/3.3/bits/locale_facets.h
OLD_FILES+=usr/include/c++/3.3/bits/locale_facets.tcc
OLD_FILES+=usr/include/c++/3.3/bits/localefwd.h
OLD_FILES+=usr/include/c++/3.3/bits/mask_array.h
OLD_FILES+=usr/include/c++/3.3/bits/messages_members.h
OLD_FILES+=usr/include/c++/3.3/bits/os_defines.h
OLD_FILES+=usr/include/c++/3.3/bits/ostream.tcc
OLD_FILES+=usr/include/c++/3.3/bits/pthread_allocimpl.h
OLD_FILES+=usr/include/c++/3.3/bits/slice.h
OLD_FILES+=usr/include/c++/3.3/bits/slice_array.h
OLD_FILES+=usr/include/c++/3.3/bits/sstream.tcc
OLD_FILES+=usr/include/c++/3.3/bits/stl_algo.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_algobase.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_alloc.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_bvector.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_construct.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_deque.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_function.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_heap.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_iterator.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_iterator_base_funcs.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_iterator_base_types.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_list.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_map.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_multimap.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_multiset.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_numeric.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_pair.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_pthread_alloc.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_queue.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_raw_storage_iter.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_relops.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_set.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_stack.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_tempbuf.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_threads.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_tree.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_uninitialized.h
OLD_FILES+=usr/include/c++/3.3/bits/stl_vector.h
OLD_FILES+=usr/include/c++/3.3/bits/stream_iterator.h
OLD_FILES+=usr/include/c++/3.3/bits/streambuf.tcc
OLD_FILES+=usr/include/c++/3.3/bits/streambuf_iterator.h
OLD_FILES+=usr/include/c++/3.3/bits/stringfwd.h
OLD_FILES+=usr/include/c++/3.3/bits/time_members.h
OLD_FILES+=usr/include/c++/3.3/bits/type_traits.h
OLD_FILES+=usr/include/c++/3.3/bits/valarray_array.h
OLD_FILES+=usr/include/c++/3.3/bits/valarray_array.tcc
OLD_FILES+=usr/include/c++/3.3/bits/valarray_meta.h
OLD_FILES+=usr/include/c++/3.3/bits/vector.tcc
OLD_DIRS+=usr/include/c++/3.3/bits
OLD_FILES+=usr/include/c++/3.3/bitset
OLD_FILES+=usr/include/c++/3.3/cassert
OLD_FILES+=usr/include/c++/3.3/cctype
OLD_FILES+=usr/include/c++/3.3/cerrno
OLD_FILES+=usr/include/c++/3.3/cfloat
OLD_FILES+=usr/include/c++/3.3/ciso646
OLD_FILES+=usr/include/c++/3.3/climits
OLD_FILES+=usr/include/c++/3.3/clocale
OLD_FILES+=usr/include/c++/3.3/cmath
OLD_FILES+=usr/include/c++/3.3/complex
OLD_FILES+=usr/include/c++/3.3/csetjmp
OLD_FILES+=usr/include/c++/3.3/csignal
OLD_FILES+=usr/include/c++/3.3/cstdarg
OLD_FILES+=usr/include/c++/3.3/cstddef
OLD_FILES+=usr/include/c++/3.3/cstdio
OLD_FILES+=usr/include/c++/3.3/cstdlib
OLD_FILES+=usr/include/c++/3.3/cstring
OLD_FILES+=usr/include/c++/3.3/ctime
OLD_FILES+=usr/include/c++/3.3/cwchar
OLD_FILES+=usr/include/c++/3.3/cwctype
OLD_FILES+=usr/include/c++/3.3/cxxabi.h
OLD_FILES+=usr/include/c++/3.3/deque
OLD_FILES+=usr/include/c++/3.3/exception
OLD_FILES+=usr/include/c++/3.3/exception_defines.h
OLD_FILES+=usr/include/c++/3.3/ext/algorithm
OLD_FILES+=usr/include/c++/3.3/ext/enc_filebuf.h
OLD_FILES+=usr/include/c++/3.3/ext/functional
OLD_FILES+=usr/include/c++/3.3/ext/hash_map
OLD_FILES+=usr/include/c++/3.3/ext/hash_set
OLD_FILES+=usr/include/c++/3.3/ext/iterator
OLD_FILES+=usr/include/c++/3.3/ext/memory
OLD_FILES+=usr/include/c++/3.3/ext/numeric
OLD_FILES+=usr/include/c++/3.3/ext/rb_tree
OLD_FILES+=usr/include/c++/3.3/ext/rope
OLD_FILES+=usr/include/c++/3.3/ext/ropeimpl.h
OLD_FILES+=usr/include/c++/3.3/ext/slist
OLD_FILES+=usr/include/c++/3.3/ext/stdio_filebuf.h
OLD_FILES+=usr/include/c++/3.3/ext/stl_hash_fun.h
OLD_FILES+=usr/include/c++/3.3/ext/stl_hashtable.h
OLD_FILES+=usr/include/c++/3.3/ext/stl_rope.h
OLD_DIRS+=usr/include/c++/3.3/ext
OLD_FILES+=usr/include/c++/3.3/fstream
OLD_FILES+=usr/include/c++/3.3/functional
OLD_FILES+=usr/include/c++/3.3/iomanip
OLD_FILES+=usr/include/c++/3.3/ios
OLD_FILES+=usr/include/c++/3.3/iosfwd
OLD_FILES+=usr/include/c++/3.3/iostream
OLD_FILES+=usr/include/c++/3.3/istream
OLD_FILES+=usr/include/c++/3.3/iterator
OLD_FILES+=usr/include/c++/3.3/limits
OLD_FILES+=usr/include/c++/3.3/list
OLD_FILES+=usr/include/c++/3.3/locale
OLD_FILES+=usr/include/c++/3.3/map
OLD_FILES+=usr/include/c++/3.3/memory
OLD_FILES+=usr/include/c++/3.3/new
OLD_FILES+=usr/include/c++/3.3/numeric
OLD_FILES+=usr/include/c++/3.3/ostream
OLD_FILES+=usr/include/c++/3.3/queue
OLD_FILES+=usr/include/c++/3.3/set
OLD_FILES+=usr/include/c++/3.3/sstream
OLD_FILES+=usr/include/c++/3.3/stack
OLD_FILES+=usr/include/c++/3.3/stdexcept
OLD_FILES+=usr/include/c++/3.3/streambuf
OLD_FILES+=usr/include/c++/3.3/string
OLD_FILES+=usr/include/c++/3.3/typeinfo
OLD_FILES+=usr/include/c++/3.3/utility
OLD_FILES+=usr/include/c++/3.3/valarray
OLD_FILES+=usr/include/c++/3.3/vector
# 20040713: fla(4) removed.
OLD_FILES+=usr/share/man/man4/fla.4.gz
# 200407XX
OLD_FILES+=usr/sbin/kernbb
OLD_FILES+=usr/sbin/ntp-genkeys
OLD_FILES+=usr/sbin/ntptimeset
OLD_FILES+=usr/share/man/man8/kernbb.8.gz
OLD_FILES+=usr/share/man/man8/ntp-genkeys.8.gz
# 20040627: usbdevs.h and usbdevs_data.h removal
OLD_FILES+=usr/include/dev/usb/usbdevs.h
OLD_FILES+=usr/include/dev/usb/usbdevs_data.h
# 200406XX
OLD_FILES+=usr/bin/gasp
OLD_FILES+=usr/bin/gdbreplay
OLD_FILES+=usr/share/man/man1/gasp.1.gz
OLD_FILES+=sbin/mountd
OLD_FILES+=sbin/mount_fdesc
OLD_FILES+=sbin/mount_umap
OLD_FILES+=sbin/mount_union
OLD_FILES+=sbin/mount_msdos
OLD_FILES+=sbin/mount_null
OLD_FILES+=sbin/mount_kernfs
# 200405XX: arl
OLD_FILES+=usr/sbin/arlconfig
OLD_FILES+=usr/share/man/man8/arlconfig.8.gz
# 200403XX
OLD_FILES+=bin/raidctl
OLD_FILES+=sbin/raidctl
OLD_FILES+=usr/bin/sasc
OLD_FILES+=usr/sbin/sgsc
OLD_FILES+=usr/sbin/stlload
OLD_FILES+=usr/sbin/stlstats
OLD_FILES+=usr/share/man/man1/sasc.1.gz
OLD_FILES+=usr/share/man/man1/sgsc.1.gz
OLD_FILES+=usr/share/man/man4/i386/stl.4.gz
OLD_FILES+=usr/share/man/man8/raidctl.8.gz
# 20040229: clean_environment() was removed after 3 days
OLD_FILES+=usr/share/man/man3/clean_environment.3.gz
# 20040119: installed as `isdntel' in newer systems
OLD_FILES+=etc/isdn/isdntel.sh
# 200XYYZZ: /lib transition clitches
OLD_FILES+=lib/libalias.so
OLD_FILES+=lib/libatm.so
OLD_FILES+=lib/libbsdxml.so
OLD_FILES+=lib/libc.so
OLD_FILES+=lib/libcam.so
OLD_FILES+=lib/libcrypt.so
OLD_FILES+=lib/libcrypto.so
OLD_FILES+=lib/libdevstat.so
OLD_FILES+=lib/libedit.so
OLD_FILES+=lib/libgeom.so
OLD_FILES+=lib/libipsec.so
OLD_FILES+=lib/libipx.so
OLD_FILES+=lib/libkvm.so
OLD_FILES+=lib/libm.so
OLD_FILES+=lib/libmd.so
OLD_FILES+=lib/libncurses.so
OLD_FILES+=lib/libreadline.so
OLD_FILES+=lib/libsbuf.so
OLD_FILES+=lib/libufs.so
OLD_FILES+=lib/libz.so
# 200312XX
OLD_FILES+=bin/cxconfig
OLD_FILES+=sbin/cxconfig
OLD_FILES+=usr/share/man/man8/cxconfig.8.gz
# 20031016: MULTI_DRIVER_MODULE macro removed
OLD_FILES+=usr/share/man/man9/MULTI_DRIVER_MODULE.9.gz
# 200309XX
OLD_FILES+=usr/bin/symorder
OLD_FILES+=usr/share/man/man1/symorder.1.gz
# 200308XX
OLD_FILES+=usr/sbin/amldb
OLD_FILES+=usr/share/man/man8/amldb.8.gz
# 200307XX
OLD_FILES+=sbin/mount_nwfs
OLD_FILES+=sbin/mount_portalfs
OLD_FILES+=sbin/mount_smbfs
# 200306XX
OLD_FILES+=usr/sbin/dev_mkdb
OLD_FILES+=usr/share/man/man8/dev_mkdb.8.gz
# 200304XX
OLD_FILES+=usr/lib/libcipher.a
OLD_FILES+=usr/lib/libcipher.so
OLD_FILES+=usr/lib/libcipher_p.a
OLD_FILES+=usr/lib/libgmp.a
OLD_FILES+=usr/lib/libgmp.so
OLD_FILES+=usr/lib/libgmp_p.a
OLD_FILES+=usr/lib/libperl.a
OLD_FILES+=usr/lib/libperl.so
OLD_FILES+=usr/lib/libperl_p.a
OLD_FILES+=usr/lib/libposix1e.a
OLD_FILES+=usr/lib/libposix1e.so
OLD_FILES+=usr/lib/libposix1e_p.a
OLD_FILES+=usr/lib/libskey.a
OLD_FILES+=usr/lib/libskey.so
OLD_FILES+=usr/lib/libskey_p.a
OLD_FILES+=usr/libexec/tradcpp0
OLD_FILES+=usr/libexec/cpp0
# 200304XX: removal of xten
OLD_FILES+=usr/libexec/xtend
OLD_FILES+=usr/sbin/xten
OLD_FILES+=usr/share/man/man1/xten.1.gz
OLD_FILES+=usr/share/man/man8/xtend.8.gz
# 200303XX
OLD_FILES+=usr/lib/libacl.so
OLD_FILES+=usr/lib/libdescrypt.so
OLD_FILES+=usr/lib/libf2c.so
OLD_FILES+=usr/lib/libg++.so
OLD_FILES+=usr/lib/libkdb.so
OLD_FILES+=usr/lib/librsaINTL.so
OLD_FILES+=usr/lib/libscrypt.so
OLD_FILES+=usr/lib/libss.so
# 200302XX
OLD_FILES+=usr/lib/libacl.a
OLD_FILES+=usr/lib/libacl_p.a
OLD_FILES+=usr/lib/libkadm.a
OLD_FILES+=usr/lib/libkadm.so
OLD_FILES+=usr/lib/libkadm_p.a
OLD_FILES+=usr/lib/libkafs.a
OLD_FILES+=usr/lib/libkafs.so
OLD_FILES+=usr/lib/libkafs_p.a
OLD_FILES+=usr/lib/libkdb.a
OLD_FILES+=usr/lib/libkdb_p.a
OLD_FILES+=usr/lib/libkrb.a
OLD_FILES+=usr/lib/libkrb.so
OLD_FILES+=usr/lib/libkrb_p.a
OLD_FILES+=usr/share/man/man3/SSL_CIPHER_get_name.3.gz
OLD_FILES+=usr/share/man/man3/SSL_COMP_add_compression_method.3
OLD_FILES+=usr/share/man/man3/SSL_CTX_add_extra_chain_cert.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_add_session.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_ctrl.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_flush_sessions.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_free.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_get_verify_mode.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_load_verify_locations.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_new.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_sess_number.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_sess_set_cache_size.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_sess_set_get_cb.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_sessions.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_cert_store.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_cert_verify_callback.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_cipher_list.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_client_CA_list.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_client_cert_cb.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_default_passwd_cb.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_generate_session_id.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_info_callback.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_max_cert_list.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_mode.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_msg_callback.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_options.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_quiet_shutdown.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_session_cache_mode.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_session_id_context.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_ssl_version.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_timeout.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_tmp_dh_callback.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_tmp_rsa_callback.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_set_verify.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_use_certificate.3.gz
OLD_FILES+=usr/share/man/man3/SSL_SESSION_free.3.gz
OLD_FILES+=usr/share/man/man3/SSL_SESSION_get_ex_new_index.3.gz
OLD_FILES+=usr/share/man/man3/SSL_SESSION_get_time.3.gz
OLD_FILES+=usr/share/man/man3/SSL_accept.3.gz
OLD_FILES+=usr/share/man/man3/SSL_alert_type_string.3.gz
OLD_FILES+=usr/share/man/man3/SSL_clear.3.gz
OLD_FILES+=usr/share/man/man3/SSL_connect.3.gz
OLD_FILES+=usr/share/man/man3/SSL_do_handshake.3.gz
OLD_FILES+=usr/share/man/man3/SSL_free.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_SSL_CTX.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_ciphers.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_client_CA_list.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_current_cipher.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_default_timeout.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_error.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_ex_data_X509_STORE_CTX_idx.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_ex_new_index.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_fd.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_peer_cert_chain.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_peer_certificate.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_rbio.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_session.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_verify_result.3.gz
OLD_FILES+=usr/share/man/man3/SSL_get_version.3.gz
OLD_FILES+=usr/share/man/man3/SSL_library_init.3.gz
OLD_FILES+=usr/share/man/man3/SSL_load_client_CA_file.3.gz
OLD_FILES+=usr/share/man/man3/SSL_new.3.gz
OLD_FILES+=usr/share/man/man3/SSL_pending.3.gz
OLD_FILES+=usr/share/man/man3/SSL_read.3.gz
OLD_FILES+=usr/share/man/man3/SSL_rstate_string.3.gz
OLD_FILES+=usr/share/man/man3/SSL_session_reused.3.gz
OLD_FILES+=usr/share/man/man3/SSL_set_bio.3.gz
OLD_FILES+=usr/share/man/man3/SSL_set_connect_state.3.gz
OLD_FILES+=usr/share/man/man3/SSL_set_fd.3.gz
OLD_FILES+=usr/share/man/man3/SSL_set_session.3.gz
OLD_FILES+=usr/share/man/man3/SSL_set_shutdown.3.gz
OLD_FILES+=usr/share/man/man3/SSL_set_verify_result.3.gz
OLD_FILES+=usr/share/man/man3/SSL_shutdown.3.gz
OLD_FILES+=usr/share/man/man3/SSL_state_string.3.gz
OLD_FILES+=usr/share/man/man3/SSL_want.3.gz
OLD_FILES+=usr/share/man/man3/SSL_write.3.gz
OLD_FILES+=usr/share/man/man3/d2i_SSL_SESSION.3.gz
# 200301XX
OLD_FILES+=usr/share/man/man3/des_3cbc_encrypt.3.gz
OLD_FILES+=usr/share/man/man3/des_3ecb_encrypt.3.gz
OLD_FILES+=usr/share/man/man3/des_cbc_cksum.3.gz
OLD_FILES+=usr/share/man/man3/des_cbc_encrypt.3.gz
OLD_FILES+=usr/share/man/man3/des_cfb_encrypt.3.gz
OLD_FILES+=usr/share/man/man3/des_ecb_encrypt.3.gz
OLD_FILES+=usr/share/man/man3/des_enc_read.3.gz
OLD_FILES+=usr/share/man/man3/des_enc_write.3.gz
OLD_FILES+=usr/share/man/man3/des_is_weak_key.3.gz
OLD_FILES+=usr/share/man/man3/des_key_sched.3.gz
OLD_FILES+=usr/share/man/man3/des_ofb_encrypt.3.gz
OLD_FILES+=usr/share/man/man3/des_pcbc_encrypt.3.gz
OLD_FILES+=usr/share/man/man3/des_quad_cksum.3.gz
OLD_FILES+=usr/share/man/man3/des_random_key.3.gz
OLD_FILES+=usr/share/man/man3/des_read_2password.3.gz
OLD_FILES+=usr/share/man/man3/des_read_password.3.gz
OLD_FILES+=usr/share/man/man3/des_read_pw_string.3.gz
OLD_FILES+=usr/share/man/man3/des_set_key.3.gz
OLD_FILES+=usr/share/man/man3/des_set_odd_parity.3.gz
OLD_FILES+=usr/share/man/man3/des_string_to_2key.3.gz
OLD_FILES+=usr/share/man/man3/des_string_to_key.3.gz
# 200212XX
OLD_FILES+=usr/sbin/kenv
OLD_FILES+=usr/bin/kenv
OLD_FILES+=usr/sbin/elf2aout
# 200210XX
OLD_FILES+=usr/include/libusbhid.h
OLD_FILES+=usr/share/man/man3/All_FreeBSD.3.gz
OLD_FILES+=usr/share/man/man3/CheckRules.3.gz
OLD_FILES+=usr/share/man/man3/ChunkCanBeRoot.3.gz
OLD_FILES+=usr/share/man/man3/Clone_Disk.3.gz
OLD_FILES+=usr/share/man/man3/Collapse_Chunk.3.gz
OLD_FILES+=usr/share/man/man3/Collapse_Disk.3.gz
OLD_FILES+=usr/share/man/man3/Create_Chunk.3.gz
OLD_FILES+=usr/share/man/man3/Create_Chunk_DWIM.3.gz
OLD_FILES+=usr/share/man/man3/Cyl_Aligned.3.gz
OLD_FILES+=usr/share/man/man3/Debug_Disk.3.gz
OLD_FILES+=usr/share/man/man3/Delete_Chunk.3.gz
OLD_FILES+=usr/share/man/man3/Disk_Names.3.gz
OLD_FILES+=usr/share/man/man3/Free_Disk.3.gz
OLD_FILES+=usr/share/man/man3/MakeDev.3.gz
OLD_FILES+=usr/share/man/man3/MakeDevDisk.3.gz
OLD_FILES+=usr/share/man/man3/Next_Cyl_Aligned.3.gz
OLD_FILES+=usr/share/man/man3/Next_Track_Aligned.3.gz
OLD_FILES+=usr/share/man/man3/Open_Disk.3.gz
OLD_FILES+=usr/share/man/man3/Prev_Cyl_Aligned.3.gz
OLD_FILES+=usr/share/man/man3/Prev_Track_Aligned.3.gz
OLD_FILES+=usr/share/man/man3/Set_Bios_Geom.3.gz
OLD_FILES+=usr/share/man/man3/Set_Boot_Blocks.3.gz
OLD_FILES+=usr/share/man/man3/Set_Boot_Mgr.3.gz
OLD_FILES+=usr/share/man/man3/ShowChunkFlags.3.gz
OLD_FILES+=usr/share/man/man3/Track_Aligned.3.gz
OLD_FILES+=usr/share/man/man3/Write_Disk.3.gz
OLD_FILES+=usr/share/man/man3/slice_type_name.3.gz
# 200210XX: most games moved to ports
OLD_FILES+=usr/share/man/man6/adventure.6.gz
OLD_FILES+=usr/share/man/man6/arithmetic.6.gz
OLD_FILES+=usr/share/man/man6/atc.6.gz
OLD_FILES+=usr/share/man/man6/backgammon.6.gz
OLD_FILES+=usr/share/man/man6/battlestar.6.gz
OLD_FILES+=usr/share/man/man6/bs.6.gz
OLD_FILES+=usr/share/man/man6/canfield.6.gz
OLD_FILES+=usr/share/man/man6/cfscores.6.gz
OLD_FILES+=usr/share/man/man6/cribbage.6.gz
OLD_FILES+=usr/share/man/man6/fish.6.gz
OLD_FILES+=usr/share/man/man6/hack.6.gz
OLD_FILES+=usr/share/man/man6/hangman.6.gz
OLD_FILES+=usr/share/man/man6/larn.6.gz
OLD_FILES+=usr/share/man/man6/mille.6.gz
OLD_FILES+=usr/share/man/man6/phantasia.6.gz
OLD_FILES+=usr/share/man/man6/piano.6.gz
OLD_FILES+=usr/share/man/man6/pig.6.gz
OLD_FILES+=usr/share/man/man6/quiz.6.gz
OLD_FILES+=usr/share/man/man6/rain.6.gz
OLD_FILES+=usr/share/man/man6/robots.6.gz
OLD_FILES+=usr/share/man/man6/rogue.6.gz
OLD_FILES+=usr/share/man/man6/sail.6.gz
OLD_FILES+=usr/share/man/man6/snake.6.gz
OLD_FILES+=usr/share/man/man6/snscore.6.gz
OLD_FILES+=usr/share/man/man6/trek.6.gz
OLD_FILES+=usr/share/man/man6/wargames.6.gz
OLD_FILES+=usr/share/man/man6/worm.6.gz
OLD_FILES+=usr/share/man/man6/worms.6.gz
OLD_FILES+=usr/share/man/man6/wump.6.gz
# 200207XX
OLD_FILES+=usr/share/man/man1aout/ar.1aout.gz
OLD_FILES+=usr/share/man/man1aout/as.1aout.gz
OLD_FILES+=usr/share/man/man1aout/ld.1aout.gz
OLD_FILES+=usr/share/man/man1aout/nm.1aout.gz
OLD_FILES+=usr/share/man/man1aout/ranlib.1aout.gz
OLD_FILES+=usr/share/man/man1aout/size.1aout.gz
OLD_FILES+=usr/share/man/man1aout/strings.1aout.gz
OLD_FILES+=usr/share/man/man1aout/strip.1aout.gz
OLD_FILES+=bin/mountd
OLD_FILES+=bin/nfsd
# 20020707 sbin/nfsd -> usr.sbin/nfsd
OLD_FILES+=sbin/nfsd
# 200206XX
OLD_FILES+=usr/lib/libpam_ssh.a
OLD_FILES+=usr/lib/libpam_ssh_p.a
OLD_FILES+=usr/bin/help
OLD_FILES+=usr/bin/sccs
.if ${TARGET_ARCH} != "amd64" && ${TARGET} != "arm" && ${TARGET_ARCH} != "i386" && ${TARGET} != "powerpc"
OLD_FILES+=usr/bin/gdbserver
.endif
OLD_FILES+=usr/bin/ssh-keysign
OLD_FILES+=usr/sbin/gifconfig
OLD_FILES+=usr/sbin/prefix
# 200205XX
OLD_FILES+=usr/bin/doscmd
# 200204XX
OLD_FILES+=usr/bin/a2p
OLD_FILES+=usr/bin/ptx
OLD_FILES+=usr/bin/pod2text
OLD_FILES+=usr/bin/pod2man
OLD_FILES+=usr/bin/pod2latex
OLD_FILES+=usr/bin/pod2html
OLD_FILES+=usr/bin/h2ph
OLD_FILES+=usr/bin/dprofpp
OLD_FILES+=usr/bin/c2ph
OLD_FILES+=usr/bin/h2xs
OLD_FILES+=usr/bin/pl2pm
OLD_FILES+=usr/bin/splain
OLD_FILES+=usr/bin/s2p
OLD_FILES+=usr/bin/find2perl
OLD_FILES+=usr/sbin/pkg_update
OLD_FILES+=usr/sbin/scriptdump
# 20020409 GC kget(1), userconfig is long dead.
OLD_FILES+=sbin/kget
OLD_FILES+=usr/share/man/man8/kget.8.gz
# 200203XX
OLD_FILES+=usr/lib/libss.a
OLD_FILES+=usr/lib/libss_p.a
OLD_FILES+=usr/lib/libtelnet.a
OLD_FILES+=usr/lib/libtelnet_p.a
OLD_FILES+=usr/sbin/diskpart
# 200202XX
OLD_FILES+=usr/bin/gprof4
# 200201XX
OLD_FILES+=usr/sbin/linux
# 2001XXXX
OLD_FILES+=usr/bin/joy
OLD_FILES+=usr/sbin/ibcs2
OLD_FILES+=usr/sbin/svr4
OLD_FILES+=usr/bin/chflags
OLD_FILES+=usr/sbin/uuconv
OLD_FILES+=usr/sbin/uuchk
OLD_FILES+=usr/sbin/portmap
OLD_FILES+=usr/sbin/pmap_set
OLD_FILES+=usr/sbin/pmap_dump
OLD_FILES+=usr/sbin/mcon
OLD_FILES+=usr/sbin/stlstty
OLD_FILES+=usr/sbin/ispppcontrol
OLD_FILES+=usr/sbin/rndcontrol
# 20011001: UUCP migration to ports
OLD_FILES+=usr/bin/uucp
OLD_FILES+=usr/bin/uulog
OLD_FILES+=usr/bin/uuname
OLD_FILES+=usr/bin/uupick
OLD_FILES+=usr/bin/uusched
OLD_FILES+=usr/bin/uustat
OLD_FILES+=usr/bin/uuto
OLD_FILES+=usr/bin/uux
OLD_FILES+=usr/libexec/uucp/uucico
OLD_FILES+=usr/libexec/uucp/uuxqt
OLD_FILES+=usr/libexec/uucpd
OLD_FILES+=usr/share/man/man1/uuconv.1.gz
OLD_FILES+=usr/share/man/man1/uucp.1.gz
OLD_FILES+=usr/share/man/man1/uulog.1.gz
OLD_FILES+=usr/share/man/man1/uuname.1.gz
OLD_FILES+=usr/share/man/man1/uupick.1.gz
OLD_FILES+=usr/share/man/man1/uustat.1.gz
OLD_FILES+=usr/share/man/man1/uuto.1.gz
OLD_FILES+=usr/share/man/man1/uux.1.gz
OLD_FILES+=usr/share/man/man8/uuchk.8.gz
OLD_FILES+=usr/share/man/man8/uucico.8.gz
OLD_FILES+=usr/share/man/man8/uucpd.8.gz
OLD_FILES+=usr/share/man/man8/uusched.8.gz
OLD_FILES+=usr/share/man/man8/uuxqt.8.gz
# 20010523 mount_portal -> mount_portalfs
OLD_FILES+=sbin/mount_portal
OLD_FILES+=usr/share/man/man8/mount_portal.8.gz
# 200104XX
OLD_FILES+=usr/lib/libdescrypt.a
OLD_FILES+=usr/lib/libscrypt.a
OLD_FILES+=usr/lib/libscrypt_p.a
OLD_FILES+=usr/sbin/pim6stat
OLD_FILES+=usr/sbin/pim6sd
OLD_FILES+=usr/sbin/pim6dd
# 20010217
OLD_FILES+=usr/share/doc/bind/misc/dns-setup
# 20001200
OLD_FILES+=usr/lib/libgcc_r_pic.a
# 200009XX
OLD_FILES+=usr/lib/libRSAglue.a
OLD_FILES+=usr/lib/libRSAglue.so
OLD_FILES+=usr/lib/librsaINTL.a
OLD_FILES+=usr/lib/librsaUSA.a
OLD_FILES+=usr/lib/librsaUSA.so
# 200002XX ?
OLD_FILES+=usr/lib/libf2c.a
OLD_FILES+=usr/lib/libf2c_p.a
OLD_FILES+=usr/lib/libg++.a
OLD_FILES+=usr/lib/libg++_p.a
# 20001006
OLD_FILES+=usr/bin/miniperl
# 20000810
OLD_FILES+=usr/bin/sperl
# 200001XX
OLD_FILES+=usr/sbin/apmconf
# 199911XX
OLD_FILES+=usr/sbin/ipfstat
OLD_FILES+=usr/sbin/ipmon
OLD_FILES+=usr/sbin/ipnat
OLD_FILES+=usr/sbin/bad144
OLD_FILES+=usr/sbin/wormcontrol
OLD_FILES+=usr/sbin/named-bootconf
OLD_FILES+=usr/sbin/kvm_mkdb
OLD_FILES+=usr/sbin/keyadmin
# 199909XX
OLD_FILES+=usr/lib/libdesrypt_p.a
OLD_FILES+=sbin/ft
# 199903XX
OLD_FILES+=sbin/modload
OLD_FILES+=sbin/modunload
OLD_FILES+=usr/sbin/natd
# 199812XX
OLD_FILES+=sbin/dset
# 199809XX
OLD_FILES+=sbin/scsi
OLD_FILES+=sbin/scsiformat
OLD_FILES+=usr/sbin/ncrcontrol
OLD_FILES+=usr/sbin/tickadj
# 199806XX
OLD_FILES+=usr/sbin/mkdosfs
# 199801XX
OLD_FILES+=sbin/mount_lfs
OLD_FILES+=sbin/newlfs
OLD_FILES+=sbin/dumplfs
OLD_FILES+=usr/sbin/qcamcontrol
OLD_FILES+=usr/sbin/supscan
# 1997XXXX
OLD_FILES+=usr/sbin/sysctl
OLD_FILES+=usr/sbin/ctm_scan
OLD_FILES+=usr/sbin/addgroup
OLD_FILES+=usr/sbin/rmgroup
# 1996XXXX
OLD_FILES+=sbin/rdisc
OLD_FILES+=usr/sbin/cdplay
OLD_FILES+=usr/sbin/supfilesrv
OLD_FILES+=usr/sbin/routed
OLD_FILES+=usr/sbin/lsdev
OLD_FILES+=usr/sbin/yppasswdd
## unsorted
# do we still support aout builds?
#OLD_FILES+=usr/lib/aout/c++rt0.o
#OLD_FILES+=usr/lib/aout/crt0.o
#OLD_FILES+=usr/lib/aout/gcrt0.o
#OLD_FILES+=usr/lib/aout/scrt0.o
#OLD_FILES+=usr/lib/aout/sgcrt0.o
OLD_FILES+=usr/lib/pam_ftp.so
OLD_FILES+=usr/share/man/man1/CA.pl.1.gz
OLD_FILES+=usr/share/man/man1/asn1parse.1.gz
OLD_FILES+=usr/share/man/man1/ca.1.gz
OLD_FILES+=usr/share/man/man1/ciphers.1.gz
OLD_FILES+=usr/share/man/man1/config.1.gz
OLD_FILES+=usr/share/man/man1/crl.1.gz
OLD_FILES+=usr/share/man/man1/crl2pkcs7.1.gz
OLD_FILES+=usr/share/man/man1/dgst.1.gz
OLD_FILES+=usr/share/man/man1/dhparam.1.gz
OLD_FILES+=usr/share/man/man1/doscmd.1.gz
OLD_FILES+=usr/share/man/man1/dsa.1.gz
OLD_FILES+=usr/share/man/man1/dsaparam.1.gz
OLD_FILES+=usr/share/man/man1/enc.1.gz
OLD_FILES+=usr/share/man/man1/gendsa.1.gz
OLD_FILES+=usr/share/man/man1/genrsa.1.gz
OLD_FILES+=usr/share/man/man1/getNAME.1.gz
OLD_FILES+=usr/share/man/man1/nseq.1.gz
OLD_FILES+=usr/share/man/man1/ocsp.1.gz
OLD_FILES+=usr/share/man/man1/openssl.1.gz
OLD_FILES+=usr/share/man/man1/pkcs12.1.gz
OLD_FILES+=usr/share/man/man1/pkcs7.1.gz
OLD_FILES+=usr/share/man/man1/pkcs8.1.gz
OLD_FILES+=usr/share/man/man1/rand.1.gz
OLD_FILES+=usr/share/man/man1/req.1.gz
OLD_FILES+=usr/share/man/man1/rsa.1.gz
OLD_FILES+=usr/share/man/man1/rsautl.1.gz
OLD_FILES+=usr/share/man/man1/s_client.1.gz
OLD_FILES+=usr/share/man/man1/s_server.1.gz
OLD_FILES+=usr/share/man/man1/sess_id.1.gz
OLD_FILES+=usr/share/man/man1/smime.1.gz
OLD_FILES+=usr/share/man/man1/speed.1.gz
OLD_FILES+=usr/share/man/man1/spkac.1.gz
OLD_FILES+=usr/share/man/man1/verify.1.gz
OLD_FILES+=usr/share/man/man1/version.1.gz
OLD_FILES+=usr/share/man/man1/x509.1.gz
OLD_FILES+=usr/share/man/man3/SSL_COMP_add_compression_method.3.gz
OLD_FILES+=usr/share/man/man3/SSL_CTX_get_ex_new_index.3.gz
OLD_FILES+=usr/share/man/man3/archive_entry_dup.3.gz
OLD_FILES+=usr/share/man/man3/archive_entry_set_tartype.3.gz
OLD_FILES+=usr/share/man/man3/archive_entry_tartype.3.gz
OLD_FILES+=usr/share/man/man3/archive_read_data_into_file.3.gz
OLD_FILES+=usr/share/man/man3/archive_read_open_tar.3.gz
OLD_FILES+=usr/share/man/man3/archive_read_support_format_gnutar.3.gz
OLD_FILES+=usr/share/man/man3/cipher.3.gz
OLD_FILES+=usr/share/man/man3/des_cipher.3.gz
OLD_FILES+=usr/share/man/man3/des_setkey.3.gz
OLD_FILES+=usr/share/man/man3/encrypt.3.gz
OLD_FILES+=usr/share/man/man3/endvfsent.3.gz
OLD_FILES+=usr/share/man/man3/getvfsbytype.3.gz
OLD_FILES+=usr/share/man/man3/getvfsent.3.gz
OLD_FILES+=usr/share/man/man3/isnanf.3.gz
OLD_FILES+=usr/share/man/man3/libautofs.3.gz
OLD_FILES+=usr/share/man/man3/pthread_attr_setsstack.3.gz
OLD_FILES+=usr/share/man/man3/pthread_getcancelstate.3.gz
OLD_FILES+=usr/share/man/man3/pthread_mutexattr_getpshared.3.gz
OLD_FILES+=usr/share/man/man3/pthread_mutexattr_setpshared.3.gz
OLD_FILES+=usr/share/man/man3/set_assertion_failure_callback.3.gz
OLD_FILES+=usr/share/man/man3/setkey.3.gz
OLD_FILES+=usr/share/man/man3/setvfsent.3.gz
OLD_FILES+=usr/share/man/man3/ssl.3.gz
OLD_FILES+=usr/share/man/man3/vfsisloadable.3.gz
OLD_FILES+=usr/share/man/man3/vfsload.3.gz
OLD_FILES+=usr/share/man/man4/als4000.4.gz
OLD_FILES+=usr/share/man/man4/csa.4.gz
OLD_FILES+=usr/share/man/man4/emu10k1.4.gz
OLD_FILES+=usr/share/man/man4/euc.4.gz
OLD_FILES+=usr/share/man/man4/gusc.4.gz
OLD_FILES+=usr/share/man/man4/if_fwp.4.gz
OLD_FILES+=usr/share/man/man4/lomac.4.gz
OLD_FILES+=usr/share/man/man4/maestro3.4.gz
OLD_FILES+=usr/share/man/man4/raid.4.gz
OLD_FILES+=usr/share/man/man4/sbc.4.gz
OLD_FILES+=usr/share/man/man4/sd.4.gz
OLD_FILES+=usr/share/man/man4/snc.4.gz
OLD_FILES+=usr/share/man/man4/st.4.gz
OLD_FILES+=usr/share/man/man4/uaudio.4.gz
OLD_FILES+=usr/share/man/man4/utf2.4.gz
OLD_FILES+=usr/share/man/man4/vinumdebug.4.gz
OLD_FILES+=usr/share/man/man5/disklabel.5.gz
OLD_FILES+=usr/share/man/man5/dm.conf.5.gz
OLD_FILES+=usr/share/man/man5/ranlib.5.gz
OLD_FILES+=usr/share/man/man5/utf2.5.gz
OLD_FILES+=usr/share/man/man7/groff_mwww.7.gz
OLD_FILES+=usr/share/man/man7/mmroff.7.gz
OLD_FILES+=usr/share/man/man7/mwww.7.gz
OLD_FILES+=usr/share/man/man8/apm.8.gz
OLD_FILES+=usr/share/man/man8/apmconf.8.gz
OLD_FILES+=usr/share/man/man8/apmd.8.gz
OLD_FILES+=usr/share/man/man8/dm.8.gz
OLD_FILES+=usr/share/man/man8/pam_ftp.8.gz
OLD_FILES+=usr/share/man/man8/pam_wheel.8.gz
OLD_FILES+=usr/share/man/man8/sconfig.8.gz
OLD_FILES+=usr/share/man/man8/ssl.8.gz
OLD_FILES+=usr/share/man/man8/wlconfig.8.gz
OLD_FILES+=usr/share/man/man9/CURSIG.9.gz
OLD_FILES+=usr/share/man/man9/VFS_INIT.9.gz
OLD_FILES+=usr/share/man/man9/at_exit.9.gz
OLD_FILES+=usr/share/man/man9/at_fork.9.gz
OLD_FILES+=usr/share/man/man9/cdevsw_add.9.gz
OLD_FILES+=usr/share/man/man9/cdevsw_remove.9.gz
OLD_FILES+=usr/share/man/man9/cv_waitq_empty.9.gz
OLD_FILES+=usr/share/man/man9/cv_waitq_remove.9.gz
OLD_FILES+=usr/share/man/man9/endtsleep.9.gz
OLD_FILES+=usr/share/man/man9/jumbo.9.gz
OLD_FILES+=usr/share/man/man9/jumbo_freem.9.gz
OLD_FILES+=usr/share/man/man9/jumbo_pg_alloc.9.gz
OLD_FILES+=usr/share/man/man9/jumbo_pg_free.9.gz
OLD_FILES+=usr/share/man/man9/jumbo_pg_steal.9.gz
OLD_FILES+=usr/share/man/man9/jumbo_phys_to_kva.9.gz
OLD_FILES+=usr/share/man/man9/jumbo_vm_init.9.gz
OLD_FILES+=usr/share/man/man9/mac_biba.9.gz
OLD_FILES+=usr/share/man/man9/mac_bsdextended.9.gz
OLD_FILES+=usr/share/man/man9/mono_time.9.gz
OLD_FILES+=usr/share/man/man9/p1003_1b.9.gz
OLD_FILES+=usr/share/man/man9/pmap_prefault.9.gz
OLD_FILES+=usr/share/man/man9/posix4.9.gz
OLD_FILES+=usr/share/man/man9/resource_query_name.9.gz
OLD_FILES+=usr/share/man/man9/resource_query_string.9.gz
OLD_FILES+=usr/share/man/man9/resource_query_unit.9.gz
OLD_FILES+=usr/share/man/man9/rm_at_exit.9.gz
OLD_FILES+=usr/share/man/man9/rm_at_fork.9.gz
OLD_FILES+=usr/share/man/man9/runtime.9.gz
OLD_FILES+=usr/share/man/man9/sleepinit.9.gz
OLD_FILES+=usr/share/man/man9/unsleep.9.gz
OLD_FILES+=usr/share/games/atc/Game_List
OLD_FILES+=usr/share/games/atc/Killer
OLD_FILES+=usr/share/games/atc/crossover
OLD_FILES+=usr/share/games/atc/default
OLD_FILES+=usr/share/games/atc/easy
OLD_FILES+=usr/share/games/atc/game_2
OLD_FILES+=usr/share/games/larn/larnmaze
OLD_FILES+=usr/share/games/larn/larnopts
OLD_FILES+=usr/share/games/larn/larn.help
OLD_FILES+=usr/share/games/quiz.db/africa
OLD_FILES+=usr/share/games/quiz.db/america
OLD_FILES+=usr/share/games/quiz.db/areas
OLD_FILES+=usr/share/games/quiz.db/arith
OLD_FILES+=usr/share/games/quiz.db/asia
OLD_FILES+=usr/share/games/quiz.db/babies
OLD_FILES+=usr/share/games/quiz.db/bard
OLD_FILES+=usr/share/games/quiz.db/chinese
OLD_FILES+=usr/share/games/quiz.db/collectives
OLD_FILES+=usr/share/games/quiz.db/ed
OLD_FILES+=usr/share/games/quiz.db/elements
OLD_FILES+=usr/share/games/quiz.db/europe
OLD_FILES+=usr/share/games/quiz.db/flowers
OLD_FILES+=usr/share/games/quiz.db/greek
OLD_FILES+=usr/share/games/quiz.db/inca
OLD_FILES+=usr/share/games/quiz.db/index
OLD_FILES+=usr/share/games/quiz.db/latin
OLD_FILES+=usr/share/games/quiz.db/locomotive
OLD_FILES+=usr/share/games/quiz.db/midearth
OLD_FILES+=usr/share/games/quiz.db/morse
OLD_FILES+=usr/share/games/quiz.db/murders
OLD_FILES+=usr/share/games/quiz.db/poetry
OLD_FILES+=usr/share/games/quiz.db/posneg
OLD_FILES+=usr/share/games/quiz.db/pres
OLD_FILES+=usr/share/games/quiz.db/province
OLD_FILES+=usr/share/games/quiz.db/seq-easy
OLD_FILES+=usr/share/games/quiz.db/seq-hard
OLD_FILES+=usr/share/games/quiz.db/sexes
OLD_FILES+=usr/share/games/quiz.db/sov
OLD_FILES+=usr/share/games/quiz.db/spell
OLD_FILES+=usr/share/games/quiz.db/state
OLD_FILES+=usr/share/games/quiz.db/trek
OLD_FILES+=usr/share/games/quiz.db/ucc
OLD_FILES+=usr/share/games/cribbage.instr
OLD_FILES+=usr/share/games/fish.instr
OLD_FILES+=usr/share/games/wump.info
OLD_FILES+=usr/games/hide/adventure
OLD_FILES+=usr/games/hide/arithmetic
OLD_FILES+=usr/games/hide/atc
OLD_FILES+=usr/games/hide/backgammon
OLD_FILES+=usr/games/hide/teachgammon
OLD_FILES+=usr/games/hide/battlestar
OLD_FILES+=usr/games/hide/bs
OLD_FILES+=usr/games/hide/canfield
OLD_FILES+=usr/games/hide/cribbage
OLD_FILES+=usr/games/hide/fish
OLD_FILES+=usr/games/hide/hack
OLD_FILES+=usr/games/hide/hangman
OLD_FILES+=usr/games/hide/larn
OLD_FILES+=usr/games/hide/mille
OLD_FILES+=usr/games/hide/phantasia
OLD_FILES+=usr/games/hide/quiz
OLD_FILES+=usr/games/hide/robots
OLD_FILES+=usr/games/hide/rogue
OLD_FILES+=usr/games/hide/sail
OLD_FILES+=usr/games/hide/snake
OLD_FILES+=usr/games/hide/trek
OLD_FILES+=usr/games/hide/worm
OLD_FILES+=usr/games/hide/wump
OLD_FILES+=usr/games/adventure
OLD_FILES+=usr/games/arithmetic
OLD_FILES+=usr/games/atc
OLD_FILES+=usr/games/backgammon
OLD_FILES+=usr/games/teachgammon
OLD_FILES+=usr/games/battlestar
OLD_FILES+=usr/games/bs
OLD_FILES+=usr/games/canfield
OLD_FILES+=usr/games/cfscores
OLD_FILES+=usr/games/cribbage
OLD_FILES+=usr/games/dm
OLD_FILES+=usr/games/fish
OLD_FILES+=usr/games/hack
OLD_FILES+=usr/games/hangman
OLD_FILES+=usr/games/larn
OLD_FILES+=usr/games/mille
OLD_FILES+=usr/games/phantasia
OLD_FILES+=usr/games/piano
OLD_FILES+=usr/games/pig
OLD_FILES+=usr/games/quiz
OLD_FILES+=usr/games/rain
OLD_FILES+=usr/games/robots
OLD_FILES+=usr/games/rogue
OLD_FILES+=usr/games/sail
OLD_FILES+=usr/games/snake
OLD_FILES+=usr/games/snscore
OLD_FILES+=usr/games/trek
OLD_FILES+=usr/games/wargames
OLD_FILES+=usr/games/worm
OLD_FILES+=usr/games/worms
OLD_FILES+=usr/games/wump
OLD_FILES+=sbin/mount_reiserfs
OLD_FILES+=usr/include/cam/cam_extend.h
OLD_FILES+=usr/include/dev/wi/wi_hostap.h
OLD_FILES+=usr/include/disktab.h
OLD_FILES+=usr/include/g++/FlexLexer.h
OLD_FILES+=usr/include/g++/PlotFile.h
OLD_FILES+=usr/include/g++/SFile.h
OLD_FILES+=usr/include/g++/_G_config.h
OLD_FILES+=usr/include/g++/algo.h
OLD_FILES+=usr/include/g++/algobase.h
OLD_FILES+=usr/include/g++/algorithm
OLD_FILES+=usr/include/g++/alloc.h
OLD_FILES+=usr/include/g++/bitset
OLD_FILES+=usr/include/g++/builtinbuf.h
OLD_FILES+=usr/include/g++/bvector.h
OLD_FILES+=usr/include/g++/cassert
OLD_FILES+=usr/include/g++/cctype
OLD_FILES+=usr/include/g++/cerrno
OLD_FILES+=usr/include/g++/cfloat
OLD_FILES+=usr/include/g++/ciso646
OLD_FILES+=usr/include/g++/climits
OLD_FILES+=usr/include/g++/clocale
OLD_FILES+=usr/include/g++/cmath
OLD_FILES+=usr/include/g++/complex
OLD_FILES+=usr/include/g++/complex.h
OLD_FILES+=usr/include/g++/csetjmp
OLD_FILES+=usr/include/g++/csignal
OLD_FILES+=usr/include/g++/cstdarg
OLD_FILES+=usr/include/g++/cstddef
OLD_FILES+=usr/include/g++/cstdio
OLD_FILES+=usr/include/g++/cstdlib
OLD_FILES+=usr/include/g++/cstring
OLD_FILES+=usr/include/g++/ctime
OLD_FILES+=usr/include/g++/cwchar
OLD_FILES+=usr/include/g++/cwctype
OLD_FILES+=usr/include/g++/defalloc.h
OLD_FILES+=usr/include/g++/deque
OLD_FILES+=usr/include/g++/deque.h
OLD_FILES+=usr/include/g++/editbuf.h
OLD_FILES+=usr/include/g++/exception
OLD_FILES+=usr/include/g++/floatio.h
OLD_FILES+=usr/include/g++/fstream
OLD_FILES+=usr/include/g++/fstream.h
OLD_FILES+=usr/include/g++/function.h
OLD_FILES+=usr/include/g++/functional
OLD_FILES+=usr/include/g++/hash_map
OLD_FILES+=usr/include/g++/hash_map.h
OLD_FILES+=usr/include/g++/hash_set
OLD_FILES+=usr/include/g++/hash_set.h
OLD_FILES+=usr/include/g++/hashtable.h
OLD_FILES+=usr/include/g++/heap.h
OLD_FILES+=usr/include/g++/indstream.h
OLD_FILES+=usr/include/g++/iolibio.h
OLD_FILES+=usr/include/g++/iomanip
OLD_FILES+=usr/include/g++/iomanip.h
OLD_FILES+=usr/include/g++/iosfwd
OLD_FILES+=usr/include/g++/iostdio.h
OLD_FILES+=usr/include/g++/iostream
OLD_FILES+=usr/include/g++/iostream.h
OLD_FILES+=usr/include/g++/iostreamP.h
OLD_FILES+=usr/include/g++/istream.h
OLD_FILES+=usr/include/g++/iterator
OLD_FILES+=usr/include/g++/iterator.h
OLD_FILES+=usr/include/g++/libio.h
OLD_FILES+=usr/include/g++/libioP.h
OLD_FILES+=usr/include/g++/list
OLD_FILES+=usr/include/g++/list.h
OLD_FILES+=usr/include/g++/map
OLD_FILES+=usr/include/g++/map.h
OLD_FILES+=usr/include/g++/memory
OLD_FILES+=usr/include/g++/multimap.h
OLD_FILES+=usr/include/g++/multiset.h
OLD_FILES+=usr/include/g++/new
OLD_FILES+=usr/include/g++/new.h
OLD_FILES+=usr/include/g++/numeric
OLD_FILES+=usr/include/g++/ostream.h
OLD_FILES+=usr/include/g++/pair.h
OLD_FILES+=usr/include/g++/parsestream.h
OLD_FILES+=usr/include/g++/pfstream.h
OLD_FILES+=usr/include/g++/procbuf.h
OLD_FILES+=usr/include/g++/pthread_alloc
OLD_FILES+=usr/include/g++/pthread_alloc.h
OLD_FILES+=usr/include/g++/queue
OLD_FILES+=usr/include/g++/rope
OLD_FILES+=usr/include/g++/rope.h
OLD_FILES+=usr/include/g++/ropeimpl.h
OLD_FILES+=usr/include/g++/set
OLD_FILES+=usr/include/g++/set.h
OLD_FILES+=usr/include/g++/slist
OLD_FILES+=usr/include/g++/slist.h
OLD_FILES+=usr/include/g++/sstream
OLD_FILES+=usr/include/g++/stack
OLD_FILES+=usr/include/g++/stack.h
OLD_FILES+=usr/include/g++/std/bastring.cc
OLD_FILES+=usr/include/g++/std/bastring.h
OLD_FILES+=usr/include/g++/std/complext.cc
OLD_FILES+=usr/include/g++/std/complext.h
OLD_FILES+=usr/include/g++/std/dcomplex.h
OLD_FILES+=usr/include/g++/std/fcomplex.h
OLD_FILES+=usr/include/g++/std/gslice.h
OLD_FILES+=usr/include/g++/std/gslice_array.h
OLD_FILES+=usr/include/g++/std/indirect_array.h
OLD_FILES+=usr/include/g++/std/ldcomplex.h
OLD_FILES+=usr/include/g++/std/mask_array.h
OLD_FILES+=usr/include/g++/std/slice.h
OLD_FILES+=usr/include/g++/std/slice_array.h
OLD_FILES+=usr/include/g++/std/std_valarray.h
OLD_FILES+=usr/include/g++/std/straits.h
OLD_FILES+=usr/include/g++/std/valarray_array.h
OLD_FILES+=usr/include/g++/std/valarray_array.tcc
OLD_FILES+=usr/include/g++/std/valarray_meta.h
OLD_FILES+=usr/include/g++/stdexcept
OLD_FILES+=usr/include/g++/stdiostream.h
OLD_FILES+=usr/include/g++/stl.h
OLD_FILES+=usr/include/g++/stl_algo.h
OLD_FILES+=usr/include/g++/stl_algobase.h
OLD_FILES+=usr/include/g++/stl_alloc.h
OLD_FILES+=usr/include/g++/stl_bvector.h
OLD_FILES+=usr/include/g++/stl_config.h
OLD_FILES+=usr/include/g++/stl_construct.h
OLD_FILES+=usr/include/g++/stl_deque.h
OLD_FILES+=usr/include/g++/stl_function.h
OLD_FILES+=usr/include/g++/stl_hash_fun.h
OLD_FILES+=usr/include/g++/stl_hash_map.h
OLD_FILES+=usr/include/g++/stl_hash_set.h
OLD_FILES+=usr/include/g++/stl_hashtable.h
OLD_FILES+=usr/include/g++/stl_heap.h
OLD_FILES+=usr/include/g++/stl_iterator.h
OLD_FILES+=usr/include/g++/stl_list.h
OLD_FILES+=usr/include/g++/stl_map.h
OLD_FILES+=usr/include/g++/stl_multimap.h
OLD_FILES+=usr/include/g++/stl_multiset.h
OLD_FILES+=usr/include/g++/stl_numeric.h
OLD_FILES+=usr/include/g++/stl_pair.h
OLD_FILES+=usr/include/g++/stl_queue.h
OLD_FILES+=usr/include/g++/stl_raw_storage_iter.h
OLD_FILES+=usr/include/g++/stl_relops.h
OLD_FILES+=usr/include/g++/stl_rope.h
OLD_FILES+=usr/include/g++/stl_set.h
OLD_FILES+=usr/include/g++/stl_slist.h
OLD_FILES+=usr/include/g++/stl_stack.h
OLD_FILES+=usr/include/g++/stl_tempbuf.h
OLD_FILES+=usr/include/g++/stl_tree.h
OLD_FILES+=usr/include/g++/stl_uninitialized.h
OLD_FILES+=usr/include/g++/stl_vector.h
OLD_FILES+=usr/include/g++/stream.h
OLD_FILES+=usr/include/g++/streambuf.h
OLD_FILES+=usr/include/g++/strfile.h
OLD_FILES+=usr/include/g++/string
OLD_FILES+=usr/include/g++/strstream
OLD_FILES+=usr/include/g++/strstream.h
OLD_FILES+=usr/include/g++/tempbuf.h
OLD_FILES+=usr/include/g++/tree.h
OLD_FILES+=usr/include/g++/type_traits.h
OLD_FILES+=usr/include/g++/typeinfo
OLD_FILES+=usr/include/g++/utility
OLD_FILES+=usr/include/g++/valarray
OLD_FILES+=usr/include/g++/vector
OLD_FILES+=usr/include/g++/vector.h
OLD_FILES+=usr/include/gmp.h
OLD_FILES+=usr/include/isc/assertions.h
OLD_FILES+=usr/include/isc/ctl.h
OLD_FILES+=usr/include/isc/dst.h
OLD_FILES+=usr/include/isc/eventlib.h
OLD_FILES+=usr/include/isc/heap.h
OLD_FILES+=usr/include/isc/irpmarshall.h
OLD_FILES+=usr/include/isc/list.h
OLD_FILES+=usr/include/isc/logging.h
OLD_FILES+=usr/include/isc/memcluster.h
OLD_FILES+=usr/include/isc/misc.h
OLD_FILES+=usr/include/isc/tree.h
OLD_FILES+=usr/include/machine/ansi.h
OLD_FILES+=usr/include/machine/apic.h
OLD_FILES+=usr/include/machine/asc_ioctl.h
OLD_FILES+=usr/include/machine/asnames.h
OLD_FILES+=usr/include/machine/bus_at386.h
OLD_FILES+=usr/include/machine/bus_memio.h
OLD_FILES+=usr/include/machine/bus_pc98.h
OLD_FILES+=usr/include/machine/bus_pio.h
OLD_FILES+=usr/include/machine/cdk.h
OLD_FILES+=usr/include/machine/comstats.h
OLD_FILES+=usr/include/machine/console.h
OLD_FILES+=usr/include/machine/critical.h
OLD_FILES+=usr/include/machine/cronyx.h
OLD_FILES+=usr/include/machine/dvcfg.h
OLD_FILES+=usr/include/machine/globaldata.h
OLD_FILES+=usr/include/machine/globals.h
OLD_FILES+=usr/include/machine/gsc.h
OLD_FILES+=usr/include/machine/i4b_isppp.h
OLD_FILES+=usr/include/machine/if_wavelan_ieee.h
OLD_FILES+=usr/include/machine/iic.h
OLD_FILES+=usr/include/machine/ioctl_ctx.h
OLD_FILES+=usr/include/machine/ioctl_fd.h
OLD_FILES+=usr/include/machine/ipl.h
OLD_FILES+=usr/include/machine/lock.h
OLD_FILES+=usr/include/machine/mouse.h
OLD_FILES+=usr/include/machine/mpapic.h
OLD_FILES+=usr/include/machine/mtpr.h
OLD_FILES+=usr/include/machine/pc/msdos.h
OLD_FILES+=usr/include/machine/physio_proc.h
OLD_FILES+=usr/include/machine/smb.h
OLD_FILES+=usr/include/machine/spigot.h
OLD_FILES+=usr/include/machine/types.h
OLD_FILES+=usr/include/machine/uc_device.h
OLD_FILES+=usr/include/machine/ultrasound.h
OLD_FILES+=usr/include/machine/wtio.h
OLD_FILES+=usr/include/msdosfs/bootsect.h
OLD_FILES+=usr/include/msdosfs/bpb.h
OLD_FILES+=usr/include/msdosfs/denode.h
OLD_FILES+=usr/include/msdosfs/direntry.h
OLD_FILES+=usr/include/msdosfs/fat.h
OLD_FILES+=usr/include/msdosfs/msdosfsmount.h
OLD_FILES+=usr/include/net/hostcache.h
OLD_FILES+=usr/include/net/if_faith.h
OLD_FILES+=usr/include/net/if_ieee80211.h
OLD_FILES+=usr/include/net/if_tunvar.h
OLD_FILES+=usr/include/net/intrq.h
OLD_FILES+=usr/include/netatm/kern_include.h
OLD_FILES+=usr/include/netinet/if_fddi.h
OLD_FILES+=usr/include/netinet/in_hostcache.h
OLD_FILES+=usr/include/netinet/ip_flow.h
OLD_FILES+=usr/include/netinet/ip_fw2.h
OLD_FILES+=usr/include/netinet6/in6_prefix.h
OLD_FILES+=usr/include/netns/idp.h
OLD_FILES+=usr/include/netns/idp_var.h
OLD_FILES+=usr/include/netns/ns.h
OLD_FILES+=usr/include/netns/ns_error.h
OLD_FILES+=usr/include/netns/ns_if.h
OLD_FILES+=usr/include/netns/ns_pcb.h
OLD_FILES+=usr/include/netns/sp.h
OLD_FILES+=usr/include/netns/spidp.h
OLD_FILES+=usr/include/netns/spp_debug.h
OLD_FILES+=usr/include/netns/spp_timer.h
OLD_FILES+=usr/include/netns/spp_var.h
OLD_FILES+=usr/include/nfs/nfs.h
OLD_FILES+=usr/include/nfs/nfsm_subs.h
OLD_FILES+=usr/include/nfs/nfsmount.h
OLD_FILES+=usr/include/nfs/nfsnode.h
OLD_FILES+=usr/include/nfs/nfsrtt.h
OLD_FILES+=usr/include/nfs/nfsrvcache.h
OLD_FILES+=usr/include/nfs/nfsv2.h
OLD_FILES+=usr/include/nfs/nqnfs.h
OLD_FILES+=usr/include/ntfs/ntfs.h
OLD_FILES+=usr/include/ntfs/ntfs_compr.h
OLD_FILES+=usr/include/ntfs/ntfs_ihash.h
OLD_FILES+=usr/include/ntfs/ntfs_inode.h
OLD_FILES+=usr/include/ntfs/ntfs_subr.h
OLD_FILES+=usr/include/ntfs/ntfs_vfsops.h
OLD_FILES+=usr/include/ntfs/ntfsmount.h
OLD_FILES+=usr/include/nwfs/nwfs.h
OLD_FILES+=usr/include/nwfs/nwfs_mount.h
OLD_FILES+=usr/include/nwfs/nwfs_node.h
OLD_FILES+=usr/include/nwfs/nwfs_subr.h
OLD_FILES+=usr/include/posix4/_semaphore.h
OLD_FILES+=usr/include/posix4/aio.h
OLD_FILES+=usr/include/posix4/ksem.h
OLD_FILES+=usr/include/posix4/mqueue.h
OLD_FILES+=usr/include/posix4/posix4.h
OLD_FILES+=usr/include/posix4/sched.h
OLD_FILES+=usr/include/posix4/semaphore.h
OLD_DIRS+=usr/include/posix4
OLD_FILES+=usr/include/security/_pam_compat.h
OLD_FILES+=usr/include/security/_pam_macros.h
OLD_FILES+=usr/include/security/_pam_types.h
OLD_FILES+=usr/include/security/pam_malloc.h
OLD_FILES+=usr/include/security/pam_misc.h
OLD_FILES+=usr/include/skey.h
OLD_FILES+=usr/include/strhash.h
OLD_FILES+=usr/include/struct.h
OLD_FILES+=usr/include/sys/_label.h
OLD_FILES+=usr/include/sys/_posix.h
OLD_FILES+=usr/include/sys/bus_private.h
OLD_FILES+=usr/include/sys/ccdvar.h
OLD_FILES+=usr/include/sys/diskslice.h
OLD_FILES+=usr/include/sys/dmap.h
OLD_FILES+=usr/include/sys/inttypes.h
OLD_FILES+=usr/include/sys/jumbo.h
OLD_FILES+=usr/include/sys/mac_policy.h
OLD_FILES+=usr/include/sys/pbioio.h
OLD_FILES+=usr/include/sys/syscall-hide.h
OLD_FILES+=usr/include/sys/tprintf.h
OLD_FILES+=usr/include/sys/vnioctl.h
OLD_FILES+=usr/include/sys/wormio.h
OLD_FILES+=usr/include/telnet.h
OLD_FILES+=usr/include/ufs/mfs/mfs_extern.h
OLD_FILES+=usr/include/ufs/mfs/mfsnode.h
OLD_FILES+=usr/include/values.h
OLD_FILES+=usr/include/vm/vm_zone.h
OLD_FILES+=usr/share/examples/etc/usbd.conf
OLD_FILES+=usr/share/examples/meteor/README
OLD_FILES+=usr/share/examples/meteor/rgb16.c
OLD_FILES+=usr/share/examples/meteor/rgb24.c
OLD_FILES+=usr/share/examples/meteor/test-n.c
OLD_FILES+=usr/share/examples/meteor/yuvpk.c
OLD_FILES+=usr/share/examples/meteor/yuvpl.c
OLD_FILES+=usr/share/examples/worm/README
OLD_FILES+=usr/share/examples/worm/makecdfs.sh
OLD_FILES+=usr/share/groff_font/devlj4/Makefile
OLD_FILES+=usr/share/groff_font/devlj4/text.map
OLD_FILES+=usr/share/groff_font/devlj4/special.map
OLD_FILES+=usr/share/misc/nslookup.help
OLD_FILES+=usr/share/sendmail/cf/feature/nodns.m4
OLD_FILES+=usr/share/syscons/keymaps/lat-amer.kbd
OLD_FILES+=usr/share/vi/catalog/ru_SU.KOI8-R
OLD_FILES+=usr/share/zoneinfo/Africa/Timbuktu
OLD_FILES+=usr/share/zoneinfo/Africa/Asmera
OLD_FILES+=usr/share/zoneinfo/America/Buenos_Aires
OLD_FILES+=usr/share/zoneinfo/America/Cordoba
OLD_FILES+=usr/share/zoneinfo/America/Jujuy
OLD_FILES+=usr/share/zoneinfo/America/Catamarca
OLD_FILES+=usr/share/zoneinfo/America/Mendoza
OLD_FILES+=usr/share/zoneinfo/America/Indianapolis
OLD_FILES+=usr/share/zoneinfo/America/Louisville
OLD_FILES+=usr/share/zoneinfo/America/Argentina/ComodRivadavia
OLD_FILES+=usr/share/zoneinfo/Atlantic/Faeroe
OLD_FILES+=usr/share/zoneinfo/Europe/Belfast
OLD_FILES+=usr/share/zoneinfo/Pacific/Yap
OLD_FILES+=usr/share/zoneinfo/SystemV/YST9
OLD_FILES+=usr/share/zoneinfo/SystemV/PST8
OLD_FILES+=usr/share/zoneinfo/SystemV/EST5EDT
OLD_FILES+=usr/share/zoneinfo/SystemV/CST6CDT
OLD_FILES+=usr/share/zoneinfo/SystemV/MST7MDT
OLD_FILES+=usr/share/zoneinfo/SystemV/PST8PDT
OLD_FILES+=usr/share/zoneinfo/SystemV/YST9YDT
OLD_FILES+=usr/share/zoneinfo/SystemV/HST10
OLD_FILES+=usr/share/zoneinfo/SystemV/MST7
OLD_FILES+=usr/share/zoneinfo/SystemV/EST5
OLD_FILES+=usr/share/zoneinfo/SystemV/AST4ADT
OLD_FILES+=usr/share/zoneinfo/SystemV/CST6
OLD_FILES+=usr/share/zoneinfo/SystemV/AST4
OLD_FILES+=usr/share/doc/ntp/accopt.htm
OLD_FILES+=usr/share/doc/ntp/assoc.htm
OLD_FILES+=usr/share/doc/ntp/audio.htm
OLD_FILES+=usr/share/doc/ntp/authopt.htm
OLD_FILES+=usr/share/doc/ntp/biblio.htm
OLD_FILES+=usr/share/doc/ntp/build.htm
OLD_FILES+=usr/share/doc/ntp/clockopt.htm
OLD_FILES+=usr/share/doc/ntp/config.htm
OLD_FILES+=usr/share/doc/ntp/confopt.htm
OLD_FILES+=usr/share/doc/ntp/copyright.htm
OLD_FILES+=usr/share/doc/ntp/debug.htm
OLD_FILES+=usr/share/doc/ntp/driver1.htm
OLD_FILES+=usr/share/doc/ntp/driver10.htm
OLD_FILES+=usr/share/doc/ntp/driver11.htm
OLD_FILES+=usr/share/doc/ntp/driver12.htm
OLD_FILES+=usr/share/doc/ntp/driver16.htm
OLD_FILES+=usr/share/doc/ntp/driver18.htm
OLD_FILES+=usr/share/doc/ntp/driver19.htm
OLD_FILES+=usr/share/doc/ntp/driver2.htm
OLD_FILES+=usr/share/doc/ntp/driver20.htm
OLD_FILES+=usr/share/doc/ntp/driver22.htm
OLD_FILES+=usr/share/doc/ntp/driver23.htm
OLD_FILES+=usr/share/doc/ntp/driver24.htm
OLD_FILES+=usr/share/doc/ntp/driver26.htm
OLD_FILES+=usr/share/doc/ntp/driver27.htm
OLD_FILES+=usr/share/doc/ntp/driver28.htm
OLD_FILES+=usr/share/doc/ntp/driver29.htm
OLD_FILES+=usr/share/doc/ntp/driver3.htm
OLD_FILES+=usr/share/doc/ntp/driver30.htm
OLD_FILES+=usr/share/doc/ntp/driver32.htm
OLD_FILES+=usr/share/doc/ntp/driver33.htm
OLD_FILES+=usr/share/doc/ntp/driver34.htm
OLD_FILES+=usr/share/doc/ntp/driver35.htm
OLD_FILES+=usr/share/doc/ntp/driver36.htm
OLD_FILES+=usr/share/doc/ntp/driver37.htm
OLD_FILES+=usr/share/doc/ntp/driver4.htm
OLD_FILES+=usr/share/doc/ntp/driver5.htm
OLD_FILES+=usr/share/doc/ntp/driver6.htm
OLD_FILES+=usr/share/doc/ntp/driver7.htm
OLD_FILES+=usr/share/doc/ntp/driver8.htm
OLD_FILES+=usr/share/doc/ntp/driver9.htm
OLD_FILES+=usr/share/doc/ntp/exec.htm
OLD_FILES+=usr/share/doc/ntp/extern.htm
OLD_FILES+=usr/share/doc/ntp/gadget.htm
OLD_FILES+=usr/share/doc/ntp/hints.htm
OLD_FILES+=usr/share/doc/ntp/howto.htm
OLD_FILES+=usr/share/doc/ntp/htmlprimer.htm
OLD_FILES+=usr/share/doc/ntp/index.htm
OLD_FILES+=usr/share/doc/ntp/kern.htm
OLD_FILES+=usr/share/doc/ntp/kernpps.htm
OLD_FILES+=usr/share/doc/ntp/ldisc.htm
OLD_FILES+=usr/share/doc/ntp/measure.htm
OLD_FILES+=usr/share/doc/ntp/miscopt.htm
OLD_FILES+=usr/share/doc/ntp/monopt.htm
OLD_FILES+=usr/share/doc/ntp/mx4200data.htm
OLD_FILES+=usr/share/doc/ntp/notes.htm
OLD_FILES+=usr/share/doc/ntp/ntpd.htm
OLD_FILES+=usr/share/doc/ntp/ntpdate.htm
OLD_FILES+=usr/share/doc/ntp/ntpdc.htm
OLD_FILES+=usr/share/doc/ntp/ntpq.htm
OLD_FILES+=usr/share/doc/ntp/ntptime.htm
OLD_FILES+=usr/share/doc/ntp/ntptrace.htm
OLD_FILES+=usr/share/doc/ntp/parsedata.htm
OLD_FILES+=usr/share/doc/ntp/parsenew.htm
OLD_FILES+=usr/share/doc/ntp/patches.htm
OLD_FILES+=usr/share/doc/ntp/porting.htm
OLD_FILES+=usr/share/doc/ntp/pps.htm
OLD_FILES+=usr/share/doc/ntp/prefer.htm
OLD_FILES+=usr/share/doc/ntp/qth.htm
OLD_FILES+=usr/share/doc/ntp/quick.htm
OLD_FILES+=usr/share/doc/ntp/rdebug.htm
OLD_FILES+=usr/share/doc/ntp/refclock.htm
OLD_FILES+=usr/share/doc/ntp/release.htm
OLD_FILES+=usr/share/doc/ntp/tickadj.htm
OLD_FILES+=usr/share/doc/papers/nqnfs.ascii.gz
OLD_FILES+=usr/share/doc/papers/px.ascii.gz
OLD_FILES+=usr/share/man/man3/exp10.3.gz
OLD_FILES+=usr/share/man/man3/exp10f.3.gz
OLD_FILES+=usr/share/man/man3/fpsetsticky.3.gz
OLD_FILES+=usr/share/man/man3/gss_krb5_compat_des3_mic.3.gz
OLD_FILES+=usr/share/man/man3/gss_krb5_copy_ccache.3.gz
OLD_FILES+=usr/share/man/man3/mac_is_present_np.3.gz
OLD_FILES+=usr/share/man/man3/mbmb.3.gz
OLD_FILES+=usr/share/man/man3/setrunelocale.3.gz
OLD_FILES+=usr/share/man/man5/usbd.conf.5.gz
.if ${TARGET_ARCH} != "i386" && ${TARGET_ARCH} != "amd64"
OLD_FILES+=usr/share/man/man8/boot_i386.8.gz
.endif
.if ${TARGET_ARCH} != "aarch64" && ${TARGET} != "arm" && \
${TARGET_ARCH} != "powerpc" && ${TARGET_ARCH} != "powerpc64" && \
${TARGET_ARCH} != "sparc64" && ${TARGET} != "mips"
OLD_FILES+=usr/share/man/man8/ofwdump.8.gz
.endif
OLD_FILES+=usr/share/man/man8/mount_reiserfs.8.gz
OLD_FILES+=usr/share/man/man9/VFS_START.9.gz
OLD_FILES+=usr/share/man/man9/cpu_critical_exit.9.gz
OLD_FILES+=usr/share/man/man9/cpu_critical_enter.9.gz
OLD_FILES+=usr/share/info/annotate.info.gz
OLD_FILES+=usr/share/info/tar.info.gz
OLD_FILES+=usr/share/bsnmp/defs/tree.def
OLD_FILES+=usr/share/bsnmp/defs/mibII_tree.def
OLD_FILES+=usr/share/bsnmp/defs/netgraph_tree.def
OLD_FILES+=usr/share/bsnmp/mibs/FOKUS-MIB.txt
OLD_FILES+=usr/share/bsnmp/mibs/BEGEMOT-MIB.txt
OLD_FILES+=usr/share/bsnmp/mibs/BEGEMOT-SNMPD.txt
OLD_FILES+=usr/share/bsnmp/mibs/BEGEMOT-NETGRAPH.txt
OLD_FILES+=usr/libdata/msdosfs/iso22dos
OLD_FILES+=usr/libdata/msdosfs/iso72dos
OLD_FILES+=usr/libdata/msdosfs/koi2dos
OLD_FILES+=usr/libdata/msdosfs/koi8u2dos
# The following files are *not* obsolete, they just don't get touched at
# install, so don't add them:
# - boot/loader.rc
# - usr/share/tmac/man.local
# - usr/share/tmac/mm/locale
# - usr/share/tmac/mm/se_locale
# - var/yp/Makefile
# Early entries split OLD_FILES, OLD_LIBS, and OLD_DIRS into separate sections
# in this file, but this practice was abandoned in the mid-2000s.
#
# 20071120: shared library version bump
OLD_LIBS+=usr/lib/libasn1.so.8
OLD_LIBS+=usr/lib/libgssapi.so.8
OLD_LIBS+=usr/lib/libgssapi_krb5.so.8
OLD_LIBS+=usr/lib/libhdb.so.8
OLD_LIBS+=usr/lib/libkadm5clnt.so.8
OLD_LIBS+=usr/lib/libkadm5srv.so.8
OLD_LIBS+=usr/lib/libkafs5.so.8
OLD_LIBS+=usr/lib/libkrb5.so.8
OLD_LIBS+=usr/lib/libobjc.so.2
OLD_LIBS+=usr/lib32/libgssapi.so.8
OLD_LIBS+=usr/lib32/libobjc.so.2
# 20070519: GCC 4.2
OLD_LIBS+=usr/lib/libg2c.a
OLD_LIBS+=usr/lib/libg2c.so
OLD_LIBS+=usr/lib/libg2c.so.2
OLD_LIBS+=usr/lib/libg2c_p.a
OLD_LIBS+=usr/lib/libgcc_pic.a
OLD_LIBS+=usr/lib32/libg2c.a
OLD_LIBS+=usr/lib32/libg2c.so
OLD_LIBS+=usr/lib32/libg2c.so.2
OLD_LIBS+=usr/lib32/libg2c_p.a
OLD_LIBS+=usr/lib32/libgcc_pic.a
# 20060729: OpenSSL 0.9.7e -> 0.9.8b upgrade
OLD_LIBS+=lib/libcrypto.so.4
OLD_LIBS+=usr/lib/libssl.so.4
OLD_LIBS+=usr/lib32/libcrypto.so.4
OLD_LIBS+=usr/lib32/libssl.so.4
# 20060521: gethostbyaddr(3) ABI change
OLD_LIBS+=usr/lib/libroken.so.8
OLD_LIBS+=lib/libatm.so.3
OLD_LIBS+=lib/libc.so.6
OLD_LIBS+=lib/libutil.so.5
OLD_LIBS+=usr/lib32/libatm.so.3
OLD_LIBS+=usr/lib32/libc.so.6
OLD_LIBS+=usr/lib32/libutil.so.5
# 20060413: shared library moved to /usr/lib
OLD_LIBS+=lib/libgpib.so.1
# 20060413: libpcap.so.4 moved to /lib/
OLD_LIBS+=usr/lib/libpcap.so.4
# 20060412: libpthread.so.2 moved to /lib/
OLD_LIBS+=usr/lib/libpthread.so.2
# 20060127: revert libdisk to static-only
OLD_LIBS+=usr/lib/libdisk.so.3
# 20051027: libc_r discontinued (removed 20101113)
OLD_LIBS+=usr/lib/libc_r.a
OLD_LIBS+=usr/lib/libc_r.so
OLD_LIBS+=usr/lib/libc_r.so.7
OLD_LIBS+=usr/lib/libc_r_p.a
OLD_LIBS+=usr/lib32/libc_r.a
OLD_LIBS+=usr/lib32/libc_r.so
OLD_LIBS+=usr/lib32/libc_r.so.7
OLD_LIBS+=usr/lib32/libc_r_p.a
# 20050722: bump for 6.0-RELEASE
OLD_LIBS+=lib/libalias.so.4
OLD_LIBS+=lib/libatm.so.2
OLD_LIBS+=lib/libbegemot.so.1
OLD_LIBS+=lib/libbsdxml.so.1
OLD_LIBS+=lib/libbsnmp.so.2
OLD_LIBS+=lib/libc.so.5
OLD_LIBS+=lib/libcam.so.2
OLD_LIBS+=lib/libcrypt.so.2
OLD_LIBS+=lib/libcrypto.so.3
OLD_LIBS+=lib/libdevstat.so.4
OLD_LIBS+=lib/libedit.so.4
OLD_LIBS+=lib/libgeom.so.2
OLD_LIBS+=lib/libgpib.so.0
OLD_LIBS+=lib/libipsec.so.1
OLD_LIBS+=lib/libipx.so.2
OLD_LIBS+=lib/libkiconv.so.1
OLD_LIBS+=lib/libkvm.so.2
OLD_LIBS+=lib/libm.so.3
OLD_LIBS+=lib/libmd.so.2
OLD_LIBS+=lib/libncurses.so.5
OLD_LIBS+=lib/libreadline.so.5
OLD_LIBS+=lib/libsbuf.so.2
OLD_LIBS+=lib/libufs.so.2
OLD_LIBS+=lib/libutil.so.4
OLD_LIBS+=lib/libz.so.2
OLD_LIBS+=usr/lib/libarchive.so.1
OLD_LIBS+=usr/lib/libasn1.so.7
OLD_LIBS+=usr/lib/libbluetooth.so.1
OLD_LIBS+=usr/lib/libbz2.so.1
OLD_LIBS+=usr/lib/libc_r.so.5
OLD_LIBS+=usr/lib/libcalendar.so.2
OLD_LIBS+=usr/lib/libcom_err.so.2
OLD_LIBS+=usr/lib/libdevinfo.so.2
OLD_LIBS+=usr/lib/libdialog.so.4
OLD_LIBS+=usr/lib/libfetch.so.3
OLD_LIBS+=usr/lib/libform.so.2
OLD_LIBS+=usr/lib/libftpio.so.5
OLD_LIBS+=usr/lib/libg2c.so.1
OLD_LIBS+=usr/lib/libgnuregex.so.2
OLD_LIBS+=usr/lib/libgssapi.so.7
OLD_LIBS+=usr/lib/libhdb.so.7
OLD_LIBS+=usr/lib/libhistory.so.5
OLD_LIBS+=usr/lib/libkadm5clnt.so.7
OLD_LIBS+=usr/lib/libkadm5srv.so.7
OLD_LIBS+=usr/lib/libkafs5.so.7
OLD_LIBS+=usr/lib/libkrb5.so.7
OLD_LIBS+=usr/lib/libmagic.so.1
OLD_LIBS+=usr/lib/libmenu.so.2
OLD_LIBS+=usr/lib/libmilter.so.2
OLD_LIBS+=usr/lib/libmp.so.4
OLD_LIBS+=usr/lib/libncp.so.1
OLD_LIBS+=usr/lib/libnetgraph.so.1
OLD_LIBS+=usr/lib/libngatm.so.1
OLD_LIBS+=usr/lib/libobjc.so.1
OLD_LIBS+=usr/lib/libopie.so.3
OLD_LIBS+=usr/lib/libpam.so.2
OLD_LIBS+=usr/lib/libpanel.so.2
OLD_LIBS+=usr/lib/libpcap.so.3
OLD_LIBS+=usr/lib/libpmc.so.2
OLD_LIBS+=usr/lib/libpthread.so.1
OLD_LIBS+=usr/lib/libradius.so.1
OLD_LIBS+=usr/lib/libroken.so.7
OLD_LIBS+=usr/lib/librpcsvc.so.2
OLD_LIBS+=usr/lib/libsdp.so.1
OLD_LIBS+=usr/lib/libsmb.so.1
OLD_LIBS+=usr/lib/libssh.so.2
OLD_LIBS+=usr/lib/libssl.so.3
OLD_LIBS+=usr/lib/libstdc++.so.4
OLD_LIBS+=usr/lib/libtacplus.so.1
OLD_LIBS+=usr/lib/libthr.so.1
OLD_LIBS+=usr/lib/libthread_db.so.1
OLD_LIBS+=usr/lib/libugidfw.so.1
OLD_LIBS+=usr/lib/libusbhid.so.1
OLD_LIBS+=usr/lib/libvgl.so.3
OLD_LIBS+=usr/lib/libwrap.so.3
OLD_LIBS+=usr/lib/libypclnt.so.1
OLD_LIBS+=usr/lib/pam_chroot.so.2
OLD_LIBS+=usr/lib/pam_deny.so.2
OLD_LIBS+=usr/lib/pam_echo.so.2
OLD_LIBS+=usr/lib/pam_exec.so.2
OLD_LIBS+=usr/lib/pam_ftpusers.so.2
OLD_LIBS+=usr/lib/pam_group.so.2
OLD_LIBS+=usr/lib/pam_guest.so.2
OLD_LIBS+=usr/lib/pam_krb5.so.2
OLD_LIBS+=usr/lib/pam_ksu.so.2
OLD_LIBS+=usr/lib/pam_lastlog.so.2
OLD_LIBS+=usr/lib/pam_login_access.so.2
OLD_LIBS+=usr/lib/pam_nologin.so.2
OLD_LIBS+=usr/lib/pam_opie.so.2
OLD_LIBS+=usr/lib/pam_opieaccess.so.2
OLD_LIBS+=usr/lib/pam_passwdqc.so.2
OLD_LIBS+=usr/lib/pam_permit.so.2
OLD_LIBS+=usr/lib/pam_radius.so.2
OLD_LIBS+=usr/lib/pam_rhosts.so.2
OLD_LIBS+=usr/lib/pam_rootok.so.2
OLD_LIBS+=usr/lib/pam_securetty.so.2
OLD_LIBS+=usr/lib/pam_self.so.2
OLD_LIBS+=usr/lib/pam_ssh.so.2
OLD_LIBS+=usr/lib/pam_tacplus.so.2
OLD_LIBS+=usr/lib/pam_unix.so.2
OLD_LIBS+=usr/lib/snmp_atm.so.3
OLD_LIBS+=usr/lib/snmp_mibII.so.3
OLD_LIBS+=usr/lib/snmp_netgraph.so.3
OLD_LIBS+=usr/lib/snmp_pf.so.3
# 200505XX: ?
OLD_LIBS+=usr/lib/snmp_atm.so.2
OLD_LIBS+=usr/lib/snmp_mibII.so.2
OLD_LIBS+=usr/lib/snmp_netgraph.so.2
OLD_LIBS+=usr/lib/snmp_pf.so.2
# 2005XXXX: not ready for primetime yet
OLD_LIBS+=usr/lib/libautofs.so.1
# 200411XX: libxpg4 removal
OLD_LIBS+=usr/lib/libxpg4.so.3
# 200410XX: libm compatibility fix
OLD_LIBS+=lib/libm.so.2
# 20041001: version bump
OLD_LIBS+=lib/libreadline.so.4
OLD_LIBS+=usr/lib/libhistory.so.4
OLD_LIBS+=usr/lib/libopie.so.2
OLD_LIBS+=usr/lib/libpcap.so.2
# 20040925: bind9 import
OLD_LIBS+=usr/lib/libisc.so.1
# 200408XX
OLD_LIBS+=usr/lib/snmp_netgraph.so.1
# 200404XX
OLD_LIBS+=usr/lib/libsnmp.so.1
OLD_LIBS+=usr/lib/snmp_mibII.so.1
# 200309XX
OLD_LIBS+=usr/lib/libasn1.so.6
OLD_LIBS+=usr/lib/libhdb.so.6
OLD_LIBS+=usr/lib/libkadm5clnt.so.6
OLD_LIBS+=usr/lib/libkadm5srv.so.6
OLD_LIBS+=usr/lib/libkrb5.so.6
OLD_LIBS+=usr/lib/libroken.so.6
# 200304XX
OLD_LIBS+=usr/lib/libc.so.4
OLD_LIBS+=usr/lib/libc_r.so.4
OLD_LIBS+=usr/lib/libdevstat.so.2
OLD_LIBS+=usr/lib/libedit.so.3
OLD_LIBS+=usr/lib/libgmp.so.3
OLD_LIBS+=usr/lib/libmp.so.3
OLD_LIBS+=usr/lib/libpam.so.1
OLD_LIBS+=usr/lib/libposix1e.so.2
OLD_LIBS+=usr/lib/libskey.so.2
OLD_LIBS+=usr/lib/libusbhid.so.0
OLD_LIBS+=usr/lib/libvgl.so.2
# 20030218: OpenSSL 0.9.7 import
OLD_FILES+=usr/include/des.h
OLD_FILES+=usr/lib/libdes.a
OLD_FILES+=usr/lib/libdes.so
OLD_LIBS+=usr/lib/libdes.so.3
OLD_FILES+=usr/lib/libdes_p.a
# 200302XX
OLD_LIBS+=usr/lib/libacl.so.3
OLD_LIBS+=usr/lib/libasn1.so.5
OLD_LIBS+=usr/lib/libcrypto.so.2
OLD_LIBS+=usr/lib/libgssapi.so.5
OLD_LIBS+=usr/lib/libhdb.so.5
OLD_LIBS+=usr/lib/libkadm.so.3
OLD_LIBS+=usr/lib/libkadm5clnt.so.5
OLD_LIBS+=usr/lib/libkadm5srv.so.5
OLD_LIBS+=usr/lib/libkafs.so.3
OLD_LIBS+=usr/lib/libkafs5.so.5
OLD_LIBS+=usr/lib/libkdb.so.3
OLD_LIBS+=usr/lib/libkrb.so.3
OLD_LIBS+=usr/lib/libroken.so.
OLD_LIBS+=usr/lib/libssl.so.2
OLD_LIBS+=usr/lib/pam_kerberosIV.so
# 200208XX
OLD_LIBS+=usr/lib/libgssapi.so.4
# 200203XX
OLD_LIBS+=usr/lib/libss.so.3
OLD_LIBS+=usr/lib/libusb.so.0
# 200112XX
OLD_LIBS+=usr/lib/libfetch.so.2
# 200110XX
OLD_LIBS+=usr/lib/libgssapi.so.3
# 200104XX
OLD_LIBS+=usr/lib/libdescrypt.so.2
OLD_LIBS+=usr/lib/libscrypt.so.2
# 200102XX
OLD_LIBS+=usr/lib/libcrypto.so.1
OLD_LIBS+=usr/lib/libssl.so.1
# 200009XX
OLD_LIBS+=usr/lib/libRSAglue.so.1
OLD_LIBS+=usr/lib/librsaINTL.so.1
OLD_LIBS+=usr/lib/librsaUSA.so.1
# 200006XX
OLD_LIBS+=usr/lib/libalias.so.3
OLD_LIBS+=usr/lib/libfetch.so.1
OLD_LIBS+=usr/lib/libipsec.so.0
# 200005XX
OLD_LIBS+=usr/lib/libxpg4.so.2
# 200002XX
OLD_LIBS+=usr/lib/libc.so.3
OLD_LIBS+=usr/lib/libcurses.so.2
OLD_LIBS+=usr/lib/libdialog.so.3
OLD_LIBS+=usr/lib/libedit.so.2
OLD_LIBS+=usr/lib/libf2c.so.2
OLD_LIBS+=usr/lib/libftpio.so.4
OLD_LIBS+=usr/lib/libg++.so.4
OLD_LIBS+=usr/lib/libhistory.so.3
OLD_LIBS+=usr/lib/libmytinfo.so.2
OLD_LIBS+=usr/lib/libncurses.so.3
OLD_LIBS+=usr/lib/libreadline.so.3
OLD_LIBS+=usr/lib/libss.so.2
OLD_LIBS+=usr/lib/libtermcap.so.2
OLD_LIBS+=usr/lib/libutil.so.2
OLD_LIBS+=usr/lib/libvgl.so.1
OLD_LIBS+=usr/lib/libwrap.so.2
# 19991216
OLD_FILES+=usr/sbin/xntpdc
# 199909XX
OLD_LIBS+=usr/lib/libc_r.so.3
# ???
OLD_LIBS+=usr/lib/libarchive.so.2
OLD_LIBS+=usr/lib/libbsnmp.so.1
OLD_LIBS+=usr/lib/libc_r.so.6
OLD_LIBS+=usr/lib32/libarchive.so.2
OLD_LIBS+=usr/lib32/libc_r.so.6
OLD_LIBS+=usr/lib/libcipher.so.2
OLD_LIBS+=usr/lib/libgssapi.so.6
OLD_LIBS+=usr/lib/libkse.so.1
OLD_LIBS+=usr/lib/liblwres.so.3
OLD_LIBS+=usr/lib/pam_ftp.so.2
# 20040925: bind9 import
OLD_DIRS+=usr/share/doc/bind/html
OLD_DIRS+=usr/share/doc/bind/misc
OLD_DIRS+=usr/share/doc/bind/
# ???
OLD_DIRS+=usr/include/g++/std
OLD_DIRS+=usr/include/msdosfs
OLD_DIRS+=usr/include/ntfs
OLD_DIRS+=usr/include/nwfs
OLD_DIRS+=usr/include/ufs/mfs
# 20011001: UUCP migration to ports
OLD_DIRS+=usr/libexec/uucp
.include "tools/build/mk/OptionalObsoleteFiles.inc"
diff --git a/UPDATING b/UPDATING
index def0d85b5250..404ca0c70e37 100644
--- a/UPDATING
+++ b/UPDATING
@@ -1,2233 +1,2238 @@
Updating Information for FreeBSD current users.
This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>.
See end of file for further details. For commonly done items, please see the
COMMON ITEMS: section later in the file. These instructions assume that you
basically know what you are doing. If not, then please consult the FreeBSD
handbook:
https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
Items affecting the ports and packages system can be found in
/usr/ports/UPDATING. Please read that file before running portupgrade.
NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW:
FreeBSD 13.x has many debugging features turned on, in both the kernel
and userland. These features attempt to detect incorrect use of
system primitives, and encourage loud failure through extra sanity
checking and fail stop semantics. They also substantially impact
system performance. If you want to do performance measurement,
benchmarking, and optimization, you'll want to turn them off. This
includes various WITNESS- related kernel options, INVARIANTS, malloc
debugging flags in userland, and various verbose features in the
kernel. Many developers choose to disable these features on build
machines to maximize performance. (To completely disable malloc
debugging, define MALLOC_PRODUCTION in /etc/make.conf, or to merely
disable the most expensive debugging functionality run
"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
+20200309:
+ The amd(8) automount daemon has been removed from the source tree.
+ As of FreeBSD 10.1 autofs(5) is the preferred tool for automounting.
+ amd is still available in the sysutils/am-utils port.
+
20200301:
Removed brooktree driver (bktr.4) from the tree.
20200229:
The WITH_GPL_DTC option has been removed. The BSD-licenced device tree
compiler in usr.bin/dtc is used on all architectures which use dtc, and
the GPL dtc is available (if needed) from the sysutils/dtc port.
20200229:
The WITHOUT_LLVM_LIBUNWIND option has been removed. LLVM's libunwind
is used by all supported CPU architectures.
20200229:
GCC 4.2.1 has been removed from the tree. The WITH_GCC,
WITH_GCC_BOOTSTRAP, and WITH_GNUCXX options are no longer available.
Users who wish to build FreeBSD with GCC must use the external toolchain
ports or packages.
20200220:
ncurses has been updated to a newer version (6.2-20200215). Given the ABI
has changed, users will have to rebuild all the ports that are linked to
ncurses.
20200217:
The size of struct vnet and the magic cookie have changed.
Users need to recompile libkvm and all modules using VIMAGE
together with their new kernel.
20200212:
Defining the long deprecated NO_CTF, NO_DEBUG_FILES, NO_INSTALLLIB,
NO_MAN, NO_PROFILE, and NO_WARNS variables is now an error. Update
your Makefiles and scripts to define MK_<var>=no instead as required.
One exception to this is that program or library Makefiles should
define MAN to empty rather than setting MK_MAN=no.
20200108:
Clang/LLVM is now the default compiler and LLD the default
linker for riscv64.
20200107:
make universe no longer uses GCC 4.2.1 on any architectures.
Architectures not supported by in-tree Clang/LLVM require an
external toolchain package.
20200104:
GCC 4.2.1 is now not built by default, as part of the GCC 4.2.1
retirement plan. Specifically, the GCC, GCC_BOOTSTRAP, and GNUCXX
options default to off for all supported CPU architectures. As a
short-term transition aid they may be enabled via WITH_* options.
GCC 4.2.1 is expected to be removed from the tree on 2020-03-31.
20200102:
Support for armv5 has been disconnected and is being removed. The
machine combination MACHINE=arm MACHINE_ARCH=arm is no longer valid.
You must now use a MACHINE_ARCH of armv6 or armv7. The default
MACHINE_ARCH for MACHINE=arm is now armv7.
20191226:
Clang/LLVM is now the default compiler for all powerpc architectures.
LLD is now the default linker for powerpc64. The change for powerpc64
also includes a change to the ELFv2 ABI, incompatible with the existing
ABI.
20191226:
Kernel-loadable random(4) modules are no longer unloadable.
20191222:
Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have
been upgraded to 9.0.1. Please see the 20141231 entry below for
information about prerequisites and upgrading, if you are not already
using clang 3.5.0 or higher.
20191212:
r355677 has modified the internal interface used between the
NFS modules in the kernel. As such, they must all be upgraded
simultaneously. I will do a version bump for this.
20191205:
The root certificates of the Mozilla CA Certificate Store have been
imported into the base system and can be managed with the certctl(8)
utility. If you have installed the security/ca_root_nss port or package
with the ETCSYMLINK option (the default), be advised that there may be
differences between those included in the port and those included in
base due to differences in nss branch used as well as general update
frequency. Note also that certctl(8) cannot manage certs in the
format used by the security/ca_root_nss port.
20191120:
The amd(8) automount daemon has been disabled by default, and will be
removed in the future. As of FreeBSD 10.1 the autofs(5) is available
for automounting.
20191107:
The nctgpio and wbwd drivers have been moved to the superio bus.
If you have one of these drivers in a kernel configuration, then
you should add device superio to it. If you use one of these drivers
as a module and you compile a custom set of modules, then you should
add superio to the set.
20191021:
KPIs for network drivers to access interface addresses have changed.
Users need to recompile NIC driver modules together with kernel.
20191021:
The net.link.tap.user_open sysctl no longer prevents user opening of
already created /dev/tapNN devices. Access is still controlled by
node permissions, just like tun devices. The net.link.tap.user_open
sysctl is now used only to allow users to perform devfs cloning of
tap devices, and the subsequent open may not succeed if the user is not
in the appropriate group. This sysctl may be deprecated/removed
completely in the future.
20191009:
mips, powerpc, and sparc64 are no longer built as part of
universe / tinderbox unless MAKE_OBSOLETE_GCC is defined. If
not defined, mips, powerpc, and sparc64 builds will look for
the xtoolchain binaries and if installed use them for universe
builds. As llvm 9.0 becomes vetted for these architectures, they
will be removed from the list.
20191009:
Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have
been upgraded to 9.0.0. Please see the 20141231 entry below for
information about prerequisites and upgrading, if you are not already
using clang 3.5.0 or higher.
20191003:
The hpt27xx, hptmv, hptnr, and hptrr drivers have been removed from
GENERIC. They are available as modules and can be loaded by adding
to /boot/loader.conf hpt27xx_load="YES", hptmv_load="YES",
hptnr_load="YES", or hptrr_load="YES", respectively.
20190913:
ntpd no longer by default locks its pages in memory, allowing them
to be paged out by the kernel. Use rlimit memlock to restore
historic BSD behaviour. For example, add "rlimit memlock 32"
to ntp.conf to lock up to 32 MB of ntpd address space in memory.
20190823:
Several of ping6's options have been renamed for better consistency
with ping. If you use any of -ARWXaghmrtwx, you must update your
scripts. See ping6(8) for details.
20190727:
The vfs.fusefs.sync_unmount and vfs.fusefs.init_backgrounded sysctls
and the "-o sync_unmount" and "-o init_backgrounded" mount options have
been removed from mount_fusefs(8). You can safely remove them from
your scripts, because they had no effect.
The vfs.fusefs.fix_broken_io, vfs.fusefs.sync_resize,
vfs.fusefs.refresh_size, vfs.fusefs.mmap_enable,
vfs.fusefs.reclaim_revoked, and vfs.fusefs.data_cache_invalidate
sysctls have been removed. If you felt the need to set any of them to
a non-default value, please tell asomers@FreeBSD.org why.
20190713:
Default permissions on the /var/account/acct file (and copies of it
rotated by periodic daily scripts) are changed from 0644 to 0640
because the file contains sensitive information that should not be
world-readable. If the /var/account directory must be created by
rc.d/accounting, the mode used is now 0750. Admins who use the
accounting feature are encouraged to change the mode of an existing
/var/account directory to 0750 or 0700.
20190620:
Entropy collection and the /dev/random device are no longer optional
components. The "device random" option has been removed.
Implementations of distilling algorithms can still be made loadable
with "options RANDOM_LOADABLE" (e.g., random_fortuna.ko).
20190612:
Clang, llvm, lld, lldb, compiler-rt, libc++, libunwind and openmp have
been upgraded to 8.0.1. Please see the 20141231 entry below for
information about prerequisites and upgrading, if you are not already
using clang 3.5.0 or higher.
20190608:
A fix was applied to i386 kernel modules to avoid panics with
dpcpu or vnet. Users need to recompile i386 kernel modules
having pcpu or vnet sections or they will refuse to load.
20190513:
User-wired pages now have their own counter,
vm.stats.vm.v_user_wire_count. The vm.max_wired sysctl was renamed
to vm.max_user_wired and changed from an unsigned int to an unsigned
long. bhyve VMs wired with the -S are now subject to the user
wiring limit; the vm.max_user_wired sysctl may need to be tuned to
avoid running into the limit.
20190507:
The IPSEC option has been removed from GENERIC. Users requiring
ipsec(4) must now load the ipsec(4) kernel module.
20190507:
The tap(4) driver has been folded into tun(4), and the module has been
renamed to tuntap. You should update any kld_list="if_tap" or
kld_list="if_tun" entries in /etc/rc.conf, if_tap_load="YES" or
if_tun_load="YES" entries in /boot/loader.conf to load the if_tuntap
module instead, and "device tap" or "device tun" entries in kernel
config files to select the tuntap device instead.
20190418:
The following knobs have been added related to tradeoffs between
safe use of the random device and availability in the absence of
entropy:
kern.random.initial_seeding.bypass_before_seeding: tunable; set
non-zero to bypass the random device prior to seeding, or zero to
block random requests until the random device is initially seeded.
For now, set to 1 (unsafe) by default to restore pre-r346250 boot
availability properties.
kern.random.initial_seeding.read_random_bypassed_before_seeding:
read-only diagnostic sysctl that is set when bypass is enabled and
read_random(9) is bypassed, to enable programmatic handling of this
initial condition, if desired.
kern.random.initial_seeding.arc4random_bypassed_before_seeding:
Similar to the above, but for for arc4random(9) initial seeding.
kern.random.initial_seeding.disable_bypass_warnings: tunable; set
non-zero to disable warnings in dmesg when the same conditions are
met as for the diagnostic sysctls above. Defaults to zero, i.e.,
produce warnings in dmesg when the conditions are met.
20190416:
The loadable random module KPI has changed; the random_infra_init()
routine now requires a 3rd function pointer for a bool (*)(void)
method that returns true if the random device is seeded (and
therefore unblocked).
20190404:
r345895 reverts r320698. This implies that an nfsuserd(8) daemon
built from head sources between r320757 (July 6, 2017) and
r338192 (Aug. 22, 2018) will not work unless the "-use-udpsock"
is added to the command line.
nfsuserd daemons built from head sources that are post-r338192 are
not affected and should continue to work.
20190320:
The fuse(4) module has been renamed to fusefs(4) for consistency with
other filesystems. You should update any kld_load="fuse" entries in
/etc/rc.conf, fuse_load="YES" entries in /boot/loader.conf, and
"options FUSE" entries in kernel config files.
20190304:
Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
8.0.0. Please see the 20141231 entry below for information about
prerequisites and upgrading, if you are not already using clang 3.5.0
or higher.
20190226:
geom_uzip(4) depends on the new module xz. If geom_uzip is statically
compiled into your custom kernel, add 'device xz' statement to the
kernel config.
20190219:
drm and drm2 have been removed from the tree. Please see
https://wiki.freebsd.org/Graphics for the latest information on
migrating to the drm ports.
20190131:
Iflib is no longer unconditionally compiled into the kernel. Drivers
using iflib and statically compiled into the kernel, now require
the 'device iflib' config option. For the same drivers loaded as
modules on kernels not having 'device iflib', the iflib.ko module
is loaded automatically.
20190125:
The IEEE80211_AMPDU_AGE and AH_SUPPORT_AR5416 kernel configuration
options no longer exist since r343219 and r343427 respectively;
nothing uses them, so they should be just removed from custom
kernel config files.
20181230:
r342635 changes the way efibootmgr(8) works by requiring users to add
the -b (bootnum) parameter for commands where the bootnum was previously
specified with each option. For example 'efibootmgr -B 0001' is now
'efibootmgr -B -b 0001'.
20181220:
r342286 modifies the NFSv4 server so that it obeys vfs.nfsd.nfs_privport
in the same as it is applied to NFSv2 and 3. This implies that NFSv4
servers that have vfs.nfsd.nfs_privport set will only allow mounts
from clients using a reserved port#. Since both the FreeBSD and Linux
NFSv4 clients use reserved port#s by default, this should not affect
most NFSv4 mounts.
20181219:
The XLP config has been removed. We can't support 64-bit atomics in this
kernel because it is running in 32-bit mode. XLP users must transition
to running a 64-bit kernel (XLP64 or XLPN32).
The mips GXEMUL support has been removed from FreeBSD. MALTA* + qemu is
the preferred emulator today and we don't need two different ones.
The old sibyte / swarm / Broadcom BCM1250 support has been
removed from the mips port.
20181211:
Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
7.0.1. Please see the 20141231 entry below for information about
prerequisites and upgrading, if you are not already using clang 3.5.0
or higher.
20181211:
Remove the timed and netdate programs from the base tree. Setting
the time with these daemons has been obsolete for over a decade.
20181126:
On amd64, arm64 and armv7 (architectures that install LLVM's ld.lld
linker as /usr/bin/ld) GNU ld is no longer installed as ld.bfd, as
it produces broken binaries when ifuncs are in use. Users needing
GNU ld should install the binutils port or package.
20181123:
The BSD crtbegin and crtend code has been enabled by default. It has
had extensive testing on amd64, arm64, and i386. It can be disabled
by building a world with -DWITHOUT_BSD_CRTBEGIN.
20181115:
The set of CTM commands (ctm, ctm_smail, ctm_rmail, ctm_dequeue)
has been converted to a port (misc/ctm) and will be removed from
FreeBSD-13. It is available as a package (ctm) for all supported
FreeBSD versions.
20181110:
The default newsyslog.conf(5) file has been changed to only include
files in /etc/newsyslog.conf.d/ and /usr/local/etc/newsyslog.conf.d/ if
the filenames end in '.conf' and do not begin with a '.'.
You should check the configuration files in these two directories match
this naming convention. You can verify which configuration files are
being included using the command:
$ newsyslog -Nrv
20181015:
Ports for the DRM modules have been simplified. Now, amd64 users should
just install the drm-kmod port. All others should install
drm-legacy-kmod.
Graphics hardware that's newer than about 2010 usually works with
drm-kmod. For hardware older than 2013, however, some users will need
to use drm-legacy-kmod if drm-kmod doesn't work for them. Hardware older
than 2008 usually only works in drm-legacy-kmod. The graphics team can
only commit to hardware made since 2013 due to the complexity of the
market and difficulty to test all the older cards effectively. If you
have hardware supported by drm-kmod, you are strongly encouraged to use
that as you will get better support.
Other than KPI chasing, drm-legacy-kmod will not be updated. As outlined
elsewhere, the drm and drm2 modules will be eliminated from the src base
soon (with a limited exception for arm). Please update to the package
asap and report any issues to x11@freebsd.org.
Generally, anybody using the drm*-kmod packages should add
WITHOUT_DRM_MODULE=t and WITHOUT_DRM2_MODULE=t to avoid nasty
cross-threading surprises, especially with automatic driver
loading from X11 startup. These will become the defaults in 13-current
shortly.
20181012:
The ixlv(4) driver has been renamed to iavf(4). As a consequence,
custom kernel and module loading configuration files must be updated
accordingly. Moreover, interfaces previous presented as ixlvN to the
system are now exposed as iavfN and network configuration files must
be adjusted as necessary.
20181009:
OpenSSL has been updated to version 1.1.1. This update included
additional various API changes throughout the base system. It is
important to rebuild third-party software after upgrading. The value
of __FreeBSD_version has been bumped accordingly.
20181006:
The legacy DRM modules and drivers have now been added to the loader's
module blacklist, in favor of loading them with kld_list in rc.conf(5).
The module blacklist may be overridden with the loader.conf(5)
'module_blacklist' variable, but loading them via rc.conf(5) is strongly
encouraged.
20181002:
The cam(4) based nda(4) driver will be used over nvd(4) by default on
powerpc64. You may set 'options NVME_USE_NVD=1' in your kernel conf or
loader tunable 'hw.nvme.use_nvd=1' if you wish to use the existing
driver. Make sure to edit /boot/etc/kboot.conf and fstab to use the
nda device name.
20180913:
Reproducible build mode is now on by default, in preparation for
FreeBSD 12.0. This eliminates build metadata such as the user,
host, and time from the kernel (and uname), unless the working tree
corresponds to a modified checkout from a version control system.
The previous behavior can be obtained by setting the /etc/src.conf
knob WITHOUT_REPRODUCIBLE_BUILD.
20180826:
The Yarrow CSPRNG has been removed from the kernel as it has not been
supported by its designers since at least 2003. Fortuna has been the
default since FreeBSD-11.
20180822:
devctl freeze/thaw have gone into the tree, the rc scripts have been
updated to use them and devmatch has been changed. You should update
kernel, userland and rc scripts all at the same time.
20180818:
The default interpreter has been switched from 4th to Lua.
LOADER_DEFAULT_INTERP, documented in build(7), will override the default
interpreter. If you have custom FORTH code you will need to set
LOADER_DEFAULT_INTERP=4th (valid values are 4th, lua or simp) in
src.conf for the build. This will create default hard links between
loader and loader_4th instead of loader and loader_lua, the new default.
If you are using UEFI it will create the proper hard link to loader.efi.
bhyve uses userboot.so. It remains 4th-only until some issues are solved
regarding coexisting with multiple versions of FreeBSD are resolved.
20180815:
ls(1) now respects the COLORTERM environment variable used in other
systems and software to indicate that a colored terminal is both
supported and desired. If ls(1) is suddenly emitting colors, they may
be disabled again by either removing the unwanted COLORTERM from your
environment, or using `ls --color=never`. The ls(1) specific CLICOLOR
may not be observed in a future release.
20180808:
The default pager for most commands has been changed to "less". To
restore the old behavior, set PAGER="more" and MANPAGER="more -s" in
your environment.
20180731:
The jedec_ts(4) driver has been removed. A superset of its functionality
is available in the jedec_dimm(4) driver, and the manpage for that
driver includes migration instructions. If you have "device jedec_ts"
in your kernel configuration file, it must be removed.
20180730:
amd64/GENERIC now has EFI runtime services, EFIRT, enabled by default.
This should have no effect if the kernel is booted via BIOS/legacy boot.
EFIRT may be disabled via a loader tunable, efi.rt.disabled, if a system
has a buggy firmware that prevents a successful boot due to use of
runtime services.
20180727:
Atmel AT91RM9200 and AT91SAM9, Cavium CNS 11xx and XScale
support has been removed from the tree. These ports were
obsolete and/or known to be broken for many years.
20180723:
loader.efi has been augmented to participate more fully in the
UEFI boot manager protocol. loader.efi will now look at the
BootXXXX environment variable to determine if a specific kernel
or root partition was specified. XXXX is derived from BootCurrent.
efibootmgr(8) manages these standard UEFI variables.
20180720:
zfsloader's functionality has now been folded into loader.
zfsloader is no longer necessary once you've updated your
boot blocks. For a transition period, we will install a
hardlink for zfsloader to loader to allow a smooth transition
until the boot blocks can be updated (hard link because old
zfs boot blocks don't understand symlinks).
20180719:
ARM64 now have efifb support, if you want to have serial console
on your arm64 board when an screen is connected and the bootloader
setup a frame buffer for us to use, just add :
boot_serial=YES
boot_multicons=YES
in /boot/loader.conf
For Raspberry Pi 3 (RPI) users, this is needed even if you don't have
an screen connected as the firmware will setup a frame buffer are that
u-boot will expose as an EFI frame buffer.
20180719:
New uid:gid added, ntpd:ntpd (123:123). Be sure to run mergemaster
or take steps to update /etc/passwd before doing installworld on
existing systems. Do not skip the "mergemaster -Fp" step before
installworld, as described in the update procedures near the bottom
of this document. Also, rc.d/ntpd now starts ntpd(8) as user ntpd
if the new mac_ntpd(4) policy is available, unless ntpd_flags or
the ntp config file contain options that change file/dir locations.
When such options (e.g., "statsdir" or "crypto") are used, ntpd can
still be run as non-root by setting ntpd_user=ntpd in rc.conf, after
taking steps to ensure that all required files/dirs are accessible
by the ntpd user.
20180717:
Big endian arm support has been removed.
20180711:
The static environment setup in kernel configs is no longer mutually
exclusive with the loader(8) environment by default. In order to
restore the previous default behavior of disabling the loader(8)
environment if a static environment is present, you must specify
loader_env.disabled=1 in the static environment.
20180705:
The ABI of syscalls used by management tools like sockstat and
netstat has been broken to allow 32-bit binaries to work on
64-bit kernels without modification. These programs will need
to match the kernel in order to function. External programs may
require minor modifications to accommodate a change of type in
structures from pointers to 64-bit virtual addresses.
20180702:
On i386 and amd64 atomics are now inlined. Out of tree modules using
atomics will need to be rebuilt.
20180701:
The '%I' format in the kern.corefile sysctl limits the number of
core files that a process can generate to the number stored in the
debug.ncores sysctl. The '%I' format is replaced by the single digit
index. Previously, if all indexes were taken the kernel would overwrite
only a core file with the highest index in a filename.
Currently the system will create a new core file if there is a free
index or if all slots are taken it will overwrite the oldest one.
20180630:
Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
6.0.1. Please see the 20141231 entry below for information about
prerequisites and upgrading, if you are not already using clang 3.5.0
or higher.
20180628:
r335753 introduced a new quoting method. However, etc/devd/devmatch.conf
needed to be changed to work with it. This change was made with r335763
and requires a mergemaster / etcupdate / etc to update the installed
file.
20180612:
r334930 changed the interface between the NFS modules, so they all
need to be rebuilt. r335018 did a __FreeBSD_version bump for this.
20180530:
As of r334391 lld is the default amd64 system linker; it is installed
as /usr/bin/ld. Kernel build workarounds (see 20180510 entry) are no
longer necessary.
20180530:
The kernel / userland interface for devinfo changed, so you'll
need a new kernel and userland as a pair for it to work (rebuilding
lib/libdevinfo is all that's required). devinfo and devmatch will
not work, but everything else will when there's a mismatch.
20180523:
The on-disk format for hwpmc callchain records has changed to include
threadid corresponding to a given record. This changes the field offsets
and thus requires that libpmcstat be rebuilt before using a kernel
later than r334108.
20180517:
The vxge(4) driver has been removed. This driver was introduced into
HEAD one week before the Exar left the Ethernet market and is not
known to be used. If you have device vxge in your kernel config file
it must be removed.
20180510:
The amd64 kernel now requires a ld that supports ifunc to produce a
working kernel, either lld or a newer binutils. lld is built by default
on amd64, and the 'buildkernel' target uses it automatically. However,
it is not the default linker, so building the kernel the traditional
way requires LD=ld.lld on the command line (or LD=/usr/local/bin/ld for
binutils port/package). lld will soon be default, and this requirement
will go away.
NOTE: As of r334391 lld is the default system linker on amd64, and no
workaround is necessary.
20180508:
The nxge(4) driver has been removed. This driver was for PCI-X 10g
cards made by s2io/Neterion. The company was acquired by Exar and
no longer sells or supports Ethernet products. If you have device
nxge in your kernel config file it must be removed.
20180504:
The tz database (tzdb) has been updated to 2018e. This version more
correctly models time stamps in time zones with negative DST such as
Europe/Dublin (from 1971 on), Europe/Prague (1946/7), and
Africa/Windhoek (1994/2017). This does not affect the UT offsets, only
time zone abbreviations and the tm_isdst flag.
20180502:
The ixgb(4) driver has been removed. This driver was for an early and
uncommon legacy PCI 10GbE for a single ASIC, Intel 82597EX. Intel
quickly shifted to the long lived ixgbe family. If you have device
ixgb in your kernel config file it must be removed.
20180501:
The lmc(4) driver has been removed. This was a WAN interface
card that was already reportedly rare in 2003, and had an ambiguous
license. If you have device lmc in your kernel config file it must
be removed.
20180413:
Support for Arcnet networks has been removed. If you have device
arcnet or device cm in your kernel config file they must be
removed.
20180411:
Support for FDDI networks has been removed. If you have device
fddi or device fpa in your kernel config file they must be
removed.
20180406:
In addition to supporting RFC 3164 formatted messages, the
syslogd(8) service is now capable of parsing RFC 5424 formatted
log messages. The main benefit of using RFC 5424 is that clients
may now send log messages with timestamps containing year numbers,
microseconds and time zone offsets.
Similarly, the syslog(3) C library function has been altered to
send RFC 5424 formatted messages to the local system logging
daemon. On systems using syslogd(8), this change should have no
negative impact, as long as syslogd(8) and the C library are
updated at the same time. On systems using a different system
logging daemon, it may be necessary to make configuration
adjustments, depending on the software used.
When using syslog-ng, add the 'syslog-protocol' flag to local
input sources to enable parsing of RFC 5424 formatted messages:
source src {
unix-dgram("/var/run/log" flags(syslog-protocol));
}
When using rsyslog, disable the 'SysSock.UseSpecialParser' option
of the 'imuxsock' module to let messages be processed by the
regular RFC 3164/5424 parsing pipeline:
module(load="imuxsock" SysSock.UseSpecialParser="off")
Do note that these changes only affect communication between local
applications and syslogd(8). The format that syslogd(8) uses to
store messages on disk or forward messages to other systems
remains unchanged. syslogd(8) still uses RFC 3164 for these
purposes. Options to customize this behaviour will be added in the
future. Utilities that process log files stored in /var/log are
thus expected to continue to function as before.
__FreeBSD_version has been incremented to 1200061 to denote this
change.
20180328:
Support for token ring networks has been removed. If you
have "device token" in your kernel config you should remove
it. No device drivers supported token ring.
20180323:
makefs was modified to be able to tag ISO9660 El Torito boot catalog
entries as EFI instead of overloading the i386 tag as done previously.
The amd64 mkisoimages.sh script used to build amd64 ISO images for
release was updated to use this. This may mean that makefs must be
updated before "make cdrom" can be run in the release directory. This
should be as simple as:
$ cd $SRCDIR/usr.sbin/makefs
$ make depend all install
20180212:
FreeBSD boot loader enhanced with Lua scripting. It's purely opt-in for
now by building WITH_LOADER_LUA and WITHOUT_FORTH in /etc/src.conf.
Co-existence for the transition period will come shortly. Booting is a
complex environment and test coverage for Lua-enabled loaders has been
thin, so it would be prudent to assume it might not work and make
provisions for backup boot methods.
20180211:
devmatch functionality has been turned on in devd. It will automatically
load drivers for unattached devices. This may cause unexpected drivers
to be loaded. Please report any problems to current@ and
imp@freebsd.org.
20180114:
Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
6.0.0. Please see the 20141231 entry below for information about
prerequisites and upgrading, if you are not already using clang 3.5.0
or higher.
20180110:
LLVM's lld linker is now used as the FreeBSD/amd64 bootstrap linker.
This means it is used to link the kernel and userland libraries and
executables, but is not yet installed as /usr/bin/ld by default.
To revert to ld.bfd as the bootstrap linker, in /etc/src.conf set
WITHOUT_LLD_BOOTSTRAP=yes
20180110:
On i386, pmtimer has been removed. Its functionality has been folded
into apm. It was a no-op on ACPI in current for a while now (but was
still needed on i386 in FreeBSD 11 and earlier). Users may need to
remove it from kernel config files.
20180104:
The use of RSS hash from the network card aka flowid has been
disabled by default for lagg(4) as it's currently incompatible with
the lacp and loadbalance protocols.
This can be re-enabled by setting the following in loader.conf:
net.link.lagg.default_use_flowid="1"
20180102:
The SW_WATCHDOG option is no longer necessary to enable the
hardclock-based software watchdog if no hardware watchdog is
configured. As before, SW_WATCHDOG will cause the software
watchdog to be enabled even if a hardware watchdog is configured.
20171215:
r326887 fixes the issue described in the 20171214 UPDATING entry.
r326888 flips the switch back to building GELI support always.
20171214:
r362593 broke ZFS + GELI support for reasons unknown. However,
it also broke ZFS support generally, so GELI has been turned off
by default as the lesser evil in r326857. If you boot off ZFS and/or
GELI, it might not be a good time to update.
20171125:
PowerPC users must update loader(8) by rebuilding world before
installing a new kernel, as the protocol connecting them has
changed. Without the update, loader metadata will not be passed
successfully to the kernel and users will have to enter their
root partition at the kernel mountroot prompt to continue booting.
Newer versions of loader can boot old kernels without issue.
20171110:
The LOADER_FIREWIRE_SUPPORT build variable as been renamed to
WITH/OUT_LOADER_FIREWIRE. LOADER_{NO_,}GELI_SUPPORT has been renamed
to WITH/OUT_LOADER_GELI.
20171106:
The naive and non-compliant support of posix_fallocate(2) in ZFS
has been removed as of r325320. The system call now returns EINVAL
when used on a ZFS file. Although the new behavior complies with the
standard, some consumers are not prepared to cope with it.
One known victim is lld prior to r325420.
20171102:
Building in a FreeBSD src checkout will automatically create object
directories now rather than store files in the current directory if
'make obj' was not ran. Calling 'make obj' is no longer necessary.
This feature can be disabled by setting WITHOUT_AUTO_OBJ=yes in
/etc/src-env.conf (not /etc/src.conf), or passing the option in the
environment.
20171101:
The default MAKEOBJDIR has changed from /usr/obj/<srcdir> for native
builds, and /usr/obj/<arch>/<srcdir> for cross-builds, to a unified
/usr/obj/<srcdir>/<arch>. This behavior can be changed to the old
format by setting WITHOUT_UNIFIED_OBJDIR=yes in /etc/src-env.conf,
the environment, or with -DWITHOUT_UNIFIED_OBJDIR when building.
The UNIFIED_OBJDIR option is a transitional feature that will be
removed for 12.0 release; please migrate to the new format for any
tools by looking up the OBJDIR used by 'make -V .OBJDIR' means rather
than hardcoding paths.
20171028:
The native-xtools target no longer installs the files by default to the
OBJDIR. Use the native-xtools-install target with a DESTDIR to install
to ${DESTDIR}/${NXTP} where NXTP defaults to /nxb-bin.
20171021:
As part of the boot loader infrastructure cleanup, LOADER_*_SUPPORT
options are changing from controlling the build if defined / undefined
to controlling the build with explicit 'yes' or 'no' values. They will
shift to WITH/WITHOUT options to match other options in the system.
20171010:
libstand has turned into a private library for sys/boot use only.
It is no longer supported as a public interface outside of sys/boot.
20171005:
The arm port has split armv6 into armv6 and armv7. armv7 is now
a valid TARGET_ARCH/MACHINE_ARCH setting. If you have an armv7 system
and are running a kernel from before r324363, you will need to add
MACHINE_ARCH=armv7 to 'make buildworld' to do a native build.
20171003:
When building multiple kernels using KERNCONF, non-existent KERNCONF
files will produce an error and buildkernel will fail. Previously
missing KERNCONF files silently failed giving no indication as to
why, only to subsequently discover during installkernel that the
desired kernel was never built in the first place.
20170912:
The default serial number format for CTL LUNs has changed. This will
affect users who use /dev/diskid/* device nodes, or whose FibreChannel
or iSCSI clients care about their LUNs' serial numbers. Users who
require serial number stability should hardcode serial numbers in
/etc/ctl.conf .
20170912:
For 32-bit arm compiled for hard-float support, soft-floating point
binaries now always get their shared libraries from
LD_SOFT_LIBRARY_PATH (in the past, this was only used if
/usr/libsoft also existed). Only users with a hard-float ld.so, but
soft-float everything else should be affected.
20170826:
The geli password typed at boot is now hidden. To restore the previous
behavior, see geli(8) for configuration options.
20170825:
Move PMTUD blackhole counters to TCPSTATS and remove them from bare
sysctl values. Minor nit, but requires a rebuild of both world/kernel
to complete.
20170814:
"make check" behavior (made in ^/head@r295380) has been changed to
execute from a limited sandbox, as opposed to executing from
${TESTSDIR}.
Behavioral changes:
- The "beforecheck" and "aftercheck" targets are now specified.
- ${CHECKDIR} (added in commit noted above) has been removed.
- Legacy behavior can be enabled by setting
WITHOUT_MAKE_CHECK_USE_SANDBOX in src.conf(5) or the environment.
If the limited sandbox mode is enabled, "make check" will execute
"make distribution", then install, execute the tests, and clean up the
sandbox if successful.
The "make distribution" and "make install" targets are typically run as
root to set appropriate permissions and ownership at installation time.
The end-user should set "WITH_INSTALL_AS_USER" in src.conf(5) or the
environment if executing "make check" with limited sandbox mode using
an unprivileged user.
20170808:
Since the switch to GPT disk labels, fsck for UFS/FFS has been
unable to automatically find alternate superblocks. As of r322297,
the information needed to find alternate superblocks has been
moved to the end of the area reserved for the boot block.
Filesystems created with a newfs of this vintage or later
will create the recovery information. If you have a filesystem
created prior to this change and wish to have a recovery block
created for your filesystem, you can do so by running fsck in
foreground mode (i.e., do not use the -p or -y options). As it
starts, fsck will ask ``SAVE DATA TO FIND ALTERNATE SUPERBLOCKS''
to which you should answer yes.
20170728:
As of r321665, an NFSv4 server configuration that services
Kerberos mounts or clients that do not support the uid/gid in
owner/owner_group string capability, must explicitly enable
the nfsuserd daemon by adding nfsuserd_enable="YES" to the
machine's /etc/rc.conf file.
20170722:
Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 5.0.0.
Please see the 20141231 entry below for information about prerequisites
and upgrading, if you are not already using clang 3.5.0 or higher.
20170701:
WITHOUT_RCMDS is now the default. Set WITH_RCMDS if you need the
r-commands (rlogin, rsh, etc.) to be built with the base system.
20170625:
The FreeBSD/powerpc platform now uses a 64-bit type for time_t. This is
a very major ABI incompatible change, so users of FreeBSD/powerpc must
be careful when performing source upgrades. It is best to run
'make installworld' from an alternate root system, either a live
CD/memory stick, or a temporary root partition. Additionally, all ports
must be recompiled. powerpc64 is largely unaffected, except in the case
of 32-bit compatibility. All 32-bit binaries will be affected.
20170623:
Forward compatibility for the "ino64" project have been committed. This
will allow most new binaries to run on older kernels in a limited
fashion. This prevents many of the common foot-shooting actions in the
upgrade as well as the limited ability to roll back the kernel across
the ino64 upgrade. Complicated use cases may not work properly, though
enough simpler ones work to allow recovery in most situations.
20170620:
Switch back to the BSDL dtc (Device Tree Compiler). Set WITH_GPL_DTC
if you require the GPL compiler.
20170618:
The internal ABI used for communication between the NFS kernel modules
was changed by r320085, so __FreeBSD_version was bumped to
ensure all the NFS related modules are updated together.
20170617:
The ABI of struct event was changed by extending the data
member to 64bit and adding ext fields. For upgrade, same
precautions as for the entry 20170523 "ino64" must be
followed.
20170531:
The GNU roff toolchain has been removed from base. To render manpages
which are not supported by mandoc(1), man(1) can fallback on GNU roff
from ports (and recommends to install it).
To render roff(7) documents, consider using GNU roff from ports or the
heirloom doctools roff toolchain from ports via pkg install groff or
via pkg install heirloom-doctools.
20170524:
The ath(4) and ath_hal(4) modules now build piecemeal to allow for
smaller runtime footprint builds. This is useful for embedded systems
which only require one chipset support.
If you load it as a module, make sure this is in /boot/loader.conf:
if_ath_load="YES"
This will load the HAL, all chip/RF backends and if_ath_pci.
If you have if_ath_pci in /boot/loader.conf, ensure it is after
if_ath or it will not load any HAL chipset support.
If you want to selectively load things (eg on ye cheape ARM/MIPS
platforms where RAM is at a premium) you should:
* load ath_hal
* load the chip modules in question
* load ath_rate, ath_dfs
* load ath_main
* load if_ath_pci and/or if_ath_ahb depending upon your particular
bus bind type - this is where probe/attach is done.
For further comments/feedback, poke adrian@ .
20170523:
The "ino64" 64-bit inode project has been committed, which extends
a number of types to 64 bits. Upgrading in place requires care and
adherence to the documented upgrade procedure.
If using a custom kernel configuration ensure that the
COMPAT_FREEBSD11 option is included (as during the upgrade the
system will be running the ino64 kernel with the existing world).
For the safest in-place upgrade begin by removing previous build
artifacts via "rm -rf /usr/obj/*". Then, carefully follow the full
procedure documented below under the heading "To rebuild everything and
install it on the current system." Specifically, a reboot is required
after installing the new kernel before installing world. While an
installworld normally works by accident from multiuser after rebooting
the proper kernel, there are many cases where this will fail across this
upgrade and installworld from single user is required.
20170424:
The NATM framework including the en(4), fatm(4), hatm(4), and
patm(4) devices has been removed. Consumers should plan a
migration before the end-of-life date for FreeBSD 11.
20170420:
GNU diff has been replaced by a BSD licensed diff. Some features of GNU
diff has not been implemented, if those are needed a newer version of
GNU diff is available via the diffutils package under the gdiff name.
20170413:
As of r316810 for ipfilter, keep frags is no longer assumed when
keep state is specified in a rule. r316810 aligns ipfilter with
documentation in man pages separating keep frags from keep state.
This allows keep state to be specified without forcing keep frags
and allows keep frags to be specified independently of keep state.
To maintain previous behaviour, also specify keep frags with
keep state (as documented in ipf.conf.5).
20170407:
arm64 builds now use the base system LLD 4.0.0 linker by default,
instead of requiring that the aarch64-binutils port or package be
installed. To continue using aarch64-binutils, set
CROSS_BINUTILS_PREFIX=/usr/local/aarch64-freebsd/bin .
20170405:
The UDP optimization in entry 20160818 that added the sysctl
net.inet.udp.require_l2_bcast has been reverted. L2 broadcast
packets will no longer be treated as L3 broadcast packets.
20170331:
Binds and sends to the loopback addresses, IPv6 and IPv4, will now
use any explicitly assigned loopback address available in the jail
instead of using the first assigned address of the jail.
20170329:
The ctl.ko module no longer implements the iSCSI target frontend:
cfiscsi.ko does instead.
If building cfiscsi.ko as a kernel module, the module can be loaded
via one of the following methods:
- `cfiscsi_load="YES"` in loader.conf(5).
- Add `cfiscsi` to `$kld_list` in rc.conf(5).
- ctladm(8)/ctld(8), when compiled with iSCSI support
(`WITH_ISCSI=yes` in src.conf(5))
Please see cfiscsi(4) for more details.
20170316:
The mmcsd.ko module now additionally depends on geom_flashmap.ko.
Also, mmc.ko and mmcsd.ko need to be a matching pair built from the
same source (previously, the dependency of mmcsd.ko on mmc.ko was
missing, but mmcsd.ko now will refuse to load if it is incompatible
with mmc.ko).
20170315:
The syntax of ipfw(8) named states was changed to avoid ambiguity.
If you have used named states in the firewall rules, you need to modify
them after installworld and before rebooting. Now named states must
be prefixed with colon.
20170311:
The old drm (sys/dev/drm/) drivers for i915 and radeon have been
removed as the userland we provide cannot use them. The KMS version
(sys/dev/drm2) supports the same hardware.
20170302:
Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 4.0.0.
Please see the 20141231 entry below for information about prerequisites
and upgrading, if you are not already using clang 3.5.0 or higher.
20170221:
The code that provides support for ZFS .zfs/ directory functionality
has been reimplemented. It's not possible now to create a snapshot
by mkdir under .zfs/snapshot/. That should be the only user visible
change.
20170216:
EISA bus support has been removed. The WITH_EISA option is no longer
valid.
20170215:
MCA bus support has been removed.
20170127:
The WITH_LLD_AS_LD / WITHOUT_LLD_AS_LD build knobs have been renamed
WITH_LLD_IS_LD / WITHOUT_LLD_IS_LD, for consistency with CLANG_IS_CC.
20170112:
The EM_MULTIQUEUE kernel configuration option is deprecated now that
the em(4) driver conforms to iflib specifications.
20170109:
The igb(4), em(4) and lem(4) ethernet drivers are now implemented via
IFLIB. If you have a custom kernel configuration that excludes em(4)
but you use igb(4), you need to re-add em(4) to your custom
configuration.
20161217:
Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.1.
Please see the 20141231 entry below for information about prerequisites
and upgrading, if you are not already using clang 3.5.0 or higher.
20161124:
Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.9.0.
Please see the 20141231 entry below for information about prerequisites
and upgrading, if you are not already using clang 3.5.0 or higher.
20161119:
The layout of the pmap structure has changed for powerpc to put the pmap
statistics at the front for all CPU variations. libkvm(3) and all tools
that link against it need to be recompiled.
20161030:
isl(4) and cyapa(4) drivers now require a new driver,
chromebook_platform(4), to work properly on Chromebook-class hardware.
On other types of hardware the drivers may need to be configured using
device hints. Please see the corresponding manual pages for details.
20161017:
The urtwn(4) driver was merged into rtwn(4) and now consists of
rtwn(4) main module + rtwn_usb(4) and rtwn_pci(4) bus-specific
parts.
Also, firmware for RTL8188CE was renamed due to possible name
conflict (rtwnrtl8192cU(B) -> rtwnrtl8192cE(B))
20161015:
GNU rcs has been removed from base. It is available as packages:
- rcs: Latest GPLv3 GNU rcs version.
- rcs57: Copy of the latest version of GNU rcs (GPLv2) before it was
removed from base.
20161008:
Use of the cc_cdg, cc_chd, cc_hd, or cc_vegas congestion control
modules now requires that the kernel configuration contain the
TCP_HHOOK option. (This option is included in the GENERIC kernel.)
20161003:
The WITHOUT_ELFCOPY_AS_OBJCOPY src.conf(5) knob has been retired.
ELF Tool Chain's elfcopy is always installed as /usr/bin/objcopy.
20160924:
Relocatable object files with the extension of .So have been renamed
to use an extension of .pico instead. The purpose of this change is
to avoid a name clash with shared libraries on case-insensitive file
systems. On those file systems, foo.So is the same file as foo.so.
20160918:
GNU rcs has been turned off by default. It can (temporarily) be built
again by adding WITH_RCS knob in src.conf.
Otherwise, GNU rcs is available from packages:
- rcs: Latest GPLv3 GNU rcs version.
- rcs57: Copy of the latest version of GNU rcs (GPLv2) from base.
20160918:
The backup_uses_rcs functionality has been removed from rc.subr.
20160908:
The queue(3) debugging macro, QUEUE_MACRO_DEBUG, has been split into
two separate components, QUEUE_MACRO_DEBUG_TRACE and
QUEUE_MACRO_DEBUG_TRASH. Define both for the original
QUEUE_MACRO_DEBUG behavior.
20160824:
r304787 changed some ioctl interfaces between the iSCSI userspace
programs and the kernel. ctladm, ctld, iscsictl, and iscsid must be
rebuilt to work with new kernels. __FreeBSD_version has been bumped
to 1200005.
20160818:
The UDP receive code has been updated to only treat incoming UDP
packets that were addressed to an L2 broadcast address as L3
broadcast packets. It is not expected that this will affect any
standards-conforming UDP application. The new behaviour can be
disabled by setting the sysctl net.inet.udp.require_l2_bcast to
0.
20160818:
Remove the openbsd_poll system call.
__FreeBSD_version has been bumped because of this.
20160708:
The stable/11 branch has been created from head@r302406.
20160622:
The libc stub for the pipe(2) system call has been replaced with
a wrapper that calls the pipe2(2) system call and the pipe(2)
system call is now only implemented by the kernels that include
"options COMPAT_FREEBSD10" in their config file (this is the
default). Users should ensure that this option is enabled in
their kernel or upgrade userspace to r302092 before upgrading their
kernel.
20160527:
CAM will now strip leading spaces from SCSI disks' serial numbers.
This will affect users who create UFS filesystems on SCSI disks using
those disk's diskid device nodes. For example, if /etc/fstab
previously contained a line like
"/dev/diskid/DISK-%20%20%20%20%20%20%20ABCDEFG0123456", you should
change it to "/dev/diskid/DISK-ABCDEFG0123456". Users of geom
transforms like gmirror may also be affected. ZFS users should
generally be fine.
20160523:
The bitstring(3) API has been updated with new functionality and
improved performance. But it is binary-incompatible with the old API.
Objects built with the new headers may not be linked against objects
built with the old headers.
20160520:
The brk and sbrk functions have been removed from libc on arm64.
Binutils from ports has been updated to not link to these
functions and should be updated to the latest version before
installing a new libc.
20160517:
The armv6 port now defaults to hard float ABI. Limited support
for running both hardfloat and soft float on the same system
is available using the libraries installed with -DWITH_LIBSOFT.
This has only been tested as an upgrade path for installworld
and packages may fail or need manual intervention to run. New
packages will be needed.
To update an existing self-hosted armv6hf system, you must add
TARGET_ARCH=armv6 on the make command line for both the build
and the install steps.
20160510:
Kernel modules compiled outside of a kernel build now default to
installing to /boot/modules instead of /boot/kernel. Many kernel
modules built this way (such as those in ports) already overrode
KMODDIR explicitly to install into /boot/modules. However,
manually building and installing a module from /sys/modules will
now install to /boot/modules instead of /boot/kernel.
20160414:
The CAM I/O scheduler has been committed to the kernel. There should be
no user visible impact. This does enable NCQ Trim on ada SSDs. While the
list of known rogues that claim support for this but actually corrupt
data is believed to be complete, be on the lookout for data
corruption. The known rogue list is believed to be complete:
o Crucial MX100, M550 drives with MU01 firmware.
o Micron M510 and M550 drives with MU01 firmware.
o Micron M500 prior to MU07 firmware
o Samsung 830, 840, and 850 all firmwares
o FCCT M500 all firmwares
Crucial has firmware http://www.crucial.com/usa/en/support-ssd-firmware
with working NCQ TRIM. For Micron branded drives, see your sales rep for
updated firmware. Black listed drives will work correctly because these
drives work correctly so long as no NCQ TRIMs are sent to them. Given
this list is the same as found in Linux, it's believed there are no
other rogues in the market place. All other models from the above
vendors work.
To be safe, if you are at all concerned, you can quirk each of your
drives to prevent NCQ from being sent by setting:
kern.cam.ada.X.quirks="0x2"
in loader.conf. If the drive requires the 4k sector quirk, set the
quirks entry to 0x3.
20160330:
The FAST_DEPEND build option has been removed and its functionality is
now the one true way. The old mkdep(1) style of 'make depend' has
been removed. See 20160311 for further details.
20160317:
Resource range types have grown from unsigned long to uintmax_t. All
drivers, and anything using libdevinfo, need to be recompiled.
20160311:
WITH_FAST_DEPEND is now enabled by default for in-tree and out-of-tree
builds. It no longer runs mkdep(1) during 'make depend', and the
'make depend' stage can safely be skipped now as it is auto ran
when building 'make all' and will generate all SRCS and DPSRCS before
building anything else. Dependencies are gathered at compile time with
-MF flags kept in separate .depend files per object file. Users should
run 'make cleandepend' once if using -DNO_CLEAN to clean out older
stale .depend files.
20160306:
On amd64, clang 3.8.0 can now insert sections of type AMD64_UNWIND into
kernel modules. Therefore, if you load any kernel modules at boot time,
please install the boot loaders after you install the kernel, but before
rebooting, e.g.:
make buildworld
make buildkernel KERNCONF=YOUR_KERNEL_HERE
make installkernel KERNCONF=YOUR_KERNEL_HERE
make -C sys/boot install
<reboot in single user>
Then follow the usual steps, described in the General Notes section,
below.
20160305:
Clang, llvm, lldb and compiler-rt have been upgraded to 3.8.0. Please
see the 20141231 entry below for information about prerequisites and
upgrading, if you are not already using clang 3.5.0 or higher.
20160301:
The AIO subsystem is now a standard part of the kernel. The
VFS_AIO kernel option and aio.ko kernel module have been removed.
Due to stability concerns, asynchronous I/O requests are only
permitted on sockets and raw disks by default. To enable
asynchronous I/O requests on all file types, set the
vfs.aio.enable_unsafe sysctl to a non-zero value.
20160226:
The ELF object manipulation tool objcopy is now provided by the
ELF Tool Chain project rather than by GNU binutils. It should be a
drop-in replacement, with the addition of arm64 support. The
(temporary) src.conf knob WITHOUT_ELFCOPY_AS_OBJCOPY knob may be set
to obtain the GNU version if necessary.
20160129:
Building ZFS pools on top of zvols is prohibited by default. That
feature has never worked safely; it's always been prone to deadlocks.
Using a zvol as the backing store for a VM guest's virtual disk will
still work, even if the guest is using ZFS. Legacy behavior can be
restored by setting vfs.zfs.vol.recursive=1.
20160119:
The NONE and HPN patches has been removed from OpenSSH. They are
still available in the security/openssh-portable port.
20160113:
With the addition of ypldap(8), a new _ypldap user is now required
during installworld. "mergemaster -p" can be used to add the user
prior to installworld, as documented in the handbook.
20151216:
The tftp loader (pxeboot) now uses the option root-path directive. As a
consequence it no longer looks for a pxeboot.4th file on the tftp
server. Instead it uses the regular /boot infrastructure as with the
other loaders.
20151211:
The code to start recording plug and play data into the modules has
been committed. While the old tools will properly build a new kernel,
a number of warnings about "unknown metadata record 4" will be produced
for an older kldxref. To avoid such warnings, make sure to rebuild
the kernel toolchain (or world). Make sure that you have r292078 or
later when trying to build 292077 or later before rebuilding.
20151207:
Debug data files are now built by default with 'make buildworld' and
installed with 'make installworld'. This facilitates debugging but
requires more disk space both during the build and for the installed
world. Debug files may be disabled by setting WITHOUT_DEBUG_FILES=yes
in src.conf(5).
20151130:
r291527 changed the internal interface between the nfsd.ko and
nfscommon.ko modules. As such, they must both be upgraded to-gether.
__FreeBSD_version has been bumped because of this.
20151108:
Add support for unicode collation strings leads to a change of
order of files listed by ls(1) for example. To get back to the old
behaviour, set LC_COLLATE environment variable to "C".
Databases administrators will need to reindex their databases given
collation results will be different.
Due to a bug in install(1) it is recommended to remove the ancient
locales before running make installworld.
rm -rf /usr/share/locale/*
20151030:
The OpenSSL has been upgraded to 1.0.2d. Any binaries requiring
libcrypto.so.7 or libssl.so.7 must be recompiled.
20151020:
Qlogic 24xx/25xx firmware images were updated from 5.5.0 to 7.3.0.
Kernel modules isp_2400_multi and isp_2500_multi were removed and
should be replaced with isp_2400 and isp_2500 modules respectively.
20151017:
The build previously allowed using 'make -n' to not recurse into
sub-directories while showing what commands would be executed, and
'make -n -n' to recursively show commands. Now 'make -n' will recurse
and 'make -N' will not.
20151012:
If you specify SENDMAIL_MC or SENDMAIL_CF in make.conf, mergemaster
and etcupdate will now use this file. A custom sendmail.cf is now
updated via this mechanism rather than via installworld. If you had
excluded sendmail.cf in mergemaster.rc or etcupdate.conf, you may
want to remove the exclusion or change it to "always install".
/etc/mail/sendmail.cf is now managed the same way regardless of
whether SENDMAIL_MC/SENDMAIL_CF is used. If you are not using
SENDMAIL_MC/SENDMAIL_CF there should be no change in behavior.
20151011:
Compatibility shims for legacy ATA device names have been removed.
It includes ATA_STATIC_ID kernel option, kern.cam.ada.legacy_aliases
and kern.geom.raid.legacy_aliases loader tunables, kern.devalias.*
environment variables, /dev/ad* and /dev/ar* symbolic links.
20151006:
Clang, llvm, lldb, compiler-rt and libc++ have been upgraded to 3.7.0.
Please see the 20141231 entry below for information about prerequisites
and upgrading, if you are not already using clang 3.5.0 or higher.
20150924:
Kernel debug files have been moved to /usr/lib/debug/boot/kernel/,
and renamed from .symbols to .debug. This reduces the size requirements
on the boot partition or file system and provides consistency with
userland debug files.
When using the supported kernel installation method the
/usr/lib/debug/boot/kernel directory will be renamed (to kernel.old)
as is done with /boot/kernel.
Developers wishing to maintain the historical behavior of installing
debug files in /boot/kernel/ can set KERN_DEBUGDIR="" in src.conf(5).
20150827:
The wireless drivers had undergone changes that remove the 'parent
interface' from the ifconfig -l output. The rc.d network scripts
used to check presence of a parent interface in the list, so old
scripts would fail to start wireless networking. Thus, etcupdate(3)
or mergemaster(8) run is required after kernel update, to update your
rc.d scripts in /etc.
20150827:
pf no longer supports 'scrub fragment crop' or 'scrub fragment drop-ovl'
These configurations are now automatically interpreted as
'scrub fragment reassemble'.
20150817:
Kernel-loadable modules for the random(4) device are back. To use
them, the kernel must have
device random
options RANDOM_LOADABLE
kldload(8) can then be used to load random_fortuna.ko
or random_yarrow.ko. Please note that due to the indirect
function calls that the loadable modules need to provide,
the build-in variants will be slightly more efficient.
The random(4) kernel option RANDOM_DUMMY has been retired due to
unpopularity. It was not all that useful anyway.
20150813:
The WITHOUT_ELFTOOLCHAIN_TOOLS src.conf(5) knob has been retired.
Control over building the ELF Tool Chain tools is now provided by
the WITHOUT_TOOLCHAIN knob.
20150810:
The polarity of Pulse Per Second (PPS) capture events with the
uart(4) driver has been corrected. Prior to this change the PPS
"assert" event corresponded to the trailing edge of a positive PPS
pulse and the "clear" event was the leading edge of the next pulse.
As the width of a PPS pulse in a typical GPS receiver is on the
order of 1 millisecond, most users will not notice any significant
difference with this change.
Anyone who has compensated for the historical polarity reversal by
configuring a negative offset equal to the pulse width will need to
remove that workaround.
20150809:
The default group assigned to /dev/dri entries has been changed
from 'wheel' to 'video' with the id of '44'. If you want to have
access to the dri devices please add yourself to the video group
with:
# pw groupmod video -m $USER
20150806:
The menu.rc and loader.rc files will now be replaced during
upgrades. Please migrate local changes to menu.rc.local and
loader.rc.local instead.
20150805:
GNU Binutils versions of addr2line, c++filt, nm, readelf, size,
strings and strip have been removed. The src.conf(5) knob
WITHOUT_ELFTOOLCHAIN_TOOLS no longer provides the binutils tools.
20150728:
As ZFS requires more kernel stack pages than is the default on some
architectures e.g. i386, it now warns if KSTACK_PAGES is less than
ZFS_MIN_KSTACK_PAGES (which is 4 at the time of writing).
Please consider using 'options KSTACK_PAGES=X' where X is greater
than or equal to ZFS_MIN_KSTACK_PAGES i.e. 4 in such configurations.
20150706:
sendmail has been updated to 8.15.2. Starting with FreeBSD 11.0
and sendmail 8.15, sendmail uses uncompressed IPv6 addresses by
default, i.e., they will not contain "::". For example, instead
of ::1, it will be 0:0:0:0:0:0:0:1. This permits a zero subnet
to have a more specific match, such as different map entries for
IPv6:0:0 vs IPv6:0. This change requires that configuration
data (including maps, files, classes, custom ruleset, etc.) must
use the same format, so make certain such configuration data is
upgrading. As a very simple check search for patterns like
'IPv6:[0-9a-fA-F:]*::' and 'IPv6::'. To return to the old
behavior, set the m4 option confUSE_COMPRESSED_IPV6_ADDRESSES or
the cf option UseCompressedIPv6Addresses.
20150630:
The default kernel entropy-processing algorithm is now
Fortuna, replacing Yarrow.
Assuming you have 'device random' in your kernel config
file, the configurations allow a kernel option to override
this default. You may choose *ONE* of:
options RANDOM_YARROW # Legacy /dev/random algorithm.
options RANDOM_DUMMY # Blocking-only driver.
If you have neither, you get Fortuna. For most people,
read no further, Fortuna will give a /dev/random that works
like it always used to, and the difference will be irrelevant.
If you remove 'device random', you get *NO* kernel-processed
entropy at all. This may be acceptable to folks building
embedded systems, but has complications. Carry on reading,
and it is assumed you know what you need.
*PLEASE* read random(4) and random(9) if you are in the
habit of tweaking kernel configs, and/or if you are a member
of the embedded community, wanting specific and not-usual
behaviour from your security subsystems.
NOTE!! If you use RANDOM_DUMMY and/or have no 'device
random', you will NOT have a functioning /dev/random, and
many cryptographic features will not work, including SSH.
You may also find strange behaviour from the random(3) set
of library functions, in particular sranddev(3), srandomdev(3)
and arc4random(3). The reason for this is that the KERN_ARND
sysctl only returns entropy if it thinks it has some to
share, and with RANDOM_DUMMY or no 'device random' this
will never happen.
20150623:
An additional fix for the issue described in the 20150614 sendmail
entry below has been committed in revision 284717.
20150616:
FreeBSD's old make (fmake) has been removed from the system. It is
available as the devel/fmake port or via pkg install fmake.
20150615:
The fix for the issue described in the 20150614 sendmail entry
below has been committed in revision 284436. The work
around described in that entry is no longer needed unless the
default setting is overridden by a confDH_PARAMETERS configuration
setting of '5' or pointing to a 512 bit DH parameter file.
20150614:
ALLOW_DEPRECATED_ATF_TOOLS/ATFFILE support has been removed from
atf.test.mk (included from bsd.test.mk). Please upgrade devel/atf
and devel/kyua to version 0.20+ and adjust any calling code to work
with Kyuafile and kyua.
20150614:
The import of openssl to address the FreeBSD-SA-15:10.openssl
security advisory includes a change which rejects handshakes
with DH parameters below 768 bits. sendmail releases prior
to 8.15.2 (not yet released), defaulted to a 512 bit
DH parameter setting for client connections. To work around
this interoperability, sendmail can be configured to use a
2048 bit DH parameter by:
1. Edit /etc/mail/`hostname`.mc
2. If a setting for confDH_PARAMETERS does not exist or
exists and is set to a string beginning with '5',
replace it with '2'.
3. If a setting for confDH_PARAMETERS exists and is set to
a file path, create a new file with:
openssl dhparam -out /path/to/file 2048
4. Rebuild the .cf file:
cd /etc/mail/; make; make install
5. Restart sendmail:
cd /etc/mail/; make restart
A sendmail patch is coming, at which time this file will be
updated.
20150604:
Generation of legacy formatted entries have been disabled by default
in pwd_mkdb(8), as all base system consumers of the legacy formatted
entries were converted to use the new format by default when the new,
machine independent format have been added and supported since FreeBSD
5.x.
Please see the pwd_mkdb(8) manual page for further details.
20150525:
Clang and llvm have been upgraded to 3.6.1 release. Please see the
20141231 entry below for information about prerequisites and upgrading,
if you are not already using 3.5.0 or higher.
20150521:
TI platform code switched to using vendor DTS files and this update
may break existing systems running on Beaglebone, Beaglebone Black,
and Pandaboard:
- dtb files should be regenerated/reinstalled. Filenames are the
same but content is different now
- GPIO addressing was changed, now each GPIO bank (32 pins per bank)
has its own /dev/gpiocX device, e.g. pin 121 on /dev/gpioc0 in old
addressing scheme is now pin 25 on /dev/gpioc3.
- Pandaboard: /etc/ttys should be updated, serial console device is
now /dev/ttyu2, not /dev/ttyu0
20150501:
soelim(1) from gnu/usr.bin/groff has been replaced by usr.bin/soelim.
If you need the GNU extension from groff soelim(1), install groff
from package: pkg install groff, or via ports: textproc/groff.
20150423:
chmod, chflags, chown and chgrp now affect symlinks in -R mode as
defined in symlink(7); previously symlinks were silently ignored.
20150415:
The const qualifier has been removed from iconv(3) to comply with
POSIX. The ports tree is aware of this from r384038 onwards.
20150416:
Libraries specified by LIBADD in Makefiles must have a corresponding
DPADD_<lib> variable to ensure correct dependencies. This is now
enforced in src.libnames.mk.
20150324:
From legacy ata(4) driver was removed support for SATA controllers
supported by more functional drivers ahci(4), siis(4) and mvs(4).
Kernel modules ataahci and ataadaptec were removed completely,
replaced by ahci and mvs modules respectively.
20150315:
Clang, llvm and lldb have been upgraded to 3.6.0 release. Please see
the 20141231 entry below for information about prerequisites and
upgrading, if you are not already using 3.5.0 or higher.
20150307:
The 32-bit PowerPC kernel has been changed to a position-independent
executable. This can only be booted with a version of loader(8)
newer than January 31, 2015, so make sure to update both world and
kernel before rebooting.
20150217:
If you are running a -CURRENT kernel since r273872 (Oct 30th, 2014),
but before r278950, the RNG was not seeded properly. Immediately
upgrade the kernel to r278950 or later and regenerate any keys (e.g.
ssh keys or openssl keys) that were generated w/ a kernel from that
range. This does not affect programs that directly used /dev/random
or /dev/urandom. All userland uses of arc4random(3) are affected.
20150210:
The autofs(4) ABI was changed in order to restore binary compatibility
with 10.1-RELEASE. The automountd(8) daemon needs to be rebuilt to work
with the new kernel.
20150131:
The powerpc64 kernel has been changed to a position-independent
executable. This can only be booted with a new version of loader(8),
so make sure to update both world and kernel before rebooting.
20150118:
Clang and llvm have been upgraded to 3.5.1 release. This is a bugfix
only release, no new features have been added. Please see the 20141231
entry below for information about prerequisites and upgrading, if you
are not already using 3.5.0.
20150107:
ELF tools addr2line, elfcopy (strip), nm, size, and strings are now
taken from the ELF Tool Chain project rather than GNU binutils. They
should be drop-in replacements, with the addition of arm64 support.
The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the
binutils tools, if necessary. See 20150805 for updated information.
20150105:
The default Unbound configuration now enables remote control
using a local socket. Users who have already enabled the
local_unbound service should regenerate their configuration
by running "service local_unbound setup" as root.
20150102:
The GNU texinfo and GNU info pages have been removed.
To be able to view GNU info pages please install texinfo from ports.
20141231:
Clang, llvm and lldb have been upgraded to 3.5.0 release.
As of this release, a prerequisite for building clang, llvm and lldb is
a C++11 capable compiler and C++11 standard library. This means that to
be able to successfully build the cross-tools stage of buildworld, with
clang as the bootstrap compiler, your system compiler or cross compiler
should either be clang 3.3 or later, or gcc 4.8 or later, and your
system C++ library should be libc++, or libdstdc++ from gcc 4.8 or
later.
On any standard FreeBSD 10.x or 11.x installation, where clang and
libc++ are on by default (that is, on x86 or arm), this should work out
of the box.
On 9.x installations where clang is enabled by default, e.g. on x86 and
powerpc, libc++ will not be enabled by default, so libc++ should be
built (with clang) and installed first. If both clang and libc++ are
missing, build clang first, then use it to build libc++.
On 8.x and earlier installations, upgrade to 9.x first, and then follow
the instructions for 9.x above.
Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by
default, and do not build clang.
Many embedded systems are resource constrained, and will not be able to
build clang in a reasonable time, or in some cases at all. In those
cases, cross building bootable systems on amd64 is a workaround.
This new version of clang introduces a number of new warnings, of which
the following are most likely to appear:
-Wabsolute-value
This warns in two cases, for both C and C++:
* When the code is trying to take the absolute value of an unsigned
quantity, which is effectively a no-op, and almost never what was
intended. The code should be fixed, if at all possible. If you are
sure that the unsigned quantity can be safely cast to signed, without
loss of information or undefined behavior, you can add an explicit
cast, or disable the warning.
* When the code is trying to take an absolute value, but the called
abs() variant is for the wrong type, which can lead to truncation.
If you want to disable the warning instead of fixing the code, please
make sure that truncation will not occur, or it might lead to unwanted
side-effects.
-Wtautological-undefined-compare and
-Wundefined-bool-conversion
These warn when C++ code is trying to compare 'this' against NULL, while
'this' should never be NULL in well-defined C++ code. However, there is
some legacy (pre C++11) code out there, which actively abuses this
feature, which was less strictly defined in previous C++ versions.
Squid and openjdk do this, for example. The warning can be turned off
for C++98 and earlier, but compiling the code in C++11 mode might result
in unexpected behavior; for example, the parts of the program that are
unreachable could be optimized away.
20141222:
The old NFS client and server (kernel options NFSCLIENT, NFSSERVER)
kernel sources have been removed. The .h files remain, since some
utilities include them. This will need to be fixed later.
If "mount -t oldnfs ..." is attempted, it will fail.
If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used,
the utilities will report errors.
20141121:
The handling of LOCAL_LIB_DIRS has been altered to skip addition of
directories to top level SUBDIR variable when their parent
directory is included in LOCAL_DIRS. Users with build systems with
such hierarchies and without SUBDIR entries in the parent
directory Makefiles should add them or add the directories to
LOCAL_DIRS.
20141109:
faith(4) and faithd(8) have been removed from the base system. Faith
has been obsolete for a very long time.
20141104:
vt(4), the new console driver, is enabled by default. It brings
support for Unicode and double-width characters, as well as
support for UEFI and integration with the KMS kernel video
drivers.
You may need to update your console settings in /etc/rc.conf,
most probably the keymap. During boot, /etc/rc.d/syscons will
indicate what you need to do.
vt(4) still has issues and lacks some features compared to
syscons(4). See the wiki for up-to-date information:
https://wiki.freebsd.org/Newcons
If you want to keep using syscons(4), you can do so by adding
the following line to /boot/loader.conf:
kern.vty=sc
20141102:
pjdfstest has been integrated into kyua as an opt-in test suite.
Please see share/doc/pjdfstest/README for more details on how to
execute it.
20141009:
gperf has been removed from the base system for architectures
that use clang. Ports that require gperf will obtain it from the
devel/gperf port.
20140923:
pjdfstest has been moved from tools/regression/pjdfstest to
contrib/pjdfstest .
20140922:
At svn r271982, The default linux compat kernel ABI has been adjusted
to 2.6.18 in support of the linux-c6 compat ports infrastructure
update. If you wish to continue using the linux-f10 compat ports,
add compat.linux.osrelease=2.6.16 to your local sysctl.conf. Users are
encouraged to update their linux-compat packages to linux-c6 during
their next update cycle.
20140729:
The ofwfb driver, used to provide a graphics console on PowerPC when
using vt(4), no longer allows mmap() of all physical memory. This
will prevent Xorg on PowerPC with some ATI graphics cards from
initializing properly unless x11-servers/xorg-server is updated to
1.12.4_8 or newer.
20140723:
The xdev targets have been converted to using TARGET and
TARGET_ARCH instead of XDEV and XDEV_ARCH.
20140719:
The default unbound configuration has been modified to address
issues with reverse lookups on networks that use private
address ranges. If you use the local_unbound service, run
"service local_unbound setup" as root to regenerate your
configuration, then "service local_unbound reload" to load the
new configuration.
20140709:
The GNU texinfo and GNU info pages are not built and installed
anymore, WITH_INFO knob has been added to allow to built and install
them again.
UPDATE: see 20150102 entry on texinfo's removal
20140708:
The GNU readline library is now an INTERNALLIB - that is, it is
statically linked into consumers (GDB and variants) in the base
system, and the shared library is no longer installed. The
devel/readline port is available for third party software that
requires readline.
20140702:
The Itanium architecture (ia64) has been removed from the list of
known architectures. This is the first step in the removal of the
architecture.
20140701:
Commit r268115 has added NFSv4.1 server support, merged from
projects/nfsv4.1-server. Since this includes changes to the
internal interfaces between the NFS related modules, a full
build of the kernel and modules will be necessary.
__FreeBSD_version has been bumped.
20140629:
The WITHOUT_VT_SUPPORT kernel config knob has been renamed
WITHOUT_VT. (The other _SUPPORT knobs have a consistent meaning
which differs from the behaviour controlled by this knob.)
20140619:
Maximal length of the serial number in CTL was increased from 16 to
64 chars, that breaks ABI. All CTL-related tools, such as ctladm
and ctld, need to be rebuilt to work with a new kernel.
20140606:
The libatf-c and libatf-c++ major versions were downgraded to 0 and
1 respectively to match the upstream numbers. They were out of
sync because, when they were originally added to FreeBSD, the
upstream versions were not respected. These libraries are private
and not yet built by default, so renumbering them should be a
non-issue. However, unclean source trees will yield broken test
programs once the operator executes "make delete-old-libs" after a
"make installworld".
Additionally, the atf-sh binary was made private by moving it into
/usr/libexec/. Already-built shell test programs will keep the
path to the old binary so they will break after "make delete-old"
is run.
If you are using WITH_TESTS=yes (not the default), wipe the object
tree and rebuild from scratch to prevent spurious test failures.
This is only needed once: the misnumbered libraries and misplaced
binaries have been added to OptionalObsoleteFiles.inc so they will
be removed during a clean upgrade.
20140512:
Clang and llvm have been upgraded to 3.4.1 release.
20140508:
We bogusly installed src.opts.mk in /usr/share/mk. This file should
be removed to avoid issues in the future (and has been added to
ObsoleteFiles.inc).
20140505:
/etc/src.conf now affects only builds of the FreeBSD src tree. In the
past, it affected all builds that used the bsd.*.mk files. The old
behavior was a bug, but people may have relied upon it. To get this
behavior back, you can .include /etc/src.conf from /etc/make.conf
(which is still global and isn't changed). This also changes the
behavior of incremental builds inside the tree of individual
directories. Set MAKESYSPATH to ".../share/mk" to do that.
Although this has survived make universe and some upgrade scenarios,
other upgrade scenarios may have broken. At least one form of
temporary breakage was fixed with MAKESYSPATH settings for buildworld
as well... In cases where MAKESYSPATH isn't working with this
setting, you'll need to set it to the full path to your tree.
One side effect of all this cleaning up is that bsd.compiler.mk
is no longer implicitly included by bsd.own.mk. If you wish to
use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk
as well.
20140430:
The lindev device has been removed since /dev/full has been made a
standard device. __FreeBSD_version has been bumped.
20140424:
The knob WITHOUT_VI was added to the base system, which controls
building ex(1), vi(1), etc. Older releases of FreeBSD required ex(1)
in order to reorder files share/termcap and didn't build ex(1) as a
build tool, so building/installing with WITH_VI is highly advised for
build hosts for older releases.
This issue has been fixed in stable/9 and stable/10 in r277022 and
r276991, respectively.
20140418:
The YES_HESIOD knob has been removed. It has been obsolete for
a decade. Please move to using WITH_HESIOD instead or your builds
will silently lack HESIOD.
20140405:
The uart(4) driver has been changed with respect to its handling
of the low-level console. Previously the uart(4) driver prevented
any process from changing the baudrate or the CLOCAL and HUPCL
control flags. By removing the restrictions, operators can make
changes to the serial console port without having to reboot.
However, when getty(8) is started on the serial device that is
associated with the low-level console, a misconfigured terminal
line in /etc/ttys will now have a real impact.
Before upgrading the kernel, make sure that /etc/ttys has the
serial console device configured as 3wire without baudrate to
preserve the previous behaviour. E.g:
ttyu0 "/usr/libexec/getty 3wire" vt100 on secure
20140306:
Support for libwrap (TCP wrappers) in rpcbind was disabled by default
to improve performance. To re-enable it, if needed, run rpcbind
with command line option -W.
20140226:
Switched back to the GPL dtc compiler due to updates in the upstream
dts files not being supported by the BSDL dtc compiler. You will need
to rebuild your kernel toolchain to pick up the new compiler. Core dumps
may result while building dtb files during a kernel build if you fail
to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler.
20140216:
Clang and llvm have been upgraded to 3.4 release.
20140216:
The nve(4) driver has been removed. Please use the nfe(4) driver
for NVIDIA nForce MCP Ethernet adapters instead.
20140212:
An ABI incompatibility crept into the libc++ 3.4 import in r261283.
This could cause certain C++ applications using shared libraries built
against the previous version of libc++ to crash. The incompatibility
has now been fixed, but any C++ applications or shared libraries built
between r261283 and r261801 should be recompiled.
20140204:
OpenSSH will now ignore errors caused by kernel lacking of Capsicum
capability mode support. Please note that enabling the feature in
kernel is still highly recommended.
20140131:
OpenSSH is now built with sandbox support, and will use sandbox as
the default privilege separation method. This requires Capsicum
capability mode support in kernel.
20140128:
The libelf and libdwarf libraries have been updated to newer
versions from upstream. Shared library version numbers for
these two libraries were bumped. Any ports or binaries
requiring these two libraries should be recompiled.
__FreeBSD_version is bumped to 1100006.
20140110:
If a Makefile in a tests/ directory was auto-generating a Kyuafile
instead of providing an explicit one, this would prevent such
Makefile from providing its own Kyuafile in the future during
NO_CLEAN builds. This has been fixed in the Makefiles but manual
intervention is needed to clean an objdir if you use NO_CLEAN:
# find /usr/obj -name Kyuafile | xargs rm -f
20131213:
The behavior of gss_pseudo_random() for the krb5 mechanism
has changed, for applications requesting a longer random string
than produced by the underlying enctype's pseudo-random() function.
In particular, the random string produced from a session key of
enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will
be different at the 17th octet and later, after this change.
The counter used in the PRF+ construction is now encoded as a
big-endian integer in accordance with RFC 4402.
__FreeBSD_version is bumped to 1100004.
20131108:
The WITHOUT_ATF build knob has been removed and its functionality
has been subsumed into the more generic WITHOUT_TESTS. If you were
using the former to disable the build of the ATF libraries, you
should change your settings to use the latter.
20131025:
The default version of mtree is nmtree which is obtained from
NetBSD. The output is generally the same, but may vary
slightly. If you found you need identical output adding
"-F freebsd9" to the command line should do the trick. For the
time being, the old mtree is available as fmtree.
20131014:
libbsdyml has been renamed to libyaml and moved to /usr/lib/private.
This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg
1.1.4_8 and verify bsdyml not linked in, before running "make
delete-old-libs":
# make -C /usr/ports/ports-mgmt/pkg build deinstall install clean
or
# pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml
20131010:
The stable/10 branch has been created in subversion from head
revision r256279.
COMMON ITEMS:
General Notes
-------------
Sometimes, obscure build problems are the result of environment
poisoning. This can happen because the make utility reads its
environment when searching for values for global variables. To run
your build attempts in an "environmental clean room", prefix all make
commands with 'env -i '. See the env(1) manual page for more details.
Occasionally a build failure will occur with "make -j" due to a race
condition. If this happens try building again without -j, and please
report a bug if it happens consistently.
When upgrading from one major version to another it is generally best to
upgrade to the latest code in the currently installed branch first, then
do an upgrade to the new branch. This is the best-tested upgrade path,
and has the highest probability of being successful. Please try this
approach if you encounter problems with a major version upgrade. Since
the stable 4.x branch point, one has generally been able to upgrade from
anywhere in the most recent stable branch to head / current (or even the
last couple of stable branches). See the top of this file when there's
an exception.
The update process will emit an error on an attempt to perform a build
or install from a FreeBSD version below the earliest supported version.
When updating from an older version the update should be performed one
major release at a time, including running `make delete-old` at each
step.
When upgrading a live system, having a root shell around before
installing anything can help undo problems. Not having a root shell
around can lead to problems if pam has changed too much from your
starting point to allow continued authentication after the upgrade.
This file should be read as a log of events. When a later event changes
information of a prior event, the prior event should not be deleted.
Instead, a pointer to the entry with the new information should be
placed in the old entry. Readers of this file should also sanity check
older entries before relying on them blindly. Authors of new entries
should write them with this in mind.
ZFS notes
---------
When upgrading the boot ZFS pool to a new version, always follow
these two steps:
1.) recompile and reinstall the ZFS boot loader and boot block
(this is part of "make buildworld" and "make installworld")
2.) update the ZFS boot block on your boot drive
The following example updates the ZFS boot block on the first
partition (freebsd-boot) of a GPT partitioned drive ada0:
"gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
Non-boot pools do not need these updates.
To build a kernel
-----------------
If you are updating from a prior version of FreeBSD (even one just
a few days old), you should follow this procedure. It is the most
failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
make kernel-toolchain
make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
To test a kernel once
---------------------
If you just want to boot a kernel once (because you are not sure
if it works, or if you want to boot a known bad kernel to provide
debugging information) run
make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
nextboot -k testkernel
To rebuild everything and install it on the current system.
-----------------------------------------------------------
# Note: sometimes if you are running current you gotta do more than
# is listed here if you are upgrading from a really old current.
<make sure you have good level 0 dumps>
make buildworld
make buildkernel KERNCONF=YOUR_KERNEL_HERE
make installkernel KERNCONF=YOUR_KERNEL_HERE
[1]
<reboot in single user> [3]
mergemaster -Fp [5]
make installworld
mergemaster -Fi [4]
make delete-old [6]
<reboot>
To cross-install current onto a separate partition
--------------------------------------------------
# In this approach we use a separate partition to hold
# current's root, 'usr', and 'var' directories. A partition
# holding "/", "/usr" and "/var" should be about 2GB in
# size.
<make sure you have good level 0 dumps>
<boot into -stable>
make buildworld
make buildkernel KERNCONF=YOUR_KERNEL_HERE
<maybe newfs current's root partition>
<mount current's root partition on directory ${CURRENT_ROOT}>
make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC
make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
cp /etc/fstab ${CURRENT_ROOT}/etc/fstab # if newfs'd
<edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
<reboot into current>
<do a "native" rebuild/install as described in the previous section>
<maybe install compatibility libraries from ports/misc/compat*>
<reboot>
To upgrade in-place from stable to current
----------------------------------------------
<make sure you have good level 0 dumps>
make buildworld [9]
make buildkernel KERNCONF=YOUR_KERNEL_HERE [8]
make installkernel KERNCONF=YOUR_KERNEL_HERE
[1]
<reboot in single user> [3]
mergemaster -Fp [5]
make installworld
mergemaster -Fi [4]
make delete-old [6]
<reboot>
Make sure that you've read the UPDATING file to understand the
tweaks to various things you need. At this point in the life
cycle of current, things change often and you are on your own
to cope. The defaults can also change, so please read ALL of
the UPDATING entries.
Also, if you are tracking -current, you must be subscribed to
freebsd-current@freebsd.org. Make sure that before you update
your sources that you have read and understood all the recent
messages there. If in doubt, please track -stable which has
much fewer pitfalls.
[1] If you have third party modules, such as vmware, you
should disable them at this point so they don't crash your
system on reboot.
[3] From the bootblocks, boot -s, and then do
fsck -p
mount -u /
mount -a
sh /etc/rc.d/zfs start # mount zfs filesystem, if needed
cd src # full path to source
adjkerntz -i # if CMOS is wall time
Also, when doing a major release upgrade, it is required that
you boot into single user mode to do the installworld.
[4] Note: This step is non-optional. Failure to do this step
can result in a significant reduction in the functionality of the
system. Attempting to do it by hand is not recommended and those
that pursue this avenue should read this file carefully, as well
as the archives of freebsd-current and freebsd-hackers mailing lists
for potential gotchas. The -U option is also useful to consider.
See mergemaster(8) for more information.
[5] Usually this step is a no-op. However, from time to time
you may need to do this if you get unknown user in the following
step. It never hurts to do it all the time. You may need to
install a new mergemaster (cd src/usr.sbin/mergemaster && make
install) after the buildworld before this step if you last updated
from current before 20130425 or from -stable before 20130430.
[6] This only deletes old files and directories. Old libraries
can be deleted by "make delete-old-libs", but you have to make
sure that no program is using those libraries anymore.
[8] The new kernel must be able to run existing binaries used by an
installworld. When upgrading across major versions, the new kernel's
configuration must include the correct COMPAT_FREEBSD<n> option for
existing binaries (e.g. COMPAT_FREEBSD11 to run 11.x binaries). Failure
to do so may leave you with a system that is hard to boot to recover. A
GENERIC kernel will include suitable compatibility options to run
binaries from older branches. Note that the ability to run binaries
from unsupported branches is not guaranteed.
Make sure that you merge any new devices from GENERIC since the
last time you updated your kernel config file. Options also
change over time, so you may need to adjust your custom kernels
for these as well.
[9] If CPUTYPE is defined in your /etc/make.conf, make sure to use the
"?=" instead of the "=" assignment operator, so that buildworld can
override the CPUTYPE if it needs to.
MAKEOBJDIRPREFIX must be defined in an environment variable, and
not on the command line, or in /etc/make.conf. buildworld will
warn if it is improperly defined.
FORMAT:
This file contains a list, in reverse chronological order, of major
breakages in tracking -current. It is not guaranteed to be a complete
list of such breakages, and only contains entries since September 23, 2011.
If you need to see UPDATING entries from before that date, you will need
to fetch an UPDATING file from an older FreeBSD release.
Copyright information:
Copyright 1998-2009 M. Warner Losh <imp@FreeBSD.org>
Redistribution, publication, translation and use, with or without
modification, in full or in part, in any form or format of this
document are permitted without further permission from the author.
THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Contact Warner Losh if you have any questions about your use of
this document.
$FreeBSD$
diff --git a/contrib/amd/AUTHORS b/contrib/amd/AUTHORS
deleted file mode 100644
index 1ae6dcd2d72e..000000000000
--- a/contrib/amd/AUTHORS
+++ /dev/null
@@ -1,427 +0,0 @@
-PRIMARY AUTHORS AND MAJOR CONTRIBUTORS TO AM_UTILS:
-Original authors of amd were the Berkeley team and especially Jan-Simon
-Pendry. Since then many people have contributed patches.
-
-This file lists the ones who contributed major code changes, in no
-particular order, and I thank them all. This is of course not to diminish
-the smaller contributes of the many others. Thank you all.
-
-* Erez Zadok <ezk AT cs.sunysb.edu>
-
-The most significant changes were made by Erez Zadok in terms of bug fixes,
-ports, and new features added. Erez Zadok is the current maintainer of
-am-utils, as of January 1997.
-
-* Ion Badulescu <ion AT cs.columbia.edu>
-
-Co-maintainer of am-utils since late 1999: Linux and Solaris autofs support,
-Linux NFSv3 support, major code reorganization, etc...
-
-* Randall S. Winchester <rsw AT glue.umd.edu>
-
-May 7, 1997: contributed a special version of upl102 that included NFS V.3
-support. Some of the code was contributed by Christos Zoulas
-<christos AT deshaw.com>. I (Erez) ported these changes to am-utils.
-
-September 12, 1997: lots of small prototype cleanups and fixes to numerous
-files.
-
-January 27, 1998: support pid files in the amd.conf file. Provide base name
-for hesiod zone files. Always use /etc/amd.conf if exists.
-
-August 8, 1998: add detection support for NFS V.3 for NetBSD 1.3F.
-
-February 1, 1998: fixes for NetBSD to better detect its features.
-
-September 4, 1999: assorted fixes for NetBSD 1.4+.
-
-* Hannes Reinecke <hare AT MathI.UNI-Heidelberg.DE>
-
-Back in 1995, contributed code for linux. A new parser for file system
-specific options that only exist under linux.
-
-* Leif Johansson <leifj AT matematik.su.se>
-
-June 22, 1997: minor patch to ensure that systems without an RE library work.
-
-June 23, 1997: mount options should be properly comma limited.
-
-July 10, 1997: info_ldap.c and prototype changes to all map _init and _mtime
-functions. Contributed scripts/amd2ldif.pl.
-
-August 4, 1997: info_ldap.c fixes and adding two new amd.conf ldap
-variables: ldap_cache_seconds and ldap_cache_maxmem.
-
-* Andreas Stolcke <stolcke AT speech.sri.com>
-
-June 22, 1997: patches to ensure that proto= and vers= options work
-properly in mount tables and can be overridden. Later on, more code
-contribued to optimize the best combination of proto/vers.
-
-July 4, 1997: patches to get NFS V.3 working under irix5.
-
-September 9, 1997: initialize all fields of mntent_t structures to 0.
-
-October 2, 1997: don't log an RPC timeout as an error but only as an info
-message.
-
-December 19, 1997: detected an FMR (Free Memory Read) in amd/mntfs.c,
-uninit_mntfs().
-
-* Danny Braniss <danny AT cs.huji.ac.il>
-
-July, 6 1997: contributed patches to hesiod on bsdi3.
-
-* Tom Schmidt <tschmidt AT micron.com>
-
-July 10, 1997: Recommdation to include libgdbm if libc has no dbm_open.
-Patches for netgrp(host) command. Mods to aux/config.guess to recognize
-sun3.
-
-January 19, 1998: print correct -l option depending if system supports
-syslog and/or syslog facilities.
-
-January 29, 1998: fix for 0.0.0.0 loopback on SunOS 3.X which defines
-IFF_ROUTE instead of IFF_LOOPBACK.
-
-May 30, 2000: correct logging types for addopts/mergeopts messages.
-
-* Daniel S. Riley <dsr AT mail.lns.cornell.edu>
-
-July 11, 1997: fixes to DU-4.0 to support string POSIX.1 signals, and struct
-sockaddr with sa_len field.
-
-July 13, 1997: Move amd.conf parsing to before switch_option() on log/debug
-options. Minor type wrt "ro" option in libamu/mount_fs.c. Added more
-fillers of mnttab options, for acdirmax, acdirmin, acregmax, acregmin, noac,
-grpid, nosuid, and actimo.
-
-August 15, 1998: fix memory leak in processing of /defaults, and avoid
-accessing uninitialized memory in osf1.
-
-* Roman Hodek <Roman.Hodek AT informatik.uni-erlangen.de>
-
-July 23, 1997: Got lots of patches from the Debian Linux folks, who fixed
-several generic bugs, and one serious one for Linux. The latter involved
-using connected sockets for NFS mounts on kernels 1.3.10 and older. Roman's
-work is baed on amd-upl102, and work from Ian Murdock <imurdock AT debian.org>
-and Dominik Kubla <dominik AT debian.org>.
-
-* Rainer Orth <ro AT TechFak.Uni-Bielefeld.DE>
-
-August 6, 1997: assorted fixes to support hesiod-1.3, solaris 2.4 (which I
-already fixed but did not release yet), and support for $LDFLAGS at
-configure/compile time.
-
-February 24, 1998: lots of patches for ultrix 4.3 port.
-
-February 28, 1998: lots of documentation fixes!
-
-January 8, 1999: texi fixes, and more Ultrix 4.3 fixes, among others.
-
-January 11, 1999: hesiod_isup function. Fix format errors in dlog/plog.
-Remove obsolete or unnecessary files/macros. Don't report disabled file
-systems. More misc fixes.
-
-February 3, 1998: don't start autofs listener unless autofs maps were in
-use.
-
-December 10, 1999: assorted fixed and lots of fixes to support in-kernel
-mount tables in Solaris 8.
-
-February 9, 2000: new debug options hrtime (hi-res timer) and xdrtrace. bug
-fixes.
-
-* Jason Thorpe <thorpej AT nas.nasa.gov>
-
-August 25, 1997: make amd work when talking to NIS+ servers in NIS
-compatibility mode. Fix originally came from Matthieu Herrb
-<matthieu AT laas.fr>.
-
-* Chris Metcalf <metcalf AT catfish.lcs.mit.edu>
-
-August 29, 1997: patch to make amd use FQHN for NFS/RPC authentication,
-useful esp. for cross-domain NFS mounts.
-September 2, 1997: if plock() succeeded, don't display errno string.
-
-* Enami Tsugutomo <enami AT cv.sony.co.jp>
-
-September 4, 1997: don't ping remote servers with NFS V.3 always, but V.2,
-regardless of client's NFS version. (conf/transp/transp_sockets.c)
-
-* Dan Riley <dsr AT mail.lns.cornell.edu>
-
-September 19, 1997: make sure that amd works with more secure portmappers
-that do not allow forwarding of RPC messages to other services.
-
-* Wolfgang Rupprecht <wolfgang AT wsrcc.com>
-
-August 10, 1997: netbsd and other bsd systems have a mask flag for
-pcfs_args (msdos mount).
-
-* Christos Zoulas <christos AT zoulas.com>
-
-September 25, 1997: fix to initialize uid/gid fields of pcfs_args_t on
-netbsd.
-
-October 10, 1997: compile time cleanups of printf()s in hlfsd code. If nfs
-server is down or does not support a portmapper call, then mark it down as
-version 2, and try again later.
-
-November 29, 2002: compile fixes for NetBSD, a couple of bug fixes (one
-already fixed by maintainers)
-
-April 12, 2003: support new "unmount" option, useful to timeout removable
-local media mounts.
-
-October 12, 2004: patch to support two new amd.conf options, domain_strip
-and auto_attrcache. Patch to cleanup NFS attribute-cache flag computation.
-Patch to fix an inconsistency in timeouts in the RPC code between socket and
-TLI implementations. Patch to print version string (amd -v) after all
-options had been initialized, so we can print domain, host, and hostd.
-Linux patch to use umount2(2) if umount(2) fails.
-
-* Bill Paul <wpaul AT ctr.columbia.edu>
-
-November 5, 1997: NFS v.3 support for AIX 4.2.1, which does *not* include
-headers for this. Bill had to guess at the right structures, field names,
-sizes, alignment, etc.
-
-January 15, 1999: small ldap bug fixes.
-
-* Stefan Vogel <vogel AT physik-rzu.unizh.ch>
-
-November 14, 1997: typo in the subscription instructions to amd-dev.
-
-* Guntram Wolski <gwolsk AT sei.com>
-
-November 15, 1997: pointed out mismatching documentation for the -o option.
-
-* Michael Hucka <hucka AT eecs.umich.edu>
-
-January 11, 1997: pointed out reversed definition of NFS mount options vers
-and proto.
-
-* Albert Chin <china AT pprd.abbott.com>
-
-January 12, 1998: minor bug in output of amd -H.
-
-June 23, 2005: assortment of small compile bugs on aix4, and solaris 5/6/7.
-
-* Thomas Richter <richter AT chemie.fu-berlin.de>
-
-January 13, 1998: use case insensitive comparisons for variables that need
-it (such as all hostname related ones, and more).
-
-July 20, 1998: don't leak memory in the private version of yp_all (when
-vendor yp_all is bad).
-
-* Fred Korz <korz AT smarts.com>
-
-January 30, 1998: minor typo fixed to tftp example in am-utils.texi.
-
-* Donald Buczek <buczek AT MPIMG-Berlin-Dahlem.MPG.DE>
-
-March 6, 1998: correctly inherit existing NFS V.3 mounts upon restart.
-
-March 17, 1998: compare log file name and syslog string with correct length.
-
-March 20, 1998: do not close stdout in case it gets reused elsewhere and to
-allow startup script to redirect it. Set a temporary secure umask(0022)
-before writing log file and restore it afterwards.
-
-* Matthew Crosby <mcrosby AT ms.com>
-
-April 20, 1998: allow arbitrary number of interfaces in wire listing.
-
-* David O'Brien <obrien AT NUXI.com>
-
-September 4, 1998: bug fix to avoid overrunning hostname buffer, and minor
-amd.conf man page typo correction.
-
-September 22, 1999: use more secure vsnprintf in real_plog().
-
-* Danny Rathjens <dkr AT cs.fiu.edu>
-
-October 29, 1998: swap arguments to kill(2) in amd.c.
-
-* Mike Mitchell <mcm AT unx.sas.com>
-
-November 3, 1998: amd/nfs_subr.c (nfsproc_lookup_2_svc): try to avoid a race
-condition between unmounting and re-mounting an entry, by increasing the ttl
-of a looked up entry before unmounting it.
-
-* Douglas K. Rand" <rand AT aero.und.edu>
-
-December 3, 1998: case insensitive host name match for nfsl.
-
-* David Wolfskill <dhw AT whistle.com>
-January 28, 1999: don't turn on/off noconn option if it was already in that
-state.
-
-* Jeffrey C Honig <jch AT BSDI.COM>
-March 14, 1999: clean up more autogenerated files upon "make distclean".
-
-March 15, 1999: avoid overly verbose NIS warning even on systems that don't
-run NIS. On BSD systems, wire.c uses getifaddrs(), sysctl(), IRS routines,
-and more fixes. Numerous IP packet security fixes.
-
-March 16, 1999: documentation typos. new cdfs options. ufs structure
-detection for bsdi4.
-
-September 17, 1999: fixes to expn.
-
-* Paul Balyoz <pbalyoz AT sedona.ch.intel.com>
-March 26, 1999: ensure lostaltmail displays Y2K compliant dates.
-
-* Jon Peatfield <J.S.Peatfield AT damtp.cam.ac.uk>
-March 30, 1999: turn off incomplete NFS V.3 support in HPUX 10.20.
-
-September 22, 1999: safe reloading of maps without first clearing old
-copies, and using cached copies if map failed to reload.
-
-* Peter Breitenlohner <peb AT mppmu.mpg.de>
-July 24, 1999: patch for linux 2.2.x to work with older libc5 systems, and
-nis_isup mis-logic fixes.
-December 13, 2001: report typos in scripts/amd.conf.5.
-
-* Dale Talcott <aeh AT quest.cc.purdue.edu>
-July 26, 1999: added NFS3 support for AIX mounting.
-
-* Christophe Kalt <Christophe-Kalt AT deshaw.com>
-July 14, 1999: add netgrpd() syntax function which uses FQHN.
-
-* Andrew J. Korty <ajk AT purdue.edu>
-September 5, 1999: pawd works for type:=nfsl.
-
-* Nick Williams <njw AT ms.com>
-September 1, 1999: bug fix for incorrect symlinks when two locations are
-requested simultaneously.
-
-November 1, 1999: fixes to sync maps even if they are set to mapcache:=sync.
-
-January 19, 2000: fix (and reduce the incidence of) stale file handles when
-doing rapid mounts and umounts in succession.
-
-June 5, 2000: better handling of potential race-conditions during rapid
-u/mounts. Correctly update d_drops stats for amq -s.
-
-* Johann Pfefferl <johann.pfefferl.jp AT germany.agfa.com>
-November 16, 1999: fix to ldap code so repeated calls to string2he don't
-corrupt the string passed.
-
-* Amitha Perera <perera AT cs.rpi.edu>
-December 9, 1999: detect all wire() interfaces correctly.
-
-* Steven Danz <sdanz AT awc.kc.noaa.gov>
-January 25, 2000: allow browsable auto maps.
-
-* Wolfram Klaus <klaus AT physik.fu-berlin.de>.
-November 21, 2000: recognize proplist mnttab flag.
-
-* Thomas Klausner <tk AT giga.or.at>
-November 21, 2000: lots of NetBSD fixes (many of which are generic).
-
-April 18, 2003: patch to reference am-utils info pages in man page.
-
-November 28, 2004: small fixes to typos in amd.conf(5) man page.
-
-* Olaf Kirch <okir AT caldera.de>
-February 1, 2001: important Linux NFS error number mapping fixed
-
-* Ahmon Dancy <dancy AT franz.com>
-February 9, 2001: Apple Rhapsody/Darwin/OS X port
-
-* Sebastien Bahloul <sebastien.bahloul AT mangoosta.fr>
-July 3, 2001: LDAP fixes and updates to support new APIs
-
-March 27, 2002: LDAP bug and port to HPUX-11.
-
-* Philippe Troin <phil AT fifi.org>
-July 12, 2001: Proper handling of GNU getopt, support for optionally
-disabling LDAP/Hesiod, fixes for the dev/nodev option on Linux. Texi
-documentation fix.
-
-November 28, 2001: Bug fix. Support "nolock" as an NFS option, not a
-generic mount option.
-
-July 17, 2003: pref:=null core dump fix. libgdbm portability. tcpd/librap
-support. And a few other things for the 6.0 branch.
-
-* Trond Myklebust <trond.myklebust AT fys.uio.no>
-January 10, 2002: Proper initialization of the timeo parameter on Linux, TCP
-_must_ have a timeout 2 orders of magnitude larger than UDP
-
-* George Ross <gdmr AT dcs.ed.ac.uk>
-April 29, 2002: Rework of old code, support for wildcards in LDAP queries,
-and an FD leak fix. Amd -A support.
-
-October 21, 2002: ldap_unbind fix for SIGPIPE, and support for LDAPv3
-protocol version parameter (with Tim Colles <timc AT inf.ed.ac.uk>).
-
-* Matthias Scheler <tron AT zhadum.de>
-June 14, 2002: patch to use "xlatecookie" NFS mount option.
-
-* Jun-ichiro itojun Hagino <itojun AT iijlab.net>.
-June 11, 2002: minor fixes to support NetBSD 1.6A.
-
-* Sean Fagan <sef AT apple.com>
-March 14, 2003: detect and use the MNT2_GEN_OPT_AUTOMNTFS mount flag
-on OS X / Darwin.
-
-* Hendrik Scholz <hscholz AT raisdorf.net>
-June 9, 2003: mk-amd-map should open temp db file using O_EXCL.
-
-* Mark Davies <mark AT mcs.vuw.ac.nz>
-July 14, 2003: define "xlatecookie" mnttab option if not defined (for
-NetBSD). Support null hesiod entries if they start with a ".".
-
-* Eric S. Raymond <esr AT thyrsus.com>
-December 9, 2003: fix unbalanced [] typo in fsinfo man page.
-
-* Martin Blapp <mb AT imp.ch>
-July 6, 2004: recognize fields in pcfs_args_t in FreeBSD 5.
-
-* Dan Nelson <dnelson AT allantgroup.com>
-August 2, 2004: pawd to recognize "host" type mounts.
-
-* Hauke Fath <hauke AT Espresso.Rhein-Neckar.DE>
-August 3, 2004: pawd to recognize "linkx" type mounts.
-
-* Michael van Elst <M.van.Elst AT science-computing.de>
-September 1, 2004: bug fix to avoid race condition in calls to mntctl on
-AIX.
-
-* Jonathan Chen <jon+amd AT spock.org>
-October 22, 2004: patch/fix to move mlock/mlockall/plock code after the
-fork().
-June 29, 2005: core dump going off end of exported_ap[] array.
-September 29, 2005: patch/fix for pawd not to go into an infinite loop.
-October 25, 2005: patch/fix for pawd to repeatedly resolve path.
-
-* David Rage <rage AT ucl.ac.uk>
-January 17, 2005: prevent Amd from logging 'Read-only filesystem' errors
-when the mount point has an ancestor (i.e. '/') that is mounted read-only.
-
-* Kevin Layer <layer AT franz.com>
-January 28, 2005: basic instructions how to setup Amd on Mac OS-X.
-
-* Dan Ottavio <dottavio AT ic.sunysb.edu>
-March 2, 2005: new global amd.conf option debug_mtab_file, to set the debug
-mtab file when using debug_options=mtab. Default has changed from "./mtab"
-to "/tmp/mtab" to avoid security problem. Bug fixed to ensure that Amd
-terminates properly even mtab file doesn't exist.
-
-* Erik Kline <ekline at ekline dot com>
-January 3, 2005: implementation of executable maps for Amd.
-
-* Jim Zajkowski <jim.zajkowski AT gmail.com>
-March 14, 2005: small patch to amd2ldif.
-
-* Adam Morley <adam at gmi dot com>
-January 27, 2005: synchronize what amd2ldif does vs. what the ldap.schema
-expects.
-
-* Graeme Wilford <G.Wilford AT surrey.ac.uk>
-July 4, 2005: buffer overflow in pawd.
-
diff --git a/contrib/amd/BUGS b/contrib/amd/BUGS
deleted file mode 100644
index 8e87e859cbac..000000000000
--- a/contrib/amd/BUGS
+++ /dev/null
@@ -1,303 +0,0 @@
- LIST OF KNOWN BUGS IN AM-UTILS OR OPERATING SYSTEMS
-
-Note: report am-utils bugs via Bugzilla to https://bugzilla.am-utils.org/ or
-by email to the am-utils mailing list (see www.am-utils.org).
-
-
-(1) mips-sgi-irix*
-
-[1A] known to have flaky NFS V.3 and TCP. Amd tends to hang or spin
-infinitely after a few hours or days of use. Users must install recommended
-patches from vendor. Patches help, but not all the time. Otherwise avoid
-using NFS V.3 and TCP on these systems, by setting
-
- /defaults opts:=vers=2,proto=udp
-
-[1B] yp_all() leaks a file descriptor. Eventually amd runs out of file
-descriptors and hangs. Am-utils circumvents this by using its own version
-of yp_all which uses udp and iterates over NIS maps. The latter isn't as
-reliable as yp_all() which uses TCP, but it is better than hanging.
-
-(I have some reports that older version of hpux-9, with older libc, also
-leak file descriptors.)
-
-[1C] SGI's MIPSpro C compiler on IRIX 6 has the unfortunate habit of
-creating code specificially for the machine it runs on. The ABI and ISA
-used depend very much on the OS version and compiler release used. This
-means that the resulting amd binary won't run on machines different from
-the build host, particularly older ones. Older versions of am-utils
-enforced the O32 ABI when compiling with cc to work around this, but this
-ABI is deprecated in favor of the N32 ABI now, so we use -n32 -mips3 to
-ensure that the binaries run on every host capable of running IRIX 6 at
-all. If this is not appropriate for you, configure with something like
-CC='cc -64' instead to get the desired ABI and ISA.
-
-(2) alpha-unknown-linux-gnu (RedHat Linux 4.2)
-
-hasmntopt(mnt, opt) can go into an infinite loop if opt is any substring
-of mnt->mnt_opts. Redhat 5.0 does not have this libc bug. Here is an
-example program:
-
-#include <stdio.h>
-#include <mntent.h>
-main()
-{
- struct mntent mnt;
- char *cp;
- mnt.mnt_opts = "intr,rw,port=1023,timeo=8,foo=br,retrans=110,indirect,map=/usr/local/AMD/etc/amd.proj,boo";
- cp = hasmntopt(&mnt, "ro");
- printf("cp = %s\n", cp);
- exit(0);
-}
-
-It is possible that sufficiently newer version of libc for RH4.2 fix this
-problem.
-
-
-(3) mips-dec-ultrix4.3
-
-Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> reports
-
-[3A] One needs the Kernel Config Files (UDTBIN430) subset installed to
-compile am-utils, otherwise essential header files (net/if.h, net/route.h,
-rpcsvc/mount.h, rpcsvc/yp_prot.h, rpcsvc/ypclnt.h, sys/proc.h) are
-missing.
-
-[3B] It's probably impossible to build am-utils with DEC C on Ultrix V4.3.
-This compiler is pseudo-ANSI only. Maybe the new ANSI C compiler in V4.3A
-and beyond will do. I successfully used gcc 2.8.1.
-
-[3C] You need to build against a recent libhesiod (I used 3.0.2) and
-libresolv/lib44bsd (I used BIND 4.9.5-P1). The resolver routines in
-libc seem to cause random memory corruption. It is necessary to specify
-LIBS=-l44bsd. lib44bsd is a helper library of libresolv used to supply
-functions like strdup which are missing on the host system. This isn't
-currently autoconfiscated.
-
-[3D] You need to configure with CONFIG_SHELL=/bin/sh5 /bin/sh5 buildall;
-/bin/sh cannot handle the shell functions used in buildall and is both
-buggy and slow.
-
-[3E] At least the gcc 2.7.0 fixincludes-mangled <sys/utsname.h> needs a
-forward declaration of struct utsname to avoid lots of gcc warnings:
-
-RCS file: RCS/utsname.h,v
-retrieving revision 1.1
-diff -u -r1.1 utsname.h
---- utsname.h 1995/06/19 13:07:01 1.1
-+++ utsname.h 1998/01/27 12:34:26
-@@ -59,6 +59,7 @@
- #ifdef KERNEL
- #include "../h/limits.h"
- #else /* user mode */
-+struct utsname;
- extern int uname _PARAMS((struct utsname *));
- #endif
- #define __SYS_NMLN 32
-
-
-(4) powerpc-ibm-aix4.2.1.0
-
-[4A] "Randall S. Winchester" <rsw AT Glue.umd.edu> reports that for amd to
-start, you need to kill and restart rpc.mountd and possibly also make sure
-that nfsd is running. Normally these are not required.
-
-[4B] "Stefan Vogel" <vogel AT physik.unizh.ch> reports that if your amq
-executable dump core unexpectedly, then it may be a bug in gcc 2.7.x.
-Upgrade to gcc 2.8.x or use IBM's xlC compiler.
-
-[C] Do not link amd with libnsl. It is buggy and causes amd to core dump
-in strlen inside strdup inside svc_register().
-
-
-(5) *-linux-rh51 (RedHat Linux 5.1)
-
-There's a UDP file descriptor leak in libnsl in RedHat Linux 5.1. This
-library part of glibc2. Am-utils currently declares redhat 5.1 systems as
-having a "broken yp_all" and using an internal, slower, leak-free version.
-The leak is known to the glibc maintainers and a fix from them is due soon,
-but it is not yet in the glibc-2.0.7-19 RPM.
-
-
-(6) rs6000-ibm-aix4.1.x
-
-A bug in libc results in an amq binary that doesn't work; amq -v dumps core
-in xdr_string. There is no known fix (source code or vendor patch) at this
-time. (Please let us know if you have a fix; see www.am-utils.org.)
-
-
-(7) *-aix4.3.2.0
-
-The plock() function will pre-reserve all of the memory up to the maximum
-listed in the ulimit. If the ulimit is infinite, plock() will try to take
-all of the system's memory, and fail with ENOMEM (Not Enough Space).
-Normally ulimit may be set to a few gigs of max memory usage, but even that
-is too much; Amd doesn't need more than a few megs of resident memory size
-(depending on the particular usage, number of maps, etc.) Solution: lower
-your ulimit before starting amd. This can be done inside the ctl-amd
-script, but be careful not to limit it too low. Alternatively, don't use
-plock on aix-4.3: set it to plock=no in amd.conf (which is the default if
-you do nothing).
-
-
-(8) *-linux (systems using glibc 2.1, such as RedHat-6.x)
-
-There's a UDP file descriptor leak in the NIS routines in glibc, especially
-those that do yp_bind. Until this is bug fixed, do not set nis_domain in
-amd.conf, but let the system pick up the default domain name as set by your
-system. That would avoid using the buggy yp_bind routines in libc.
-
-
-(9) *-linux (SuSE systems using unfsd)
-
-The user-level nfsd (2.2beta44) on older SuSE Linux systems (and possibly
-others) dies with a SEGV when amd tries to contact it for access to a volume
-that does not exist, or one for which there is no permission to mount.
-
-
-(10) *-*-hpux11
-
-If you're using NFSv3, you must install HP patches PHNE_20344 and
-PHNE_20371. If you don't, and you try to use amd with NFSv3 over TCP, your
-kernel will panic.
-
-
-(11) *-linux* (any system using a 2.2.18+ kernel)
-
-The Linux kernels don't support Amd's direct mounts very well, leading to
-erratic behavior: shares that don't get remounted after the first timeout,
-inability to restart Amd because its mount points cannot be unmounted, etc.
-There are some kernel patches on the am-utils Web site, which solve these
-problems. See http://www.am-utils.org/patches/.
-
-Later 2.4.x kernels completely disallow the hack amd was using for direct
-mounts, so another solution will have to be found.
-
-Note: the above is for the old-style amd mount_type = nfs. The autofs mounts
-don't support direct mounts at all (due to lack of kernel support).
-
-(12) *-aix5.1.0.0 and *-hpux9*
-
-/bin/sh is broken and fails to run the configure script properly. You need
-to use /bin/ksh instead. The buildall script will do it for you; if for some
-reason you need to run configure directly, run it using 'ksh configure'
-instead of just 'configure'.
-
-[12A] *-aix5.2.*
-
-Apparently there is an NFS client side bug in vmount() which causes amd to
-hang when it starts (and tries to NFS-mount itself). According to IBM
-engineers, this has to do with partial support code for IPv6: the NFS kernel
-code doesn't appear to recognize the sin_family of the amd vmount(),
-although amd does the right thing. The bug doesn't appear to be in 5.1 or
-4.3.3. A fix from IBM is available, APAR number IY41417.
-
-A binary built on 4.3.3 will not work on 5.2, because the kernel ABIs have
-changed.
-
-[12C] *-aix*
-
-It is important that you install bos.net.nfs.adt before configuring and
-building am-utils. If you don't, you will get compile-time or
-configure-time errors, especially when configure tries to find AIX's
-definition of struct nfs_args.
-
-(13) *-linux and *-darwin6.0
-
-Certain linux kernels (2.4.18+ are fine, 2.4.10- are probably bad, those in
-between have not been tested) have a bug which causes them to reconnect
-broken NFS/TCP connections using unprivileged ports (greater than 1024),
-unlike the initial connections which do originate from privileged
-ports. This can upset quite a few NFS servers and causes accesses to the
-mounted shares to fail with "Operation not permitted" (EPERM).
-
-The darwin (MacOS X) kernel defaults to using unprivileged ports, but that
-can be changed by setting the resvport mount flag (which amd sets by
-default). Nonetheless, if a TCP connection breaks, under certain unclear
-circumstances the kernel might "forget" about that flag and start using
-unprivileged ports, causing the same EPERM error above.
-
-(14) Solaris
-
-The line "%option" in *.l files may cause Solaris /usr/ccs/bin/lex to abort
-with the error "missing translation value." This is a bug in Solaris lex.
-
-Moreover, both Solaris yacc and lex produce code that does not pass strict
-compilation such as "gcc -Wall -Werror".
-
-Use GNU Flex and Bison instead. You can download ready-made binaries from
-www.sunfreeware.com. Note, however, that sometimes the binaries on
-sunfreeware.com don't seem to work, often because they are built against an
-older revision of Solaris or build tools. In that case, build a fresh
-version of GNU flex and/or bison from the latest stable sources. See
-http://www.gnu.org/software/flex/ and http://www.gnu.org/software/bison/.
-
-(15) Solaris 8 + patch 10899[34]-xx (18 <= xx < 25) or patch 11260[56]-xx
-
-With this patch, Sun updated the autofs kernel module and automountd
-userspace daemon from version 3 to version 4. They also updated the
-/usr/include/rpcsvc/autofs_prot.x file, but forgot to regenerate the
-autofs_prot.h file. Thus, when amd is compiled, it uses the old header and
-thinks it should use autofs version 3, when in fact the kernel now supports
-(and expects) only version 4.
-
-The workaround is to run 'rpcgen -C -h /usr/include/rpcsvc/autofs_prot.x >
-/usr/include/rpcsvc/autofs_prot.h' and completely reconfigure and rebuild
-am-utils (removing config.cache before running configure).
-
-The problem is fixed in patch revisions 10899[34]-25 and up.
-
-
-(16) Linux kernel 2.4+ and lofs mounts
-
-Lofs mounts are not supported by the linux kernel, at all, but since 2.4.0
-the kernel supports a similar type of mount called a bind mount. Its
-semantics are closer to those of a hardlink than to those of lofs, and one
-of the results is that bind mounts ignore any mount options paseed to them.
-
-Amd uses bind mounts internally to emulate lofs mounts, which means that
-lofs mounts on linux will effectively ignore their mount parameters and
-inherit whatever options the original filesystem mounted upon had.
-
-
-(17) autoconf 2.57
-
-If you see configure warnings of the following kind:
-
-configure: WARNING: sys/proc.h: present but cannot be compiled
-configure: WARNING: sys/proc.h: check for missing prerequisite headers?
-configure: WARNING: sys/proc.h: proceeding with the preprocessor's result
-configure: WARNING: ## ------------------------------------ ##
-configure: WARNING: ## Report this to bug-autoconf@gnu.org. ##
-configure: WARNING: ## ------------------------------------ ##
-
-please ignore them. They are not real errors, and neither
-bug-autoconf@gnu.org nor the am-utils maintainers are interested in hearing
-about them. Autoconf simply tries to do more than we need and attempts to
-compile each header in isolation, which fails for many system headers.
-That's ok, because we only need to know if a header file exists -- we know
-how to use it properly ourselves.
-
-While autoconf does offer a way to specify other files to be included with
-the tested header, in order to avoid these warnings, using it would enlarge
-the resulting configure script by an order of magnitude, and for no real
-gain. Configure is big enough as it is, we don't need any more useless
-baggage in it.
-
-(18) NetBSD 2.0.2, FreeBSD 5.4, OpenBSD 3.7, and quite possibly most other
- BSDs and other OSs (as of September 2005)
-
-Some BSD kernels don't have a way to turn off the NFS attribute cache. They
-don't have a 'noac' mount flag, and setting various cache timeout fields in
-struct nfs_args doesn't turn off the attribute cache; instead, it sets the
-attribute cache timeout to some internal hard-coded default (usually
-anywhere from 5-30 seconds). If Amd cannot turn off the NFS attribute
-cache, under heavy Amd usage, users could get ESTALE errors from automounted
-symlinks, or find that those symlinks point to the wrong place. One
-workaround which would minimize this effect is to set auto_attrcache=1 in
-your amd.conf, but it doesn't eliminate the problem! The best solutions are
-(1) to use Amd in Autofs mode, if it's supported in your OS, and (2) talk to
-your OS vendor to support a true "noac" flag. See README.attrcache for more
-details.
-
-Erez & the am-utils team.
diff --git a/contrib/amd/COPYING b/contrib/amd/COPYING
deleted file mode 100644
index f54191d75fea..000000000000
--- a/contrib/amd/COPYING
+++ /dev/null
@@ -1,32 +0,0 @@
-Copyright (c) 1997-2014 Erez Zadok
-Copyright (c) 1989 Jan-Simon Pendry
-Copyright (c) 1989 Imperial College of Science, Technology & Medicine
-Copyright (c) 1989 The Regents of the University of California.
-All rights reserved.
-
-This code is derived from software contributed to Berkeley by
-Jan-Simon Pendry at Imperial College, London.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
diff --git a/contrib/amd/ChangeLog b/contrib/amd/ChangeLog
deleted file mode 100644
index d996f8e75082..000000000000
--- a/contrib/amd/ChangeLog
+++ /dev/null
@@ -1,13085 +0,0 @@
-2014-10-28 Christos Zoulas <christos@zoulas.com>
-
- *******************************************************************
- *** Released am-utils-6.2 ***
- *******************************************************************
-
- * add ylwrap.amd, sick and tired of patching broken ylwrap.
-
-2014-09-05 Christos Zoulas <christos@zoulas.com>
-
- * factor out the size check for both readdir methods
- (raven at themaw.net)
-
-2014-09-03 Christos Zoulas <christos@zoulas.com>
-
- * configure test for 64 bit xdr function (raven at themaw.net)
-
-2014-09-01 Christos Zoulas <christos@zoulas.com>
-
- * bug fix from raven at themaw.net to prevent writing v3 handle
- to a v2 structure.
-
-2014-07-21 Christos Zoulas <christos@zoulas.com>
-
- * fix permission problems with access
- * auto_nfs_version = 3 now works for me.
-
-2014-07-20 Christos Zoulas <christos@zoulas.com>
-
- * refresh some autoconf files
- * force autoconf version since earlier versions don't work
- * changes from raven at themaw.net to support NFSv3 for automounted
- toplevel filesystems presented to the list in May. A few bug fixes
- and integration changes by me. The code now works well enough to
- mount the filesystem with NFSv3 and automount children but readdir
- does not work yet (so no listing of automounted filesystems).
- The new code is not enabled by default. To enable use
- auto_nfs_version = 3
- in your configuration file.
-
-2014-03-26 Christos Zoulas <christos@zoulas.com>
-
- From Ian Kent <ikent@redhat.com>
-
- * use mktemp in scripts/fixrmtab
- * fix documentatio nits
- * [linux] Add ext2, ext3, ext4 specific mount options
- * fix tcpwrappers (hosts.{allow,deny} problems for specific host
- entries
-
-2014-03-20 Christos Zoulas <christos@zoulas.com>
-
-
- * don't background autofs umount
- * avoid fh NULL dereference on umount
- * handle ENOENT umount return for autofs mounts
- * fix error message in get_nfs_version
- * fix debug log deadlock
- * [linux] retry umount on EBUSY
- * handle failed umount on exit
-
-2014-03-09 Christos Zoulas <christos@zoulas.com>
-
- * Remove BSD advertising clause.
- * Remove expn program which is not used by anything
-
-2013-12-05 Christos Zoulas <christos@zoulas.com>
-
- * Change the way we handle multiple lex scanners and yacc parsers
- in a single program. Our old patch to ylwrap does not work anymore
- because the bison parsers need shared symbols that start with yy
- and we can't easily select which ones work. So now we use -P and
- -p to let lex and yacc do the work for us. This requires a patch
- to ylwrap, but it is smaller.
-
-
-2013-12-05 Christos Zoulas <christos@zoulas.com>
-
- * Change the way we handle multiple lex scanners and yacc parsers
- in a single program. Our old patch to ylwrap does not work anymore
- because the bison parsers need shared symbols that start with yy
- and we can't easily select which ones work. So now we use -P and
- -p to let lex and yacc do the work for us. This requires a patch
- to ylwrap, but it is smaller.
-
-2013-05-14 Christos Zoulas <christos@zoulas.com>
-
- * update to handle new autoconf and regen files
-
-2012-11-23 Christos Zoulas <christos@zoulas.com>
-
- * recognize mountport=, noacl options
- * simplify the bootstrap process, by forcing
- all the files to be rebuild with autoreconf -f - i
-
-2012-10-03 Christos Zoulas <christos@zoulas.com>
-
- * add missing ops_nfs4.c to the Makefile.am
-
-2012-09-14 Christos Zoulas <christos@zoulas.com>
-
- * add locking option handling for lustre
- * fix noatime, nodiratime, mandlock for linux
-
-2012-07-25 Christos Zoulas <christos@zoulas.com>
-
- * bug fixes for lustre rhost parsing
-
-2012-06-27 Christos Zoulas <christos@zoulas.com>
-
- * Disable 1/2-baked sun map support to avoid SIGSEGV
-
-2012-06-16 Christos Zoulas <christos@zoulas.com>
-
- *******************************************************************
- *** Released am-utils-6.2-rc1 ***
- *******************************************************************
-
- * Fix libtool.m4 to work with later versions of autoconf.
- * In buildall, use eval so that quoted strings work
- * Centralize nfs version checking function, and introduce
- new configuration variable nfs_vers_ping, which is the
- max version we ping for. This is not documented yet, because
- there might be a better way separate the max version we can
- use vs the max version we ping for.
-
-2012-06-09 Christos Zoulas <christos@zoulas.com>
-
- * fix issue with parsing nfsv4 security option strings
-
-2012-05-01 Christos Zoulas <christos@zoulas.com>
-
- * Handle EPERM return from v4 file handles
- in old linux kernels
-
-2012-03-09 Christos Zoulas <christos@zoulas.com>
-
- * fix linux autofs detection
- * fix wrong types in new amq mount xdr processing
-
-2012-01-25 Christos Zoulas <christos@zoulas.com>
-
- * FreeBSD portability fixes
-
-2012-01-23 Christos Zoulas <christos@zoulas.com>
-
- * Avoid type punned warnings
-
-2011-12-29 Christos Zoulas <christos@zoulas.com>
-
- * fix bug I introduced in get_nfs_version that caused it to return 0
- * add direct support for ext{2,3,4}
-
-2011-12-15 Christos Zoulas <christos@zoulas.com>
-
- * Include <linux/fs.h> on linux, to grab extra mount flags
- * Add support for lustre
-
-2011-11-28 Christos Zoulas <christos@zoulas.com>
-
- * For nfsl mounts, match against either the short local
- host name or the fqdn name.
-
-2011-10-06 Christos Zoulas <christos@zoulas.com>
-
- * Add NFSv4 support (loosely based on Ramya's code).
- Currently if the NFSv4 mount fails with ENOENT we fail
- back to NFSv3, unless -DNO_FALLBACK.
- * Replace strdup with xstrdup. It is not nice to replace
- system functions with ones that behave differently.
- * Add various consistency checks (caller function checks
- variable for NULL, but callee does not).
- * Fix error handling in various paths.
- * Don't check before using XFREE(). free(NULL) works.
-
-2011-09-15 Christos Zoulas <christos@zoulas.com>
-
- * amq -i addition (prints info about the map files)
-
-2011-09-14 Christos Zoulas <christos@zoulas.com>
-
- * Solaris OS and compiler fixes from:
- Hofmann, Frank <Frank.Hofmann@morganstanley.com>
- Sayle, Alex <Alex.Sayle@morganstanley.com>
- - (void)&var generates warnings, removed
- - __inline is invalid, changed with inline
- - <sys/socket.h> and other headers have extra dependendcies
- `
-2011-08-11 Christos Zoulas <christos@zoulas.com>
-
- * fix potential buffer overflow in expand_error()
- (Richard Kettlewell). Does not seem to be exploitable.
-
- * simplify %option parsing to appease ancient flex.
-
-2011-06-21 Christos Zoulas <christos@zoulas.com>
-
- * add support for linux autofs version 5 (untested)
-
-2011-06-18 Christos Zoulas <christos@zoulas.com>
-
- * roll back to an older version of libtool that works
-
- * newer versions of config.guess and config.sub
-
- * minor fixes to buildall
-
-2011-05-19 Christos Zoulas <christos@zoulas.com>
-
- * m4/macros/libtool.m4: for AIX AC_LANG_PROGRAM is incorrectly
- used and the latest autoconf gives an error. For now just
- quote it.
-
- * configure.in: Fedora Core 15 and RedHat 6 now don't define
- af_family_t in <linux/socket.h>, but in <bits/sockaddr.h>.
- Include <sys/socket.h> so that we get <bits/sockaddr.h>
- indirectly. This caused the <linux/nfs_mount.h> detection
- test to fail.
-
-2010-11-24 Erez Zadok <ezk@fsl.cs.sunysb.edu>
-
- * m4/macros/os_cflags.m4: for linux, define _GNU_SOURCE (to get
- definitions for O_LARGEFILE and more).
-
-2010-11-20 Christos Zoulas <christos@zoulas.com>
-
- * Update news items, add release readme, mark as rc1
-
- * Fix addopts code to work with options that are key=value
- when the built-in hasmntopt() code is not used. The problem
- was that the code passed "key=" to hasmntopt not "key".
-
-2009-12-10 Christos Zoulas <christos@zoulas.com>
-
- * Copy all fields of the am_opts structure
- When we introduced am_loc we also added a function to
- create a duplicate of an am_opts structure. As it turns
- out, that only made a partial copy of the struct and some
- fields (e.g. opt_cache) was left blank in the new structure.
- Unfortunately any code that was checking the options
- through the mntfs structure was mislead by the partial
- copy: caching was disabled completely, for example, and
- since browsing relies on caching being enabled it wasn't
- working either.
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
- * Initialize RPC authentication flavor to AUTH_UNIX instead
- of zero. RHEL 5 uses version 6 of the mount_arg structure
- that includes the desired RPC authorization flavour.
- Unfortunately amd initializes that value to zero, meaning
- AUTH_NULL, resulting in all NFS servers denying operations.
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
- * Make sure to remove nodes in the proper order when going
- down. Depending on what order the nodes got created it's
- possible that the parent of a node has a bigger am_mapno
- (index in exported_ap[]) so that it gets freed before
- its child while the child's am_parent pointer is still
- pointing to the already freed block of memory.
- This change makes sure that umount_exported() cleans up
- all children of a node first before freeing the node.
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
- * Fix Linux-specific stuff in ops_tmpfs.c
- AUTOFS_TMPFS_FS_FLAGS is defined only in the Linux-specific
- conf_linux.c file, so it cannot be built on Solaris.
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
- * Add missing parenthesis to fix defined(XXX
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
- * In the previous commit we've already made a change that
- makes this code unnecessary since the node is returned
- even if the backing file server is known to be down.
- Since the code path is unused it should be removed.
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
- * amfs_generic_lookup_child() tries to find an alternate
- file server if it detects that the current one is down.
- However, in the comparison used to decide if a possible
- mount is the same as the current one it compares the am_loc
- pointers instead of the actual mntfs pointers. Since
- amfs_lookup_one_location() creates a brand new am_loc
- structure for the returned mntfs structure the am_loc
- pointer will be different even if the mntfs it's pointing
- to is the same.
- This tricks amfs_generic_lookup_child() think it has
- found an alternate file server while it hasn't and thus
- starts multiple racing mounts for the very same node and
- mntfs.
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
- * In the new am_loc scheme mounted mntfs structures still
- have their mf_fo structure left intact. So when restart
- creates a fake mntfs for an already mounted filesystem it
- should not free mf_fo right away.
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
- * Setting the error flag of the mntfs for which the share
- is already mounted results in the mount point not being
- removed when it times out. (Amd considers it an error
- mntfs and thus umount becomse a no-op.)
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
- * Right now AMD sets all timeout values to their defaults
- even if you explicitly set them to zero. This patch
- introduces separate flags that store if the respective
- values have been set and the code path setting default
- values checks these flags instead of testing the values
- for zero. [Linux only]
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
- * Fix mntfs related lookup/(un)mount race conditions, by
- introducing a new structure linking an mntfs to a node.
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
- * We have to free the buffers allocated by the XDR routines when
- decoding the mount response after copying them to their final place.
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
-2009-12-09 Christos Zoulas <christos@zoulas.com>
-
- * Free continuation in amfs_retry() if we don't call amfs_bgmount()
- Normally it's amfs_bgmount() which frees the continuation. However, if
- the mount is already in progress and we're in amfs_retry() for another
- node we don't try mounting the filesystem once again. Still, we have
- to free the continuation as we won't get called again and thus would
- leak the continuation structure and our am_loc references.
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
- * Fix use-after-free and double free of mntfs private data
- ops_nfs.c(nfs_init) does not clear private data pointer after free().
- This leads to use-after-free and double free in case mount() fails.
- (found by valgrind)
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
-2009-11-23 Christos Zoulas <christos@zoulas.com>
-
- * The temporary filename buffer was leaked in lock_mtab().
- From: Krisztian Kovacs <Kris.Kovacs@morganstanley.com>
-
-2009-10-27 Christos Zoulas <christos@zoulas.com>
-
- * Deal with errno.h->sys/errno.h better
-
-2009-10-26 Christos Zoulas <christos@zoulas.com>
-
- * Fix issue with autoconf 2.63
-
- * Fix compile warnings for gcc-4.4.x
-
-2009-04-15 Christos Zoulas <christos@zoulas.com>
-
- * Share the LDAP connection between different maps to save resources
- on the LDAP server. (Olaf Flebbe <o.flebbe@science-computing.de>)
-
-2009-03-20 Christos Zoulas <christos@zoulas.com>
-
- * Fix largefile re-definitions
-
- * Fix compilation error caused in previous patch
-
-2009-02-19 Christos Zoulas <christos@zoulas.com>
-
- * Add a synchronous unmount amq rpc that will wait for the remote
- filesystem to be unmounted, or return an error. Enabled by amq -uu
-
-2009-01-11 Erez Zadok <ezk@fsl.cs.sunysb.edu>
-
- * amd/ops_udf.c: don't define functions/variables which may not be
- used.
-
- * amd/ops_tmpfs.c (mount_tmpfs): force gcc not to complain about
- unused variables.
-
- * config.guess.long: properly support Fedora Core.
-
-2009-01-09 Christos Zoulas <christos@zoulas.com>
-
- * Fix nfs mounts on linux 2.6.26 by explicitly initializing context.
-
- * Treat an empty sublink as an unset sublink; this allows us to
- say sublink:=; in a spec to override the default. (This produces
- Bad selector error, but it works. XXX: We need to decide how to
- unset a selector. I proposed an unset keyword a while ago).
-
-2009-01-06 Christos Zoulas <christos@zoulas.com>
-
- * re-renerate all generated files with newer versions of the
- auto-tools.
-
- * move INSTALL to INSTALL.am-utils to avoid conflicts
-
- * fix incompatibilities with new m4 and new autoconf.
-
- * add UDF filesystem support.
-
- * fix NetBSD nfs file handle detection.
-
-2009-01-02 Christos Zoulas <christos@zoulas.com>
-
- * add nocasetrans, nojoliet, rrcaseins for cd9660 filesystems
-
-2008-12-03 Christos Zoulas <christos@zoulas.com>
-
- * allow ldap queries try a comma-separated list of servers given as:
-
- ldap_hostports = host1:port1,host2,host3:port3
-
- original patch from Florian Geyer
-
-2008-09-19 Christos Zoulas <christos@zoulas.com>
-
- * the auth_create gid on NetBSD is int
-
- * deal with lossage from flex -P
-
- * fix missing/incorrect prototypes
-
-2008-09-17 Christos Zoulas <christos@zoulas.com>
-
- * fix manual page section issues (sorting, non-existant)
-
- * add missing forward declarations
-
- * avoid null pointer derefs (coverity)
-
- * more portable endian detection support
-
- * implement tmpfs support
-
- * use sizeof var instead of constant
-
- * fix yyerror declaration and definition
-
- * fix yy function renaming, and correct some renaming issues.
-
- * work around automake < 1.9 issue where ylwrap is not being run
- for a single yacc or lex file.
-
- * NetBSD
- - handle headers that need other headers to compile
- - add exfs and tmpfs specific glue
- - add options log, noatime, nocoredump, nodevmtime, softdep,
- symperm, union
- - NetBSD's new mount system call needs the size of the opaque
- filesystem specific structure, but passing 0 for now works.
- We would need to change a lot more code to pass the size from
- the fs-specific calls, so for now punt.
- - recvfrom takes socklen_t * on NetBSD
- - handle newer NetBSD using statvfs
- - NetBSD calls its ufs ffs
-
- * Linux
- - Most recent kernels have trouble with trying to parse the pid
- hostname and do locking. What before was a silent failure, now
- there is a warning printed and the mount is rejected. This is
- the simplest fix:
- (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=479884)
-
-2007-04-13 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/sun_map.c (sun_append_str): When translating '&' from Sun
- automounter maps, replace it with "${key}" in the Amd map, not
- with the value of the key at the time. This way '*' maps work
- too.
-
- * config.guess.long: don't use -q option to grep because some
- systems don't support it. Bug fix for solaris.
-
-2007-03-11 Christos Zoulas <christos@zoulas.com>
-
- * amd/opts.c (expand_op): Don't call xstrlcpy() to truncate a
- string. It causes spurious xstrlcpy() syslog() errors. Use
- memcpy() and explicitly terminate the string.
-
-2007-01-20 Erez Zadok <ezk@cs.sunysb.edu>
-
- * updated copyright year to 2007 on all files.
-
-2006-12-27 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: ia64-hp-hpux11.23
-
- * m4/macros/check_libwrap_severity.m4 (LIBS): also test if caller
- needs to define rfc931_timeout.
-
- * amd/sun2amd.c: define rfc931_timeout and allow/deny_severity for
- libwrap.
-
- * amd/amq_svc.c: some versions of libwrap require the caller to
- define rfc931_timeout in addition to allow/deny_severity.
-
- * amd/amfs_toplvl.c (amfs_toplvl_init): properly detect when
- forced unmount functionality exists for all systems.
-
- * libamu/mount_fs.c (compute_nfs_args): reset nfs_args_t->pathconf
- only if field exists.
-
- * conf/nfs_prot/nfs_prot_hpux11.h: prevent HPUX 11.23 from
- including <tiuser> or <sys/tiuser> (TLI definitions are already
- included from elsewhere).
-
- * configure.in: detect nfs_args_t->pathconf field.
-
-2006-11-27 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/Makefile.am: properly publish html files using newer
- text2html.
-
-2006-11-27 Erez Zadok <ezk@shekel.local>
-
- * doc/Makefile.am: obfuscate emails in ChangeLog before it is
- published on web site.
-
- * obfuscate many more emails in the distro, esp. of files which get
- posted on the am-utils web site.
-
-2006-11-26 Erez Zadok <ezk@shekel.local>
-
- * minor new port: i386-apple-darwin8.8.1.
-
- * doc/am-utils.texi: remove obvious URLs used by spammers, and
- replace them with links to the am-utils web site, which uses PNG
- images to obfuscate the actual email/mailman URLs.
-
-2006-10-30 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi (Password maps): minor typo reported by
- Christoph P. Kukulies.
-
-2006-10-26 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-pc-linux-fc6.
-
- * m4/macros/linux_headers.m4: handle newer Linux kernels which
- removed UTS_RELEASE from <linux/version.h>.
-
-2006-10-25 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new ports: i386-pc-linux-centos4.4 and
- powerpc-apple-darwin8.7.0.
-
- * config.guess.long: recognize CentOS Linux.
-
-2006-06-20 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-pc-solaris2.11-nexentaos (GNU/OpenSolaris).
-
- * config.guess.long: recognize NexentaOS (GNU/OpenSolaris)
-
- * config.guess, config.sub: updates from latest official GNU
- distributions.
-
-2006-05-11 Erez Zadok <ezk@cs.sunysb.edu>
-
- * Minor new ports: i386-unknown-freebsd6.1 (RELEASE),
- powerpc-apple-darwin8.6.0, and i386-unknown-openbsd3.9.
-
-2006-05-10 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/mount_fs.c (compute_nfs_attrcache_flags): fix signedness
- problems on IRIX-6.5.
-
- * conf/autofs/autofs_solaris_v1.c (xdr_umntrequest): fix
- signedness problems on IRIX-6.5.
-
-2006-05-01 Erez Zadok <ezk@cs.sunysb.edu>
-
- * configure.in: check if libc already includes dbm functionality
- (as in FreeBSD 6), then don't bother to check specific libraries
- such as libdbm, gdbm, etc.
-
-2006-04-21 Erez Zadok <ezk@cs.sunysb.edu>
-
- * configure.in: detect G/DBM support via gdbm_compat library
- (Debian 3.1).
-
- * minor new port: powerpc-apple-darwin8.5.0
-
-2006-04-20 Erez Zadok <ezk@cs.sunysb.edu>
-
- * scripts/amd.conf-sample, scripts/amd.conf.5, doc/am-utils.texi,
- NEWS: document new nfs_allow_any_interface parameter.
-
- * include/am_compat.h (INADDR_LOOPBACK): define INADDR_LOOPBACK if
- not defined, since some systems don't have it.
-
-2006-04-20 Nick Williams <Nick.Williams@morganstanley.com>
-
- * libamu/wire.c (is_interface_local): new boolena function to
- determine if address represents any of the local interfaces.
- (getwire): more properly check if address equals INADDR_LOOPBACK,
- not if IFF_LOOPBACK is not (the latter isn't as correct).
-
- * include/am_utils.h: extern for new is_interface_local() function.
-
- * conf/transp/transp_{sockets,tli}.c: don't define INADDR_LOOPBACK
- here but in am_compat.h
-
- * amd/nfs_prot_svc.c (nfs_program_2): if
- nfs_allow_any_interface=yes, then allow NFS packets from any local
- interface (not just 127.0.0.1).
-
- * amd/conf.c (gopt_nfs_allow_any_interface): implement the new
- amd.conf parameter nfs_allow_any_interface.
-
- * amd/amd.h (CFM_NFS_ANY_INTERFACE): define new global flag when
- al interfaces are acceptable for local NFS packets.
-
-2006-04-18 Christos Zoulas <christos@zoulas.com>
-
- * amd/opts.c: Add support for optionally specifying the hostname
- to match against the netgroup in the netgrp and netgrpd selectors.
-
-2006-04-16 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/mtab.c (hasmntval): fix inverted meaning of error from
- hasmntvalerr().
-
-2006-04-14 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/mount_fs.c (compute_nfs_attrcache_flags): use new
- hasmntvalerr() function to set attribute cache values only if they
- were set (regardless whether they were set to zero or a non-zero
- value). Before, we were unable to distinguish between an error to
- parse an option, and a user who actually wanted to set an
- attribute-cache value to 0. This now fixes an important
- performance bug that Amd was turning off the attribute caches even
- for regular (non-automounter) NFS mounts.
-
- * libamu/mtab.c (hasmntvalerr): new function to set the value of
- an option into an integer, but ONLY if that options was set and
- parsed correctly. This function returns 1 on error, 0 on success
- (instead of always setting the option value to 0).
- (hasmntval): wrapper function around hasmntvalerr, which maintains
- backwards compatibility (always sets option value to 0, even on
- error to parse the option).
-
- * amd/nfs_subr.c (fh_to_mp3): use long int printf format for
- fhh_pid.
-
-2006-04-05 Christos Zoulas <christos@zoulas.com>
-
- * amd/amfs_generic.c (amfs_lookup_mntfs): fix use-after-free bug
- (Coverity).
-
-2006-03-27 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi, scripts/{amd.conf.5,amd.conf-sample}:
- document new nfs_retransmit_counter_toplvl and
- nfs_retry_interval_toplvl global amd.conf parameters.
-
- * amd/conf.c (gopt_nfs_retransmit_counter_toplvl,
- (gopt_nfs_retry_interval_toplvl): parse amd.conf
- nfs_retransmit_counter_toplvl and nfs_retry_interval_toplvl global
- parameters.
-
- * amd/amfs_toplvl.c (amfs_toplvl_mount): support setting toplvl
- timeo/retrans parameters for Amd's toplvl mounts, separately from
- all other UDP or NFS mounts.
-
- * amd/amd.h: define a new timeo/retrans parameter for toplvl
- mounts.
-
-2006-03-22 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-pc-linux-suse10.1 (beta 8).
-
-2006-03-21 Christos Zoulas <christos@zoulas.com>
-
- * amd/am_ops.c (merge_opts): Remove useless check found by
- Coverity; xmalloc never returns NULL.
-
-2006-03-21 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new ports: i386-pc-linux-fc5.
-
- * amd/info_ldap.c: as of Linux Fedora Core 5 (which comes with
- openldap-2.3.9), the ldap.h headers deprecate several functions
- used in this file, such as ldap_unbind. You get compile errors
- about missing extern definitions. Those externs are still in
- <ldap.h>, but surrounded by an ifdef LDAP_DEPRECATED. I am
- turning on that ifdef at the top of info_ldap.c, under the
- assumption that the functions may be deprecated, but they still
- work for this (older?) version of the LDAP API. It gets am-utils
- to compile, but it is not clear if it will work perfectly.
-
- * libamu/xdr_func.c (xdr_am_mountres3_ok), amq/amq_xdr.c
- (xdr_amq_mount_tree, xdr_amq_mount_tree_p,
- xdr_amq_mount_info_list, xdr_amq_mount_tree_list), amq/amq.c
- (show_mti), amd/amq_subr.c (xdr_amq_setopt, xdr_amq_mount_subtree,
- xdr_amq_mount_tree, xdr_amq_mount_tree_list, xdr_amq_mount_tree),
- libamu/xdr_func.c (xdr_am_mountres3_ok): use casing magic to stop
- GCC-4.1 from complaining about "dereferencing type-punned pointer
- will break strict-aliasing rules" here (but not elsewhere).
-
-2006-03-20 Christos Zoulas <christos@zoulas.com>
-
- * libamu/wire.c: avoid potential dereferencing of a NULL pointer
- (Coverity).
-
- * hlfsd/homedir.c (delay): remove unnecessary check for NULL
- pointer (Coverity).
-
- * fsinfo/fsi_analyze.c (analyze_dkmounts, analyze_mounts,
- analyze_mounts): avoid potential dereferencing of a NULL pointer
- (Coverity).
-
- * conf/transp/transp_sockets.c (create_amq_service): avoid
- potential dereferencing of a NULL pointer (Coverity).
-
- * amd/sched.c (sigchld): properly check for the end of the waiting
- process list (Coverity).
-
- * amd/mapc.c (mapc_create): initialize 'modify' to zero (Coverity).
-
- * amd/autil.c (amfs_mkcacheref, am_unmounted): avoid potential
- dereferencing of a NULL pointer (Coverity).
-
- * amd/amfs_generic.c (amfs_lookup_mntfs): free def_opts before
- reusing it (memory leak bug detected by Coverity).
- (amfs_bgmount): avoid potential dereferencing of a NULL pointer
- (Coverity).
-
- * amd/am_ops.c (merge_opts): no need to check if newstr is NULL
- (bug detected by Coverity).
-
-2006-03-08 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/nfs_subr.c (mp_to_fh): fixed old-style filehandles--the pid
- comparison was failing.
-
-2006-03-08 Erez Zadok <ezk@cs.sunysb.edu>
-
- * configure.in: properly test for either <gdbm/ndbm.h> or
- <gdbm-ndbm.h> (unfortunately, Autoconf will map both names to the
- same $ac_cv_* variable name). Some systems support one header or
- another. Patch inspired by work Debian did.
-
-2006-02-16 Daniel P. Ottavio <ottavio@vm.fsl.cs.sunysb.edu>
-
- * amd/sum_map_tok.l: Fixed a bug in a regular expression that
- prevented dashes in hostnames. This was posted in BZ by Thomas
- A. Fine.
-
- * README.sun2amd: Fixed a typo. Sentence mentions use of autofs
- type when it should be host type.
-
-2006-01-04 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi (auto_attrcache Parameter): revise discussion
- to mention pros and cons of turning on/off this parameter,
- including impact on Amd's performance, and ways to improve
- performance while minimizing the window of vulnerability in which
- kernel may return the wrong (cached) attributes.
-
-2006-01-02 Erez Zadok <ezk@cs.sunysb.edu>
-
- * updated copyright year to 2006 on all files.
-
-2005-12-20 Erez Zadok <ezk@cs.sunysb.edu>
-
- * include/am_utils.h, conf/transp/transp_tli.c (amu_svc_register,
- register_autofs_service): use a consistent prototype for the
- dispatch function of the autofs service de/registration functions.
-
-2005-12-03 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new ports: i386-unknown-netbsdelf2.1,
- i386-unknown-netbsdelf3.0 (RELEASE), and i386-unknown-openbsd3.8.
-
-2005-12-02 Erez Zadok <ezk@cs.sunysb.edu>
-
- * m4/macros/check_field.m4: remove double inclusion of msdosfs
- headers, which are included in mount_header1.h (netbsd 2.1 doesn't
- protect <msdosfs/msdosfsmount.h> which causes compile errors).
-
-2005-11-08 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-unknown-freebsd6.0 (RELEASE)
-
-2005-10-26 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/amq_subr.c (amqproc_pawd_1_svc): repeatedly resolve path in
- Amd, not in pawd (to avoid repeated network RPCs).
-
- * amq/pawd.c (transform_dir): move repeated path resolution into Amd.
-
-2005-10-25 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amq/pawd.c (transform_dir): resolve path repeatedly until
- finished. Bug fix from Jonathan Chen <jon+amd-at-spock.org>.
- Added safety check to prevent infinite loops.
-
-2005-10-19 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi (opts Option): document new pcfs options
- longname, nowin95, shortname, user=N, group=N, mask=N, and
- dirmask=N.
-
- * amd/ops_pcfs.c (mount_pcfs): process new pcfs options longname,
- nowin95, shortname, user=N, group=N, mask=N, and dirmask=N.
-
- * include/am_compat.h: provide compatibility mnttab string names,
- if needed, for pcfs mount options longname, nowin95, shortname,
- user=N, group=N, mask=N, and dirmask=N.
-
- * include/am_utils.h: extern for hasmntstr().
-
- * libamu/mtab.c (hasmntstr): new function to return the string
- value following a mount option, up to the next comma-delimited
- options.
-
- * configure.in: check for mnttab and pcfs options longname,
- nowin95, and shortname.
-
- * Makefile.am (EXTRA_DIST_M4): distribute new macro
- check_mnt2_pcfs_opt.m4.
-
- * m4/macros/check_mnt2_pcfs_opt.m4: new macro to check for pcfs
- mnttab and mount options.
-
-2005-10-18 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/mount_fs.c (print_nfs_args): print nfs_args->addr
- correctly, depending if it's a pointer or not.
-
- * conf/sa_dref/sa_dref_*.h: for each NFS_SA_DREF macro, also
- #define NFS_ARGS_T_ADDR_IS_POINTER if nfs_args->addr is a pointer
- or an embedded structure, so we can tell how to print it.
-
- * libamu/mount_fs.c (print_nfs_args): print nfs_args->addrlen
- field, if it exists.
-
- * configure.in: check for nfs_args->addrlen field.
-
- * wire-test/wire-test.c (main), libamu/mount_fs.c
- (print_nfs_args), fixmount/fixmount.c (inetresport,
- clnt_create_timeout), amq/pawd.c (transform_dir), amq/amq.c
- (main), amd/srvr_nfs.c (find_nfs_srvr), amd/autil.c
- (amfs_mount): document that as per POSIX, we don't need to set the
- sa_len/sin_len fields in struct sockaddr/sockaddr_in. The field
- is used only internally in the kernel. See
- www.awprofessional.com/articles/article.asp?p=169505&seqNum=2&rl=1
-
- * fixmount/fixmount.c (inetresport): initialize sockaddr_in
- structure before filling in some fields.
-
-2005-10-11 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi (nfs_vers, nfs_proto parameters): clarify and
- correct mistaken description of nfs_proto.
-
-2005-10-10 Erez Zadok <ezk@cs.sunysb.edu>
-
- *******************************************************************
- *** Released am-utils-6.1a1 ***
- *******************************************************************
-
- * README.sun2amd: revised.
-
-2005-10-09 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/info_nis.c (nis_search): Bug fix for bugzilla #428; make
- sure that sun_entry2amd() is not called when yp_match() returns an
- error, this is done by checking that 'res' is 0. Bug fix (same
- BZ#); free the output allocated by yp_match() instead of freeing
- the return value of sun_entry2amd().
-
- * amd/sun_map.c (sun_entry2amd): Fix a comment.
-
- * README.sun2amd: Made a first pass at describing the status of
- the sun2amd feature.
- Moved the date.
-
-2005-10-09 Erez Zadok <ezk@cs.sunysb.edu>
-
- * README.sun2amd: place holder.
-
- * Makefile.am (EXTRA_DIST): distribute new README.sun2amd file.
-
-2005-10-07 Erez Zadok <ezk@cs.sunysb.edu>
-
- * m4/macros/check_mnttab_type.m4: move the test for MOUNT_* to the
- very end, after the test using getvfsbyname().
-
- * m4/macros/expand_run_string.m4: if the string value returned is
- empty, consider it invalid.
-
- * m4/macros/check_varargs_macros.m4: rewrite macro so it'll
- try and compile the varargs test, not just cpp it. Some systems
- pass the old cpp test, but not when you actually try to compile
- the code (Tru64's cc).
-
- * conf/autofs/autofs_solaris_v1.h: redefine
- autofs_strdup_space_hack as a macro to str3cat(NULL,(s)," ","").
- This works everywhere and we avoid linking problems, inline
- functions, etc.
-
- * conf/autofs/autofs_solaris_v1.c (autofs_mount_fs): remove
- autofs_strdup_space_hack() function altogether.
-
- * m4/macros/os_cflags.m4: remove hack that hardcodes pte_t=u_int.
-
- * configure.in: test for <sys/immu.h> header.
- Test for pte_t, but only on IRIX6 systems.
-
- * Makefile.am (EXTRA_DIST_M4): distribute new type_pte_t.m4 file.
-
- * m4/macros/type_pte_t.m4: new test for existence of pte_t
- typedef, needed on some IRIX-6.5/gcc systems.
-
- * m4/macros/header_templates.m4: add missing templates for
- HAVE_EXTERN_GETDTABLESIZE, HAVE_EXTERN_GETWD, and
- HAVE_EXTERN_UALARM.
-
- * amd/info_exec.c (exec_map_open): break assignment from inside
- conditional, to work around an IRIX-6.5 cc bug.
-
- * amd/Makefile.am (amd_LDADD, sun2amd_LDADD): put libaminfo.a
- before libamu.la. Some linkers (e.g., IRIX-6.5) incorrectly
- complain about undefined symbols.
-
- * fsinfo/fsi_util.c (set_ether_if), amd/map.c (unmount_mp),
- libamu/xutil.c (expand_error), libamu/strutil.c (xsnprintf): avoid
- comparison between signed and unsigned integers.
-
- * conf/autofs/autofs_solaris_v1.h, conf/autofs/autofs_solaris_v1.c
- (autofs_strdup_space_hack): move "space_hack" function from static
- inline in header, into the only source file that needs it. This
- is cleaner and also prevents linking problem with some compilers
- that won't apply CPP macros inside static inline functions (for
- the strl* functions).
-
- * amq/pawd.c (find_mt, find_mlp): remove obsolete, inefficient
- code.
- (transform_dir): call the new, efficient amqproc_pawd_1() routine.
-
- * amq/amq_clnt.c (amqproc_pawd_1): AMQPROC_PAWD wrapper routine.
-
- * amq/amq.h (amqproc_pawd_1): extern for amq's AMQPROC_PAWD
- wrapper routine.
-
- * amd/amq_svc.c (amq_program_1): dispatch point for
- amqproc_pawd_1_svc.
-
- * amd/amq_subr.c (amqproc_pawd_1_svc): moved pawd's path-matching
- functionality into Amd, where it can be done a lot more
- efficiently. We don't have to construct and ship a whole export
- tree from Amd to pawd. We just get a variable-length
- xdr_wrapstring for the user's path, iterate over the entire export
- list inside Amd, and return only a matched string if found
- (otherwise we return "" to indicate that there was no match, and
- let pawd printf the same string it sent over).
-
- * amd/amd.h: extern for amqproc_pawd_1_svc, amd's service routine
- the AMQPROC_PAWD RPC.
-
-2005-10-06 Erez Zadok <ezk@cs.sunysb.edu>
-
- * ltmain.sh, m4/macros/libtool.m4: update to libtool-1.5.20.
- Fixes Tru64 bugs when using ksh.
-
- * amd/amfs_toplvl.c (amfs_toplvl_mount): break complex ifdef macro
- into two sections, to workaround a C99 varargs-macro bug in
- gcc-3.2.2 (RH9).
-
- * libamu/wire.c (print_wires): convert argument-less xsnprintf to
- xstrlcpy.
-
- * include/am_utils.h: use new HAVE_C99_VARARGS_MACROS or
- HAVE_GCC_VARARGS_MACROS to pass file name and line number to
- xsnprintf/xvsnprintf.
-
- * libamu/strutil.c (xsnprintf, xvsnprintf): if debugging is on,
- then also print the source file name and line number that called
- xsnprintf/xvsnprintf with a buffer that wasn't large enough (most
- likely an am-utils bug).
-
- * Makefile.am (EXTRA_DIST_M4): distribute new
- check_varargs_macros.m4 file.
-
- * configure.in: execute new AMU_VARARGS_MACROS test.
-
- * m4/macros/check_varargs_macros.m4: new test to check what style
- of variable-length argument macros, if any, does the
- compiler/pre-processor supports.
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_lookup_2_req)
- conf/autofs/autofs_solaris_v1.c (autofs_mount_1_req), amd/opts.c,
- amd/nfs_subr.c (nfsproc_lookup_2_svc), amd/nfs_start.c
- (mount_automounter), amd/get_args.c (get_args), amd/amfs_toplvl.c,
- amd/amfs_auto.c (amfs_auto_mount), amd/amd.h, amd/amd.c (main):
- use sizeof() instead of fixed SIZEOF_* macros.
-
- * libamu/strutil.c (xstrlcat, xstrlcpy), include/am_utils.h
- (DEBUG): if debugging is on, then also print the source file name
- and line number that called xstrl* with a buffer that wasn't large
- enough (most likely an am-utils bug)
-
- * include/am_compat.h (INADDR_NONE): define in a common location,
- if OS doesn't have it, use 0xffffffffU which should work with any
- ANSI compiler.
-
- * fixmount/fixmount.c, libamu/wire.c: remove local definition of
- INADDR_NONE.
-
- * amd/amfs_toplvl.c (amfs_toplvl_mount), amd/amfs_auto.c
- (amfs_auto_mount): use common SIZEOF_OPTS in definition and call
- to autofs_get_opts.
-
- * amd/amd.h (SIZEOF_OPTS): moved #define to common header.
-
-2005-10-06 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * amd/opts.c (expand_op): Need to check BUFSPACE for env for
- vlen+1. Likewise for cp and strlen(cp)+1.
-
- * amd/amfs_toplvl.c (amfs_toplvl_mount) [HAVE_FS_AUTOFS]: Pass new
- size argument to autofs_get_opts.
-
-2005-10-05 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amq/pawd.c (transform_dir): was using UDP only. Now will also
- try TCP if UDP failed. Destroy client after use to avoid leftover
- TCP sockets in the kernel.
-
- * libamu/hasmntopt.c (amu_hasmntopt): increase size of MNTMAXSTR
- from 128 to to 256, because some users have really long option
- strings. Suggestion from jon+amd-at-spock.org.
-
- * amd/opts.c (expand_op): should check BUFSPACE for vlen+1, not
- just vlen. Bug discovered when started using xstrlcpy().
-
- * ALL: convert from using strcat to the safer xstrlcat, and from
- strcpy to safer xstrlcpy.
-
-2005-10-04 Erez Zadok <ezk@cs.sunysb.edu>
-
- * hlfsd/hlfsd.h: remove old fatalerror() and ERRM macros.
-
- * hlfsd/hlfsd.c (fatalerror): new function instead of macro.
- Easier to use xstrlcat in this new function.
-
- * amd/amd.h, include/am_utils.h, amd/amd.c: moved 'hostd' extern
- from am_utils.h to amd.h, and define its size as a macro that
- could be passed to xstrl*().
-
- * ALL: convert from using sprintf to the safer xsnprintf.
-
- * mk-amd-map/Makefile.am (LDADD): link with libamu to get
- xsnprintf().
-
- * amd/amd.h, amd/amd.c, include/am_utils.h: moved pid_fsname
- extern from am_utils.h to amd.h, and define its size as a macro
- that could be passed to xsnprintf().
-
-2005-10-02 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/Makefile.am: use strutil.c, not util.c.
-
- * libamu/strutil.c: rename from util.c to explain better purpose
- of file. Move xvsnprintf and xsnprintf from xutil.c to this file.
-
- * libamu/xutil.c: explain purpose of file. Move mkdirs/rmdirs
- code from old util.c.
-
-2005-10-01 Erez Zadok <ezk@cs.sunysb.edu>
-
- * m4/macros/header_templates.m4: templates for FFS.
-
- * m4/macros/check_mnttab_type.m4: on BSD44 systems, check for file
- system mount table name via the MOUNT_* mount(2) macros (because
- BSD44 keeps the mount table in the kernel).
-
- * configure.in: synchronise order of searching for mnttab entries
- and mount names. The new order is "ext3 ext2 ffs ufs 4.2 4.3 4.4
- efs xfs jfs ultrix" (which would prefer ffs on BSD44 instead of
- ufs, and ext3 instead of ext2 on Linux).
-
- * include/am_defs.h: include <sys/statvfs.h> if it exists.
-
- * conf/nfs_prot/nfs_prot_netbsd1_4.h: NetBSD 3 has both statfs()
- and statvfs(), but the latter is preferred, so #define to use
- statvfs.
-
- * configure.in: check for statfs(), statvfs(), and
- <sys/statvfs.h>.
-
- * config.guess.long: strip trailing '.' on "netbsdelf3.0."
- (Beta). Workaround for bug in config.guess.
-
- * config.{guess,sub}: update to latest versions.
-
-2005-09-30 Christos Zoulas <christos@zoulas.com>
-
- * fsinfo/fsi_util.c (set_ether_if): use INADDR_NONE instead of
- hard-coded value of -1.
-
- * include/amq_defs.h (AMQ_STRLEN): increase default size from 2KB
- to 16KB. We can afford it these days.
-
- * libamu/strcasecmp.c (strcasecmp): use unsigned chars in
- tolower() to avoid sign/size promotion bugs.
-
- * libamu/xutil.c (switch_to_logfile): don't output to LOG_CONS by
- default (it's unfriendly). If user really wants to, they can set
- it in /etc/syslog.conf.
-
-2005-09-29 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amq/pawd.c (find_mt): if the auto mount type is used, pawd could
- go into an infinite loop since the mt_directory and mt_mountpoint
- fields are the same for auto mounts. Solution: ignore type auto
- mounts, similar to toplvl. Bug fix from Jonathan Chen
- <jon+amd@spock.org>.
-
- * README.attrcache: document test-attrcache script.
-
- * scripts/Makefile.am (noinst_SCRIPTS): build test-attrcache
- script.
-
- * configure.in: build scripts/test-attrcache script and chmod it
- so it can be executed in place.
-
- * scripts/test-attrcache.in: script to test the NFS attribute
- cache using Amd.
-
-2005-09-26 Erez Zadok <ezk@cs.sunysb.edu>
-
- * hlfsd/stubs.c (nfsproc_getattr_2_svc, nfsproc_lookup_2_svc,
- nfsproc_readlink_2_svc, nfsproc_readdir_2_svc), hlfsd/hlfsd.c
- (hlfsd_init): use new clocktime() function.
-
-2005-09-18 Erez Zadok <ezk@cs.sunysb.edu>
-
- * README.attrcache: document netbsd's patchs to support noac.
-
- * libamu/mount_fs.c (compute_nfs_attrcache_flags): cleanup the
- code that sets the ac{reg,dir}{min,max} fields so it also sets the
- appropriate nfs_args->flags such as MNT2_NFS_OPT_ACREGMIN.
-
- * configure.in: check for nfs_args fields acregmax and acdirmax.
-
- * README.attrcache: new file documenting in detail OS bugs
- relating to attribute caching, which can affect Amd's reliability
- under heavy load.
- Update status of freebsd and openbsd.
-
- * doc/Makefile.am: install README.attrcache file as attrache.txt
- file on am-utils Web site.
-
- * Makefile.am (EXTRA_DIST): include README.attrcache in distro.
-
- * BUGS, NEWS, doc/am-utils.texi (auto_attrcache Parameter),
- scripts/amd.conf.5, scripts/amd.conf-sample: document attribute
- cache bugs on some OSs.
-
-2005-09-17 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/xutil.c (clocktime): newly implemented routine. Uses
- gettimeofday() each time to return a high-resolution clock time,
- and does not "cache" the last time. Returns time in seconds, just
- like the old implementation. If passed a non-null argument, will
- fill it in with the current time in seconds+microseconds.
-
- * libamu/xutil.c: remove actual declaration of clock_valid, and
- another never-used declaration for xclock_valid.
-
- * include/am_utils.h: remove defunct definition of clocktime()
- macro and clock_valid variable. Add extern for new definition.
-
- * libamu/mount_fs.c (mount_fs), hlfsd/homedir.c (homedir,
- hlfsd_diskspace, hlfsd_getpwent, plt_reset, table_add),
- hlfsd/hlfsd.c (main, hlfsd_init, reload, cleanup),
- conf/mtab/mtab_mach3.c (open_locked_mtab), conf/mtab/mtab_file.c
- (open_locked_mtab), amd/nfs_start.c (do_select, run_rpc),
- amd/autil.c (host_normalize): remove defunct clock_valid.
-
- * amd/nfs_subr.c (nfsproc_getattr_2_svc): Print microseconds for
- node's mtime.
- (fh_to_mp3): use new clocktime() to update mtime and get a better
- time resolution.
-
- * amd/mapc.c (mapc_reload_map): change prototype from returning
- void to returning an int. If reloading was needed and succeeded,
- return 1; else return 0.
- (mapc_sync): update mtime of parent node if needed. This is a
- CRITICAL FIX, to ensure that the kernel flushes its DNLC/dcache
- when we run "amq -f" manually or when a map is reloaded.
-
- * amd/map.c (new_ttl): update am_ttl and na_atime in one shot.
- (init_map): use new clocktime().
- (unmount_mp): if the OS doesn't support a "symttl" option, then
- update the mtime of the parent node using the clocktime(); but if
- the time hasn't gotten changed because of rapid Amd accesses on
- systems that don't have a micro-second NFS-client resolution, then
- increment mtime by one arbitrarily (this could, on some systems
- and under pathological cases, result in mtime's that are in the
- future).
-
- * amd/autil.c (forcibly_timeout_mp): MAJOR BUG FIX: force mtime
- update of parent dir, to prevent DNLC/dcache from caching the old
- entry, which could result in ESTALE errors, bad symlinks, and
- more.
- (am_mounted): record mount time, and update am_stats at the same
- time, using the double-action redone clocktime() routine.
- (am_mounted): update parent's mtime from that of the child.
- (am_unmounted): when unmounting an entry, update mtime of parent
- node.
-
- * amd/amfs_generic.c (amfs_bgmount): now that clocktime() doesn't
- remember it's last non-zero value, save it in a temporary variable
- to avoid a TOCTOU problem (between an "if" and a "dlog").
-
- * libamu/xutil.c (show_time_host_and_name),
- conf/autofs/autofs_linux.c (autofs_mounted, autofs_timeout_mp),
- amd/srvr_nfs.c (nfs_keepalive_callback, nfs_keepalive_timeout)
- (find_nfs_srvr), amd/rpc_fwd.c (fwd_alloc), amd/nfs_subr.c
- (nfsproc_getattr_2_svc), amd/nfs_start.c (do_select, run_rpc),
- amd/mapc.c (root_init), amd/map.c(map_flush_srvr, timeout_mp),
- amd/info_ndbm.c (ndbm_init), amd/info_ldap.c (amu_ldap_rebind),
- amd/info_file.c (file_open), amd/info_exec.c (fgets_timed,
- exec_search), amd/clock.c (timeout, softclock), amd/autil.c
- (forcibly_timeout_mp), amd/amfs_generic.c (amfs_retry,
- amfs_bgmount, amfs_generic_mount_child), amd/amd.c (main): pass
- NULL to clocktime().
-
-2005-09-15 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/nfs_subr.c (nfsproc_getattr_2_svc): initialize 'retry', just
- in case.
- (fh_to_mp3): increment amd_stats.d_stale counter only if we are
- actually returning ESTALE.
-
- * amd/info_exec.c (exec_parse_qanswer), amd/info_file.c
- (file_search_or_reload), amd/info_hesiod.c (hesiod_search),
- amd/info_ldap.c (amu_ldap_search), amd/info_ndbm.c (search_ndbm),
- amd/info_nis.c (nis_search), amd/info_nisplus.c (nisplus_search,
- nisplus_search): don't dereference mnt_map->cfm which may be null
- if we're not using an amd.conf file.
-
-2005-09-14 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/xutil.c (unregister_amq): if failed to de-register Amd
- from portmapper, report it under dlog (debugging), not as an
- annoying plog that always shows up.
-
-2005-09-13 Erez Zadok <ezk@cs.sunysb.edu>
-
- * mk-amd-map/mk-amd-map.c (read_file_file), libamu/util.c
- (strsplit), libamu/hasmntopt.c (nextmntopt), amd/sun_map.c
- (sun_entry2amd), amd/sun2amd.c (sun2amd_convert_convert),
- amd/mapc.c (mapc_add_kv), amd/info_file.c (file_search_or_reload),
- amd/info_exec.c (exec_parse_qanswer): cast isspace() and isascii()
- arg to unsigned char, which is safer as per Christos.
-
- * amd/sun_map.c (sun_entry2amd): isspace takes an int, not a char.
-
- * configure.in: keep a dummy unused AM_PROG_LEX, because old
- Automake (1.6.3) looks for it if you refer to LEX in your
- Makefile.am files. Silly thing, fixed in newer versions of
- Automake (1.9.2).
-
-2005-09-11 Erez Zadok <ezk@cs.sunysb.edu>
-
- * Makefile.am (EXTRA_DIST_M4): add prog_{lex,yacc}.m4 to distro.
-
- * configure.in: use new macros AMU_PROG_YACC and AMU_PROG_LEX.
-
- * m4/macros/prog_yacc.m4: new macro to check if bison/yacc/byacc
- exist, but exist with an error if none found.
-
- * m4/macros/prog_lex.m4: new macro to check if f/lex exist, but
- exit with an error if not found (am-utils requires f/lex).
-
-2005-09-07 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: powerpc-apple-darwin8.2.0.
-
- * m4/macros/type_auth_create_gidlist.m4: Old macosx used "gid_t"
- but all newer ones (10.4+) use int.
-
- * m4/macros/type_recvfrom_fromlen.m4: Old macosx used "int" for
- 6th arg of recvfrom(), but all newer ones (10.4+) use socklen_t.
-
- * minor new port: i386-pc-linux-deb3.1.
-
-2005-09-02 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/mount/mount_linux.c: If autoconf didn't find any disk-based
- file system on this system (probably because /proc isn't mounted),
- then provide some default definition for this file to compile.
-
-2005-08-28 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/sun_map.c (sun_entry2amd) : Wipe out any trailing white
- spaces or '\n' before passing strings to the parser.
-
- * amd/amd.h : oops, reverting bad changes
-
- * amd/info_file.c : oops, reverting bad changes
-
- * amd/mapc.c : oops, reverting bad changes
-
- * amd/sun_map_parse.y : oops, reverting bad changes
-
-2005-08-27 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/xutil.c: amd_program_number is a u_long now.
- (unregister_amq): if pmap_unset failed to de-register Amd from the
- portmapper, print an error message.
- (get_amd_program_number): returns a u_long now.
- (set_amd_program_number): take a u_long now.
-
- * include/am_utils.h: get_amd_program_number() returns u_long now.
- set_amd_program_number() takes a u_long now.
-
- * amq/amq.c: amd_program_number is a u_long, not int.
-
- * amd/nfs_start.c (mount_automounter): when registering Amd with
- the portmapper (for Amq service), don't fail if just one of TCP or
- UDP failed to register, but only if both transports failed. That
- way Amq can still contact Amd using the transport that did
- register correctly. However, now, if both transports failed to
- register, then set amd_state to "Done" so it would shutdown
- cleanly.
-
- * conf/transp/transp_{sockets,tli{}.c (amu_svc_register): better
- comments.
-
- * libamu/xutil.c: debug_flags should always be initialized to
- D_CONTROL (amq,daemon,fork).
- (debug_option): allow setting initial immutable debug_flags via
- amd.conf; afterward, prevent it (i.e., one tries it via "amq -D").
-
- * Makefile.am (DISTCLEANFILES): also remove amu_autofs_prot.h,
- config.cache.old, and dbgcf.h on "make distclean".
- (CLEANFILES): remove dbgcf on plain "make clean".
-
- * amd/Makefile.am (DISTCLEANFILES): also remove ops_autofs.c on
- "make distclean".
-
-2005-08-27 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/info_file.c (file_search_or_reload): Changed the key
- variable that is passed to the sun_entry2amd.
-
- * amd/mapc.c (mapc_add_kv): Add support for multiple entries
- packed into one line. This is a workaround for handling Sun style
- mounts that contains multiple entries on one line: "multi-mount
- entries". The sun2amd conversion tools will convert such entries
- into type:=auto and pack each of the auto-entries into one line
- separated by '\n'. The mapc_add_kv function will now recognize
- such entries and add then.
-
- * amd/sun2amd.c (sun2amd_convert): Add print statement that
- includes the line number during a parser failure.
-
- * sun_map.c: Fix the AMD_MAP_PREF_KW definition. Fix spelling.
- (sun_mountpts2amd): removed this function
- (sun_hsfs2amd): added some more comments
- (sun_nfs2amd): moved support for multi-mount entries from this
- function to sun_multi2amd().
- (sun_multi2amd): New function to handle multi-mount entries. This
- function will convert the Sun version to an Amd type:=auto. Each
- extra auto entry will be appended to the same line separated by a
- '\n'.
- (sun_entry2amd): Fixed a bug if-statement. This function now
- checks for multi-mount entries.
-
- * amd/sun_map.h: Add a fstype member to the sun_mountpt struct.
-
- * amd/sun_map_parse.y: Parser now supports fstype for multi-mount
- entries.
-
- * amd/sun_map_tok.l: No longer print the line and column number
- when parsing. This is because the parser is handed strings not
- files. Therefore, the line number will always be 1. It is now up
- to the higher level tools to echo line information during error
- when they feed the parser.
-
-2005-08-24 Erez Zadok <ezk@cs.sunysb.edu>
-
- * configure.in: wrap all LDAP and HESIOD tests in test whether
- --with-OPT was used.
-
-2005-08-20 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/sun_map.c: Clean up #defines
- (sun_entry2amd) : Verify that the key and entry values passed are
- not NULL. Free the Sun entry struct when done.
-
- * amd/sun_map.h: Add some "not implemented yet" comments to the
- map and mmap structures.
-
- * amd/sun_map_parse.y: Removed automap include functionality, it
- will need to be re-implemented using a pre-processor.
- Clean up function calls.
-
-2005-08-16 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/sun2amd.c (sun2amd_convert): If the input line is too long
- don't return an error just null terminate and continue. Fix bug:
- the map key was not written.
-
- * amd/sun_map.c: Add a new Amd device, and cdfs constant.
- (sun_locations2amd): Write the NFS type keyword
- for each host of the mount entry. Add a space between each mount
- location.
- (sun_hsfs2amd): New function to support hsfs to
- cdfs.
- (sun_nfs2amd): Don't write the nfs type here. Fix
- comments.
- (sun_entry2amd): Change function parameter var for
- clarity. Add support for hsfs.
-
- * amd/sun_map_parse.y (sun_map_parse_read): Reset the entry list
- after it has been returned.
-
-2005-08-16 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/get_args.c (get_args): initialize debug_flags if they've
- never been set.
-
-2005-08-15 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/mapc.c (mapc_create): mapc find takes 4th arg, the mount
- point. Now, we can properly initialize the cfm structure of the
- mnt_map, so we can have access to the flags (e.g., SUN_MAP_SYNTAX)
- inside each info_*.c file.
- (mapc_find): takes 4rd arg (mntpt) and passes it to calls to
- mapc_create.
- (root_newmap): pass NULL as 4th arg (mntpt).
-
- * amd/amfs_generic.c (amfs_parse_defaults): remove ugly hack to
- initialize map cfm structure (including flags) so late.
-
- * amd/autil.c (amfs_mkcacheref): pass mount point as 4th arg to
- mapc_find.
-
- * amd/amfs_root.c (amfs_root_mount): pass NULL as new 4th arg to
- mapc_find.
-
- * amd/amd.h: extern for mapc_find changed to pass the mount point.
-
- * libamu/xutil.c: debug_flags should be unsigned.
- (dbg_opt): fix comments for updated debug_flags, add "defaults".
- (debug_option): Don't allow "immutable" (D_IMMUTABLE) flags to be
- changed, because they could mess Amd's state and only make sense
- to be set once when Amd starts. Currently these immutable flags
- are "daemon," "fork," "amq," and "mtab." If Amd not compiled with
- debugging, set default "control" options (daemon,fork,amq).
- (unregister_amq): proper use of D_AMQ.
-
- * include/am_utils.h: define new D_BASIC, D_CONTROL, D_DEFAULT,
- D_IMMUTABLE, and D_MASK. Updated definitions of D_ALL and D_TEST.
- debug_flags extern should be unsigned.
-
- * scripts/amd.conf-sample (debug_options): mention new "defaults"
- option.
-
- * scripts/amd.conf.5,doc/am-utils.texi: document new debug option
- "defaults" and properly explain the corrected meanings of
- "daemon," "fork," "amq," and their "no" inversions. Better
- explain "all" and "test" too. Correct default debug_mtab file to
- /tmp/mtab.
-
- * hlfsd/stubs.c (nfsproc_readlink_2_svc): proper use of D_FORK.
-
- * hlfsd/homedir.c (homedir): proper use of D_FORK.
-
- * hlfsd/hlfsd.c (main, hlfsd_init, cleanup): proper use of
- D_DAEMON.
-
- * amd/nfs_start.c (mount_automounter): proper use of D_AMQ.
-
- * amd/amd.h (DEBUG_MNTTAB_FILE): change default to /tmp/mtab,
- which is more common on more systems (instead of /tmp/mnttab).
-
- * amd/amd.c (main): properly use D_DAEMON.
-
-2005-08-14 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/xutil.c (xlog_opt): define new pseudo log_option named
- "defaults", which is an alias for "fatal,error,user,warning,info".
-
- * scripts/amd.conf.5, doc/am-utils.texi, amd/amd.8: document new
- log_option "defaults".
-
- * amq/amq.8: typo. Arg name for -D is "debug_options" not
- "log_options".
-
- * libamu/xutil.c: make xlog_level static, and initialize it to
- XLOG_DEFAULT.
- (cmdoption): take unsigned int as flags argument, and print any
- errors as XLOG_ERROR (which cannot be turned off).
- (switch_option): remove old code which disallowed you from turning
- off flags that were set when Amd started up. Now, you can turn
- any log option on/off at start time or later on (via amq -x),
- other than the two mandatory options (fatal+error).
-
- * include/am_utils.h (XLOG_*): remove unused XLOG_DEFSTR. Define
- XLOG_MASK to mask out unused flag bits. Define XLOG_DEFAULT to be
- what it was before (fatal + error + user + warning + info), but
- use the new mask. Remove extern's for xlog_level and
- xlog_level_init. Change extern for cmdoption() to take an
- unsigned flags argument.
-
- * doc/am-utils.texi, amq/amq.8, scripts/amd.conf.5, amd/amd.8:
- document mandatory log options
- (fatal+error) which cannot be turned off and are always on by
- default. They must be on so that Amd can report crucial errors,
- including those related to setting flags on/off.
-
- * hlfsd/hlfsd.c (main): remove hack to initialize log_options.
-
- * wire-test/wire-test.c: remove reference to unused xlog_level.
-
- * amd/mapc.c (mapc_create): 'alloc' flags variable should be
- unsigned.
-
- * amd/get_args.c (get_args): no need for hack using
- xlog_level_init.
-
- * amd/Makefile.am: separate sources common to amd and sun2amd into
- a special, locally-built only, static library called libaminfo.a.
-
- * libamu/xutil.c (real_plog, xsnprintf): call new xvsnprintf()
- wrapper function.
- (xvsnprintf): new function which already gets a va_list. This was
- needed to avoid nesting va_list's (which apparently isn't
- allowed).
-
- * include/am_utils.h: prototype for new xvsnprintf wrapper.
-
- * configure.in: sinclude([vers.m4]) version number file.
-
- * vers.m4: new file to separate version number out of
- configure.in, useful for nightly snapshot script to generate
- nightly version string.
-
- * Makefile.am (EXTRA_DIST_M4): include vers.m4 in distro.
-
-2005-08-14 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/info_file.c: add key to sun_entry2amd()'s parameters
-
- * amd/info_hesiod.c: add key to sun_entry2amd()'s parameters
-
- * amd/info_ldap.c: add key to sun_entry2amd()'s parameters
-
- * amd/info_ndbm.c: add key to sun_entry2amd()'s parameters
-
- * amd/info_nis.c: add key to sun_entry2amd()'s parameters
-
- * amd/info_nisplus.c: add key to sun_entry2amd()'s parameters
-
- * amd/sun_map.c: New functions to support sun translation to amd.
- The function sun_entry2amd's parameters were expanded to include
- the key value. sun_entry_2amd() now returns NULL on error.
-
- * amd/sun_map.h: Expand sun_entry2amd's parameters to include key
- value.
-
- * amd/sun_map_parse.y: Change how file system types are parsed out
- of the list of options for each entry. The previous way was not
- working properly so now we just look for the 'fstype' keyword in
- each option. If it exists we copy its key value.
- Added some comments to sun_map_parse_read().
-
- * amd/amd.h: Added an extern from info_file.c called
- file_read_line(). Previously this function was static but is now
- used in sun2amd.c.
-
- * amd/info_file.c: Changed the static function read_line() to a
- public function called file_read_line(). This function is now
- used in sun2amd.c
-
- * amd/sun2amd.8: Filled in the contents of this man page. This is
- a conversion utility that converts Sun maps to Amd maps.
-
- * amd/sun2amd.c: Implemented a working version of this utility.
-
-2005-08-11 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/sun_map_parse.y: instead of using a custom FOO_alloc()
- function, use Amd's CALLOC(struct FOO) macro.
-
- * amd/sun_map.h: remove extern definitions to functions no longer
- needed.
-
- * amd/sun_map.c: removed superfluous *_alloc() functions, some of
- which caused conflicts with same-named symbols in the parser
- (since we rename 'yyalloc' to 'sun_map_alloc').
-
- * configure.in: keep AC_INIT on same line, for nightly snapshot
- build script.
-
- * amd/Makefile.am: f/lex libraries are incompatible with multiple
- scanners, so don't link Amd with libl.a/libfl.a.
-
-2005-08-10 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/sun_map_tok.l: Clean up regular expression so HPUX stops
- whining.
-
-2005-08-09 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/sun_map_parse.y: Moved license below special yacc bracket to
- be portable with HPUX's yacc. Clean up externs.
-
- * amd/sun_map_tok.l: Moved license below special lex bracket to be
- portable with HPUX's lex. Fixed definitions to allow for a
- non-flex lex to parse strings instead of files. Added some casts
- to strlcpy usage to silence warnings. Moved the % options because
- HPUX was complaining,
-
-2005-08-08 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/sun_map_tok.l: Applied some definition goop to handle the
- ECHO symbol that lex defines. This symbol causes problems on
- RedHat-EL-powerPC platforms. Replaced strncpy with strlcpy.
- Renamed the function sun_map_yyinput to sun_map_input. This
- function is a utility function that is not generated by lex.
- Therefore, the 'yy' may cause confusion.
-
-2005-08-08 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/sun_map_tok.l: allocate more output slots so lex scanners
- don't run out of memory.
-
- * amd/sun_map_parse.y: declare extern for sun_map_parse().
-
- * libamu/xutil.c (xsnprintf): ensure proper comparisons between
- signed and unsigned quantities.
-
-2005-08-06 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/util.c, amd/autil.c (strsplit): moved strsplit() function
- from Amd code to to libamu, so sun2amd could use it.
-
- * amd/Makefile.am (sbin_PROGRAMS): build sun2amd binary and man
- page.
- (EXTRA_sun2amd_OBJECTS): sun2amd needs to link with all info_*.c files
-
- * amd/sun2amd.8: placeholder for man page.
-
- * amd/sun2amd.c: placeholder for C version of translator from Sun
- syntax maps to Amd maps.
-
- * */*.[0-9]: include file name in nroff source comment.
-
- * ALL: use '0' properly when assigning or passing it to functions.
- If in the context pointer, use NULL. If in the context of a
- single char (say within a string), the use '\0'. This is just to
- make the code clearer.
-
- * m4/macros/header_templates.m4: template for HAVE_MAP_SUN.
-
- * amd/mapc.c (maptypes): add placeholder for Sun-syntax map
- methods.
-
- * amd/Makefile.am (EXTRA_amd_SOURCES): compile info_sun.c
-
- * amd/info_sun.c: placeholder for meta info parser to get info
- from Sun automount-style /etc/auto_master, possibly following
- into multiple info services (via /etc/nsswitch.conf).
-
- * libamu/xutil.c (xsnprintf): if vsnprintf truncated the output
- string to avoid an overflow, print an error. Include some code to
- break out any possible infinite loop between plog() and
- xsnprintf().
- (real_plog): now we can use (carefully) xsnprintf() directly.
-
- * amd/sun_map.[hc]: cleanup and formatting.
-
- * amd/sun_map_parse.y: to match the literal string "fstype=" use
- double quotes, not single quotes.
-
- * amd/get_args.c (get_args): call conf_parse() using conf_in.
-
- * amd/amd.h: use renamed parser symbols (yyparse -> conf_parse;
- yyin -> conf_in).
-
- * ylwrap: Enhance wrapper to avoid the #define hacks done by Gdb,
- and suggested by the Automake manual. This enhanced parser will
- prefix each conflicting yacc/lex symbol with a unique name
- produced from INPUT. For example, if INPUT is foo_parse.y, then
- yyparse() becomes foo_parse(). This requires that both your .l
- and corresponding .y files have the same prefix (e.g., foo_parse.y
- and foo_tok.l).
-
- * amd/Makefile.am (BUILT_SOURCES): define which yacc/lex .h/.c
- source files are built automatically, and therefore should not be
- in the distro (IMHO), and should be cleaned upon "make clean".
- (amd_SOURCES): include new sun_map_parse.y and sun_map_tok.l files.
-
- * ylwrap: new file needed because we have two parsers now.
-
- * amd/sun_map_{parse.y,tok.l}: cleanup and formatting.
-
-2005-08-06 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/Makefile.am: Added new files sun_map.h, sun_map.c,
- sun_map_parse.y, and sun_map_tok.l. These files add support for
- parsing Sun style maps. The yacc/lex files needed custom rules so
- they don't cause symbol conflicts with each other.
-
- * amd/amd.h: Added "#define INFO_MAX_LINE_LEN" that specifies the
- line limit for info services.
-
- * amd/info_exec.c: Replaced MAX_LINE_LEN with INFO_MAX_LINE_LEN
-
- * amd/info_file.c: Replaced MAX_LINE_LEN with INFO_MAX_LINE_LEN,
- added support for parsing Sun style maps. The support for Sun
- maps is done using the sun_entry2amd() function. This function is
- called for each entry line that is read only when Sun parsing is
- enabled. For each entry line that is passed to the function a
- copy of the Amd equivalent is returned.
-
- * amd/sun_map.h: new header file for Sun style map support
-
- * amd/sun_map.c: new source file for Sun style map support, clean
- up comments, additional sun2amd conversion routines
-
- * amd/sun_map_parse.y: new yacc file for parsing Sun style maps,
- fix copyright notice, put filename below license.
-
- * amd/sun_map_tok.l: new lex file for parsing Sun style maps, fix
- copyright notice, put filename below license.
-
- * amd/get_args.c: replace usage of strlcat with xstrlcat
-
- * include/am_utils.h: added 'extern void xstrlcat()'
-
- * libamu/util.c: Added a xstrlcat() function that wraps the
- syscall strlcat() so that string truncations can be logged.
-
-2005-08-06 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/info_file.c (file_search, file_reload): pass mnt_map to
- file_search_or_reload.
- (file_search_or_reload): ensure that mnt_map is never NULL.
-
- * amd/info_nis.c (nis_search): call sun_entry2amd() if
- sun_map_syntax=yes.
-
- * amd/info_ldap.c (amu_ldap_search): call sun_entry2amd() if
- sun_map_syntax=yes.
-
- * amd/info_hesiod.c (hesiod_search): call sun_entry2amd() if
- sun_map_syntax=yes.
-
- * amd/info_ndbm.c (ndbm_search): pass mnt_map to search_ndbm.
- (search_ndbm): call sun_entry2amd() if sun_map_syntax=yes.
-
- * amd/info_nisplus.c (nisplus_search): call sun_entry2amd() if
- sun_map_syntax=yes.
-
- * amd/info_exec.c (exec_search): pass mnt_map to
- exec_parse_qanswer.
- (exec_parse_qanswer): call sun_entry2amd() if sun_map_syntax=yes.
-
- * doc/am-utils.texi (sun_map_syntax Parameter): document new
- common parameter.
-
- * scripts/amd.conf.5: selectors_in_defaults is a common parameter,
- not just [global]. Use consistent capitalization of Amd/Amq.
- Document new sun_map_syntax parameter.
-
- * scripts/amd.conf-sample: properly list all of the parameters
- which are common to both the [global] and the per-map sections.
- (sun_map_syntax): example of new parameter.
-
- * doc/am-utils.texi (Common Parameters): selectors_in_defaults is
- a common parameter, not just [global].
-
- * scripts/amd.conf-sample (sun_map_syntax): example of new flag.
-
- * amd/conf.c ({ropt,gopt}_sun_map_syntax): new function to parse
- sun_map_syntax flag (global or per map).
-
- * amd/amd.h (CFM_SUN_MAP_SYNTAX): new flag for users to say if the
- map uses Sun automounter syntax.
-
- * cvs-server.txt: update instructions after branching 6.1-stable.
-
-2005-08-02 Erez Zadok <ezk@cs.sunysb.edu>
-
- *******************************************************************
- *** Released am-utils-6.1.1 ***
- *******************************************************************
-
- * libamu/xutil.c (xsnprintf): "unsafe" alternative to vsnprintf is
- vsprintf, not sprintf.
-
- * conf/umount/umount_osf.c (umount_fs): refer to proper formal
- parameter name.
- (umount2_fs): pass second arg to umount().
-
- * ALL: remove CVS ID and put actual file name in source.
-
- * conf/autofs/*.[hc]: proper copyright headers.
-
- * whitespace reformatting. Remove remaining '%W%' SCCS IDs.
-
- * amd/mntfs.c (free_mntfs): don't discard the last reference to an
- mntfs that had been mounted already. It won't have the
- MFF_RESTARTED flag on, as it gets turned off after the entry is
- mounted, but it will have the MFF_RSTKEEP flag on.
-
- * amd/autil.c (mf_mounted), amd/restart.c (restart_fake_mntfs):
- show the mntfs's flags.
-
-2005-08-01 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/mtab/mtab_linux.c: removed unused code. Cleanup.
- (handler): removed this bad signal handler.
- (lock_mtab): Redhat's original code set a signal handler called
- "handler()" for all non-ALRM signals. The handler called
- unlock_mntlist(), plog'ed the signal name, and then exit(1)!
- Never, ever, exit() from inside a utility function. This messed
- up Amd's careful signal-handling code, and caused Amd to abort
- uncleanly only any other "innocent" signal
- (even simple SIGUSR1), leaving behind a hung Amd mnt point. That
- code should have at least restored the signal handlers' states
- upon a successful mtab unlocking. Anyway, that handler was
- unnecessary, because will call unlock_mntlist() properly anyway on
- exit.
-
- * conf/mtab/mtab_{file,isc3,mach3,linux}.c (unlock_mntlist): dlog
- message that we're inside the unlock_mntlist function.
-
- * amd/amd.c (main): use new setup_sighandler() for Amd's four main
- signals (INT, TERM, HUP, and CHLD).
- (main) Add SIGINT and SIGTERM to masked_sigs, used in
- nfs_start.c:do_select() for setjmp/longjmp code; the MASK was set
- to all four signals if !HAVE_SIGACTION, but only to HUP+CHLD if we
- HAVE_SIGACTION. So this change makes Amd behave consistently.
-
- * include/am_utils.h: extern for new setup_sighandler().
-
- * libamu/xutil.c (setup_sighandler): new utility function to setup
- a single signal-handler regardless of what method is supported by
- this OS.
- (going_down): call unlock_mntlist() when exiting, to ensure that
- Amd will remove any leftover mtab lock files, if any.
-
- * amd/restart.c (restart_automounter_nodes): cleanup function.
-
- * minor new port: i386-pc-linuxoldld-deb3.1.
-
- * configure.in: include <sys/types.h> before <linux/socket.h> to
- get the definition of size_t on Debian-3.1r0a.
-
-2005-07-29 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/srvr_nfs.c (find_nfs_srvr): don't blindly copy the hostent
- IP address. First check if it differs from the existing one of
- the fserver, and copy only if it changed. If it did change, flush
- the fhandle cache to avoid a stale fhandle being reused. This
- allows Amd to detect IP address changes even for an fserver that
- lost one or more NFS pings, but not enough to be declared totally
- down. We handle the "totally down" fserver case in
- check_fs_addr_change().
-
- * amd/ops_nfs.c (nfs_umount), amd/sched.c (sched_task),
- amd/nfs_subr.c (nfs_quick_reply): code clarity.
-
- * conf/mount/mount_linux.c (linux_nfs_error): dlog mappings of
- errnos to NFS errors.
-
- * conf/umount/umount_linux.c (umount2_fs): cleanup code. Trying
- stat() seems doomed to hang at times, so don't try stat at all,
- because umount2() appears to be clever enough to never hang.
-
-2005-07-25 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/amd.h (FSF_FORCE_UNMOUNT): new flag used to indicate that a
- particular fserver may need forced/lazy unmounts when it's mntfs's
- are unmounted.
-
- * amd/ops_nfs.c (nfs_umount): a simple unmount returned EBUSY, and
- the user specified forced_unmounts=yes in amd.conf, and this
- fserver was flagged with FSF_FORCE_UNMOUNT, and the OS supports
- forced/lazy unmounts, then try forced/lazy unmounts. This should
- allow a hung mount point to be removed.
-
- * amd/srvr_nfs.c (find_nfs_srvr): move away IP-address change
- detection code to its own function.
- (check_fs_addr_change): new function to detect if the IP address
- of a downed host has changed, and do various cleanups and fixups
- to try and recover as best from that situation (e.g., flushing
- various caches). Also set the FSF_FORCE_UNMOUNT flag for the
- fserver in question.
- (flush_srvr_nfs_cache): pass fserver as argument, so we can
- selectively flush the NFS cache for a single fserver (or all of
- them, if you pass NULL).
-
- * libamu/xutil.c (switch_to_logfile): truncate a regular-file log
- file if user passed non-zero "truncate_log" flag.
-
- * include/am_utils.h: switch_to_logfile() now takes a 3rd arg.
-
- * amd/get_args.c (get_args): pass "truncate_log" flag as per
- amd.conf global settings.
-
- * amd/conf.c (gopt_truncate_log): store global value of
- truncate_log flag.
-
- * amd/amq_subr.c (amqproc_setopt_1_svc), hlfsd/hlfsd.c (main,
- reload): don't truncate log file when calling switch_to_logfile().
-
- * amd/amd.h (CFM_TRUNCATE_LOG): new flag. Fix comment typo.
-
- * NEWS, doc/am-utils.texi (truncate_log Parameter),
- scripts/amd.conf.5, scripts/amd.conf-sample (log_file): document
- new truncate_log amd.conf parameter.
-
- * amd/conf.c (gopt_forced_unmounts): check Linux kernel version
- and alert if your version may be too old for MNT_FORCE to work
- (before 2.4.0) or for MNT_DETACH to work (before 2.6.0).
- Otherwise it may be impossible to pin down the exact kernel
- version in which we should enable this feature.
-
- * conf/umount/umount_linux.c (umount2_fs): if MNT_FORCE returned
- EBUSY, then don't try to stat(2) before MNT_DETACH because it
- could hang.
-
-2005-07-21 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/umount/umount_linux.c (umount_fs): cleanup this function,
- breaking long "if" statements using "goto out".
-
- * conf/umount/umount_{aix,bsd44,osf,default,linux}.c (umount_fs):
- call new utility function umount2_fs() as needed (EBUSY, EIO, or
- ESTALE).
-
- * conf/umount/umount_{aix,bsd44,osf,default,linux}.c (umount2_fs):
- define a new utility function to invoke forcible/lazy unmounts
- without touching any mtab files. This separate utility function
- is useful because it can be called from elsewhere.
-
- * amd/amfs_toplvl.c (amfs_toplvl_init): new function, called
- before Amd mounts toplvl mounts, which gives us a hook for cleanup
- of a previously dead Amd. In our case, if the user asked for
- forced_unmounts, and the OS supports it, then we try forced/lazy
- unmounts on any previous toplvl mounts. This is useful if a
- previous Amd died and left behind toplvl mount points (this Amd
- will clean them up!). WARNING: Don't use forced/lazy unmounts if
- you have another valid Amd running, because this code WILL force
- those valid toplvl mount points to be detached as well!
-
- * amd/amfs_toplvl.c (amfs_toplvl_umount): don't unconditionally
- try forced/lazy unmounts because it will prevent a normal Amd from
- terminating and cleaning up properly (self-deadlocking: detached
- mounts hang the parent Amd on a stat). Since we already do
- unmounts in the background, then try a safer policy: after trying
- the normal unmounts a few times (5 sec), escalate and try forced
- unmounts a few times (5 more seconds), and if even that failed,
- then try the ultimate -- detached unmounts (which always succeed).
- This allows Amd to first try and shutdown cleanly, and gradually
- try more forcible ways to shutdown. On Linux, this procedure will
- cleanly shutdown Amd even if there are processes with their CWD on
- Amd's mount points (which normally result in EBUSY).
-
-2005-07-20 Erez Zadok <ezk@cs.sunysb.edu>
-
- * Makefile.am (EXTRA_DIST_CONF): add new umount_aix.c to distro.
-
- * conf/umount/umount_aix.c: easier if AIX has its own unmount
- helper file.
-
- * m4/macros/check_umount_style.m4: AIX needs its own unmount style
- file.
-
- * doc/am-utils.texi (forced_unmounts Parameter): @xref -> @pxref.
-
-2005-07-19 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/nfs_prot/nfs_prot_aix5_2.h: define compatible
- forced-unmount flag.
-
- * conf/umount/umount_default.c (umount_fs): if regular umount got
- EBUSY, EIO, or ESTALE, then try forced unmount, if supported. Try
- umount2 (Solaris) or uvmount (AIX).
-
- * conf/umount/umount_{bsd44,osf}.c (umount_fs): if default
- umount() failed with EIO or ESTALE, also try forced unmount.
-
-2005-07-18 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/autil.c (amfs_mount), amd/amfs_toplvl.c
- (amfs_toplvl_umount): enable forced/lazy unmounts only if user
- asked for it (and dlog it).
-
- * scripts/amd.conf.5: document new force_unmount global parameter.
-
- * doc/am-utils.texi (forced_unmounts Parameter): document new
- global parameter.
-
- * amd/conf.c (gopt_forced_unmounts): process forced_unmounts
- option (default "no"). Exit with an error if user specified the
- option as "yes" but configure couldn't find support for either the
- MNT_FORCE or MNT_DETACH flags.
-
- * scripts/amd.conf-sample (forced_unmounts): example usage of new
- option.
-
- * amd/amd.h (CFM_FORCED_UNMOUNTS): new flag for forced_unmounts
- option.
-
- * m4/macros/header_templates.m4: templates for _DETACH and _FORCE.
-
- * configure.in: check for generic u/mount options "detach" and
- "force".
-
- * include/am_utils.h (UMOUNT_FS, umount_fs): new prototypes.
- Define AMU_UMOUNT flags for force, detach, and autofs.
-
- * amd/amfs_toplvl.c (amfs_toplvl_umount): pass _FORCE and _DETACH
- unmount flags unconditionally. Pass them to UMOUNT_FS().
-
- * conf/nfs_prot/nfs_prot_linux.h: define MNT_FORCE and MNT_DETACH
- if needed, because some Linux systems don't define them
- (presumably because it would be too dangerous to expose these
- flags to users).
-
- * amd/autil.c (amfs_mount): if mount(2) failed with ESTALE or EIO,
- then assume that we're in trouble, possibly because a previous
- mount is hung. So, first try to force a lazy unmount of the old
- mount. If the forced unmount worked, then try again to mount the
- desired file system. If the forced unmount failed, then don't
- retry: just return an error.
-
- * amd/amfs_generic.c (amfs_generic_umount), amd/amfs_host.c
- (amfs_host_umount), amd/ops_cachefs.c (cachefs_umount),
- amd/ops_cdfs.c (cdfs_umount), amd/ops_efs.c (efs_umount),
- amd/ops_lofs.c (lofs_umount), amd/ops_nfs.c (nfs_umount),
- amd/ops_pcfs.c (pcfs_umount), amd/ops_ufs.c (ufs_umount),
- amd/ops_xfs.c (xfs_umount), conf/umount/umount_bsd44.c
- (umount_fs), conf/umount/umount_default.c (umount_fs),
- conf/umount/umount_linux.c (umount_fs), conf/umount/umount_osf.c
- (umount_fs): compute and use unmount specific flags.
-
-2005-07-16 Erez Zadok <ezk@cs.sunysb.edu>
-
- * configure.in: better help for users, if nfs_args can't be found.
-
-2005-07-15 Erez Zadok <ezk@cs.sunysb.edu>
-
- * BUGS: more details on AIX's need to install bos.net.nfs.adt
- before configuring am-utils (else configure cannot find struct
- nfs_args on AIX).
-
-2005-07-10 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/srvr_nfs.c (find_nfs_srvr): flush NFS handle cache if the IP
- address of a down server had changed.
-
- * amd/info_union.c (union_reload): use safer xsnprintf() routine.
-
- * amd/srvr_nfs.c (find_nfs_srvr): check to see if the IP address
- of a named but down fserver changed (i.e., the previous IP address
- is no longer responding). If so, then reset the fserver to the
- new IP address, and set the fserver's flags such that the function
- will fall through to doing the usual NFS version/proto checks and
- pinging. (This should fix one case of bug #308.)
-
- * conf/umount/umount_linux.c (umount_fs): warn if plain umount()
- failed, before we try to ignore any errors or try optional
- umount2(), possibly with forced/lazy unmount.
- (umount_fs): dlog when unmount succeeded.
-
-2005-07-08 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/mount/mount_linux.c: add a couple more NFSv2 error codes
- that are compatible with NFSv3.
-
-2005-07-07 Erez Zadok <ezk@cs.sunysb.edu>
-
- * m4/macros/header_templates.m4: extern template for strlcat().
-
- * amd/get_args.c (get_version_string): use safer strlcat (or
- replacement strlcat). Use new wrapper xsnprintf() function, which
- will use the safer vsnprintf() if available, else default to plain
- sprintf.
-
- * configure.in: check for existence of strlcat() and its extern,
- replacing with libamu/strlcat.c as needed.
-
- * libamu/Makefile.am (EXTRA_DIST): add strlcat.c to distro.
-
- * include/am_defs.h: optional strlcat() extern.
-
- * include/am_utils.h: extern for new xvsnprintf().
-
- * configure.in: overdue new major libtool shlib version.
- Check for snprintf function and extern.
-
-2005-07-06 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/nfs_prot/nfs_prot_aix4_3.h: cleanup struct
- aix4_nfs_args_bis.
-
- * Makefile.am (EXTRA_DIST_CONF): include mount_aix3.c in
- distribution.
-
- * conf/mount/mount_aix.c: mount style for aix 5.x and newer.
-
- * conf/mount/mount_aix3.c: mount styles for aix 3.x/4.x.
-
- * m4/macros/check_mount_style.m4: split mount styles for
- aix3.x/4.x and the newer (and better) aix 5.x code.
-
-2005-07-05 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amq/pawd.c (getawd): avoid buffer overflow. Bug fix from Graeme
- Wilford <G.Wilford@surrey.ac.uk>.
-
-2005-06-30 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/map.c (get_next_exported_ap): Avoid running off the end of
- the exported_ap[] array. Patch from jon+amd-at-spock.org. Fixed
- bug #301.
-
-2005-06-25 Erez Zadok <ezk@cs.sunysb.edu>
-
- * Makefile.am (EXTRA_DIST_CONF): distribute new mtab_linux.c.
-
- * conf/mtab/mtab_linux.c (rewrite_mtab): variable declarations
- must come before C code.
-
- * conf/mtab/mtab_linux.c: Linux-specific mount table hanlding
- that's safe (uses locks, handles symlinks to /proc/mounts, etc.).
- Patch from Red Hat, which they adapted from mtab_file.c. Minor
- fixes to this file.
-
- * m4/macros/check_mnttab_style.m4: Use Linux-specific mount table
- handling.
-
-2005-06-24 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/mount/mount_aix.c (mount_aix3): minor cleanup of filehandle
- copying code.
-
-2005-06-23 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/nfs_prot/nfs_prot_hpux.h: add extern for h_errno, which may
- be missing from older hpux10 systems.
-
- * configure.in: update bug-reporting address to list
- https://bugzilla.am-utils.org/ as well as the mailing list.
-
- * Makefile.am (EXTRA_DIST_M4): distribute new type_rpcvers_t.m4
- macro.
-
- * conf/transp/transp_tli.c (get_nfs_version): always use
- rpcvers_t, now that it'll be automatically discovered.
-
- * configure.in: check for rpcvers_t type.
-
- * m4/macros/type_rpcvers_t.m4: new macro to check for type of
- rpcvers_t (Some Solaris versions need it).
-
- * conf/nfs_prot/nfs_prot_sunos5_8.h: don't define INADDR_NONE
- here, but in the actual source files that may need it.
-
- * libamu/wire.c (INADDR_NONE): define INADDR_NONE if not defined
- already.
-
- * include/am_defs.h: define extern for sleep(3) if needed.
-
- * m4/macros/header_templates.m4: template for sleep(3) extern.
-
- * configure.in: check for extern for sleep(3), which is missing
- from some old (and buggy) versions of gcc's fixinc'ed headers.
-
- * conf/nfs_prot/nfs_prot_aix4_3.h: update definition of struct
- nfs_args from actual system headers.
-
- * conf/mount/mount_aix.c (mount_aix3): fix name of aix4 "bis"
- structure.
-
-2005-06-22 Erez Zadok <ezk@cs.sunysb.edu>
-
- * BUGS: update Solaris information about use of f/lex and
- yacc/bison.
-
-2005-06-20 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-pc-linux-suse9.3.
-
-2005-06-20 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * configure.in (linux/nfs_mount.h): Move __KERNEL__ definition up
- so u32 is available for <linux/sunrpc/msg_prot.h>.
-
-2005-06-16 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/mapc.c (maptypes): move MAP_EXEC after MAP_FILE, because
- exec maps will always match when users use amd with command line
- args (not amd.conf). Using that legacy way, unfortunately, means
- that Amd will use it's hard-coded info-service search path, which
- doesn't work for everyone. It's much better to use amd.conf and
- specify what you want exactly.
-
-2005-06-15 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-pc-linux-fc4 (gcc4 catches more bugs).
-
- * m4/macros/type_recvfrom_fromlen.m4: linux systems use unsigned
- int as the type of recvfrom()'s 6th argument.
-
- * m4/macros/type_yp_order_outorder.m4: linux systems use unsigned
- int as the type of yp_order()'s 3rd argument.
-
-2005-06-15 Erez Zadok <ezk@cs.sunysb.edu>
-
- * scripts/amd.conf-sample (map_type): typo, said mount_type
- instead of map_type for the 'exec' example.
-
-2005-06-11 Erez Zadok <ezk@cs.sunysb.edu>
-
- *******************************************************************
- *** Released am-utils-6.1 ***
- *******************************************************************
-
-2005-06-04 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/ops_nfs.c (mount_nfs_fh): set timeo/retrans mount options
- only if the user specified them in amd.conf or elsewhere. If they
- were not specified, don't do anything, which would let the OS use
- its own defaults.
-
- * amd/get_args.c (get_args): negative timeo/retrans are "good" in
- that they represent uninitialized values (meaning to let the OS
- use it's default values). So only check if user specified a value
- equal to zero (invalid).
-
- * amd/amd.h: define AMU_TYPE_NONE so we know when users didn't
- specify timeo/retrans at all.
-
-2005-06-03 Erez Zadok <ezk@cs.sunysb.edu>
-
- *******************************************************************
- *** Released am-utils-6.1-rc7 ***
- *******************************************************************
-
- * m4/macros/os_cflags.m4 (CFLAGS): use custom-OS C flags for
- configuring, not just for building. That way the two phases
- (configure and compile) are in sync. This fixes getwire() on
- OSF/1 systems.
-
- * conf/nfs_prot/nfs_prot_sunos5_8.h: define INADDR_NONE if not
- defined in system headers.
-
-2005-06-01 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/Makefile.am (EXTRA_DIST): remove alloca.c as it's no
- longer needed.
-
-2005-05-28 Erez Zadok <ezk@cs.sunysb.edu>
-
- * completed set of fixes for irix6.5.
-
- * Minor new ports alpha-unknown-linux-gentoo1.4.16
- alphaev56-dec-osf4.0f, mips-unknown-linux-gentoo1.4.16, and
- sparc64-unknown-linux-gentoo1.4.16, and mips-sgi-irix6.5. Test
- those systems with both cc and gcc, where possible.
-
- * include/am_xdr_func.h: remove trailing comma at end of enum
- list.
-
- * m4/macros/os_cflags.m4: with gcc 3.4.3 on irix-6.5, we get pte_t
- undefined. So give it a dummy value.
-
- * libamu/alloca.c: remove file from distro.
-
- * configure.in: don't call AC_FUNC_ALLOCA any more.
-
- * include/am_defs.h: remove header fixups for <alloca.h>, now that
- we don't need it.
-
- * amd/amq_svc.c (amqsvc_is_client_allowed): rewrite function to
- avoid only use of alloca() in am-utils, and to use strdup
- explicitly. This way we can avoid using alloca, a feature that's
- not portable on various systems.
-
- * amq/amq.c: remove unused lint/rcsid cruft.
-
-2005-05-27 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/checkmount/checkmount_osf.c (fixmount_check_mount): add
- extra parentheses around assignments in "if" expressions (gcc
- complains).
-
- * conf/nfs_prot/nfs_prot_osf4.h: add missing extern definitions
- for plock, hstrerror, getmntinfo, alloca, xdr_exportnode, and
- xdr_groups.
-
- * configure.in: check for <linux/socket.h>, which, if found,
- appears to be preferable to <sys/socket.h>. Use it to find
- <linux/nfs_mount.h>. On some Linux systems
- (Gentoo), both exist but only one must be included, or else you
- get redefined structure errors.
-
- * libamu/wire.c (is_network_member): check if masknum is
- INADDR_NONE, not "< 0" because it's an unsigned quantity.
-
- * libamu/util.c (xstrlcpy): remove useless test for size_t < 0,
- because it's an unsigned quantity.
-
-2005-05-26 Erez Zadok <ezk@cs.sunysb.edu>
-
- *******************************************************************
- *** Released am-utils-6.1-rc6 ***
- *******************************************************************
-
-2005-05-25 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/nfs_prot/nfs_prot_aix5_2.h: AIX 5.3 complains about
- missing definition of struct thread_credentials in <sys/vfs.h>
- but trying to bring that definition in drags a whole lot of other
- messy stuff. So just provide a dummy definition for this
- structure.
-
-2005-05-24 Erez Zadok <ezk@cs.sunysb.edu>
-
- * Makefile.am (EXTRA_DIST_M4): distribute m4/macros/libtool.m4.
-
- * m4/macros/header_templates.m4: template for HAVE_EXTERN_MNTCTL.
-
- * m4/macros/check_extern.m4: include <sys/vmount.h> on AIX
- systems, so we can find extern definition for mntctl().
-
- * conf/mtab/mtab_aix.c, conf/checkmount/checkmount_aix.c: only
- define an extern for mntctl() if needed.
-
- * amd/ops_nfs.c (prime_nfs_fhandle_cache): never, ever, use C++
- style comments in C code. Some C compilers don't accept it.
-
- * amd/info_ldap.c (amu_ldap_init, get_ldap_timestamp): force cast
- of "time_t *ts" to u_long, to avoid complaints on AIX 5.2 with
- xlC.
-
- * amd/get_args.c: rename symbol conf_file to amu_conf_file to
- avoid conflict with libldap.a from openldap-2.0.21 on AIX 5.2.
- Oh, when will people who develop libraries learn to always prefix
- their exported symbols with a library-specific name?
-
- * configure.in: check for mntctl() extern on AIX systems.
-
- * ltmain.sh: update from latest libtool-1.5.18, so we can properly
- build on AIX 5.2/5.3 with cc and with gcc.
-
- * m4/macros/libtool.m4: update from latest libtool-1.5.18. This
- time, and from now on, we must include libtool.m4 from the libtool
- distribution itself. That way we ensure that we use an ltmain.sh
- that matches the appropriate libtool M4 macros. This makes
- am-utils no longer dependent on having libtool installed on a
- given system on which you run bootstrap.
-
-2005-05-23 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-pc-linux-deb3.0.
-
-2005-05-22 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new ports: i386-unknown-netbsdelf2.0.2 and
- i386-unknown-openbsd3.7.
-
-2005-05-20 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new ports: i386-pc-linux-gentoo1.4.16 and
- powerpc-unknown-linux-yellowdog2.3.
-
- * include/{mount_headers2.h, am_defs.h}: safer setup before
- inclusion of <linux/nfs_mount.h>, which is broken on several
- systems.
-
- * configure.in: test for <linux/nfs2.h>. Separate special test
- for <linux/nfs_mount.h> because we need to define __KERNEL__ for
- that test, as well as optionally define struct nfs2_fh for some
- systems (gentoo with 2.4 kernel, yellowdog 2.3, and others).
-
- * config.guess.long: support Gentoo and Yellow Dog Linux distros.
-
-2005-05-18 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new ports: i386-pc-linux-suse9.2 and
- i386-unknown-freebsd5.4.
-
- * amd/nfs_subr.c: use NFS_FHSIZE, not FHSIZE.
-
-2005-05-17 Erez Zadok <ezk@cs.sunysb.edu>
-
- *******************************************************************
- *** Released am-utils-6.1-rc5 ***
- *******************************************************************
-
- * amd/info_ldap.c (amu_ldap_init): change plog to dlog, to avoid
- sending annoying warning for a minor issue.
-
-2005-05-17 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/nfs_subr.c: check for NULL pointer before dereferencing it.
-
-2005-05-16 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new ports: powerpc-apple-darwin7.9.0.
-
- * m4/macros/host_macros.m4: if a NetBSD system, remove 'elf' part
- from OS name because it's no longer relevant. Also, don't include
- the major OS version number in the OS name because that's also
- unnecessary (and users can always use $osver in maps).
-
- * amd/nfs_subr.c: use [1] for out-of-band pointer at the end of
- struct am_fh, because it's the most portable method. Bug fix
- suggestion from Dan Riley <dsr at mail.lns.cornell.edu>. Better
- fix from Ion Badulescu: use [FHSIZE-sizeof(u_int)] which is the
- actual size we use.
-
- * amd/amfs_generic.c (amfs_lookup_mntfs): reset currently used
- def_opts to options given in -opts, appended with the /default
- options. Bug fix suggestion from Dan Riley <dsr at
- mail.lns.cornell.edu>.
-
-2005-05-13 Erez Zadok <ezk@cs.sunysb.edu>
-
- *******************************************************************
- *** Released am-utils-6.1-rc4 ***
- *******************************************************************
-
-2005-05-11 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/amd.c (main) : fixed memory leak detected by valgrind
-
- * amd/info_ldap.c (amu_ldap_init) : fixed memory leak detected by
- valgrind
-
-2005-05-11 Erez Zadok <ezk@cs.sunysb.edu>
-
- * m4/macros/{check_checkmount_style.m4, check_mnttab_style.m4,
- check_nfs_fh_dref.m4, check_nfs_prot_headers.m4,
- check_nfs_sa_dref.m4, check_umount_style.m4, os_cflags.m4}: check
- for "macosx" as valid OS string, so we compile properly on Darwin
- systems.
-
- *******************************************************************
- *** Released am-utils-6.1-rc3 ***
- *******************************************************************
-
- * rerun bootstrap to get a working configure script that actually
- checks for limits.h and dependent linux autofs/nfs headers.
-
- * configure.in: remove redundant check for limits.h.
-
-2005-05-09 Erez Zadok <ezk@cs.sunysb.edu>
-
- *******************************************************************
- *** Released am-utils-6.1-rc2 ***
- *******************************************************************
-
-2005-05-08 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/amfs_generic.c (amfs_lookup_mntfs): removed redundant use of
- old_def_opts variable.
-
-2005-05-08 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/amfs_generic.c (amfs_lookup_mntfs) : Make sure when a map
- entry has a single dash '-', that the default options are reset.
- This functionality was somehow lost from earlier releases and
- reported by Dan Riley <dsr@mail.lns.cornell.edu>.
-
-2005-05-05 Erez Zadok <ezk@cs.sunysb.edu>
-
- * config.guess.long: detect SuSE Enterprise Server and call it
- "sles" not "suse".
-
-2005-05-02 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi (amd): document proper use of
- /etc/hosts.allow. Don't spawn a new Amd process because Amd will
- get confused if someone else waitpid's on its children (which
- often do important un/mount work). Issue reported by Francis
- Montagnac <Francis.Montagnac at sophia.inria.fr>.
-
- * minor new ports: powerpc64-unknown-linux-rhel4, and
- powerpc64-unknown-linux-sles9.
-
-2005-05-01 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/amfs_host.c (amfs_host_umount): We do not want to pass
- ENOENT as an error because if the directory does not exists our
- work is done anyway.
-
- * conf/umount/umount_linux.c (umount_fs): If we are successful or
- there was an ENOENT, remove the mount entry from the mtab file.
-
-2005-05-01 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/nfs_subr.c: am_fh definition moved here from amd.h;
- restructured to better reflect its duality (old/new filehandles)
- (fh_to_mp3): fhh_gen is always used, even for new style f/h
- (mp_to_fh): ditto
-
- * amd/amd.h: moved am_fh definition to nfs_subr.c (which is the
- only place where it's used)
-
-2005-04-30 Erez Zadok <ezk@cs.sunysb.edu>
-
- * m4/macros/host_macros.m4: use sw_vers on Apple machines to find
- out more appropriate OS name (macosx) and OS version (10.3.x) than
- uname(3) reports.
-
-2005-04-29 Erez Zadok <ezk@cs.sunysb.edu>
-
- * config.guess, config.sub, doc/texinfo.tex: updates from latest
- official GNU distributions.
-
- * m4/macros/host_macros.m4: for macosx, change architecture value
- from "Power Macintosh" to "powerpc".
-
- * libamu/util.c (xstrlcpy): format 'len' parameter as u_long, not
- int (it's a size_t).
-
-2005-04-16 Erez Zadok <ezk@cs.sunysb.edu>
-
- * scripts/amd.conf.5, doc/am-utils.texi (normalize_slashes
- Parameter), scripts/amd.conf-sample: document new
- normalize_slashes global configuration parameter.
-
- * amd/opts.c (deslashify, normalize_slash): don't touch trailing
- slashes, even if multiples of them, if user said
- normalize_slashes=no in amd.conf.
-
- * amd/conf.c (gopt_normalize_slashes): new function to record if
- to normalize slashes or not.
-
- * amd/amd.h (CFM_NORMALIZE_SLASHES): new flag to decide if to
- normalize double-slashes or not ("yes" by default).
-
- * amd/autil.c (am_mounted): pass TRUE when calling mf_mounted.
- This is the parent mntfs which does the mf->mf_fo
- (am_opts type), and we're passing TRUE here to tell mf_mounted to
- actually free the am_opts.
-
- * amd/autil.c (mf_mounted): Be careful when calling free_ops and
- XFREE here. Some pseudo file systems like nfsx call this
- function, even though it would be called by the lower-level amd
- file system functions. nfsx needs to call this function because
- of the other actions it takes. So we pass a boolean from the
- caller (yes, not so clean workaround) to determine if we should
- free or not. If we're not freeing (often because we're called
- from a callback function), then just to be sure, we'll zero out
- the am_opts structure and set the pointer to NULL. The parent
- mntfs node owns this memory and is going to free it with a call to
- mf_mounted(mntfs,TRUE).
-
- * amd/amd.h: pass flag to mf_mounted, to free or not to free the
- am_opts.
-
- * amd/amfs_nfsx.c (amfs_nfsx_cont): call mf_mounted with FALSE to
- tell it not to free the am_opts, to avoid double free.
-
- * include/am_defs.h: include limits.h if found.
-
- * configure.in: check for limits.h. Check for certain Linux
- headers such as auto_fs.h after checking for limits.h, and include
- the latter if it exists, because some Linux headers depend on
- limits.h. This prevents warnings during configure time.
-
-2005-04-12 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/amfs_toplvl.c (amfs_toplvl_mount): do NOT set retrans/timeo
- values from default global UDP settings, because it can cause
- unexpected timeouts in Amd on slow systems. The default that each
- OS provides for these toplvl NFS mounts should be OK, or else you
- can use the map_options entry.
-
-2005-04-09 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/nfs_subr.c (mp_to_fh): Replace xstrlcpy with memcpy because the
- source buffer is treated more as a filehandle than a string.
-
- * amd/nfs_subr.c (fh_to_mp3): Replace xstrlcpy with memcpy because the
- source buffer is treated more as a filehandle than a string.
-
- * amd/opts.c (free_op): No longer need to assign pointer to NULL
- after XFREE.
-
- * amd/opts.c (expand_op): Revert back to using strncpy() instead
- of xstrlcpy. The code is correct and relies on the semantics of
- strncpy.
-
- * libamu/mount_fs.c (compute_nfs_args): Leave XXX warning that use
- of xstrlcpy in NFS_HN_DREF may corrupt a struct nfs_args, or
- truncate our concocted "hostname:/path" string prematurely if the
- nap->hostname field is ever less than 64 bytes long
- (MAXHOSTNAMELEN).
-
- * libamu/util.c (xstrlcpy): Return immediately if len is 0 to
- avoid unnecessary work. Log an error and return if len is less
- than 0.
-
-2005-04-07 Erez Zadok <ezk@cs.sunysb.edu>
-
- * include/am_utils.h (XFREE): XFREE() should nullify the pointer
- even when compiling without debugging. It's safer this way.
-
- * libamu/xutil.c (am_set_hostname),
- hlfsd/stubs.c (nfsproc_lookup_2_svc),
- fsinfo/fsinfo.c (fsi_get_args),
- fixmount/fixmount.c (is_same_host, remove_mount, main),
- conf/mtab/mtab_isc3.c (mnt_dup, mtab_of),
- conf/mount/mount_svr4.c (mount_svr4),
- conf/mount/mount_linux.c (setup_loop_device),
- conf/hn_dref/hn_dref_linux.h (NFS_HN_DREF),
- conf/hn_dref/hn_dref_isc3.h (NFS_HN_DREF),
- amd/opts.c (expand_op),
- amd/ops_nfs.c (mount_nfs_fh),
- amd/nfs_subr.c (fh_to_mp3, mp_to_fh),
- amd/amfs_host.c (amfs_host_mount),
- amd/am_ops.c (merge_opts):
- use the new xstrlcpy instead of strncpy.
-
- * conf/checkmount/checkmount_{default,svr4}.c
- (fixmount_check_mount): document why NOT to use xstrlcpy.
-
- * libamu/xutil.c: am_hostname need not be MAXHOSTNAMELEN+1 any
- more, just MAXHOSTNAMELEN.
-
- * libamu/xutil.c (real_plog): use strlcpy (not xstrlcpy to avoid
- recursion, since xstrlcpy may use plog).
-
- * libamu/util.c (xstrlcpy): truncating a string is serious. Use
- XLOG_ERROR not XLOG_WARNING.
-
-2005-04-06 Erez Zadok <ezk@cs.sunysb.edu>
-
- * include/am_utils.h: external definition for new xstrlcpy
- function.
-
- * libamu/util.c (xstrlcpy): new function. Similar to strncpy, but
- uses strlcpy to guarantee that the resulting string is null
- terminated, and also warn if the resulting string was truncated.
-
- * libamu/xutil.c (get_server_pid): move this function from util.c
- which is for general-purpose utilities.
-
- * m4/macros/header_templates.m4: template for HAVE_EXTERN_STRLCPY.
-
- * include/am_defs.h: provide extern definition for strlcpy, if
- needed.
-
- * libamu/Makefile.am (EXTRA_DIST): include strlcpy.c in distro.
-
- * configure.in: search for strlcpy and its extern.
-
- * amq/pawd.c (find_mt): It only handles *some* filesystem types,
- so it breaks on direct xfs mounts for example. The fix (from
- Christos Zoulas) is simple: We need to exclude toplvl to avoid
- infinite recursion, but all other fs's are game.
-
-2005-03-31 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/nfs_subr.c (fh_to_mp3): strncpy may not null terminate if
- copying exactly len bytes, so add null just to be safe.
-
-2005-03-30 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/nfs_subr.c (fh_to_mp3): Increased the n of strncpy()
- to make sure it null terminates.
-
-2005-03-29 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * amd/nfs_subr.c (fh_to_mp3): Fix memset bug. In this case
- the memset can be removed because strncpy() should padd the
- buffer with NULLs anyway.
-
-2005-03-21 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * include/am_defs.h: Clarify comment.
-
-2005-03-21 Erez Zadok <ezk@cs.sunysb.edu>
-
- * include/am_defs.h: undefine "GROUP" so Solaris 10 with gcc-2.96
- won't complain about a conflict for this definition between
- <rpcsvc/nis.h> and <sys/acl.h>.
-
-2005-03-20 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/readdir.c (amfs_readdir_browsable): use %p, not %lx.
-
- * libamu/mount_fs.c (print_nfs_args): print pointer with %p, not
- %lx.
-
-2005-03-18 Erez Zadok <ezk@cs.sunysb.edu>
-
- *******************************************************************
- *** Released am-utils-6.1-rc1 ***
- *******************************************************************
-
-2005-03-18 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/transp/transp_tli.c (get_nfs_version): use proper type for
- versout on Solaris (rpcvcers_t).
-
- * amd/mapc.c (mapc_showtypes): if last map type to print, don't
- append newline or comma to it.
-
- * libamu/mount_fs.c (print_nfs_args): cast struct netbuf pointer
- to %lx because on Solaris 10 sparc gcc-3.4.3 complains about
- casting it to an int (size is different).
-
- * configure.in, NEWS: prepare for 6.1-rc1 release.
-
-2005-03-17 Erez Zadok <ezk@cs.sunysb.edu>
-
- * scripts/amd2ldif.in, ldap.schema: fixes by Adam Morley
- <adam-at-gmi-dot-com> to synchronize what amd2ldif does vs. what
- the ldap.schema expects.
-
- * amd/map.c (exported_ap_free): We're using a free-list data
- structure and re-using malloc'ed objects. So, to be safe, memset
- entire structure when it's freed, not just the pointer.
- (umount_exported): bug fix to on-exit code. Don't run
- am_unmounted() unless unmount_mp() didn't run, since the latter
- already calls am_unmounted(). This way we avoid a double-free
- bug.
-
-2005-03-15 Erez Zadok <ezk@cs.sunysb.edu>
-
- * tasks: updates. Executable maps is supported. NFSv4 and
- FreeBSD autofs isn't.
-
- * Makefile.am (EXTRA_DIST): include FAQ in distro.
-
- * doc/Makefile.am (alldocs): install README.lda and README.osx.
-
- * FAQ: new file, better late than never.
-
-2005-03-14 Erez Zadok <ezk@cs.sunysb.edu>
-
- * scripts/amd2ldif.in: patch to add the amdMapName attribute to
- the amdMapTimestamp object when amd2ldif converts it. This is
- necessary if you are using type:=auto mounts and want those
- mountmaps looked up through LDAP. Patch from Jim Zajkowski
- <jim.zajkowski@gmail.com>.
-
-2005-03-12 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new ports: i386-pc-linux-rhel4.
-
- * minor new ports: powerpc-apple-darwin7.8.0.
-
-2005-03-10 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/ops_nfs.c (prime_nfs_fhandle_cache): rearrange code so it's
- cleaner.
-
- * ltmain.sh: upgrade from libtool-1.5.6.
-
- * m4/macros/check_{fs_mntent,mnttab_type,mount_type}.m4: check for
- Linux 2.6 kernel modules, which have a .ko extension, not .o. Now
- we can properly detect which file systems exist on Linux 2.6 based
- systems (SLES9, RHEL4, Fedora, etc.).
-
-2005-03-09 Erez Zadok <ezk@cs.sunysb.edu>
-
- * m4/macros/host_macros.m4: find out what's the OS software
- distribution name, if any.
-
- * m4/macros/header_templates.m4: template for DISTRO_NAME.
-
- * amd/get_args.c (get_version_string): print again full_os, os,
- osver, and vendor (bug fix).
- (get_version_string): print distribution name, if known (e.g.,
- rh9, suse8, etc.).
-
- * amd/mapc.c (mapc_showtypes): wrap around list of supported map.
-
-2005-03-08 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/map.c (umount_exported): when unmounting file systems on
- exit (when amd.conf global unmount_on_exit=yes), use unmount_mp()
- instead of unmount_node() because the latter always unmounts in
- the foreground, whereas the former unmounts in the bg/fg as
- needed. Unmounting always in the foreground has two problems: (1)
- if the unmount hangs, amd hangs, and (2) for type:=program, the
- unmount script is execve'd(!) thus replacing the main amd process,
- which never gets to finish up, leaving the amd mount points hung.
-
- * NEWS: mention new feature of executable maps.
-
- * AUTHORS: Acknowledge Erik Kline.
-
- * scripts/amd.conf.5: document executable maps and
- exec_map_timeout parameter.
-
- * scripts/amd.conf-sample: examples of an executable map and
- exec_map_timeout.
-
- * m4/macros/header_templates.m4: template for HAVE_MAP_EXEC.
-
- * doc/am-utils.texi: document Executable maps and exec_map_timeout
- parameter.
-
- * amd/conf.c (gopt_exec_map_timeout): function to parse
- exec_map_timeout [global] parameter.
-
- * amd/amd.h (AMFS_EXEC_MAP_TIMEOUT): define default executable map
- timeout to 10 seconds, and a global placeholder for the
- configurable value.
-
- * amd/amd.c (init_global_options): initialize default executable
- map timeout.
-
- * amd/Makefile.am (EXTRA_amd_SOURCES): include info_exec.c in
- tarball.
-
- * configure.in: enable executable maps.
-
- * amd/mapc.c: define executable map functions and behavior.
-
- * amd/info_exec.c: executable map implementation from Erik Kline
- <ekline at ekline dot com>, modified, cleaned-up, and fixed.
-
-2005-03-07 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/info_file.c (file_init_or_mtime): consolidate identical
- file_init and file_mtime into one function.
-
-2005-03-05 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi (Program Filesystem): if umount/unmount are
- not specified, Amd uses "umount ${fs}" by default.
-
- * amd/amfs_program.c (amfs_program_match): if neither unmount nor
- umount parameters are specified, use the default userland umount
- program with "umount ${fs}". This way type:=program doesn't have
- to specify the umount program for basic unmounting actions.
- (amfs_program_init): save unmount program string in mf_private
- only if it's NULL, not based on mf_refc.
-
- * configure.in: auto-detect name of userland unmount program.
-
- * aux_conf.h.in (UNMOUNT_PROGRAM): macro for default userland
- unmount program.
-
- * amd/ops_cachefs.c (cachefs_init): save unmount program string in
- mf_private only if it's NULL, not based on mf_refc.
-
- * configure.in: don't "discover" inheritance file system any more,
- since we don't have the .c file for it.
-
- * amd/get_args.c (get_version_string): hack to still show that we
- support the inherit file system in output of amd -v.
-
-2005-03-05 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/amfs_inherit.c: removed, dead code
-
- * amd/Makefile.am,
- amd/am_ops.c,
- amd/amd.h,
- conf/autofs/autofs_linux.h,
- conf/autofs/autofs_solaris_v1.h,
- conf/autofs/autofs_solaris_v2_v3.h,
- m4/macros/header_templates.m4: removed references to amfs_inherit.c
-
-2005-03-05 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/autil.c (am_mounted): completely rewrite the unmount
- no/timeout code to (1) make more sense for odd conditions, and (2)
- allow utimeout=N mount options to override FS_NOTIMEOUT default
- flags for disk-based file systems such as ufs, pcfs, cdfs, etc.
-
- * libamu/mount_fs.c (mount_fs): use safer XFREE() not free().
-
- * conf/umount/umount_linux.c (umount_fs): strtok is destructive,
- so use strdup'ed string.
-
- * conf/mount/mount_linux.c (parse_opts): strtok is destructive, so
- use strdup'ed string.
-
-2005-03-04 Erez Zadok <ezk@cs.sunysb.edu>
-
- * scripts/amd.conf.5, doc/am-utils.texi (cache_duration
- Parameter): clarify actual behavior: this Parameter affects
- initial mount timeout as well as the linear backoff what happens
- the initial failed EBUSY unmount.
-
- * doc/am-utils.texi (opts Option): better explanation of
- utimeout=N mount pseudo-option.
-
- * amd/amd.h (AM_TTL, AM_TTL_W): better comments, minor cleanup.
-
-2005-03-02 Daniel P. Ottavio <dottavio@ic.sunysb.edu>
-
- * AUTHORS: add Dan Ottavio.
-
- * scripts/amd.conf.5: document new debug_mtab_file option.
-
- * scripts/amd.conf-sample (debug_mtab_file): show example.
-
- * doc/am-utils.texi (debug_mtab_file Parameter): document new
- option.
-
- * conf/mtab/mtab_{file,mach3}.c (open_locked_mtab): if mtab file
- doesn't exist by the time Amd tries to exist, return a 0 rather
- than hang indefinitely.
-
- * amd/conf.c (gopt_debug_mtab_file): new function to parse
- debug_mtab_file option.
-
- * amd/amd.h: placeholder for debug_mtab_file string.
- Define default debug_mtab_file to "/tmp/mtab".
-
- * NEWS: document new debug_mtab_file option.
-
-2005-03-02 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/transp/transp_{sockets,tli}.c (amu_get_myaddress): when
- users want Amd's NFS service to bind to some arbitrary "localhost"
- address, show which address was actually resolved and bound to.
-
-2005-03-01 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/srvr_nfs.c (start_nfs_pings): move code from elsewhere
- (update_nfs_pingval) that initializes the pinger, as well as turns
- it on/off as needed, and handles changing its value. This is to
- avoid races and other infinite-loop conditions that could result
- in ping storms.
-
- * amd/srvr_amfs_auto.c (amfs_generic_find_srvr): when creating a
- new file server structure, default the ping value to AM_PINGER
- (30sec) and set the FSF_PING_UNINIT flag.
-
- * amd/amd.h (FSF_PING_UNINIT): new flag to tell whether the NFS
- pinger had been initialized for a given file server.
-
- * scripts/ctl-amd.in (stop): no need to check if
- /var/lock/subsys/amd file exists if you do an rm -f afterward.
- Ensure that proper return value is returned from script.
-
- * NEWS, doc/am-utils.texi (opts Option): update meaning of ping=N
- so that if N=-1, pings are off; if N=0, pings are set to the
- default value (currently 30 seconds).
-
-2005-02-28 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/nfs_prot_svc.c (nfs_program_2): on TLI system, try to call
- __rpc_get_local_uid to verify if the RPC call through the
- local host interface came from UID 0.
-
- * configure.in: look for internal libnsl function
- __rpc_get_local_uid (seems to be available on all known TLI
- systems, Solaris and HP-UX 11).
-
- * conf/transp/transp_tli.c (amu_svc_getcaller): unnecessary
- function for TLI systems (and it violated a array's bounds,
- discovered with libumem.so).
- (bind_resv_port, bind_resv_port_only_udp, get_autofs_address):
- just to be on the safe side, set struct t_bind's qlen field to non
- zero (64 by default). This value cannot be zero for TCP
- connections, and it's unclear if it's good to have it zero for UDP
- connections, so setting it to 64 is safer.
-
-2005-02-27 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi (opts Option, Keep-alives): update text on
- ping option.
-
- * amd/srvr_nfs.c (update_nfs_pingval): new function to update NFS
- server ping values, turn them off, or re-enable them.
- (find_nfs_srvr): call update_nfs_pingval() as needed.
-
- * hlfsd/hlfsd.c (reaper, cleanup): don't use exit(3) in a signal
- handler, but use _exit(2) instead.
-
- * amd/amd.c (parent_exit): This signal handler is called during
- Amd initialization. The parent forks a child to do all the hard
- automounting work, and waits for a SIGQUIT signal from the child.
- When the parent gets the signal it's supposed to call this handler
- and exit(3), thus completing the daemonizing process. Alas, on
- some systems, especially Linux 2.4/2.6 with Glibc, exit(3) doesn't
- always terminate the parent process. Worse, the parent process
- now refuses to accept any more SIGQUIT signals -- they are
- blocked. What's really annoying is that this doesn't happen all
- the time, suggesting a race condition somewhere.
- (This happens even if I change the logic to use another signal.)
- I traced this to something which exit(3) does in addition to
- exiting the process, probably some atexit() stuff or other
- side-effects related to signal handling. Either way, since at
- this stage the parent process just needs to terminate, I'm simply
- calling _exit(2). Note also that the OpenGroup doesn't list
- exit(3) as a recommended "Base Interface" but they do list
- _exit(2) as one. This fix seems to work reliably all the time.
-
- * scripts/wait4amd2die.in: change default to recognize that amd is
- down more quickly (check every 3 seconds instead of 5).
-
-2005-02-26 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/xutil.c (amu_release_controlling_tty): warn if closing
- stdin/stdout/stderr failed. No need for tempfd.
-
- * scripts/ctl-{amd,hlfsd}.in: before running any real program in
- these shell scripts, chdir to "/" to avoid possible hangs with
- existing NFS mounts. This was causing ctl-amd's forked
- grand-child amd process to hang if restartable_mounts=no. Go
- figure.
-
-2005-02-25 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port ia64-unknown-linux-rhel4
-
- * fsinfo/fsi_util.c (set_ether_if): avoid u_long casting to -1
- (RHEL4 gcc 3.4.3 ia64 compiler complains).
-
-2005-02-24 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port i386-unknown-freebsd6.0 (6.0-CURRENT-SNAP001).
-
-2005-02-23 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-pc-linux-rhel3.
-
- * INSTALL: major update of the compatibility list.
-
- * m4/macros/os_cflags.m4: set AMU_CFLAGS not AM_CFLAGS.
-
-2005-02-22 Erez Zadok <ezk@cs.sunysb.edu>
-
- * scripts/amd.conf.5, doc/am-utils.texi (preferred_amq_port):
- document new preferred_amq_port [global] option.
-
- * scripts/amd.conf-sample (preferred_amq_port): example.
-
- * include/am_utils.h: add preferred_amq_port to prototype.
-
- * conf/transp/transp_tli.c (bind_preferred_amq_port): new function
- to bind the Amq RPC service for UDP and TCP to a preferred port
- (or to any port if preferred_amq_port==0).
- (create_amq_service): decide if to bind to RPC_ANYFD, or to a
- requested port.
-
- * conf/transp/transp_sockets.c (create_amq_service): if
- preferred_amq_port is greater than 0, then bind to that port for
- both UDP and TCP. If preferred_amq_port==0, then bind to any
- port.
-
- * amd/nfs_start.c (mount_automounter): pass global
- preferred_amq_port value to create_amq_service().
-
- * amd/conf.c (gopt_preferred_amq_port): new function to parse
- amd.conf value for preferred_amq_port.
-
- * amd/amd.h: placeholder for preferred_amq_port.
-
-2005-02-21 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/transp/transp_tli.c (bind_resv_port_only_udp): rename old
- bindnfs_port to a more proper name. This function binds the NFS
- service to a specified port, and only for UDP.
-
- * conf/transp/transp_tli.c: cleanup some code, rename some
- functions, in preparation for RPC amq port specification code.
-
-2005-02-19 Erez Zadok <ezk@cs.sunysb.edu>
-
- * */Makefile.am: don't redefine CFLAGS or LDFLAGS; they are
- reserved for users to pass them on the command line. Instead, use
- autoconf's internal AM_CFLAGS and AM_LDFLAGS.
-
- * depcomp, install-sh, missing, mkinstalldirs: update from latest
- versions of Automake 1.9.2.
-
- * m4/macros/*.m4: properly quote AC_DEFUN'ed macro name, and fix
- regexp/patsubst M4 commands. Newer versions of autoconf (e.g.,
- v2.59) complain about those.
-
-2005-02-17 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/opts.c (f_xhost): if we don't have hstrerror, just print the
- value of h_errno.
-
- * configure.in: include -lresolv if it defines the hstrerror()
- function and not already available in existing libraries.
-
- * minor new port: powerpc-apple-darwin7.7.0.
-
- * amd/nfs_subr.c (mp_to_fh): pathlen should be u_int because it is
- later compared against an unsigned quantity (complaint from gcc
- 3.3 on SuSE 8.2)
-
- * include/am_utils.h: remove unnecessary (and conflicting) extern
- for bind_resv_port2(), which is declared as static in
- transp_tli.c.
-
- * doc/am-utils.texi, scripts/amd.conf.5, scripts/amd.conf-sample,
- NEWS: document four new amd.conf options: nfs_retry_interval_udp,
- nfs_retransmit_counter_udp nfs_retry_interval_tcp, and
- nfs_retransmit_counter_tcp.
-
- * amd/ops_nfs.c (mount_nfs_fh): set timeo/retrans values based on
- wether nfs_proto was "udp" or "tcp".
-
- * amd/amfs_toplvl.c (amfs_toplvl_mount): set retrans/timeo values
- from default UDP settings (because toplvl mounts are UDP for now).
-
- * amd/get_args.c (get_args): use parameters to -t option to set
- both UDP and TCP timeo/retrans values.
-
- * amd/conf.c: (gopt_nfs_retransmit_counter_udp,
- (gopt_nfs_retransmit_counter_tcp, gopt_nfs_retry_interval_udp
- (gopt_nfs_retry_interval_tcp): new functions to parse UDP and TCP
- retrans/timeo parameters separately.
- (gopt_nfs_retry_interval, gopt_nfs_retransmit_counter): if
- specified, use it to set defaults for both UDP and TCP.
-
- * amd/amd.c (init_global_options): initialize default values of
- both UDP and TCP retrans/timeo values to -1.
-
- * amd/amd.h (AMU_TYPE_{TCP,UDP,MAX}): define separate retrans and
- timeo values, one for udp mounts and another for tcp mounts.
-
-2005-02-16 Erez Zadok <ezk@cs.sunysb.edu>
-
- * README.osx: new file with some instructions for Mac OS-X users,
- courtesy Kevin Layer.
-
- * amd/get_args.c (get_args): move call to switch_to_logfile()
- after processing -v, so we don't print "no logfile defined; using
- stderr" when we're about to print version info and exit anyway.
-
- * minor new port: powerpc-ibm-aix5.3.0.0.
-
- * hlfsd/hlfsd.c (main): rewrite code to avoid negative array
- references.
-
- * conf/checkmount/checkmount_aix.c: remove extern definition for
- mntctl(), since AIX 5.3 has it in <sys/vmount.h>.
-
- * amd/info_union.c (union_reload): rewrite code to avoid negative
- array references.
-
- * amd/opts.c (split_opts, expand_op): rewrite code to avoid
- negative array references.
-
- * conf/mtab/mtab_aix.c: remove extern definition for mntctl(),
- since AIX 5.3 has it in <sys/vmount.h>.
-
- * libamu/xutil.c (real_plog): rewrite code to avoid negative array
- references.
-
- * libamu/wire.c (is_network_member): rearrange code slightly to
- avoid negative array references (AIX 5.3 xlC 7.0 compiler
- complains about it).
-
-2005-01-26 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi (xhost Selector Function): document new
- selector function.
-
- * amd/opts.c (f_xhost): new function for use when matching the
- "host" selector for the current host's name. This function will
- now match the primary host name as well as all known aliases
- (CNAMES) that gethostbyname() returns. This function now supports
- a new function selector called xhost(ARG); the old host==ARG
- selector is unharmed.
-
-2005-01-17 Ion Badulescu <ionut@moisil.badula.org>
-
- * NEWS: document the ability to restart old mount points
-
- * amd/map.c (mount_auto_node): force the fileid of the
- root to be 1, so that it won't change between restarts; use the
- root filesystem's own methods instead of hard-coding the use of
- the default methods
-
- * conf/transp/transp_tli.c (create_nfs_service): better cleanup on
- error conditions.
- (bind_resv_port2): allow the caller to request a certain port.
-
- * conf/transp/transp_sockets.c (bind_resv_port): allow the caller
- to request a certain port.
- (create_nfs_service): better cleanup on error conditions.
-
- * amd/restart.c (restart_automounter_nodes): new function, takes
- care of restarting automounter NFS mount points (autofs will come
- later).
- (restart): skip all automounter mount points.
-
- * amd/nfs_subr.c (fh_to_mp3, mp_to_fh): new filehandle
- implementation: if the path to the node is shorter than sizeof(fh)
- chars (currently 32 chars for a NFSv2 fh), simply store it inside
- the fh. For longer paths, keep the old implementation.
-
- * amd/nfs_start.c (mount_automounter): reorder things so that
- restarting the toplvl filesystems occurs before anything else (so
- that we can grab all the ports we need before we accidentally use
- them for something else).
-
- * amd/mntfs.c (locate_mntfs): remove dead code; add special
- handling of restarted toplvl filesystems.
-
- * amd/mapc.c (root_keyiter): fix up a comment.
-
- * amd/map.c (path_to_exported_ap): new function, searches for and
- returns a node by the path to it.
- (get_root_nfs_fh): remove unnecessary fiddling with the root fh.
-
- * config.guess.long: support Red Hat Enterprise Linux
-
-2005-01-17 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/util.c (rmdirs): prevent amd from logging 'Read-only
- filesystem' errors when the mount point has an ancestor (i.e. '/')
- that is mounted read-only. Patch from David Rage <rage@ucl.ac.uk>.
-
-2005-01-17 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/umount/umount_linux.c (umount_fs): Linux doesn't need the
- autofs space hack
-
- * conf/umount/umount_default.c (umount_fs): there is no need for
- HAVE_LOOP_DEV, now that Linux has its own dedicated umount_linux.c
-
-2005-01-17 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi (Automatic Unmounting): document new umount2()
- behavior on Linux.
-
- * conf/umount/umount_linux.c (umount_fs): new file. On Linux, if
- umount(2) failed with EIO or ESTALE, try umount2(2) with
- MNT_FORCE+MNT_DETACH. Based on patch from Christos Zoulas
- <christos@zoulas.com>.
-
- * m4/macros/check_umount_style.m4: pick new linux umount style.
-
- * Makefile.am (EXTRA_DIST_CONF): distribute new umount_linux.c
- file.
-
-2005-01-16 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/nfs_prot/nfs_prot_aix{4_2,4_3,5_1,5_2}.h,
- m4/macros/struct_nfs_args.m4: minor cleanups for quicker execution
- of "nfs_args" test.
-
-2005-01-13 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/get_args.c (show_usage): separate function to print usage
- string.
- (get_args) Call show_usage() from get_args when needed, then exit.
-
- * amd/get_args.c (get_version_string): print also domain, host,
- and hostd.
- (get_args): print version string at the very end, after all other
- values had been initialized. Patch from Christos Zoulas
- <christos@zoulas.com>.
-
- * conf/transp/transp_sockets.c (check_pmap_up, get_nfs_version),
- conf/transp/transp_tli.c (check_pmap_up): correct an inconsistency
- in timeouts in the RPC code between socket and TLI
- implementations. The clntudp_create timeout has a different
- meaning than the clnt_call timeout. Set the timeout of the create
- to 2 seconds which means retry if no answer in two seconds, and
- the timeout call to 6 seconds, which will give us consistently 2
- to 3 pings. This is useful on occasional network UDP loss where a
- single packet loss would wrongfully mark a server down. (The TLI
- code is the one that had the problem occurs.) Patch from Christos
- Zoulas <christos@zoulas.com>.
-
- * libamu/mount_fs.c (compute_nfs_attrcache_flags): make sure code
- compiles even for systems that don't have the nfs_args
- ac{reg,dir}{min,max} fields.
-
- * amd/amfs_toplvl.c (set_auto_attrcache_timeout): just to be safe,
- add "noac" if amd.conf option auto_attrcache was set to 0. This
- should hopefully make the compute_nfs_attrcache_flags patch even
- safer.
-
- * libamu/mount_fs.c (compute_nfs_attrcache_flags): separate
- function to compute attribute-cache values. This function now
- computes attribute-cache flags for BOTH Amd's automount points
- (NFS) as well as any normal NFS mount that Amd performs.
- (compute_nfs_args, compute_automounter_nfs_args): call
- compute_nfs_attrcache_flags to figure out attribute-cache related
- flags. Patch from Christos Zoulas <christos@zoulas.com>.
-
- * scripts/amd.conf-sample: show examples of new global options
- domain_strip and auto_attrcache.
-
- * scripts/amd.conf.5: document new global options domain_strip and
- auto_attrcache. Add warning to auto_attrcache use in case of
- ESTALE.
-
- * doc/am-utils.texi: minor cleanups and document new global
- options domain_strip and auto_attrcache. Add warning to
- auto_attrcache use in case of ESTALE.
-
- * amd/conf.c (gopt_auto_attrcache): parse new global amd.conf
- option auto_attrcache.
- (gopt_domain_strip): parse new global amd.conf option
- domain_strip. Part of a patch from Christos Zoulas
- <christos@zoulas.com>.
-
- * amd/autil.c (host_normalize): don't call domain_strip()
- unconditionally, but depend on the new global amd.conf flag
- domain_strip.
-
- * amd/amfs_toplvl.c (set_auto_attrcache_timeout): new function to
- set attribute cache timeout value given other configured global
- defaults.
- (amfs_toplvl_mount): set automount point attribute cache option
- value to "noac" if attrcache=0, else set it to whatever
- set_auto_attrcache_timeout() returns.
-
- * amd/amd.h (CFM_DOMAIN_STRIP, CFM_DEFAULT_FLAGS): flag to decide
- if to strip the domain from the host name or not, default options
- set to strip the domain.
- Store global value of automount attribute cache timeout value.
-
- * amd/amd.c (init_global_options): add flag to record automount
- point attribute cache value.
-
- * amd/amd.c (do_memory_locking): new function to encapsulate all
- of the memory-locking functionality, which was in main() before.
- Also added a call to madvise(), just in case.
- (main): call do_memory_locking() to pin process memory if amd.conf
- asked for it, but do so after the main Amd process daemonizes,
- because mlock/mlockall is not inherited by fork() by default.
- Slightly restructured patch from Jonathan Chen
- <jon+amd@spock.org>.
-
- * configure.in: check for madvise(2).
-
- * config.guess, config.sub: updates for latest official GNU
- versions.
-
- * m4/GNUmakefile: update paths to "make update"
-
-2005-01-12 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/nfs_prot/nfs_prot_hpux11.h: define an nfs_fh3 structure
- that's compatible for HPUX11 as well as NFSv3.
-
- * include/am_defs.h: On AIX 5.2, both <resolv.h> and
- <arpa/nameser_compat.h> define MAXDNAME, if compiling with gcc
- -D_USE_IRS (so that we get extern definitions for hstrerror() and
- others). So undef MAXDNAME before it gets redefined.
-
- * include/am_defs.h: Solaris 10 (build 72) defines GROUP_OBJ in
- <sys/acl.h>, which is included in many other header files.
- <rpcsvc/nis.h> uses GROUP_OBJ inside enum zotypes. So if you're
- unlucky enough to include both headers, you get a compile error
- because the two symbols conflict. Temp hack: undefine acl.h's
- GROUP_OBJ before including nis.h, because we don't need acl.h for
- am-utils.
-
- * m4/macros/os_cflags.m4: turn -D_USE_IRS for AIX5+ so that
- certain extern definitions of resolver functions become available.
-
- * amd/opts.c (expand_op): use #define for expand_error string
- because some compilers complain about the use of static const
- char[] inside a varargs function.
-
- * minor new port i386-unknown-netbsdelf1.6.2.
-
- * new port i386-unknown-netbsdelf2.0.
-
- * minor port i386-unknown-freebsd5.3.
-
- * libamu/mount_fs.c (compute_nfs_args): don't compare
- nap->maxgrouplist against NULL but against 0 directly, because on
- FreeBSD 4.3, NULL is defined is (void *)0 and gcc 3.4 complains
- about a type mismatch.
-
- * minor port i386-pc-linux-fc3 (Fedora Core 3).
-
-2005-01-11 Erez Zadok <ezk@cs.sunysb.edu>
-
- * hlfsd/hlfsd.c (main): use sigsuspend() over sigpause(), because
- FC3 doesn't have proper extern definition for the defunct
- sigpause().
-
- * configure.in: look for sigsuspend().
-
-2005-01-01 Erez Zadok <ezk@cs.sunysb.edu>
-
- * updated copyright year to 2005 on all files.
-
-2004-11-29 Erez Zadok <ezk@cs.sunysb.edu>
-
- * scripts/amd.conf.5: Small fixes to typos in man page, from
- Thomas Klausner <tk@giga.or.at>.
-
-2004-10-22 Erez Zadok <ezk@cs.sunysb.edu>
-
- * ldap.schema: add this file to distribution.
-
-2004-09-15 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi: fix old URLs.
-
-2004-09-01 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/mtab/mtab_aix.c (read_mtab): avoid a race condition between
- multiple calls to mntctl(). Patch suggested by Michael van Elst
- <M.van.Elst@science-computing.de>.
-
-2004-08-07 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi (Program Filesystem): document how to get
- double slashes in Amd maps.
-
- * amd/opts.c (normalize_slash): support escaped slashes, needed
- for SMB mounts. Use '\\\/\\\/' in a string to get a double slash.
-
-2004-08-06 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/amfs_program.c (amfs_program_match): bug fix. Complain if
- both opt_unmount and opt_umount are missing, not when just one of
- them is missing.
-
-2004-08-03 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amq/pawd.c (find_mt): recognize "linkx" type mounts. Patch from
- Hauke Fath <hauke@Espresso.Rhein-Neckar.DE>. Support "nfsx" while
- we're at it.
-
- * doc/am-utils.texi: mention bugzilla. Fix broken URL HREF's.
-
-2004-08-02 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amq/pawd.c (find_mt): recognize "host" type mounts. Patch from
- Dan Nelson <dnelson@allantgroup.com>.
-
-2004-07-30 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi, NEWS: minor typos fixed.
-
-2004-07-30 Erez Zadok <ezk@play.cs.columbia.edu>
-
- * include/am_xdr_func.h: cannot have field-less structure; put a
- dummy field in.
-
- * conf/autofs/autofs_solaris_v2_v3.c (xdr_autofs_rddirargs): cast
- 2nd arg of xdr_u_int to a u_int*, not int*.
- (autofs_mount_2_req): don't use C++ // comments.
-
-2004-07-30 Erez Zadok <ezk@cs.sunysb.edu>
-
- * m4/macros/{try_compile_anyfs,check_field}.m4: include
- <fs/msdosfs/msdosfsmount.h> if it exists. Part of a set of
- FreeBSD 5 patches from Martin Blapp <mb@imp.ch>.
-
- * include/am_defs.h: include <fs/msdosfs/msdosfsmount.h> if it
- exists.
-
- * amd/ops_pcfs.c (mount_pcfs): set pcfs_args_t.dirmask field to
- 0777 by default.
-
- * configure.in: check for pcfs_args_t.dirmask field. Check for
- existence of <fs/msdosfs/msdosfsmount.h>, new on FreeBSD 5.
-
-2004-07-29 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-pc-linux-fc2 (Fedora Core 2).
-
- * amd/info_ldap.c (amu_ldap_rebind): don't use ldap_enable_cache()
- unless the function exists in libldap and the extern is in
- <ldap.h>. Recently, openldap removed the extern from ldap.h, but
- left the function in libldap, for binary compatibility; however
- ldap_enable_cache and related functions have been deprecated (and
- no longer listed in the header files), and therefore should be
- avoided.
-
- * m4/macros/check_extern_ldap.m4: new macro to check for
- LDAP-specific externs. This is separate from check_extern.m4 so
- as to avoid breaking the general-purpose macro with LDAP-specific
- headers.
-
- * m4/macros/header_templates.m4: extern template for new
- HAVE_EXTERN_LDAP_ENABLE_CACHE.
-
- * configure.in: call new check_extern_ldap.m4 macro.
-
- * Makefile.am (EXTRA_DIST_M4): distribute new check_extern_ldap.m4
- macro.
-
- * config.guess.long: distinguish between redhat and fedora-core
- releases.
-
-2004-07-23 Erez Zadok <ezk@cs.sunysb.edu>
-
- * Minor new port i386-pc-linux-suse8.2: minor new port to SuSE
- 8.2. This systems' latest GCC (gcc version 3.3 20030226
- prerelease) correctly caught a lot of possibly bad comparisons
- between signed and unsigned quantities.
-
- * hlfsd/homedir.c (table_add, plt_search): changed first arg of
- both functions to u_int.
-
- * hlfsd/hlfsd.h, hlfsd/hlfsd.c: change 'cache_interval' to u_int.
- Changed proto for plt_search arg to u_int.
-
- * amq/amq.c (show_mi, main): change 'i' to u_int.
-
- * amq/pawd.c (find_mlp): change 'i' to u_int.
-
- * amd/srvr_nfs.c (find_nfs_srvr): change proto_nfs_version to
- u_int.
-
- * amd/amd.h: change prototype of vreaddir and amfs_error_readdir
- to use u_int count parameter.
-
- * amd/ops_TEMPLATE.c (foofs_readdir), amd/amfs_error.c
- (amfs_error_readdir): change 'count' parameter in proto to u_int.
-
- * amd/amd.h: change proto of amfs_generic_readdir() to use u_int
- count parameter.
-
- * amd/readdir.c (make_entry_chain): preflen should be u_int.
- (amfs_readdir_browsable): change 'count' to u_int.
- (amfs_generic_readdir): change 'count' to u_int.
-
- * amd/amd.h: amu_global_options's portmap_program field should be
- u_long, not int (to match RPC conventions). Change am_fh's
- fhh_gen field to u_int, to match am_gen field in struct am_node.
-
- * amd/conf.c (gopt_portmap_program): use atol() instead of atoi()
- to avoid size differences.
-
- * conf/mount/mount_linux.c (find_unused_loop_device): cast to int
- to avoid comparison between chars and integers.
-
- * libamu/mount_fs.c (get_hex_string): change 'i' to u_int to avoid
- comparisons between signed and unsigned integers.
-
-2004-07-13 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-pc-linux-suse9.1.
-
- * include/am_defs.h: don't use __kernel_dev_t for dev_t on Linux,
- because SuSE wants __kernel_old_dev_t. Instead, just define it
- directly to what they both use: an unsigned short.
-
-2004-05-27 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-unknown-freebsd4.10
-
-2004-04-29 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/amfs_generic.c (amfs_lookup_one_mntfs): fix the creation of
- mountpoints for autofs-based sublinks the right way
-
-2004-04-28 Ion Badulescu <ionut@moisil.badula.org>
-
- Fixes for various memory management problems discovered by
- Rainer's purify run:
-
- * conf/transp/transp_tli.c (check_pmap_up): zero out struct
- timeval before using;
- (get_nfs_version): ditto
-
- * amd/map.c (umount_exported): make sure we don't try to free the
- same am_node multiple times, by setting its corresponding
- exported_ap slot to null
-
- * amd/get_args.c (get_version_string): a static pointer is pretty
- pointless, make it automatic
-
- * amd/conf.c (gopt_debug_options): remove unnecessary strdup();
- (gopt_log_options): ditto
- (gopt_print_version): free version string after using it
-
- * amd/autil.c (mf_mounted): free mntfs->mf_fo instead of leaking
- it
-
- * amd/amfs_generic.c (amfs_lookup_one_mntfs): use the CALLOC macro
- (amfs_lookup_mntfs): free def_opts on return
-
- * amd/amd.c (daemon_mode): zero out struct sigaction before using
- it;
- (main): ditto
-
-2004-04-27 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/amfs_generic.c (amfs_lookup_one_mntfs): force FS_MKMNT on
- the real mount of an autofs-based sublink
-
-2004-04-25 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/map.c (free_map_if_success): avoid dereferencing a pointer
- to potentially freed memory
-
-2004-02-26 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-unknown-freebsd5.2.1.
-
-2004-01-30 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * scripts/ctl-hlfsd.in: don't run hlfsd with -D fork
-
-2004-01-25 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: sparc64-unknown-linux-deb3.0
-
- * config.guess.long: recoognize Debian Linux.
-
-2004-01-22 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/transp/transp_tli.c (amu_get_myaddress): use
- htonl(INADDR_LOOPBACK) and define INADDR_LOOPBACK if not already
- available.
-
-2004-01-21 Erez Zadok <ezk@cs.sunysb.edu>
-
- * wire-test/wire-test.c, hlfsd/hlfsd.c (main): pass NULL as second
- parameter to amu_get_myaddress().
-
- * conf/transp/transp_tli.c (amu_get_myaddress): resolve value of
- localhost_address amd.conf parameter, if defined (else default to
- HOST_SELF_CONNECT).
- Removed htonl() around socket address copying (I think it was
- wrong) since plog("My IP address is...") in amd.c was printing
- addresses wrong on Solaris x86..
-
- * conf/transp/transp_sockets.c (amu_get_myaddress): comment out
- old DEBUG code that warns if 127.0.0.1 isn't the same as what
- get_myaddress() reports. Add code to resolve value of
- localhost_address amd.conf parameter, if defined (else default to
- 127.0.0.1).
-
- * amd/conf.c (gopt_localhost_address): new function to parse
- amd.conf parameter localhost_address.
-
- * amd/amd.h: global field to store amd.conf localhost_address
- parameter.
-
- * amd/amd.c (main): call amu_get_myaddress with global option,
- which could have been set in amd.conf.
-
- * NEWS, doc/am-utils.texi, scripts/amd.conf-sample,
- scripts/amd.conf.5: document new option localhost_address.
-
-2004-01-20 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/conf.c (gopt_nfs_allow_insecure_port): support function for
- the new "nfs_allow_insecure_port" amd.conf directive
-
- * amd/nfs_prot_svc.c (nfs_program_2): complain about the insecure
- port and drop the request only if the "nfs_allow_insecure_port"
- option is not set in amd.conf
-
- * doc/am-utils.texi (Global Parameters): documented the new
- amd.conf directive "nfs_allow_insecure_port"
-
- * scripts/amd.conf.5 (nfs_allow_insecure_port): ditto
-
- * scripts/amd.conf-sample (nfs_allow_insecure_port): added the
- "nfs_allow_insecure_port" directive
-
-2004-01-20 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/am-utils.texi: amd-workers is defunct.
-
-2004-01-19 Erez Zadok <ezk@cs.sunysb.edu>
-
- * cvs-server.txt: updated instructions
-
-2004-01-18 Erez Zadok <ezk@cs.sunysb.edu>
-
- * minor new port: i386-unknown-freebsd5.2.
-
-2004-01-05 Erez Zadok <ezk@cs.sunysb.edu>
-
- * MIRRORS.{txt,html}: verify each mirror site, update to new
- locations (if found), and remove stale mirrors URLs.
-
- * updated copyright year to 2004 on all files.
-
-2004-01-03 Erez Zadok <ezk@cs.sunysb.edu>
-
- * MIRRORS.txt: track status.
-
- * Makefile.am (install-snapshot): new directory to install
- snapshots (now that am-utils home page is moved).
-
-2004-01-02 Erez Zadok <ezk@cs.sunysb.edu>
-
- * INSTALL, README.autofs: remove forced text-mode.
-
- * doc/am-utils.texi: fix Amd book URL.
-
- * Makefile.am (EXTRA_DIST): include new mirror files in tarball.
-
- * AUTHORS, BUGS, README, README.y2k, configure.in,
- doc/am-utils.texi: revisions to use newer URLs for Web site, FTP,
- and mailing lists.
-
- * MIRRORS.{html,txt}: updates.
-
- * doc/Makefile.am: install mirror lists officially.
-
-2004-01-01 Erez Zadok <ezk@cs.sunysb.edu>
-
- * tasks: things to do after migrating ftp/Web sites.
-
-2003-12-09 Erez Zadok <ezk@cs.sunysb.edu>
-
- * fsinfo/fsinfo.8: fixed typo (unbalanced []) in man page. Bug
- report from Eric S. Raymond <esr@thyrsus.com>.
-
-2003-11-18 Erez Zadok <ezk@cs.sunysb.edu>
-
- * Makefile.am (EXTRA_DIST_M4): exclude removed file
- m4/macros/struct_nfs_fh3.m4 from distro.
-
-2003-10-24 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * libamu/xdr_func.c (xdr_am_nfs_fh3): Use AM_FHSIZE3 instead of
- FHSIZE3 (may be undefined).
-
-2003-10-24 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- Compile fix for Solaris7 with LDAP:
-
- * include/am_defs.h: moved the ldap headers before am_nfs_prot.h
- to facilitate using ldap types in it
-
- * conf/nfs_prot/nfs_prot_sunos5_7.h: add a couple of ldap
- definitions that Sun left out of their headers
-
-2003-10-24 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/nfs_prot/nfs_prot_*.h: remove all NFSv3-related
- definitions, they are now defined globally
-
- * libamu/xdr_func.c: unconditionally define all xdr functions
- needed for NFSv3, but with an am_ prefix to prevent namespace
- collisions
-
- * amd/amfs_host.c, amd/ops_nfs.c, amd/srvr_nfs.c,
- libamu/mount_fs.c: added the am_ prefix to all
- structures and functions having to do with NFSv3 to prevent
- namespace collisions
-
- * include/am_utils.h: moved definition of am_nfs_handle to ...
-
- * include/am_xdr_func.h: ... here. Also define AM_FHSIZE3,
- am_nfs_fh3, AM_NFSPROC3_LOOKUP, am_nfsstat3, am_fhandle3,
- am_mountstat3, am_mountres3_ok, am_mountres3, am_filename3,
- am_diropargs3, am_LOOKUP3args, am_LOOKUP3resok, am_LOOKUP3resfail,
- am_LOOKUP3res here; remove cross-platform compile helper macros
- AMU_LOOKUP3RES_*.
-
- * include/am_defs.h: include am_xdr_func.h before am_utils.h to
- provide definitions for NFS filehandles
-
- * amd/amd.h: removed declaration for xdr_mountres3
-
- * doc/am-utils.text: minor warning fix
-
- * BUGS: document the autoconf warnings when trying to compile
- system header files in isolation
-
-2003-10-23 Ion Badulescu <ionut@moisil.badula.org>
-
- * m4/macros/struct_nfs_fh3.m4: removed, not needed
-
- * configure.in: check if struct mounta has the optptr field;
- removed all NFSv3-related checks, we implement everything
- internally now
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_mount_2_free): don't
- touch mnt->optptr unless HAVE_MOUNTA_OPTPTR is defined
-
-2003-10-22 Ion Badulescu <ionut@moisil.badula.org>
-
- * m4/macros/struct_nfs_fh3.m4: removed, not used anymore
-
- * libamu/xdr_func.c (xdr_am_nfs_fh3): update xdr_am_nfs_fh3
- comments
-
- * configure.in: don't check for xdr_nfs_fh3 and struct nfs_fh3, we
- always use our own
-
-2003-10-22 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * BUGS: document the limitations of bind mounts on Linux
-
-2003-10-21 Ion Badulescu <ionut@moisil.badula.org>
-
- * buildall: added support for -i (make install)
-
-2003-10-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * NEWS: New minor port i386-pc-solaris2.10 (Solaris 10).
- * INSTALL: Mention its test status.
-
-2003-10-16 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/ops_nfs.c (nfs_init): declare as static to match forward
- definition at top of file.
-
- * conf/nfs_prot/nfs_prot_{hpux11, netbsd1_4,openbsd,aix5_2}.h:
- added missing definitions for LOOKUP3res, diropargs3, etc.
-
-2003-10-15 Erez Zadok <ezk@cs.sunysb.edu>
-
- * libamu/xdr_func.c (xdr_LOOKUP3res, xdr_am_nfs_fh3),
- libamu/mount_fs.c (compute_nfs_args), amd/ops_nfs.c
- (got_nfs_fh_mount, got_nfs_fh_webnfs, prime_nfs_fhandle_cache,
- webnfs_lookup), amd/amfs_host.c (fetch_fhandle): Attempt to
- cleanup some inconsistencies with how we treat NFSv3 file handles.
- Whenever we need to get data out of a filehandle given to us, we
- assume that it uses the OS's native fhandle structure
- (often struct nfs_fh3). When we store the fhandle data for our
- own use, however, we store it in one of two ways. The first, is
- that we use the system's default nfs_fh3 structure; the second is
- that we define out own struct am_nfs_fh3 in nfs_prot.h (and go
- through an elaborate autoconf song-and-dance to "discover" it as a
- native fh3 handle structure). It appears that we do the latter,
- instead of using the system's default fhandle structure, simply to
- avoid extra malloc's and free's, because whereas nfsv2's fhandle
- structure is a simple 32-byte buffer, nfsv3's fhandle structures
- often just define a "char *" for the fhandle data, and the caller
- must malloc/free the space inside as needed. Our code was never
- written with constructor/destructor callbacks for these nfsv3
- filehandles. Moreover, we carefully wrote our own am_nfs_fh3
- structure so IT JUST SO HAPPENS to align with most (hopefully all)
- of the fhandle structures for v3: first four bytes are the length
- fields and the next four bytes are the fhandle data. Sigh.
- Having this inconsistent use of v3 filehandles can be a real bear,
- because we simply cannot avoid using the system's default fhandle
- structure indirectly, through things like diropargs3 in
- xdr_diropargs3(), which has inside of it a reference to the
- system's default nfs_fh3 structure. ANYWAY, the current fix I've
- come up with is to generalize the way we dereference field names
- within the nfs_fh3 structure (whether ours or the system's) and
- the same for the system's LOOKUP3res structure. I'm not pleased
- with this fix; I'd rather we don't use our own am_nfs_fh3
- structure at all.
-
- * libamu/xdr_func.c (xdr_am_nfs_fh3): always define this
- function if we have NFS3, because we often use our own,
- incompatible am_nfs_fh3 structure.
-
- * include/am_xdr_func.h: We cannot use the native system's
- xdr_nfs_fh3 because we are defining our own incompatible
- am_hfs_fh3 structure for some systems.
-
- * include/am_xdr_func.h: Define default values for field names of
- struct nfs_fh3 and LOOKUP3res.
-
- * doc/am-utils.texi (debug_options Parameter): minor typo fixed.
-
- * conf/nfs_prot/nfs_prot_freebsd3.h: FreeBSD uses different fields
- names for struct nfs_fh3 and LOOKUP3res, so override the default
- names here.
-
- * configure.in: AMU_CHECK_FS_MNTENT(nfs3) test before
- AMU_STRUCT_NFS_FH3, because the latter depends on the former.
-
- * amd/ops_nfs.c (prime_nfs_fhandle_cache): add {} to disambiguate
- and clarify if-the-else clauses.
-
-2003-10-13 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/get_args.c (get_version_string): change "Built by" to
- "Configured by", and add a new "Built by" line using the variables
- below
-
- * m4/update_build_version (vers): add BUILD_USER, BUILD_HOST, and
- BUILD_DATE to build_version.h
-
- * amd/mntfs.c (locate_mntfs): fix restarted filesystems: mf_fo
- must be initialized even for them, otherwise we lose opt_sublink
- (and perhaps other options as well). Report from Rainer Orth.
-
- * amd/amfs_generic.c (amfs_bgmount): The fix for the mf_fo NULL
- pointer dereferencing was a bit too aggressive and could end up
- not processing the sublink option if the filesystem was already
- mounted.
-
-2003-10-11 Ion Badulescu <ionut@moisil.badula.org>
-
- Fix restarted filesystem by disabling the amfs_inherit filesystem
- and moving the restarting logic into the generic code. The old
- code is still there, will be removed sometime in the near future.
-
- * amd/mntfs.c (locate_mntfs): disable amfs_inherit and simply
- return the pointer to the restarted filesystem
- (free_mntfs): check for the MFF_RESTART flag instead of the
- amfs_inherit ops
-
- * amd/autil.c (mf_mounted): remove the MFF_RESTART flag once the
- filesystem is in use
-
- * amd/amfs_nfsx.c (amfs_nfsx_init): only call fs_init() if the
- filesystem is not being restarted
- (amfs_nfsx_remount): if the filesystem is already mounted,
- short-circuit the code and just continue
-
- * amd/amfs_generic.c (amfs_bgmount): only call fs_init() if the
- filesystem is not being restarted; remove hack that was used to
- work around an amfs_inherit problem
-
-2003-10-09 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- Use WebNFS to obtain file handles for mount(2).
-
- * NEWS: Document WebNFS support.
-
- * configure.in: Check for public mount option.
- * include/am_compat.h (MNTTAB_OPT_PUBLIC): Define if missing.
- * doc/am-utils.texi (opts Option): Renamed webnfs to public,
- update description.
-
- * amd/amd.h (FSF_WEBNFS): New mntfs flag.
- * include/am_utils.h (RPC_XID_WEBNFS): New XID type.
-
- * amd/amfs_host.c (amfs_host_mount, amfs_host_umounted): Reject
- WebNFS mount/umount attempts.
- * amd/ops_nfs.c (got_nfs_fh_mount): Renamed from got_nfs_fh.
- (got_nfs_fh_webnfs): New function.
- (flush_nfs_fhandle_cache): Don't invalidate port for WebNFS servers.
- (prime_nfs_fhandle_cache): Likewise.
- Remove unconditional return of public file handle for WebNFS, but
- get NFS file handles via mountd or WebNFS instead.
- (webnfs_lookup): New function.
- (nfs_umounted): Don't inform mountd if MFF_WEBNFS.
- * amd/rpc_fwd.c (fwd_packet, fwd_reply): Send/receive WebNFS
- packets.
- * amd/srvr_nfs.c (recompute_portmap): Don't contact portmap for
- WebNFS servers.
- Mention host in info message.
- (find_nfs_srvr): Handle public mount option.
- Prefer NFSv3/tcp if the client supports it.
- Allow port mount option to override default or result from portmap
- lookup.
-
- * libamu/xdr_func.c (xdr_diropargs3, xdr_filename3,
- xdr_LOOKUP3args, xdr_LOOKUP3res, xdr_LOOKUP3resfail,
- xdr_LOOKUP3resok, xdr_nfs_fh3, xdr_nfsstat3): New functions.
- * include/am_xdr_func.h: Declare them.
- * configure.in: Check for them.
- * conf/nfs_prot/nfs_prot_linux.h: Provide missing NFSv3
- definitions and types.
-
-2003-10-09 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- Support IRIX 6 private mount option.
-
- * configure.in (AC_CHECK_MNTTAB_OPTS): Check for private option
- name string.
- (AC_CHECK_MNT2_NFS_OPTS): Check for private NFS mount option (IRIX 6).
- * aux/macros/header_templates.m4 (MNTTAB_OPT_PRIVATE,
- MNT2_NFS_OPT_PRIVATE): Provide templates.
- * include/am_compat.h (MNTTAB_OPT_PRIVATE): Define if missing.
- * doc/am-utils.texi (opts Option): Document it.
-
-2003-10-09 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * doc/am-utils.texi (opts Option): Fix Tru64 UNIX name in proplist
- mount option.
-
-2003-10-09 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * libamu/mount_fs.c (compute_nfs_args) [HAVE_NFS_ARGS_T_FH_LEN]:
- Don't reference removed fh3.
-
-2003-10-09 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * NEWS: New minor port sparc-sun-solaris2.10 (Solaris 10).
-
- * INSTALL: Mention test status of various ports.
- Describe IRIX 6 autofs status.
-
-2003-10-09 Ion Badulescu <ionut@moisil.badula.org>
-
- * NEWS: updated
-
- * amd/amfs_generic.c (amfs_bgmount): don't use mf_fo until after
- we've done all the tests and we know we have a valid and mountable
- mntfs. Otherwise we could end up dereferencing null pointers.
-
- * amd/amd.h: fixed a copy&paste comment bug
-
- * amd/am_ops.c (ops_match): minor code cleanup
-
- * doc/am-utils.texi: fixed various typos; added warning about the
- racy nature of nfsx; removed duplicated listing of debug options;
- added paragraph about signals supported by hlfsd; removed the long
- list of (maybe) supported platforms since it duplicates the list
- in INSTALL.
-
-2003-10-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- Simplify FD_SET etc. use.
-
- * include/am_defs.h (FD_SET, FD_ISSET, FD_CLR, FD_ZERO): Provide
- if missing.
- (rpc_pending_now, run_rpc): Use them.
- * configure.in: Check for fds_bits field in fd_set.
- * amd/nfs_start.c (run_rpc): Use it.
-
-2003-10-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- Improve RPC XID handling.
-
- * amd/rpc_fwd.c (fwd_packet, fwd_reply): Always log xid.
- Convert xid to/from host/network byte order.
-
-2003-10-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- Use NFS V2/V3 file handles instead of mount results.
-
- * include/am_utils.h (am_nfs_fhandle): Use NFS V2/V3 file handles
- only, not MOUNTPROC_MNT results.
- * amd/amfs_host.c (fetch_fhandle): Use local variables to store
- MOUNTPROC_MNT results.
- * amd/autil.c (amfs_mount): Use new am_nfs_fhandle_t.
- * amd/ops_nfs.c (struct fh_cache): New member fh_status.
- (got_nfs_fh): Use local variables to store MOUNTPROC_MNT results.
- Store MOUNTPROC_MNT errors in fh_status.
- (prime_nfs_fhandle_cache): Get fh_error from fh_status.
- * hlfsd/hlfsd.c (main): Use new am_nfs_fhandle_t.
- * libamu/mount_fs.c (compute_nfs_args): Copy NFS V2/V3 file
- handles straight from new am_nfs_fhandle_t.
-
-2003-10-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * amd/clock.c (CID_ALLOC): Remove unused argument.
- (timeout): Likewise.
-
- * amd/ops_nfs.c (FHID_ALLOC): Remove unused argument.
- (prime_nfs_fhandle_cache): Likewise.
- (call_mountd): Use UDPMSGSIZE instead of magic constant.
-
- * amd/rpc_fwd.c (XID_ALLOC): Remove unused argument.
- (fwd_packet): Likewise.
- Handle TLOOK error from t_rcvudata().
-
-2003-09-30 Ion Badulescu <ionut@moisil.badula.org>
-
- * NEWS: updated
-
- * libamu/mount_fs.c (mount_fs): don't try to recreate the mount
- point if the mount fails with ENOENT: in the best case we would be
- papering over a bug, and in the worst case we could cause a
- deadlock (with autofs). If there are races, they need to be
- exposed and fixed properly.
-
- * conf/autofs/autofs_solaris_v1.h,
- conf/autofs/autofs_solaris_v2_v3.h,
- conf/autofs/autofs_linux.h: (AUTOFS_NFSX_FS_FLAGS): autofs
- semantics don't allow us to mount nfsx directly onto an autofs
- mountpoint, so disallow it
-
- * amd/amfs_nfsx.c (amfs_nfsx_match): more restrictive sanity check
- to avoid trying to memmove(foo, bar, (unsigned)-1) due to invalid
- map entries...
- (amfs_nfsx_cont): amfs_retry does most of the cleanup work for us
- in the upper layer, so don't do anything else beside wakeup() on
- success
- (amfs_nfsx_remount): only create the mountpoints as we need them,
- avoids creating them on the wrong filesystem in the case of
- hierarchical mounts; fix crash-generating typo (m should really be
- mf and I swear I hate single-character variable names)
-
- * amd/amfs_generic.c (amfs_cont): one more dlog
- (amfs_bgmount): amazingly enough, even foreground mounts can be
- backgrounded (in the case of nfsx), so account for this
- possibility and permit retries
-
- * m4/macros/check_autofs_style.m4 (AMU_AUTOFS_PROT_HEADER): define
- and AC_SUBST it as ${top_builddir}/amu_autofs_prot.h
-
- * amd/Makefile.am ($(amd_OBJECTS) $(EXTRA_amd_OBJECTS)): depend on
- @AMU_AUTOFS_PROT_HEADER@
-
-2003-09-29 Erez Zadok <ezk@urd.fsl.cs.sunysb.edu>
-
- * minor new port mipsel-unknown-linux-rhPS2 (Linux on Sony
- PlayStation 2)
-
- * amd/srvr_nfs.c (find_nfs_srvr): don't run code that expects
- "char protocols[]" unless MNTTAB_OPT_PROTO is defined.
-
-2003-09-26 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- Consolidate alloca support.
-
- * amd/amq_svc.c: Move alloca support ...
- * include/am_defs.h: ... here.
- * amd/conf_parse.y: Remove alloca support.
- * fsinfo/fsi_gram.y: Likewise.
-
-2003-09-25 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- Handle Solaris 10.
- * m4/macros/check_nfs_prot_headers.m4
- (AMU_CHECK_NFS_PROT_HEADERS): Don't use wildcards for
- sunos5.[0-3], solaris 2.[0-3], there were no micro releases.
- Explicitly match sunos5*, solaris2* for Solaris 8 and beyond.
-
- * m4/macros/os_cflags.m4 (AMU_OS_CFLAGS): Dont use wildcards for
- solaris2.[0-5], sunos5.[0-5], but explicitly handle Solaris 2.5
- micro releases to cope with Solaris 2.5.1.
- Explicitly match solaris2*, sunos5*.
-
-2003-09-25 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * amd/amq_svc.c: Provide alloca prerequisites.
-
- * conf/transp/transp_tli.c (register_autofs_service): Fix typo.
-
-2003-09-23 Ion Badulescu <ion@opteron.tower-research.com>
-
- * minor new port: x86_64-unknown-linux-rh2.9.5AS. (Red Hat
- Enterprise Linux 3.0 beta running on a 64-bit AMD64 platform)
-
-2003-09-22 Ion Badulescu <ionut@buggy.badula.org>
-
- * conf/autofs/autofs_solaris_v1.c (autofs_mount_fs): compile fix
-
-2003-09-19 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/amfs_nfsl.c (amfs_nfsl_match): checking opt_fs is not always
- enough, we should lstat() the sublink if it's defined.
- (amfs_nfsl_ffserver): ditto
- (ALL): Removed some obsolete comments. The nfsl code is now little
- more than a very straight-forward switch between link and nfs.
-
- * amd/amfs_link.c (amfs_link_match): more up-to-date explanation
- for the prepend-the-dot hack for type link; also, the sublink is
- already normalized and absolute, so take advantage of that
-
- * amd/amfs_generic.c (amfs_lookup_one_mntfs): the sublink is
- already normalized and absolute, so take advantage of that
-
- * amd/am_ops.c (ops_match): normalize the sublink here, early into
- the matching process
-
- * amd/autil.c (am_mounted): be consistent and accept both
- "nounmount" and "noumount" as pseudo mount options (same as
- "unmount" and "umount" nearby)
-
- * amd/Makefile.am (build_version.h): fixed dependencies (depends
- on amd_OBJECTS, not OBJECTS -- which doesn't even exist)
-
-2003-09-19 Erez Zadok <ezk@dhcp8.fsl.cs.sunysb.edu>
-
- * amd/amq_subr.c (amqproc_export_1_svc): force double casting to
- avoid gcc-3.3 complaints on Solaris 9 about "dereferencing
- type-punned pointer will break strict-aliasing rules".
-
-2003-09-16 Ion Badulescu <ionut@moisil.badula.org>
-
- * Released beta version 6.1b4
-
-2003-09-15 Ion Badulescu <ionut@moisil.badula.org>
-
- * doc/am-utils.texi (opts Option): removed documentation for old
- ignore_portmapper mount option, documented the new webnfs option
-
- * NEWS: webnfs support
-
- * amd/srvr_nfs.c (find_nfs_srvr): set MFF_WEBNFS if the "webnfs"
- (former "ignore_portmapper") mount option is present
-
- * amd/ops_nfs.c (prime_nfs_fhandle_cache): generate a public
- filehandle (all zeros) if MFF_WEBNFS is set
- (nfs_umounted): don't talk to mountd if MFF_WEBNFS is set
-
- * amd/amd.h (MFF_WEBNFS): new flag, obvious meaning
-
-2003-09-13 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/srvr_nfs.c: renamed np_xid to global_xid; sanitized the
- NPXID_ALLOC macro and renamed it to XID_ALLOC; renamed start_ping
- to create_ping_payload; renamed nfs_pinged to
- nfs_keepalive_callback; renamed nfs_timed_out to
- nfs_keepalive_timeout; renamed nfs_srvr_port to get_mountd_port;
- made ping_buf and ping_len arrays with one element for each
- supported nfs version
-
- * amd/amd.h: renamed nfs_srvr_port() to get_mountd_port()
-
- * amd/amfs_host.c (amfs_host_init): ditto
-
- * amd/ops_nfs.c (call_mountd): ditto
-
-2003-09-03 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * BUGS: Mention fix for broken Solaris 8 <rpcsvc/autofs_prot.h>
- patches.
-
-2003-08-31 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * amd/autil.c (strealloc): don't call malloc_verify() unless it
- exists.
-
- * configure.in: move "OPTION PROCESSING" section (opt_debug etc.)
- after we figure out PROG_CC and other compiler features, because
- some of the option processing macros need a compiler to function.
-
- * libamu/xutil.c: don't define variables that won't be used unless
- mallinfo() and malloc_verify() exist.
- (real_plog): don't call checkup_mem unless
- mallocinfo() and malloc_verify() exist.
- (checkup_mem): don't define this function unless mallocinfo() and
- malloc_verify() exist.
-
- * m4/macros/opt_debug.m4: check for functions malloc_verify and
- mallinfo in general libraries and then in libmapmalloc and
- libmalloc. These seem to have disappeared in FreeBSD 5.x.
-
- * libamu/xutil.c (dxfree): print pointer using %p
-
-2003-08-29 Erez Zadok <ezk@a-opendarwin.fsl.cs.sunysb.edu>
-
- * configure.in: start 6.1b4-pre officially (belated)
-
- * minor new port: i686-apple-darwin6.6
-
-2003-08-27 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/autofs/autofs_solaris_v1.c: convert relative targets to
- absolute paths when using lofs mounts
-
- * conf/autofs/autofs_solaris_v2_v3.c: ditto
-
- * conf/autofs/autofs_linux.c: ditto
-
-2003-08-27 Ion Badulescu <ionut@buggy.badula.org>
-
- * README.autofs: added a paragraph about the resource consumption
- of auto maps over autofs
-
- * amd/amfs_generic.c (amfs_lookup_one_mntfs): moved the setting of
- the MFF_IS_AUTOFS flag from init_mntfs() to
- amfs_lookup_one_mntfs(), where it belongs
-
- * amd/mntfs.c (init_mntfs): ditto
-
-2003-08-27 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * amd/ops_nfs.c (got_nfs_fh): make the error EACCES if we are
- denied a filehandle by the server (used to be EIO)
-
-2003-08-27 Erez Zadok <ezk@a-bsdi42.fsl.cs.sunysb.edu>
-
- * conf/nfs_prot/nfs_prot_bsdi3.h: support na_uid and na_gid.
-
-2003-08-27 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/autofs/autofs_linux.c (autofs_mount_succeeded): force
- daemon-initiated timeouts on autofs filesystems, since apparently
- they appear as "always busy" to the kernel-based expiration routine
-
-2003-08-26 Ion Badulescu <ionut@buggy.badula.org>
-
- * NEWS: updated
-
- * conf/autofs/autofs_linux.h (AUTOFS_LINK_FS_FLAGS): remove
- FS_ON_AUTOFS
- (AUTOFS_LINKX_FS_FLAGS): ditto
-
- * conf/autofs/autofs_solaris_v1.h (AUTOFS_LINK_FS_FLAGS): remove
- FS_ON_AUTOFS
- (AUTOFS_LINKX_FS_FLAGS): ditto
-
- * conf/autofs/autofs_solaris_v2_v3.h (AUTOFS_LINK_FS_FLAGS): remove
- FS_ON_AUTOFS
- (AUTOFS_LINKX_FS_FLAGS): ditto
-
- * amd/amfs_generic.c (amfs_lookup_one_mntfs): don't modify the
- original opt_fs, instead store the new mount point for autofs in a
- temporary variable and pass it around. Fixes a problem with the
- link side of nfsl.
-
-2003-08-25 Ion Badulescu <ionut@moisil.badula.org>
-
- * NEWS: updated
-
- * amd/ops_nfs.c (prime_nfs_fhandle_cache): use get_mntfs_wchan to
- initialize the fh_wchan member of the cache entry
- (prime_nfs_fhandle_cache): use get_mntfs_wchan for the wchan_t
- argument of call_mountd()
-
- * amd/map.c (free_map_if_success): use get_mntfs_wchan for the
- wchan_t argument of wakeup()
-
- * amd/amfs_nfsx.c (amfs_nfsx_cont): use get_mntfs_wchan for the
- wchan_t argument of wakeup_task() and wakeup()
-
- * amd/amfs_host.c (amfs_host_init): use get_mntfs_wchan for the
- wchan_t argument of nfs_srvr_port()
-
- * amd/amfs_generic.c (ALL): use get_mntfs_wchan for the wchan_t
- argument of sched_task() and wakeup()
- (amfs_retry): minor cleanup
- (amfs_bgmount): call nfs_quick_reply on failure
-
- * amd/sched.c (get_mntfs_wchan): new function which calls the
- member function get_wchan if defined, otherwise returns the mntfs
- pointer itself
-
- * amd/amfs_inherit.c (amfs_inherit_get_wchan): new function,
- calls get_mntfs_wchan() on the inherited filesystem
-
- * amd/amfs_*.c, amd/ops_*.c: initialize the new get_wchan member
- of the ops to 0
-
- * amd/amd.h: new function type vget_wchan
- (struct mntfs): new member get_wchan which returns the waiting
- channel associated with the mntfs (normally itself)
-
-2003-08-22 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * conf/mount/mount_linux.c (parse_opts): minor cleanup
-
- * conf/autofs/autofs_linux.c (autofs_handle_fdset): added missing
- break in case autofs_ptype_expire_multi
-
-2003-08-22 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/autofs/autofs_solaris_v1.h: undefine autofs support if
- autofs_args_t cannot be determined (hopefully fixes a reported
- IRIX 6.5.4 problem).
-
- * conf/autofs/autofs_solaris_v1.c: wrap entire file in #ifdef
- HAVE_FS_AUTOFS / #endif (see above)
-
- * conf/autofs/autofs_linux.h: undefine autofs support if the
- necessary header files are not found (fixes a reported RedHat 6.2
- Sparc problem).
-
- * conf/autofs/autofs_linux.c: wrap entire file in #ifdef
- HAVE_FS_AUTOFS / #endif (see above)
-
- * libamu/mount_fs.c (compute_nfs_args): only use MNT2_NFS_OPT_SOFT
- if autoconf detected it (fixes a reported RedHat 6.2 Alpha problem).
-
- * amd/map.c (unmount_mp, unmount_exported): move the code that
- changes the fattr from NFLNK to NFDIR from unmount_mp to
- unmount_exported, it was causing troubles (ESTALE) after failed
- unmounts. This is still very very unclean, but it's the same as the
- old 6.0 code.
-
-2003-08-22 Nick Williams <Nick.Williams@morganstanley.com>
-
- * amd/info_ldap.c (amu_ldap_init): don't try to pass a null
- pointer as a string to plog, Solaris (and other OS's) don't like
- it and will dump core.
-
-2003-08-13 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * amd/amd.h: introduced two new types, wchan_t and opaque_t, as
- aliases of voidp. This makes reading the code easier on the eyes. :)
-
- * ALL: replace various instances of voidp with wchan_t and
- opaque_t, as appropriate
-
-2003-08-13 Ion Badulescu <ionut@nicu.badula.org>
-
- * NEWS, configure.in: bumped version up to 6.1b4-pre
-
-2003-08-13 Ion Badulescu <ionut@moisil.badula.org>
-
- * Released beta version 6.1b3
-
-2003-08-13 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * conf/autofs/autofs_linux.c (autofs_mount_fs): HACK: always use
- symlinks for host mounts; assorted fixes for the symlink mode
-
-2003-08-05 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/umount/umount_default.c (umount_fs): enable space hack
- handling for autofs v1
-
- * amd/map.c (get_first_exported_ap, get_next_exported_ap): new
- functions that facilitate iterating through the list of
- mountpoints
-
- * amd/amfs_union.c (amfs_union_mounted): use get_first_exported_ap
- and get_next_exported_ap
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_unmount_2_req): ditto
-
-2003-08-04 Erez Zadok <ezk@ulkesh.dyn.optonline.net>
-
- * configure.in: check if system stores mount tables in files
- (usually in /etc), and configure couldn't find a definition for
- either struct mntent or struct mnttab. If so, abort configure
- because this could be a new/misconfigured system, or a bug in
- am-utils.
-
-2003-08-04 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_umount_fs): fix
- compile warning
-
-2003-08-04 Ion Badulescu <ionut@buggy.badula.org>
-
- * conf/autofs/autofs_linux.c (autofs_mount_fs): don't call
- ops->mount_fs() for an already mounted filesystem
- (autofs_umount_fs): only call ops->umount_fs() if we're holding
- the last reference to the filesystem
-
- * conf/autofs/autofs_solaris_v1.c (autofs_mount_fs): ditto
- (autofs_umount_fs): ditto
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_mount_fs): ditto
- (autofs_umount_fs): ditto
-
- * amd/amfs_generic.c (amfs_lookup_mntfs): remove the shortcut for
- already-mounted filesystems
- (amfs_cont): only release the autofs_fh if the filesystem is not
- mounted; add another comment about the NFS_SCALEDOWN hack
- (amfs_bgmount): if the mntfs is already mounted, skip just the
- filesystem initialization, but do call mount_node()
-
- * amd/map.c (mount_node): always call autofs_mount_fs(), but only
- call ops->mount_fs() if the mntfs is not yet mounted
- (unmount_node): always call autofs_umount_fs(), but only call
- ops->umount_fs() if the refcount on the mntfs equals 1.
-
-2003-08-02 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * conf/nfs_prot/nfs_prot_openbsd.h: include <ufs/ufs/ufsmount.h>
- here with the proper workarounds for openbsd3.3 (define MAXQUOTAS,
- define dummy struct netexport, and include <ufs/ufs/extattr.h>
- wrapped in _KERNEL).
-
- * conf/nfs_prot/nfs_prot_freebsd3.h: include <ufs/ufs/ufsmount.h>
- here with the proper workarounds for freebsd5.1 (define dummy
- struct ufs_extattr_per_mount).
-
- * conf/nfs_prot/nfs_prot_bsdi2.h: include <ufs/ufs/ufsmount.h>
- here with the proper workarounds for bsdi2 (define MAXQUOTAS and
- dummy struct netexport).
-
- * include/mount_headers1.h: do not include <ufs/ufs/ufsmount.h>
- here, b/c every *BSD system has some sort of problem in including
- this header file, which includes ugly workarounds. Inclusion of
- this header was already moved out of am_defs.h (used to compile
- amd), but we forgot to move it out of mount_headers1.h (used to
- configure). The specific inclusion of ufsmount.h is now in the OS
- specific nfs_prot.h file.
-
- * configure.in: if configure could not find any definition for
- "struct nfs_args", abort configure with an explanatory message.
- There's no point in continuing, as this could be a system bug,
- buggy am-utils, or a new system to which am-utils wasn't ported to
- yet.
-
- * minor new port: i386-pc-solaris2.9
-
-2003-08-01 Ion Badulescu <ionut@buggy.badula.org>
-
- * doc/am-utils.texi (NFS-Link Filesystem): make the documentation
- match the code (as well as basic logic operations: the negation of
- 'a or b' is 'not a and not b', not 'not a or not b')
-
-2003-08-01 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * minor new port: i386-unknown-openbsd3.3.
-
- * m4/macros/check_libwrap_severity.m4: new macro to check if
- libwrap includes the integer variables deny_severity and
- allow_severity, since some libwrap implementations do and others
- don't. The test tries to compile and run a simple empty main()
- program, then the same program while defining these two variables:
- comparing the results of the two tests, we can tell whether we
- should define NEED_LIBWRAP_SEVERITY_VARIABLES.
-
- * Makefile.am (EXTRA_DIST_M4): distribute new macro
- check_libwrap_severity.m4.
-
- * m4/macros/header_templates.m4: template for HAVE_LIBWRAP (which
- we must define explicitly since we've overridden the
- action-if-found in AC_CHECK_LIB(wrap). Also template for
- NEED_LIBWRAP_SEVERITY_VARIABLES.
-
- * amd/amq_svc.c: if libwrap does not include the severity
- variables, then define and initialize them here.
-
- * amd/Makefile.am (LIBS): explicitly include @WRAPLIB@ only for
- Amd binary. Other am-utils binaries don't need -lwrap.
-
- * configure.in: if libwrap is found, only define it in @WRAPLIB@,
- so we don't automatically link every am-utils binary with -lwrap.
- Run test for existence of severity variables in libwrap.
-
-2003-07-31 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * conf/nfs_prot/nfs_prot_openbsd.h: define struct fattr fields uid
- and gid.
-
- * configure.in: move check for AC_CHECK_LIB(libwrap) as far down
- as possible because on modern tcpwrapper systems such as openbsd,
- the caller must provide two symbols: deny_severity and
- allow_severity, which determine the logging level of rejected and
- requested requests, respectively. If this check happens too
- early, then $LIBS includes -lwrap, which causes many subsequent
- tests that need to run a compiled program to fail with missing
- symbols.
-
- * m4/macros/header_templates.m4: fix typo in template for
- readdirplus.
-
- * configure.in: check for <ufs/ufs/extattr.h> (OpenBSD 3.3)
-
- * minor new port: i386-unknown-netbsdelf1.6.1.
-
- * configure.in: save state before system-specific tests are run.
-
- * m4/macros/check_gnu_getopt.m4: do NOT abort ./configure just
- because the compiled test program failed to run.
-
-2003-08-01 Ion Badulescu <ionut@buggy.badula.org>
-
- * NEWS, README.autofs: updated
-
- * libamu/mount_fs.c (mount_fs): added support for the space hack
-
- * doc/am-utils.texi: mention than UFS/XFS/EFS/CacheFS filesystems
- are not expired by default; correct and expand the section
- describing the program filesystem
-
- * conf/autofs/autofs_solaris_v2_v3.h (AUTOFS_*_FS_FLAGS): add
- FS_ON_AUTOFS for supported filesystems
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_mount_fs): call
- mf->mount_fs()
- (autofs_umount_fs): call mf->umount_fs()
-
- * conf/autofs/autofs_solaris_v1.h (autofs_strdup_space_hack): add
- prototype for malloc()
- (AUTOFS_*_FS_FLAGS): lose the FS_MKMNT flags, add FS_ON_AUTOFS for
- supported filesystems
-
- * conf/autofs/autofs_solaris_v1.c (autofs_mount_fs): add support
- for the space hack; call mf->mount_fs()
- (autofs_umount_fs): add support for the space hack; call
- mf->umount_fs()
- (autofs_mount_succeeded): add support for the space hack
-
- * conf/autofs/autofs_linux.h: lose the FS_MKMNT flags, add
- FS_ON_AUTOFS for supported filesystems
-
- * conf/autofs/autofs_linux.c (AUTOFS_MAX_VERSION): define to
- AUTOFS_MAX_PROTO_VERSION instead of hardcoding to 4
- (autofs_mounted): host mounts are now supported on all autofs
- versions, remove the hack to turn it off on v3
- (autofs_mount_fs): call mf->mount_fs(), create/remove mountpoints
- as needed
- (autofs_umount_fs): call mf->umount_fs(), remove mountpoints on
- success
- (ALL): use '#if AUTOFS_MAX_VERSION >= 4' instead of
- '#ifdef autofs_ptype_expire_multi'
-
- * amd/map.c (mount_node): autofs_mount_fs() now calls
- mf->mount_fs() internally
- (unmount_node): autofs_umount_fs() now calls mf->umount_fs()
- internally
-
- * amd/autil.c (am_mounted): minor cleanup
-
- * amd/amfs_program.c (amfs_program_ops): added FS_MKMNT to
- nfs_fs_flags
-
- * amd/amfs_generic.c (amfs_lookup_one_mntfs): use the FS_ON_AUTOFS
- flag instead of hardcoding filesystem types
- (amfs_bgmount): better mount_type logging
-
- * amd/amd.h (FS_ON_AUTOFS): new flag which tells the code that
- this filesystem can be mounted directly onto an autofs mountpoint
-
-2003-07-31 Ion Badulescu <ionut@buggy.badula.org>
-
- * amd/amfs_nfsl.c (amfs_nfsl_umount): fix copy&paste error (was
- calling amfs_link_ops.umount_fs() for NFS filesystems)
- (amfs_nfsl_umounted): remove rmdirs() hack, it is now handled
- properly elsewhere
- (amfs_nfsl_ffserver): remove FS_MKMNT from mf_fsflags if we're
- using link (not NFS)
-
-2003-07-31 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * README.autofs: Correct IRIX spelling.
- AutoFS support exists only on IRIX 6.
- Update IRIX 6 status.
-
- Allow AutoFS V1 support to compile on IRIX 6.
- * conf/autofs/autofs_solaris_v1.c (autofs_mount_1_req): Add
- SVCXPRT * arg.
- Remove superfluous \n from dlog messages.
- (autofs_unmount_1_req): Likewise.
- Switch to get_exported_ap.
- (autofs_program_1): Invoke handlers with additional transp arg.
- * conf/autofs/autofs_solaris_v1.h: Use autofs_args_t to define
- autofs_fh_t, struct auto_args doesn't exist on IRIX 6.
-
- * conf/mount/mount_irix6.c (mount_irix) [HAVE_FS_AUTOFS]: Support
- AutoFS mounts.
- [HAVE_FS_LOFS]: Likewise for lofs mounts.
-
- * conf/nfs_prot/nfs_prot_irix6.h (AUTOFS_CONFTYPE): Define.
- Don't disable AutoFS support any more.
-
- * conf/transp/transp_sockets.c [HAVE_FS_AUTOFS && AUTOFS_PROG]
- (register_autofs_service): Define autofs_xprt.
-
- * m4/macros/check_autofs_style.m4 (AMU_CHECK_AUTOFS_STYLE): Update
- Solaris 8+ comment to mention AutoFS V4.
- (irix6*): Enable AutoFS V1 support on IRIX 6.
-
-2003-07-30 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * NEWS, doc/am-utils.texi, scripts/amd.conf.5: revised explanation
- of autofs_use_lofs.
-
-2003-07-30 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * amd/ops_efs.c (efs_mount): Replace on_autofs arg with
- MFF_ON_AUTOFS flag.
- (efs_umount): Likewise.
-
-2003-07-30 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * conf/umount/umount_bsd44.c (umount_fs): convert to new way of
- unmounting which takes autofs into account.
-
-2003-07-30 Ion Badulescu <ionut@moisil.badula.org>
-
- * ALL: renamed MFF_AUTOFS to MFF_IS_AUTOFS; removed mf_real_mount
- hack; pass a new on_autofs argument to mount/umount function,
- based on the MFF_ON_AUTOFS mntfs flag
-
- * NEWS, README.autofs: updated
-
- * scripts/amd.conf.5: document new option autofs_use_lofs
-
- * scripts/amd.conf-sample (autofs_use_lofs): document new option
-
- * m4/macros/check_autofs_style.m4 (am_utils_link_files): symlink
- the autofs header as amu_autofs_prot.h instead of slurping it into
- aux_conf.h
-
- * libamu/mount_fs.c (mount_fs): removed old stub, renamed
- mount_fs2 to mount_fs, added new argument on_autofs
-
- * doc/am-utils.texi (Direct Automount Filesystem): document
- problems with nfs direct mounts on modern kernels, document good
- autofs support for direct mounts on Solaris
- (autofs_use_lofs Parameter): document this new option
- (browsable_dirs Parameter): note that mount storms are avoided
- when using autofs
-
- * conf/umount/umount_bsd44.c (umount_fs): removed old stub,
- renamed umount_fs2 to umount_fs
-
- * conf/umount/umount_osf.c (umount_fs): removed old stub,
- renamed umount_fs2 to umount_fs, added new argument on_autofs
-
- * conf/umount/umount_default.c (umount_fs): ditto as above; return
- an error on ENOENT instead of faking success
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_lookup_2_req): much
- simplified, now only consults the map for existance of the key and
- returns success if key is found
- (autofs_mount_2_req): request symlinks if CFM_AUTOFS_USE_LOFS is
- not on;
- (autofs_mount_2_free): implemented
- (autofs_unmount_2_req): use get_exported_ap() instead of
- referencing export_ap directly
- (autofs_mount_succeeded): remove code for replying to lookup
- requests, now only mount requests can end up here
- (autofs_mount_failed): ditto
-
- * conf/autofs/autofs_solaris_v1.h (AUTOFS_HOST_FS_FLAGS): removed
- FS_AUTOFS
- (AUTOFS_DIRECT_FS_FLAGS): added FS_DIRECTORY
-
- * conf/autofs/autofs_solaris_v2_v3.h (AUTOFS_HOST_FS_FLAGS): removed
- FS_AUTOFS
- (AUTOFS_DIRECT_FS_FLAGS): added FS_DIRECTORY
- (AUTOFS_LINK_FS_FLAGS): added FS_MBACKGROUND
-
- * conf/autofs/autofs_linux.c (autofs_bind_umount): new function,
- factored out of autofs_umount_fs()
- (autofs_mount_fs): renamed from autofs_link_mount() and expanded
- to deal with filesystems mounted indirectly (via lofs/bind
- mounts) on autofs and to observe the new CFM_AUTOFS_USE_LOFS flag
- (autofs_umount_fs): ditto, from autofs_link_umount()
-
- * conf/autofs/autofs_solaris_v1.c (autofs_mount_fs): ditto
- * (autofs_umount_fs): ditto
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_mount_fs): ditto
- * (autofs_umount_fs): ditto
-
- * amd/opts.c: made fs_static static
-
- * amd/ops_nfs.c: made nfs_init, nfs_match, nfs_mount, nfs_umount
- and nfs_umounted static
- (mount_nfs_fh): removed unnecessary arguments
-
- * amd/ops_cachefs.c (cachefs_ops): use amfs_generic_find_srvr for
- the ffserver method, because using NULL causes problems
-
- * amd/ops_cdfs.c (cdfs_ops): ditto
-
- * amd/ops_efs.c (efs_ops): ditto
-
- * amd/ops_lofs.c (lofs_ops): ditto
-
- * amd/ops_pcfs.c (pcfs_ops): ditto
-
- * amd/ops_ufs.c (ufs_ops): ditto
-
- * amd/ops_xfs.c (xfs_ops): ditto
-
- * amd/nfs_subr.c (fh_to_mp3, fh_to_mp, mp_to_fh): moved here from
- map.c
-
- * amd/nfs_start.c: use get_exported_ap() instead of referencing
- exported_ap directly
-
- * amd/mntfs.c (locate_mntfs): new function, factored out of
- find_mntfs
- (locate_mntfs): special-case FS_DIRECT filesystems: for direct
- mounts we will have two filesystems mounted on the same m/p
- (realloc_mntfs): removed the old EZK hack for failovers
-
- * amd/map.c (get_exported_ap): new function that returns an
- exported_ap member by its index
- (root_node,exported_ap,exported_ap_size,first_free_map,last_used_map):
- made static
- (fh_to_mp3, fh_to_mp, mp_to_fh): moved to nfs_subr.c
- (get_root_ap): removed unused second argument
- (unmount_mp): moved the mk_fattr(NFDIR) here from umount_exported
- to catch more cases
- (mount_node): call autofs_mount_fs after ops->mount_fs for autofs
- nodes
- (unmount_node): call autofs_umount_fs before ops->umount_fs for
- autofs nodes
-
- * amd/conf.c: new global option "autofs_use_lofs", takes yes/no
- values
-
- * amd/autil.c (amfs_mount): take an extra argument (mf)
- (amfs_mount): call autofs_compute_mount_flags() for mounts
- directly on autofs m/p
- (am_unmounted): document and avoid the race between am_umounted()
- at shutdown time and amfs_cont()
-
- * amd/amfs_union.c (amfs_union_mounted): use get_exported_ap()
- instead of referencing internal map variables directly
-
- * amd/amq_subr.c (amqproc_export_1_svc): ditto
-
- * amd/amfs_toplvl.c (amfs_toplvl_ops): removed FS_AUTOFS from
- nfs_fs_flags
- (amfs_toplvl_mount): pass extra argument (mf) to amfs_mount()
- (amfs_toplvl_umount): refuse to attempt the unmount if the
- mountpoint is not a directory
-
- * amd/amfs_nfsx.c (amfs_nfsx_init): propagate the MFF_ON_AUTOFS
- flag into the nfs f/s at the bottom of the stack
-
- * amd/amfs_nfsl.c: call nfs and link member functions through
- their respective am_ops structures, not directly
-
- * amd/amfs_linkx.c (amfs_linkx_umount): new static stub
-
- * amd/amfs_link.c: made amfs_link_mount() and amfs_link_umount()
- static functions
- (amfs_link_mount): removed call to autofs_link_mount()
- (amfs_link_umount): removed call to autofs_link_umount()
-
- * amd/amfs_host.c (amfs_host_ops): removed FS_AUTOFS from
- nfs_fs_flags
- (do_mount): removed superfluous function arguments
-
- * amd/amfs_direct.c (amfs_direct_ops): removed FS_AUTOFS from
- nfs_fs_flags
-
- * amd/amfs_auto.c (amfs_auto_ops): removed FS_AUTOFS from
- nfs_fs_flags
- (amfs_auto_mount): pass extra argument (mf) to amfs_mount
-
- * amd/amd.h (CFM_AUTOFS_USE_LOFS): new flag, tells amd whether to
- use lofs-mounts or symlinks when mounting on autofs
- (CFM_DEFAULT_FLAGS): added CFM_AUTOFS_USE_LOFS
- (VLOOK_LOOKUP): new flag, will merely check if a key exists
- (MFF_IS_AUTOFS): renamed from MFF_AUTOFS
- (MFF_ON_AUTOFS): new flag, tells amd if a f/s is mounted directly
- on an autofs m/p, or indirectly via a lofs mount/symlink
- (fh_to_mp2): macro expanded throughout the code and removed
- (mntfs): removed mf_real_mount hack
- (autofs_mount_fs): renamed from autofs_link_mount
- (autofs_umount_fs): renamed from autofs_link_umount
- (mount_lofs): exposed
- various other cleanups, functions/variables made static and removed
-
- * aux_conf.h.in: removed @am_utils_autofs_style@, it is now
- included directly as amu_autofs_prot.h
-
-2003-07-24 Erez Zadok <ezk@whitestar.dyn.optonline.net>
-
- * doc/am-utils.texi, scripts/amd.conf.5: document that
- use_tcpwrappers is "yes" by default.
-
- * amd/amd.c (init_global_options): set default global options.
-
- * amd/amd.h (CFM_DEFAULT_FLAGS): define default options which
- are always on (plock and use_tcpwrappers).
-
- * scripts/amd.conf-sample: reorganize values per option so default
- one is listed first.
-
-2003-07-23 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * tasks: trim old stuff. Discuss new parser.
-
- * amd/conf.c (set_conf_kv): initialize the very first map in conf
- file from global defaults. Bug fix which was introduced after
- conf.c code restructuring.
-
-2003-07-18 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * m4/macros/header_templates.m4: template for
- HAVE_EXTERN_HOSTS_CTL.
-
- * include/am_defs.h: define extern for hosts_ctl() if needed.
-
- * configure.in (AMU_CHECK_EXTERNS): check for extern definition
- for libwrap's hosts_ctl() (FreeBSD 5.0 doesn't have it).
-
- * m4/macros/check_extern.m4: include tcpd.h if it and libwrap exist.
-
-2003-07-18 Erez Zadok <ezk@cs.sunysb.edu>
-
- * hlfsd/hlfsd.h: redundant extern for mboxfile removed.
-
- * amd/amq_svc.c (amq_program_1): only check for tcpwrappers if
- amd.conf global option use_tcpwrappers=yes.
-
- * scripts/amd.conf.5, scripts/amd.conf-sample (use_tcpwrappers),
- doc/am-utils.texi (use_tcpwrappers Parameter): document new
- amd.conf global option.
-
- * amd/conf.c (gopt_use_tcpwrappers): define a new amd.conf global
- option called use_tcpwrappers ("no" by default).
-
- * amd/amq_svc.c (amqsvc_is_client_allowed): include tcpd/libwrap
- code only if both libwrap and tcpd.h exist.
- (amq_program_1): log warning when an Amq service client is denied,
- and a debug message when a client is allowed.
-
- * amd/amd.h (CFM_USE_TCPWRAPPERS): define [global] amd.conf flag.
- (AMD_SERVICE_NAME): define AMD_SERVICE_NAME for tcpd/libwrap.
-
- * include/am_defs.h: include tcpd.h if available and libwrap
- available.
-
- * configure.in: check for tcpd.h.
-
-2003-07-18 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * scripts/expn.1, amd/amd.8 amq/amq.8, fixmount/fixmount.8,
- hlfsd/hlfsd.8, scripts/expn.1: remove ".PD 0" nroff command
- because it removes useful spaces in between paragraphs. Based on
- smaller patch from Philippe Troin <phil@fifi.org>.
-
-2003-07-17 Philippe Troin <phil@fifi.org>
-
- * amq/amq.8: Document the libwrap/amd behavior.
-
- * amd/amq_svc.c (libwrap_check_client): New function to validate
- an amq connection with libwrap.
- (amq_program_1): Call libwrap_check_client() and close the
- connection if libwrap does not allow it.
-
- * configure.in: Check for the tcp wrappers library.
-
-2003-07-17 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * amd/amq_subr.c (amqproc_mnttree_1_svc, amqproc_stats_1_svc,
- amqproc_getmntfs_1_svc, xdr_amq_mount_tree), hlfsd/hlfsd.c
- (hlfsd_init): cast pointers to void* before casting them to
- another type, to avoid gcc-3.3 -Wall warnings.
-
- * fsinfo/*.[hc]: rename fsinfo function log() to fsi_log(), to
- avoid conflict with builtin function in gcc-3.3.
-
-2003-07-17 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * scripts/amd.conf-sample: Remove obsolete comment.
-
-2003-07-16 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/info_file.c (read_line): check for errors from fgets().
- Although rare, they can occur upon disk or network failures.
- Patch from Nick Williams <Nick.Williams@morganstanley.com>.
-
-2003-07-16 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * BUGS (Solaris 8): Update patch revisions, mention old autofs
- patches, fix filenames and rpcgen command.
-
-2003-07-15 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * doc/am-utils.texi (map_defaults Parameter): document new
- map_defaults option.
-
- * scripts/amd.conf.5: document new map_defaults option.
-
- * scripts/amd.conf-sample (map_type): show examples of new
- map_defaults option.
-
- * amd/mapc.c (mapc_create): initialize mnt_map->cfm field to NULL.
-
- * amd/get_args.c (get_args): call process_all_regular_maps().
-
- * amd/conf.c: keep head and tail of cfm list.
- (init_cf_map): reworked reset_cf_map. This one doesn't reset a
- globaly reused cfm, but rather just inherits [global] options.
- (set_conf_kv): just store global/map options without actually
- creating any mnt_map's. Essentially, we now parse the whole
- amd.conf file, and then try to process the maps one at a time.
- (process_one_regular_map): new function to process one map, just
- renamed from process_regular_map.
- (process_all_regular_maps): new exported function to process all
- maps. No need for hacky process_last_map().
- (find_cf_map): new exported function to return a cf_map_t given a
- map's mount point (e.g., /home or /net).
-
- * amd/amfs_generic.c (amfs_parse_defaults): find if amd.conf
- specificed a map_defaults for a given map. If so, use that
- instead of the /defaults that came from the map itself. Also
- restructure code a bit so it's not one huge long "if" statement.
-
- HACK ALERT: there's no easy way to find out what the map mount
- point is at this point, so I am forced to initialize the
- mnt_map->cfm field here for the first time, upon the very first
- search for a /defaults entry in this map. This initialization is
- much better done in mapc_create(), but it's impossible to do that
- there with the current code structure.
-
- * amd/amd.h: struct cf_map becomes linked list. struct mnt_map
- includes pointer to cf_map_t, amd.conf defaults and options for a
- given map. extern cleanups.
-
-2003-07-15 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * amd/info_hesiod.c (hesiod_search): It's not possible to have a
- key such as ".access" in a hesiod map as that would imply a null
- node in the DNS tree. So a lookup for such a key must clearly
- fail. With the current info_hesiod.c it does (after calling
- hes{,iod}_resolve) but returns an error that confuses some
- programs - eg. apache. This patch shortcuts the process and just
- returns ENOENT for any key starting with ".". Patch submitted by
- by Mark Davies <mark@mcs.vuw.ac.nz>.
-
- * include/am_utils.h (CALLOC): redefine macro to use xzalloc, not
- fsinfo's own xcalloc.
-
- * fsinfo/fsi_util.c (xcalloc): remove redundant function.
-
-2003-07-14 Erez Zadok <ezk@cs.sunysb.edu>
-
- * include/am_compat.h (MNTTAB_OPT_XLATECOOKIE): The NetBSD
- xlatecookie NFS option doesn't work as MNTTAB_OPT_XLATECOOKIE is
- never defined. Define it as needed. Patch from Mark Davies
- <mark@mcs.vuw.ac.nz>.
-
-2003-07-14 Ion Badulescu <lionut@gonzales.badula.org>
-
- * BUGS (Note): document the Solaris 8 bug (the upgrade to autofs
- v4 without updating all the header files)
-
-2003-07-13 Ion Badulescu <lionut@gonzales.badula.org>
-
- * NEWS, tasks: updated
-
- * amd/amfs_generic.c (free_continuation): free _all_ mntfs's in
- the am_mfarray, unconditionally
- (amfs_bgmount): call free_mntfs when we're done with a mntfs, call
- dup_mntfs when starting processing of a new one; make sure we
- always go through 'goto failed' for a failed mntfs; use the error
- code returned by autofs_get_fh()
-
- * conf/autofs/autofs_linux.c (autofs_get_fh): return proper error
- codes in case of problems
-
-2003-07-13 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * BUGS: Document buggy behavior of Solaris /usr/ccs/bin/lex. In
- short, use flex.
-
-2003-07-13 Erez Zadok <ezk@a-hpux11.fsl.cs.sunysb.edu>
-
- * fsinfo/fsi_lex.l, amd/conf_tok.l: allocate more output slots so
- lex scanners don't run out of mem.
-
-2003-07-13 Ion Badulescu <lionut@gonzales.badula.org>
-
- * amd/amfs_generic.c (amfs_lookup_mntfs): ditto as below for the
- special provision
-
- * amd/mntfs.c (find_mntfs): compare the filesystem type
- (i.e. mf_ops) in addition to mf_info; the special provision
- mentioned below is really for any filesystem already mounted on
- our mount point, not just for inherited filesystems
-
-2003-07-13 Erez Zadok <ezk@whitestar.dyn.optonline.net>
-
- * doc/Makefile.am (install-html): build per-chapter HTML manual,
- as well as manual in one big HTML file.
-
- * doc/am-utils.texi: Minor corrections. Ack Ion's autofs work.
- Ack maintainers. New section on How to get additionl info,
- including the Amd book. Correct stale URLs and Emails.
-
- * amd/amd.8, amq/amq.8, amq/pawd.1, fixmount/fixmount.8,
- fsinfo/fsinfo.8, hlfsd/hlfsd.8, mk-amd-map/mk-amd-map.8,
- scripts/amd.conf.5, scripts/automount2amd.8,
- wire-test/wire-test.8: include references to info pages, proper
- authors, am-utils Web page, and amd book.
-
-2003-07-13 Ion Badulescu <lionut@gonzales.badula.org>
-
- * amd/mntfs.c (find_mntfs): re-add the check for mf_info, but with
- a special provision for inherited filesystems. This unbreaks the
- handling of parallel mounts
-
- * amd/amfs_generic.c (amfs_lookup_mntfs): for restarted
- filesystems, there can be no alternative mntfs to try to mount
-
-2003-07-13 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/amd.8: reference am-utils info page in amd man page, as per
- Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>.
-
- * fsinfo/fsinfo.h, fsinfo/fsinfo.c (fsi_get_args): don't use
- yywrap() if it doesn't exist.
-
- * amd/conf_parse.y, amd/conf_tok.l, fsinfo/fsi_gram.y,
- fsinfo/fsi_lex.l: fixes to support old flex 2.5.4, as well as the
- newer flex 2.5.31 (beta development). These include resolving
- conflicts with yylineno, unput() vs. nounput(), etc.
-
-2003-07-13 Ion Badulescu <lionut@gonzales.badula.org>
-
- * amd/amfs_generic.c (amfs_cont): check for (am_error > 0) before
- calling assign_error_mntfs()
- (amfs_generic_mount_child): ditto
-
- * amd/autil.c (assign_error_mntfs): move the check for
- (am_error > 0) up into the caller, it's less confusing that way
-
- * tasks: some updates
-
- * conf/transp/transp_tli.c (check_pmap_up): new function which
- detects if the remote portmapper is functional
- (amu_clnt_create_best_version): removed
- (get_nfs_version): use a much simplified version of the old
- amu_clnt_create_best_version(), based on clnt_create_vers() and
- its _timed() counterpart
-
- * conf/transp/transp_sockets.c (check_pmap_up): new function which
- detects if the remote portmapper is functional
- (pmap_ping): deleted
- (get_nfs_version): removed calls to pmap_ping, already done by
- caller
-
- * amd/srvr_nfs.c: call check_pmap_up() before continuing with
- get_nfs_version()
-
- * amd/amfs_generic.c: updated a couple of log messages
-
- * configure.in: detect clnt_create_vers and clnt_create_vers_timed;
- changed LIBTOOL versioning to 3:0:0
-
-2003-07-12 Ion Badulescu <lionut@gonzales.badula.org>
-
- * conf/autofs/autofs_linux.h (AUTOFS_HOST_FS_FLAGS): removed
- FS_AUTOFS because the host mount cannot be a top level mount
- (AUTOFS_DIRECT_FS_FLAGS): removed FS_AUTOFS because Linux autofs
- doesn't support direct mounts
-
-2003-07-12 Erez Zadok <ezk@whitestar.dyn.optonline.net>
-
- * amd/conf_parse.y, amd/conf_tok.l: pretty comments on # cpp
- macros.
-
-2003-07-10 Ion Badulescu <ionut@buggy.badula.org>
-
- * include/am_utils.h (dlog): improved version for gcc, using
- vararg macros
-
- * amd/rpc_fwd.c (fwd_packet): unused variable when compiling
- without debugging
-
-2003-07-10 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * include/am_utils.h (dlog): change the #define of non-debugging
- dlog to "nothing" so that all that'll be left behind is a list of
- args in parenthesis (arg,arg,...). GCC and other native C
- compilers seem OK with it, even if it doesn't optimize away the
- whole debugging line.
-
- * ltmain.sh: was from libtool 1.4.2. updated to libtool 1.4.3,
- the latest on RH9 systems (but is not the latest libtool
- available). Stay with stable version in preparation for 6.1
- release.
-
- * config.{guess,sub}, doc/texinfo.tex: update to latest off of
- ftp.gnu.org.
-
-2003-07-09 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * amd/amfs_inherit.c (amfs_inherit_inherit): don't use // C++
- style comments: breaks non-C++ compilers (like AIX xlC 6)
-
-2003-07-02 Ion Badulescu <ionut@buggy.badula.org>
-
- * doc/am-utils.texi (opts Option): document ignore_portmapper option
-
- * conf/transp/transp_sockets.c (get_nfs_version): better
- protocol/version cycling while probing remote server; better log
- messages
-
- * amd/srvr_nfs.c (start_ping): improved log message
- (find_nfs_srvr): always use requested nfs_version/nfs_proto; make
- sure we have a valid NFS port; start the server as "valid, down" if
- the remote portmapper tells us the NFS service is not running;
- implement the "ignore_portmapper" pseudo-mount option
-
- * amd/rpc_fwd.c (fwd_packet): better debug messages
-
- * amd/ops_nfs.c (got_nfs_fh): log a messages if a root fh is
- denied; call wakeup even if mountd call fails
-
- * amd/amq_subr.c (xdr_amq_mount_info_qelem): use FSRV_ISUP/ISDOWN
- instead of checking the flags directly
- * amd/srvr_amfs_auto.c (free_srvr): ditto
-
- * amd/amfs_generic.c (amfs_bgmount): refined some error/debug
- messages
-
- * amd/amd.h (FSRV_ERROR): new macro
- (FSRV_ISDOWN, FSRV_ISUP): a server that doesn't exist (i.e. it's a
- local filesystem) is always up
-
-2003-06-30 Erez Zadok <ezk@cs.sunysb.edu>
-
- * amd/autil.c (am_mounted): set AMF_NOTIMEOUT if either unmount or
- umount options are present.
-
- * doc/am-utils.texi (Program Filesystem): document alias options
- to unmount:=, umount:=.
-
- * amd/opts.c (expansions): initialize opt_umount.
- (to_free): initialize opt_umount.
-
- * amd/amfs_program.c (amfs_program_match): ensure that only one of
- umount:= or unmount:= options are specified, but that at least one
- of them is listed.
-
- * amd/amd.h: support unmount:=XXX as well as umount:=XXX (too
- annoying in type:program, when one forgets the 'n' in "unmount").
- They are two separate fields, so we can catch mistakes when
- someone tries to define both options.
-
- * doc/am-utils.texi (Program Filesystem): explain that both mount
- and unmount options must be specified. Correct example to show
- both.
-
-2003-06-25 Erez Zadok <ezk@cs.sunysb.edu>
-
- * XXX: beginning of new amd.conf option map_defaults: will parse
- the option and set remember it in the right places. Need to
- document this and actually hook it up with the rest of the code.
- Any volunteers? :-)
-
- * scripts/amd.conf-sample (map_defaults): example of map_defaults
- amd.conf option.
-
- * amd/conf.c (reset_cf_map): initialize global and per-mount
- map_defaults.
- (gopt_map_defaults): parse global map_defaults.
- (process_regular_option,ropt_map_defaults): parse per-map
- map_defaults amd.conf option.
-
- * amd/amd.h: a place to store global and per-mount map_defaults.
-
- * BUGS: more notes about AIX 5.2 problems and how to overcome
- them.
-
-2003-06-10 Erez Zadok <ezk@cs.sunysb.edu>
-
- * doc/Makefile.am: force version.texi to be rebuilt regardless of
- maintainer mode. Silly Automake will not build version.texi if
- maintainer mode is off (this is hardcoded into the automake perl
- script!). According to the Automake maintainers, users should
- always build in CVS trees with maintainer-mode on; but what if I
- don't want to?! I don't want to distribute Makefiles with
- maintained rules in them to users. The Automake maintainers also
- say that "make dist" will rebuild version.texi no matter what. I
- find that not to be the case. It failed to run a "make" before
- "make dist" because version.texi doesn't exist! Chicken and Egg
- situation. So, until Automake deals with version.texi in a more
- flexible and friendly manner, I adapted a rule to build
- version.texi and inserted it in this Makefile.am.
-
-2003-06-09 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * mk-amd-map/mk-amd-map.c (main): open temp db file using O_EXCL,
- next best thing to using mkstemp(). Patch from Hendrik Scholz
- <hscholz@raisdorf.net>.
-
-2003-05-08 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * libamu/mount_fs.c (compute_automounter_mount_flags): use
- MNT2_GEN_OPT_AUTOMNTFS if available; minor cleanup
-
- * m4/macros/header_templates.m4: added template for
- MNT2_GEN_OPT_AUTOMOUNTED
-
-2003-05-01 Ion Badulescu <ionut@nicu.badula.org>
-
- * amd/ops_xfs.c (mount_xfs): compile fix (s/genflags/flags/)
-
-2003-04-23 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * conf/transp/transp_sockets.c (create_amq_service): minor cpp
- directive indentation and commenting.
-
-2003-04-22 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/transp/transp_sockets.c (create_amq_service): Ugly *BSD fix
- for an RPC library DoS issue (original patch from Martin Blapp,
- massaged into something more digestable by me)
-
-2003-04-14 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/autofs/autofs_solaris_v2_v3.c: removed autofs_free_data(),
- left over from the recent cleanup
-
-2003-04-13 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * doc/Makefile.am (DVIPS): use proper options for dvips.
-
- * doc/am-utils.texi (opts Option): document new 'unmount' option,
- and better explain the 'nounmount' option. Also some misc options
- for better generation of html manual.
-
- * doc/Makefile.am (install-html): support newer texi2html 4.0
- options, as older options were renamed or changed behavior.
-
- * amd/autil.c (am_mounted): support new 'unmount' option, to allow
- all file system mounts to timeout and thus expire. This option is
- useful for removable local media such as CD-ROMs, USB drives,
- etc. so they can expire when not in use, and get unmounted (such
- drives can get work out when they keep spinning). Patch from
- Christos Zoulas <christos@zoulas.com> (originally from Koji
- Imada).
-
-2003-04-10 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * configure.in: use AM_MAINTAINER_MODE, so maintainer-only rules
- do not get added to Makefiles by default (they are confusing to
- users who don't have autotools installed).
-
-2003-04-09 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * amd/mntfs.c (find_mntfs): revert the "change of philosophy" (see
- the 2001-05-23 entry) back to the 6.0 code
-
-2003-04-04 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * libamu/xutil.c (switch_to_logfile): don't try to print logfile
- if it is null (strlen core dump on solaris). Bug report from John
- P. Rouillard <rouilj@ieee.org>.
-
-2003-03-31 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * fsinfo/fsinfo.8: typo co-ordinate -> coordinate. Typo report
- from Perry E. Metzger" <perry@piermont.com>.
-
-2003-03-25 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * include/am_defs.h: Don't include malloc.h if stdlib.h exists,
- because modern systems (e.g., BSD) complain if you use malloc.h
- instead of stdlib.h. Let's hope there are no systems out
- there that need both.
-
-2003-03-20 Erez Zadok <ezk@suse73.fsl.cs.sunysb.edu>
-
- * minor new port: sparc64-unknown-linux-suse7.3.
-
-2003-03-20 Erez Zadok <ezk@a-freebsd5.fsl.cs.sunysb.edu>
-
- * minor new port: i386-unknown-freebsd5.0.
-
- * configure.in: detect nfsclient/nfsargs.h.
-
- * conf/nfs_prot/nfs_prot_freebsd3.h: include
- <nfsclient/nfsargs.h>, needed in FreeBSD 5.0.
-
-2003-03-15 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * amd/amd.8, amd/amd.8, fixmount/fixmount.8, hlfsd/hlfsd.8,
- scripts/amd.conf.5, scripts/expn.1: minor spell checking and
- extraneous space elimination.
-
-2003-03-07 Ion Badulescu <ionut@buggy.badula.org>
-
- * conf/autofs/autofs_linux.c (autofs_get_fh): don't leak file
- descriptors if limit exceeded
- (autofs_mounted): call autofs_get_mp(); init am_autofs_ttl
- (autofs_release_fh): release pending_mounts and pending_umounts
- queues
- (autofs_timeout_mp): update am_autofs_ttl instead of am_ttl
-
- * amd/mntfs.c (init_mntfs): delete initialization of removed
- mf_autofs_fh
- (uninit_mntfs): delete call to autofs_release_fh()
-
- * amd/map.c (init_map): init autofs_fh to 0, delete initialization
- of removed autofs_data
- (free_map): release autofs_fh after unmounting map; delete call to
- autofs_free_data()
- (umount_exported): call autofs_release_mp() prior to unmounting
- autofs f/s
- (unmount_mp): ditto
- (free_map_if_success): call autofs_get_mp() if unmounting fails
- (timeout_mp): use the dedicated am_autofs_ttl timeout for f/s-wide
- timeouts instead of the per-mountpoint am_ttl
-
- * amd/autil.c (am_unmounted): release autofs_fh after unmounting
- autofs f/s
-
- * amd/amfs_generic.c (amfs_cont): release autofs_fh if mounting
- autofs f/s fails;
- (amfs_bgmount): ditto
-
- * amd/amd.h: moved autofs_fh from mntfs to am_node, since it's
- more related to the mount point than to the f/s mounted;
- added am_autofs_ttl to am_node, for running expirations on entire
- filesystems
-
- * conf/autofs/autofs_*: autofs_get_fh() returns int instead of
- autofs_fh_t *; autofs_release_fh() now takes an am_node * parameter
- instead of autofs_fh_t *, in an effort to not deal with
- autofs-specific data structures outside autofs code;
- new methods autofs_get_mp() and autofs_release_mp(), which
- acquire/release autofs resources to allow clean unmount attempts;
- nuke autofs_data_t, never used
-
- * amd/amd.h: prototypes for new and changed autofs functions
-
-2003-03-07 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * amd/nfs_subr.c (do_readlink): eliminate third argument, never used
- (nfsproc_getattr_2_svc): reorganize the code a bit
-
- * amd/map.c (mk_fattr): take a nfsfattr * argument instead of an
- am_node * argument
-
- * amd/amd.h: changed prototype for mk_fattr()
-
- * amd/autil.c (am_unmounted): when remounting, use the parent
- node's lookup_child() and mount_child() operations, not the
- generic ones
-
- * amd/amfs_generic.c (amfs_cont): minor code optimization
-
-2003-03-06 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * amd/amfs_auto.c: lots of renames and code moving:
- amfs_auto_match() -> amfs_generic_match(), moved to generic;
- amfs_auto_mkcacheref() -> amfs_mkcacheref(), moved to autil.c;
- amfs_auto_mounted() -> amfs_generic_mounted(), moved to generic;
- amfs_auto_umount() -> amfs_generic_umount(), moved to generic;
- free_continuation(): moved to generic, made static;
- assign_error_mntfs(): moved to autil.c;
- amfs_auto_cont() -> amfs_cont(), moved to generic, made static;
- amfs_auto_retry() -> amfs_retry(), moved to generic, made static;
- try_mount() + mount_node() -> mount_node(), moved to map.c
- amfs_auto_bgmount() -> amfs_bgmount(), moved to generic;
- amfs_parse_defaults(): moved to generic;
- amfs_auto_lookup_node() -> amfs_lookup_node(), moved to generic;
- amfs_auto_lookup_one_mntfs() -> amfs_lookup_one_mntfs(), in generic;
- amfs_auto_lookup_mntfs() -> amfs_lookup_mntfs(), moved to generic;
- amfs_auto_mount_child() -> amfs_generic_mount_child(), in generic;
- amfs_auto_lookup_child() -> amfs_generic_lookup_child(), in generic;
- next_nonerror_node(): moved to autil.c;
- amfs_auto_readdir() -> amfs_generic_readdir(), moved to readdir;
- amfs_auto_readdir_browsable() -> amfs_readdir_browsable(), in readdir;
-
- * amd/amfs_toplvl.c: mount_amfs_toplvl() renamed to amfs_mount()
- and moved to autil.c
-
- * amd/readdir.c, amd/amfs_generic.c: new files with stuff ripped
- out of amd/amfs_auto.c
-
- * amd/amd.h: struct continuation moved to generic.c; prototypes
- for the renamed functions; NumChild renamed to NumChildren
-
- * amd/map.c: collaped unmount_node_wrap() and unmount_node() into
- the latter
-
- * amd/mapc.c: key_already_in_chain(): moved to readdir.c;
- make_entry_chain(): moved to readdir.c;
-
- * amd/srvr_amfs_auto.c: find_amfs_auto_srvr() renamed to
- amfs_generic_find_srvr()
-
- * amd/amfs_*.c: adjustments for the renames above
-
- * amd/ops_*.c: low-level filesystems don't need a find_server()
- method
-
- * amd/Makefile.am: added amfs_generic.c and readdir.c
-
- * doc/am-utils.texi: minor clarification for auto maps
-
-2003-03-06 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * amd/amd.h: moved lots and lots of amd-only stuff here, from
- include/am_utils.h; changed task_fun, cb_fun and fwd_fun typedefs
- to be function typedefs, not pointer to function typedefs
-
- * include/am_utils.h: see above
-
- * amd/ops_nfs.c, amd/rpc_fwd.c, amd/sched.c: adjustments for
- function typedef changes
-
-2003-03-05 Erez Zadok <ezk@cs.sunysb.edu>
-
- * BUGS: record IBM's patch number for the AIX 5.2 NFS over IPv6
- bug.
-
-2003-02-02 Erez Zadok <ezk@siamese.fsl.cs.sunysb.edu>
-
- * NEWS: minor new port: ia64-unknown-linux-rh2.1AS
-
-2003-01-31 Ion Badulescu <ion@console.limebrokerage.com>
-
- * m4/macros/os_cflags.m4: rhapsody and darwin are the same
-
- * amd/autil.c (mount_node): vastly simplified, just a wrapper now
-
- * amd/amfs_inherit.c (amfs_inherit_mount): remove the am_mounted()
- hack, we now do it properly in the generic code
-
- * amd/amfs_auto.c (amfs_auto_bgmount): get the autofs_fh _before_
- forking the child; set and reset MFF_MOUNTING here, not in
- mount_node(), because the latter might be running in child
- context; call am_mounted() after a successful foreground mount
-
-2003-01-29 Ion Badulescu <ionut@moisil.badula.org>
-
- * configure.in: new flag --with[out]-ndbm; don't pull in libldap
- if building --without-ldap; look for the gdbm/ndbm.h header; make
- explicit the dependency between the ndbm headers and libraries;
- define NEW_DBM_H as the ndbm header that should be used
-
- * include/am_defs.h: simply include NEW_DBM_H for ndbm stuff,
- instead of trying to second-guess configure
-
- * m4/macros/header_templates.m4: new template for NEW_DBM_H
-
- * m4/macros/check_map_funcs.m4:
- (ac_upcase_map_name): use the third argument correctly
-
- * ltmain.sh: working version from libtool-1.4.2-7
-
- * buildall: print the entire configure command, including extra
- arguments; pass each of the extra arguments separately, not
- commingled into one
-
-2003-01-28 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * include/am_utils.h (DEBUG_MNTTAB): define outside of #ifdef
- DEBUG; it is not used without DEBUG, but it is referenced at
- compile time. Bug report from John Kilburg <john@physics.unlv.edu>.
- (D_ALL): don't include D_XDRTRACE, too verbose and normally
- unnecessary
-
-2003-01-28 Erez Zadok <ezk@cs.sunysb.edu>
-
- * ltmain.sh, config.guess, config.sub, doc/texinfo.tex: updates
- from latest official GNU versions.
-
-2003-01-25 Erez Zadok <ezk@cs.sunysb.edu>
-
- * BUGS (Note): document AIX-5.1 NFS-client side bug (hangs in
- vmount).
-
-2003-01-25 Ion Badulescu <ionut@moisil.badula.org>
-
- * Released beta version 6.1b2
-
-2003-01-24 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/autil.c (am_unmounted): reset MFF_MKMNT from mf_flags when
- calling rmdirs() on mountpoint
-
- * amd/amfs_auto.c (amfs_auto_bgmount): ditto
-
- * amd/amfs_nfsl.c (amfs_nfsl_umounted): ditto
-
- * doc/am-utils.texi (opts Option): "sftlookup" -> "softlookup"
-
- * NEWS: "sftlookup" -> "softlookup"
-
- * amd/ops_nfs.c (nfs_mount): "sftlookup" -> "softlookup", also
- check for "nosoftlookup" in combination with "soft"
-
-2003-01-23 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * m4/macros/check_nfs_fh_dref.m4: darwin/rhapsody is another
- freebsd22 derivative
-
- * NEWS: updated for Darwin changes
-
- * .cvsignore: added A.i386-apple-darwin6.0
-
- * m4/macros/os_cflags.m4: add -D_P1003_1B_VISIBLE to cflags for
- Darwin
-
-2003-01-23 Erez Zadok <ezk@cs.sunysb.edu>
-
- * conf/mount/mount_aix.c (mount_aix3): clean back this file from
- all the debugging cruft that is no longer needed (and really was
- never needed in the first place).
-
-2003-01-10 Erez Zadok <ezk@cs.sunysb.edu>
-
- * scripts/test-amd.{misc,conf}: simple amd.conf and amd.misc
- (map) files for testing basic amd functionality such as whether it
- can mount its own mount NFS points.
-
-2002-12-28 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/srvr_nfs.c (start_nfs_pings): don't set FSF_PINGING if
- pings are disabled
-
- * libamu/xdr_func.c (xdr_ftype): use a local enum_t variable
- instead of casting the pointer to (enum_t *)
- (xdr_mountstat3): ditto
- (xdr_nfsstat): ditto
-
- * libamu/misc_rpc.c (make_rpc_packet): fix make_rpc_packet() on
- 64-bit big-endian platforms, bug report from Bill Fenner
- <fenner@research.att.com>
-
- * configure.in: increase library patchlevel
-
- * libamu/xutil.c (amu_release_controlling_tty): close and reopen
- file descriptors 0,1,2 before calling setsid()
-
-2002-12-27 Erez Zadok <ezk@cs.sunysb.edu>
-
- * updated copyright year to 2003 on all files
-
-2002-12-10 Erez Zadok <ezk@localhost.localdomain>
-
- * rename "aux/" subdir into "m4/" so as to avoid problems with
- MS-DOS systems (where "AUX" is a reserved name). This required
- fixing numerous files.
-
-2002-12-10 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * configure.in: don't check for bad hasmntopt() function if
- hasmntopt() doesn't exist on the system, because we will replace
- it with our own version anyway.
-
- * conf/transp/transp_sockets.c (amu_get_myaddress): use "%lx" in
- dlog because htonl() returns a u_long.
-
-2002-12-10 Erez Zadok <ezk@localhost.localdomain>
-
- * include/am_defs.h: use system's hasmntopt() only if it is found
- and it is not buggy.
-
- * libamu/hasmntopt.c (nextmntopt): isspace() takes an int, not a
- char.
-
- * amd/am_ops.c, amd/amfs_auto.c, amd/autil.c, amd/nfs_subr.c,
- amd/ops_cdfs.c, amd/ops_nfs.c, amd/srvr_nfs.c, libamu/hasmntopt.c,
- libamu/mount_fs.c, libamu/mtab.c: rename all uses of hasmntopt()
- to amu_hasmntopt(). Don't use hasmntopt() directly any more!
-
- * aux/macros/func_bad_hasmntopt.m4: new M4 macro to test for a bad
- hasmntopt() function, which incorrectly finds the option "soft" in
- a string "hard,softlookup,ro".
-
- * libamu/hasmntopt.c (hasmntopt): use 'const' on two args to
- hasmntopt(), to match what most systems use.
-
- * aux/macros/header_templates.m4: template for HAVE_BAD_HASMNTOPT.
-
- * configure.in: invoke test for bad hasmntopt()
-
- * NEWS: minor new port, i386-pc-linux-rh8.0.
- Mention autofs-v4 on solaris9 works.
-
- * bootstrap: remove any autom4te-*.cache directories, now that
- autoconf uses a version number for them.
-
-2002-12-09 Ion Badulescu <ionut@moisil.badula.org>
-
- Patches from Christos Zoulas:
-
- -1- am_utils.h: add full prototypes
- -2- amfs_auto.c make functions static and add prototypes
- -3- map.c: kill double free
- -5- transp_sockets.c: add full prototypes
-
-2002-12-09 Ion Badulescu <ionut@moisil.badula.org>
-
- * NEWS: updated
-
- * doc/am-utils.texi (opts Option): document sftlookup
-
- * conf/autofs/autofs_solaris_v2_v3.c: compile fixes
-
-2002-11-22 Erez Zadok <ezk@filer.fsl.cs.sunysb.edu>
-
- * amd/info_ldap.c (amu_ldap_rebind): gopt.ldap_cache_seconds is
- %ld not %d.
-
-2002-11-21 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * {amd,fsinfo}/Makefile.am: remove special rules for processing
- yacc/lex files, now that autoconf/automake properly handle them
- better (esp. now that bison 1.75 behaves differently than older
- bison versions).
-
-2002-11-21 Erez Zadok <ezk@cs.sunysb.edu>
-
- * config.guess.long: updated script so it will properly find the
- version number of the new Itanium 2 machines running "Red Hat
- Linux Advanced Workstation release 2.1AW (Derry)". The script now
- will report ia64-unknown-linux-rh2.1AW.
-
-2002-11-20 Ion Badulescu <ionut@moisil.badula.org>
-
- * amfs_auto_bgmount(): almost complete rewrite
-
- * fixed amfs_inherit to do the right thing and not dereference
- freed mntfs'es
-
- * #if 0'ed bogus code in fh_to_mp3() -- it is now done properly in
- amfs_autofs_lookup_child()
-
- * release the autofs_fh only in one place
-
- * remove the mountpoint only if mf_refc == 1
-
- * print the mntfs type in free_mntfs()
-
- * new pseudo-mount option 'sftlookup' which causes lookups to
- mounted shares from downed servers to return EIO; the default
- depends on whether the mount is 'hard' or 'soft'
-
- * improved querying of supported NFS versions on the server --
- don't even try if it's known to be down
-
- * solaris autofs mount code moved to transp_{sockets,tli}.c
-
- * incipient (non-functional) AIX autofs support
-
-2002-11-11 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * doc/am-utils.texi (Keep-alives): removed outdated info about not
- maintaining the state of TCP NFS servers
-
-2002-11-04 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * include/am_utils.h: prototype for ops_search()
-
- * amd/am_ops.c (ops_search): new function for searching the right
- set of ops for a given filesystem type
-
- * amd/restart.c (restart): cleanup and split into two functions in
- preparation for handling the restart of amd's own mount points
- (restart_fake_mntfs): new function, factored out from restart()
-
-2002-11-04 Ion Badulescu <ionut@buggy.badula.org>
-
- * amd/ops_cdfs.c (mount_cdfs): remove special code for loop device
- (cdfs_umount): ditto
-
- * conf/mount/mount_linux.c (mount_linux): factor it out to
- mount_linux_nfs() and mount_linux_nonfs()
- (mount_linux_nonfs): generalize loop device support to all
- filesystems (not just cdfs); make it automatic for anything that's
- a regular file
- (parse_opts): deprecate the explicit "loop" mount option
- (do_mount_linux): minor cleanup
-
- * conf/umount/umount_default.c (umount_fs2): release loop device
- on umount()
-
-2002-11-03 Erez Zadok <ezk@cnm20>
-
- * include/am_defs.h: moved #include of net/if.h above net/route.h,
- because on AIX 5.2 if.h is needed for route.h (let's hope it
- doesn't break things on other systems).
-
- * include/am_defs.h: AIX 5.2 needs struct sigevent from signal.h
- to be defined, but I don't want to move the inclusion of signal.h
- this early into this file. Luckily, amd doesn't need the size of
- this structure in any other structure that it uses. So we
- sidestep it for now.
-
- * conf/nfs_prot/nfs_prot_aix5_2.h: AIX 5.2 wants 'struct pathcnf',
- but I couldn't find its definition anywhere. Luckily, amd doesn't
- need the size of this structure in any other structure that it
- uses. So we sidestep it for now.
-
-2002-11-02 Erez Zadok <ezk@cs.sunysb.edu>
-
- * config.guess, config.sub, doc/texinfo.tex: updates from
- the latest GNU distributions (2002-09-05).
-
-2002-10-30 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * conf/nfs_prot/nfs_prot_aix5_2.h: add more definitions from
- mount.h for NFSOPT_* and NFSMNT_*.
- Don't use typedefs that aren't found in system header files.
-
-2002-10-30 Erez Zadok <ezk@cs.sunysb.edu>
-
- * Makefile.am (EXTRA_DIST_CONF): distribute nfs_prot_aix5_2.h.
-
- * conf/nfs_prot/nfs_prot_aix5_2.h: new file.
-
- * aux/macros/struct_nfs_args.m4 (ac_cv_have_struct_nfs_args): look
- for "struct aux52_nfs_args".
-
- * aux/macros/check_nfs_prot_headers.m4: define new header file for
- AIX 5.2.
-
-2002-10-21 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * scripts/amd.conf.5 (ldap_proto_version): document in amd.conf
- man page.
-
- * scripts/amd.conf-sample (ldap_proto_version): show example of use
-
- * doc/am-utils.texi (ldap_proto_version Parameter): document new
- amd.conf option.
-
- * amd/conf.c (gopt_ldap_proto_version): new conf function to
- support ldap_proto_version amd.conf parameter.
-
- * amd/amd.h: field to hold LDAP protocol version.
-
- * amd/amd.c (init_global_options): set default for
- ldap_proto_version. ldap_proto_version patch from George Ross
- <gdmr@dcs.ed.ac.uk> and Tim Colles <timc@inf.ed.ac.uk>.
-
- * amd/info_ldap.c (amu_ldap_unbind): ignore SIGPIPE errors while
- unbinding from an LDAP server that may have been restarted. Fix
- from George Ross <gdmr@dcs.ed.ac.uk>.
-
-2002-09-17 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * remove all autoconf stuff added for sys_nerr
-
- * amq/amq.c, libamu/xutil.c, hlfsd/hlfsd.c: always use strerror
-
- * libamu/strerror.c: more explicit text for unknown errno's
-
-2002-10-01 Erez Zadok <ezk@cs.sunysb.edu>
-
- * include/am_defs.h: define "extern int sys_err" if needed.
-
- * aux/macros/header_templates.m4: template for
- HAVE_EXTERN_SYS_NERR.
-
- * hlfsd/hlfsd.h, libamu/xutil.c (expand_error), amq/amq.c
- (show_mi): remove "extern int sys_err"
-
- * configure.in: execute test for "extern int sys_err"
-
- * Makefile.am (EXTRA_DIST_AUX): distribute new extern_sys_err.m4 file.
-
- * aux/macros/extern_sys_nerr.m4: new test to check for existence
- of "extern int sys_nerr" definition in system headers.
-
-2002-09-17 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * libamu/xutil.c (dbg_opt): bring comments in line with the code
-
- * hlfsd/hlfsd.c (main): use amuDebug() instead of touching
- debug_flags directly
-
- * amd/amd.c (main): don't init debug_flags, leave it as zero (no
- debugging by default)
-
-2002-09-11 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- Debug code sanitization:
-
- - amuDebug() becomes an expression, and explicit if() statements
- are added around it throughout the code
- - amuDebugNo() goes away (ugh!)
- - D_AMQ, D_DAEMON and D_FORK reverse their meaning
- - D_ALL contains only options that don't affect amd's functionality
-
-2002-09-04 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * amd/amfs_auto.c (free_continuation): avoid double-free'ing the
- mntfs if there was an error/timeout
-
-2002-09-04 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * amd/amfs_auto.c (amfs_auto_lookup_mntfs): use ereturn() instead
- of "return NULL" to signal an error to the upper layers
- (amfs_auto_mount): use strdup so the string can be free'd later on
- [Debian bug report from Matt Chapman <matthewc@cse.unsw.edu.au>]
-
-2002-09-03 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- Patches from George Ross <gdmr@dcs.ed.ac.uk>:
-
- * amd/amfs_auto.c (assign_error_mntfs): do not discard old mntfs,
- it will be done in free_continuation(); assorted debugging messages
-
- * amd/srvr_nfs.c (nfs_timed_out): allocate a new XID on server
- timeout to avoid problems with late ping replies
-
- * amd/mntfs.c (free_mntfs): sanity check for mf_refc; assorted
- debugging messages
-
- * amd/map.c (unmount_node): more verbose debug message
-
-2002-07-29 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * amd/amfs_auto.c (amfs_auto_lookup_mntfs): prevent deferencing
- de-allocated memory in str3cat
- (amfs_auto_lookup_mntfs): check for buffer overflow
-
-2002-07-11 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * scripts/expn.{1,in}: fixed typos as reported by Thomas Klausner
- <wiz@danbala.ifoer.tuwien.ac.at>.
-
-2002-06-26 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * doc/Makefile.am (install-html): don't use locally hacked
- texi2html features.
-
- * conf/transp/transp_sockets.c (amu_get_myaddress): Most modern
- systems should use 127.0.0.1 as the localhost address over which
- you can do NFS mounts. In the past we found that some NFS clients
- may not allow mounts from localhost. So we used get_myaddress()
- and that seemed to work. Alas, on some other systems,
- get_myaddress() may return one of the interface addresses at
- random, and thus use a less efficient IP address than 127.0.0.1.
- The solution is to hard-code 127.0.0.1, but still check if
- get_myaddress() returns a different value and warn about it.
-
- * doc/am-utils.texi: don't use ':' in @cindex entries.
-
-2002-06-25 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * Released beta version 6.1b1
-
-2002-06-24 Ion Badulescu <ionut@moisil.badula.org>
-
- * aux/macros/struct_nfs_args.m4: added test for aix51_nfs_args
-
- * conf/nfs_prot/nfs_prot_aix5_1.h: rename aix42_nfs_args to
- aix51_nfs_args, rename unknown fields to u<number>, add the
- unknown new field into the middle of the old 4.2 structure
-
-2002-06-24 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * include/am_compat.h: better test for struct netconfig
- (!HAVE_NETCONFIG_H && !HAVE_SYS_NETCONFIG_H)
-
- * aux/macros/check_nfs_prot_headers.m4: added new header for aix5.1+
-
- * buildall: fix 'buildall -b' on hpux9 and aix5.1
-
-2002-06-24 Ion Badulescu <ionut@buggy.badula.org>
-
- * INSTALL: updated
-
- * conf/autofs/autofs_solaris_v1.c (autofs_link_mount): compile fix
- (autofs_link_umount): ditto
-
- * amd/mntfs.c (init_mntfs): don't use autofs if !amd_use_autofs
-
-2002-06-23 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/autofs/autofs_linux.c: compile fixes for autofs v3
-
-2002-06-23 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_mounted): no
- expirations needed;
- (autofs_timeout_mp): likewise
-
- * conf/autofs/autofs_solaris_v1.c (autofs_mounted): no expirations
- needed;
- (autofs_timeout_mp): likewise
-
- * conf/autofs/autofs_linux.c (autofs_mounted): set the first
- expiration interval
-
- * amd/autil.c (am_mounted): call autofs_mounted here, instead of
- in mf_mounted()
-
- * amd/amd.h (NEVER): moved here from map.c
- (autofs_mounted): change argument from mntfs* to am_node*
-
-2002-06-23 Ion Badulescu <lionut@gonzales.badula.org>
-
- * conf/autofs/autofs_linux.c (autofs_mounted): set the kernel
- timeout on the autofs mountpoint to cache_duration (gopt.am_timeo)
- (autofs_timeout_mp): don't update the ttl if we're going down
-
- * amd/map.c (timeout_mp): don't call autofs_timeout_mp unless the
- timeout on that particular am_node has expired
-
- * conf/autofs/autofs_linux.c (autofs_timeout_mp): really update
- the ttl, as per the comment (compilers are not very good at
- translating comments into code...)
-
- * amd/amfs_auto.c (amfs_auto_lookup_one_mntfs): strdup am_path
- instead of opt_rfs into opt_fs for autofs, thus avoiding conflicts
- between link mounts pointing to the same target
-
-2002-06-23 Ion Badulescu <lionut@gonzales.badula.org>
-
- * conf/autofs/autofs_linux.c (send_fail, send_ready): new helper
- functions for sending messages back to the kernel
- (autofs_expire_one): initial implementation of the kernel-based
- expiration handler
- (autofs_handle_expire): call autofs_expire_one()
- (autofs_handle_expire_multi): ditto
- (autofs_umount_succeeded): search pending_umounts, send message
- back to the kernel
- (autofs_umount_failed): ditto
- (autofs_mount_succeeded): tell amd core not to expire autofs entries
- (autofs_timeout_mp): expiration function for autofs filesystems
- (autofs_timeout_mp_task): helper function for autofs_timeout_mp
-
- * conf/autofs/autofs_linux.h: new struct autofs_pending_umount for
- keeping tracking of pending umounts
- (autofs_fh_t) rename pending to pending_mounts, add pending_umounts
-
- * conf/autofs/autofs_solaris_v1.c (autofs_timeout_mp): stub
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_timeout_mp): stub
-
- * amd/map.c (timeout_mp): call autofs_timeout_mp() for autofs
- filesystems
-
- * amd/autil.c (mf_mounted): move here the call autofs_mounted()
- from amfs_auto_mounted().
-
-2002-06-22 Erez Zadok <ezk@whitestar.dyn.optonline.net>
-
- * amd/nfs_start.c (mount_automounter): Security fix. if user sets
- -D noamq, don't even create listening socket. Suggestion by Ed
- Ravin <eravin@panix.com>.
-
-2002-06-22 Ion Badulescu <lionut@gonzales.badula.org>
-
- * hlfsd/homedir.c (homedir): use setgid() instead of setegid()
-
- * ALL: #ifdef cleanups, unify some TLI/socket function prototypes
-
-2002-06-22 Erez Zadok <ezk@whitestar.dyn.optonline.net>
-
- * conf/nfs_prot/nfs_prot_netbsd1_4.h: minor port to support
- na_gid and na_uid. NetBSD patch from Jun-ichiro itojun Hagino
- <itojun@iijlab.net>.
-
- * doc/am-utils.texi (Option): document xlatecookie mount option.
-
- * libamu/mount_fs.c (compute_nfs_args): support "xlatecookie"
- NFS mount option. Patch from Matthias Scheler <tron@zhadum.de>
- for NetBSD.
-
-2002-06-22 Ion Badulescu <ionut@edgar.badula.org>
-
- * conf/autofs/autofs_solaris_v1.h: add FS_MBACKGROUND to
- AUTOFS_LINK_FS_FLAGS
-
- * conf/autofs/autofs_solaris_v1.c: convert link mounts to lofs
- mounts in autofs_link_mount/umount
-
-2002-06-22 Ion Badulescu <lionut@gonzales.badula.org>
-
- * configure.in: check for devid inside struct umntrequest
-
- * conf/autofs/autofs_solaris_v2_v3.c (xdr_umntrequest): handle the
- new umntrequest structure in v4.
- (autofs_unmount_2_req): ditto
-
- * README.autofs: updated for Solaris 2.5/2.5.1
-
-2002-06-22 Erez Zadok <ezk@whitestar.dyn.optonline.net>
-
- * configure.in: only define LDAP/Hesiod if both the headers and
- the libraries exist, and the user didn't explicitly disable those
- maps.
-
-2002-06-22 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * doc/am-utils.texi: fix typos. Can't use ":" in @cindex entries.
-
-2002-06-22 Erez Zadok <ezk@whitestar.dyn.optonline.net>
-
- * doc/am-utils.texi, scripts/amd.conf.5, scripts/amd.conf-sample,
- amd/amd.8, amd/get_args.c (get_args): document amd -A option.
-
- * amd/get_args.c (get_args): support "amd -A arg" option to
- override the system's detected architecture. Patch from George
- Ross <gdmr@dcs.ed.ac.uk>.
-
- * amd/info_ldap.c (amu_ldap_rebind): don't use ldap_enable_cache()
- if the system doesn't have it.
-
- * configure.in: detect existence of ldap_enable_cache function,
- because it doesn't exist on Solaris 9's latest ldap libraries.
-
- * amd/info_ldap.c: LDAP patches from George Ross
- <gdmr@dcs.ed.ac.uk>. Rework of old code, support for wildcards in
- LDAP queries, and an FD leak fix.
-
-2002-06-22 Ion Badulescu <lionut@gonzales.badula.org>
-
- * buildall: use ksh for configure on aix5.1; pass the extra
- arguments after "--" to configure, not to make
-
- * Makefile.am: added nfs_prot_aix4_3.h to EXTRA_DIST_CONF
-
- * conf/mount/mount_aix.c (mount_aix3): if the NFSv3 mount fails
- with EINVAL and we have MOUNT_TYPE_NFS3_BIS defined, retry the
- mount with the alternative nfs3_args structure
-
- * conf/nfs_prot/nfs_prot_aix4_3.h: added alternative nfs3_args
- structure, similar to that in aix5.1, for a hack that tries to
- compensate for IBM's brain fart
-
- * conf/nfs_prot/nfs_prot_aix5_1.h: new nfs_prot header for aix5.1+
-
- * aux/macros/check_nfs_prot_headers.m4: added new header for aix5.1+
-
- * BUGS: update for direct mounts on Linux; document the brokenness
- of /bin/sh on AIX 5.1 and HP-UX 9
-
- * NEWS: aix5.1 port, aix4.3 workaround
-
-2002-06-22 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * ltmain.sh: use libtool 1.4d, needed support for newer AIX.
-
-2002-06-21 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * aux/macros/check_autofs_style.m4: enable autofs_v2_v3 for
- all solaris2.6+, not just for 2.[6-8]
-
- * conf/autofs/autofs_default.h: disable autofs if configure
- detects it
-
-2002-06-21 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * aux/macros/with_addon.m4: correct M4 quoting.
-
- * aux/macros/cache_check_dynamic.m4: correct M4 quoting.
-
- * bootstrap: show version of autotools being used. Helps
- maintainer debugging.
-
- * configure.in: new proper syntax for libtool and
- ansi2knr-filtering rules, required by autoconf 1.53 and higher.
-
-2002-06-21 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/GNUmakefile: new search paths for "update" target.
-
- * config.guess, config.sub, doc/texinfo.tex, ltmain: updates from
- the latest GNU distributions.
-
-2002-06-11 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * amd/amfs_auto.c (amfs_auto_lookup_child): split part of this
- function into the new amfs_auto_lookup_one_child function; return
- null if all ivecs failed to match
-
-2002-05-30 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * config.guess.long: support SuSE version names in long
- config.guess format.
-
-2002-05-01 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/lostaltmail.in (vrfy_user): unlink temp files if too
- small.
-
-2002-04-07 Ion Badulescu <ionut@moisil.badula.org>
-
- * hlfsd/hlfsd.c (main): compile fix for --enable-debug=no
-
-2002-03-29 Ion Badulescu <ionut@moisil.badula.org>
-
- * README.autofs: solaris 2.5/2.5.1 info, other minor changes
-
- * doc/am-utils.texi (History): document solaris 2.5+ support
-
- * include/am_utils.h: new member in struct mntfs: mfs_real_mount;
- autofs_fs_flags becomes conditional of HAVE_AUTOFS_FS; new
- prototype for umount_fs2(); extra argument for UMOUNT_FS()
-
- * hlfsd/hlfsd.c: use the new mount_fs2() and UMOUNT_FS()
-
- * libamu/mount_fs.c (mount_fs): wrapper around the new mount_fs2()
- function; swap mntdir and real_mntdir as necessary for solaris 2.5
- autofs support
-
- * conf/umount/umount_default.c (umount_fs2): swap mntdir and
- real_mntdir as necessary for solaris 2.5 autofs support
-
- * conf/umount/umount_*.c (umount_fs): wrapper around the new
- umount_fs2() function
- (umount_fs2): new function which takes the real mountpoint as an
- extra argument
-
- * conf/nfs_prot/nfs_prot_sunos5_5.h: allow autofs support to be
- compiled in
-
- * conf/autofs/autofs_solaris_v1.h (autofs_strdup_space_hack): new
- function that appends a space at the end of a string (the famous
- "Autofs Space Protocol")
-
- * conf/autofs/autofs_solaris_v1.c: almost complete reimplementation
-
- * conf/autofs/autofs_*.h (AUTOFS_*_FS_FLAGS): add
- system-specific definitions for these macros
-
- * conf/autofs/autofs_linux.c (create_autofs_service): remove hacks
- which are now handled properly by more generic code
- (autofs_link_umount): complain if umount_fs() fails, rmdir the
- mountpoint on success
- (autofs_umount_succeeded): remove the rmdirs() code, now handled
- by generic code
- (autofs_mount_succeeded): ditto
-
- * amd/nfs_start.c (checkup): implement it as an emtpy stub if
- DEBUG is not defined
- (run_rpc): call autofs_add_fdset() after umount_exported() to
- avoid passing invalid file descriptors to select(); use plog()
- instead of perror()
-
- * amd/mntfs.c (init_mntfs): initialize mf_real_mount from mp
- (uninit_mntfs): free mf_real_mount
-
- * amd/autil.c (am_unmounted): don't remove the mount point if a
- remount is pending, also don't make the removal conditional on not
- being an autofs mount point
-
- * amd/amfs_nfsx.c (amfs_nfsx_remount): call mkdirs() on
- mf->mf_real_mount instead of mf->mf_mount
-
- * amd/amfs_nfsl.c, amd/amfs_nfsx.c: (amfs_nfsl_umounted): call
- rmdirs() on mf->mf_real_mount instead of mf->mf_mount
-
- * amd/amfs_host.c (make_mntpt): change the third argument to be
- the mountpoint, not the entire mntfs structure
- (do_mount): takes real_mntdir as an extra argument
-
- * amd/amfs_auto.c (amfs_auto_bgmount): move the creation of the
- mountpoint here from try_mount(), otherwise the change to mf_flags
- is lost for background mounts; remove the mountpoint if we created
- it and the mount fails
- (amfs_auto_lookup_mntfs): re-initialize mf->mf_real_mount using
- autofs_strdup_space_hack() if NEED_AUTOFS_SPACE_HACK is defined
-
- * amfs_*.c, ops_*.c: initialize autofs_fs_flags using the
- AUTOFS_*_FS_FLAGS macro defined in the system-specific autofs
- header; UMOUNT_FS() takes mf->mf_real_mount as an extra argument;
- mount_fs() becomes mount_fs2() and takes mf->mf_real_mount as an
- extra argument
-
- * amd/amd.h, amd/ops_nfs.c, amd/amfs_host.c: mount_nfs_fh takes
- the real mountpoint as an additional argument
-
-2002-03-28 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * amd/ops_cdfs.c (mount_cdfs): correctly interpret error return
- values back from mount_fs(). Return correct error number from
- this function.
-
- * conf/mount/mount_linux.c (do_mount_linux): cleanup loop mount
- cruft from this function, moved elsewhere.
- (mount_linux): prepare for loop-device mounts of ISO images.
-
-2002-03-28 Ion Badulescu <ionut@buggy.badula.org>
-
- * libamu/Makefile.am (EXTRA_DIST): added strerror.c
-
- * libamu/strerror.c: strerror() implementation for systems lacking it
-
- * doc/am-utils.texi (History): rewrote the history :) about autofs
- support
-
- * conf/autofs/autofs_solaris_v2_v3.c: updated copyright;
- (autofs_unmount_2_req): minor cleanup
- (create_autofs_service): print log message
- (destroy_autofs_service): ditto
-
- * conf/autofs/autofs_linux.c: updated copyright
-
- * amd/nfs_start.c (mount_automounter): move the debug message into
- create_autofs_service()
-
- * amd/amd.c (main): call destroy_autofs_service() before
- going_down(), not after
-
- * configure.in: added strerror to AC_CHECK_FUNCS(); disable ldap
- if the ldap headers are not found
-
-2002-03-28 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * amd/info_ldap.c: patch from "Sebastien Bahloul"
- <sebastien.bahloul@medasys.org> to fix a simple initialization bug
- and change "HE" to HE_ENT so as to compile on HPUX.
-
-2002-02-26 Erez Zadok <ezk@t3.fsl.cs.sunysb.edu>
-
- * conf/nfs_prot/nfs_prot_freebsd3.h (na_uid): freebsd4.5 uses nfs
- atttributes field named "uid". So #define na_uid to it.
-
-2002-02-12 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * scripts/lostaltmail.in: don't verify user if -noverify option
- was turned on. fix comment typo.
-
-2002-02-11 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * amd/Makefile.am (TESTS): enable one test script, test1.sh.
-
- * amd/test1.sh: re-commit simple test script.
-
-2002-02-11 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * Released snapshot 6.1a5
-
- * NEWS: Solaris autofs readdir() support, Linux autofs sublink fix
-
- * README: require newer auto-tools, update mailing list address
-
- * README.autofs: major update
-
- * configure.in: version changed to 6.1a5
-
-2002-02-11 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/autofs/autofs_linux.c (autofs_link_mount): don't do a
- stat() on the am_link if called from the parent amd, to prevent
- deadlocks
-
- * amd/autil.c (am_unmounted): call amfs_link_ops.umount_fs if the
- fstype is not link but we have a sublink (Linux autofs needs this)
- (am_mounted): call amfs_link_ops.mount_fs if the fstype is not
- link but we have a sublink (Linux autofs needs this)
-
- * amd/amfs_auto.c (amfs_auto_bgmount): print the real mountpoint,
- not the amd entry point
-
-2002-02-09 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/autofs/autofs_solaris_v2_v3.c (amd_rddirres): new custom
- structure for returning the results from readdir_2()
- (xdr_amd_putrddirres): renamed from xdr_autofs_putrddirres,
- changed to process our internal format (which is essentially the
- NFS readdir format)
- (xdr_autofs_getrddirres): not needed, deleted
- (xdr_amd_rddirres): renamed from xdr_autofs_rddirres, other
- changes to handle amd_rddirres instead of autofs_rddirres
- (autofs_lookup_2_req): return AUTOFS_NONE instead of
- AUTOFS_MOUNT_RQ, to prevent mount storms during ls -F
- (autofs_readdir_2_req): implemented
- (autofs_readdir_2_free): not needed, deleted
- (autofs_program_2): changes from autofs_rddirres to amd_rddirres
- (autofs_get_fh): changed initialization of the fh->map member, it
- now gets the mountpoint path because it makes it easier to
- implement readdir
- (autofs_release_fh): put #ifdef HAVE_AUTOFS_ARGS_T_ADDR around
- code touching fh->addr
- (destroy_autofs_service): new function, deregister the autofs
- service with the portmapper on exit
-
- * conf/autofs/autofs_linux.c (autofs_handle_missing): update
- statistics
- (destroy_autofs_service): new stub
-
- * amd/mapc.c (mapc_find): fixed indentation
-
- * amd/map.c (find_ap_recursive): renamed from find_ap2(), made
- static
-
- * amd/amd.h: removed prototype for find_ap2(), added prototype for
- destroy_autofs_service()
-
- * amd/amd.c (main): call destroy_autofs_service() before going
- down
-
-2002-02-07 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_field.m4: need also a new version of
- AC_CHECK_MEMBERS (plural).
-
-2002-02-06 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_field.m4: include a fixed version of
- AC_CHECK_MEMBER. g/cc will fail to check a member if the .member
- is itself a data structure, because you cannot compare, in C, a
- data structure against NULL; you can compare a native data type
- (int, char) or a pointer. Solution: do what I did in my original
- member checking macro: try to take the address of the member. You
- can always take the address of anything.
-
-2002-01-31 Erez Zadok <ezk@localhost.localdomain>
-
- * remove old '%W%' SCCS IDs from all sources.
-
-2002-01-21 Ion Badulescu <ionut@moisil.badula.org>
-
- * conf/mount/mount_linux.c (mount_linux): fix breakage introduced
- by the loop device mount support. Linux mount takes a real string
- as the last argument, unless the mount type is NFS, NCP, or SMB.
-
-2002-01-20 Erez Zadok <ezk@localhost.localdomain>
-
- * hlfsd/hlfsd.h (HLFSD_VERSION): up version of hlfsd to 1.2,
- because we made some important changes.
-
-2002-01-20 Ion Badulescu <lionut@gonzales.badula.org>
-
- * include/am_utils.h (D_ALL): do not include D_MTAB and D_HRTIME
- by default
-
- * NEWS: document latest changes
-
- * amd/map.c (unmount_mp): same fix as for hlfsd, update the
- seconds field in mtime because Linux ignores the useconds field
-
- * hlfsd/homedir.c: made some global vars static
- (plt_init): remove all trailing '/' chars from root's home;
- use root's home, not the username (silly bugfix)
-
-2002-01-20 Ion Badulescu <lionut@gonzales.badula.org>
-
- * hlfsd/homedir.c (homedir): don't special case uid 0 as having /
- as home; instead use the root account's home
- (plt_init): properly initialize root_home from the root account's
- home directory, or as "" if root doesn't exist
- (plt_reset): free root_home
-
-2002-01-20 Erez Zadok <ezk@localhost.localdomain>
-
- * hlfsd/stubs.c (nfsproc_{lookup,getattr}_2_svc): non-SYMTTL code.
- Increment seconds, not microseconds (which are ignored by NFS).
- Set symlink owner to euid.
-
- * hlfsd/homedir.c (homedir): pass gid to this function, so we can
- also change the effective GID of the process writing to the user's
- home dir, as well as the group of the hlfsd symlink.
- (homedir): run setegid in the right places.
-
-2002-01-15 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * scripts/redhat-ctl-amd.in: refer to @sbindir@ not
- ${prefix}/sbin.
-
- * scripts/ctl-{amd,hlfsd}.in: refer to @sysconfdir@ not
- ${prefix}/etc. Bug report from "A Braunsdorf"
- <ab@eas.purdue.edu>.
-
-2002-01-13 Erez Zadok <ezk@localhost.localdomain>
-
- * configure.in: only check for clock_gettime if --enable-debug was
- used.
-
- * aux/macros/opt_debug.m4: define a cache variable to record value
- of debug option used.
-
- * libamu/xutil.c (show_time_host_and_name): do not use
- clock_gettime unless debugging was compiled in. This way, if
- debugging is not compiled, we don't bother linking with librt,
- libpthread, and a whole lot of other libraries that aren't that
- necessary (esp. on Linux).
-
-2002-01-12 Erez Zadok <ezk@wavy.dyn.optonline.net>
-
- * doc/am-utils.texi (opts Option): document loop option.
-
- * include/am_utils.h: each mounted file system (mntfs) should
- optionally store the loop device used in the field mf_loopdev.
-
- * conf/nfs_prot/nfs_prot_linux.h: define HAVE_LOOP_DEVICE and some
- loop function extern definitions. For now this code is here
- because we only support loop devices on Linux.
-
- * conf/mount/mount_linux.c: recognize "loop" as a valid iso9660
- mount option.
- (parse_opts): when skipping over unknown mount options, skip over
- "loop" (since it was given in amd map entry), but not over
- loop=/dev/loopX, because the latter will go into /etc/mtab.
- (do_mount_linux): override actual cdfs mounted device name
- because with loop devices you don't mount the .iso file directly,
- but the /dev/loopX device that was setup for it.
- (show_loop, is_loop_device, find_unused_loop_device,
- setup_loop_device, delete_loop_device): support code for loop
- devices.
-
- * amd/ops_cdfs.c (mount_cdfs): pass loop device name to function.
- setup loop device before isofs mount, if "loop" option was given,
- before actual mount(2).
- (cdfs_mount): pass loopdev name to mount_cdfs().
- (cdfs_umount): delete/unset loop device after a successful
- unmount, if a loop device was used.
-
- * amd/mntfs.c (init_mntfs): initialize mf_loopdev to NULL.
-
- * include/am_compat.h: If loop device (header file) exists, define
- mount table option MNTTTAB_OPT_LOOP.
-
- * conf/nfs_prot/nfs_prot_linux.h: hack: define HAVE_LOOP_DEVICE
- here until we have a better way to detect /dev/loop devices.
-
- * include/am_defs.h: include <linux/loop.h> if it exists. Define
- LARGEFILE support macros, possibly needed for loop devices.
- Redefine dev_t apropriately for loop devices.
-
- * configure.in: check for <linux/loop.h>.
-
-2002-01-10 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * conf/mount/mount_linux.c (mount_linux): tcp _must_ have a timeo
- parameter 2 orders of magnitude larger than udp (patch from Trond
- Myklebust)
-
-2002-01-09 Erez Zadok <ezk@localhost.localdomain>
-
- * aux/macros/linux_headers.m4: properly [quote] a long string in
- m4 and use AC_MSG_WARN.
-
- * ALL: put /* comments */ on #else/#endif lines everywhere.
-
- * configure.in, aux/macros/with_addon.m4: due to limitation of
- AC_HELP_STRING, pass 2nd arg to AMU_WITH_ADDON, listing name of
- package for help string.
-
- * doc/am-utils.texi (FSinfo): fixed various texinfo errors in the
- FSinfo section of the manual.
- (map_reload_interval Parameter): document new amd.conf global
- parameter.
-
- * scripts/amd.conf.5 document new global option
- map_reload_interval. Sort entries for nfs_vers and nfs_proto
- alphabetically.
-
- * amd/nfs_start.c (do_select): increment do_mapc_reload's value by
- global map_reload_interval value, not by fixed ONE_HOUR.
-
- * amd/amd.c (main): increment do_mapc_reload's value by global
- map_reload_interval value, not by fixed ONE_HOUR.
-
- * scripts/amd.conf-sample (map_reload_interval): usage example
-
- * amd/amd.c (init_global_options): initialize map_reload_interval
- to 3600 seconds.
-
- * amd/conf.c (gopt_map_reload_interval): support a new global
- amd.conf option map_reload_interval, to determine how often (in
- seconds) Amd should check if the map source has changed and then
- reload it it. This value was hard-coded to one hour, now it's the
- default if not otherwise specified.
-
- * doc/am-utils.texi (plock Parameter): document plock=yes option
- as using mlockall(2) if found.
-
- * scripts/amd.conf.5: document -S option as using mlockall(2) if
- found.
-
- * include/am_defs.h: include <sys/mman.h> if it exists.
-
- * configure.in: check for mlockall() function. Check for
- sys/mman.h.
-
- * amd/amd.c (main): support mlockall() on systems that have it and
- don't have plock(3) for plock=yes. On systems that have both,
- will try plock() first and then mlockall(), until one of them (if
- any) succeeds.
-
-2002-01-09 Erez Zadok <ezk@whitestar.dyn.optonline.net>
-
- * aux/macros/opt_debug.m4, opt_cppflags.m4, opt_amu_cflags.m4,
- with_addon.m4 (ac_upcase): fix help string formatting using
- AC_HELP_STRING.
-
- * amd/test1.sh: simple test script for "make check". Runs "amd
- -v".
-
- * amd/Makefile.am (TESTS): add one simple test script, running
- "amd -v" and checking its return value. More tests can be added.
-
- * aux/macros/linux_headers.m4: use AC_MSG_WARN directly.
-
- * aux/macros/*.m4: avoid the cumbersome "changequote" M4 command.
- Instead, list bracketed regexp patterns in [[double brackets]].
-
- * aux/macros/header_templates.m4: remove all unnecessary
- HAVE_FIELD_* definitions, now that we're using autoconf's new
- AC_CHECK_MEMBERS.
-
- * aux/macros/field_mntent_t_mnt_time_string.m4: don't call
-
- * configure.in: use new syntax for AMU_CHECK_FIELD
-
- * aux/macros/check_field.m4: use new and simpler macro
- AC_CHECK_MEMBERS. Change all sources to use HAVE_aggregate.member
- instead of HAVE_FIELD_aggregate.member.
-
- * aux/amdgrep: simple utility script to egrep the am-utils sources
- for any pattern.
-
- * aux/macros/{check_mnttab_style.m4, check_mount_style.m4,
- check_umount_style.m4, check_network_transport_type.m4}: use newer
- AC_LIBOBJ macros instead of modifying $LIBOBJS directly
-
- * aux/macros/func_bad_memcmp.m4: redefine to use native
- AC_FUNC_MEMCMP, and then define HAVE_BAD_MEMCMP as needed.
-
- * fsinfo/fsi_gram.y, amd/conf_parse.y: indent #pragma command so
- pre-ANSI C compilers will ignore it.
-
- * conf/autofs/autofs_linux.c (autofs_link_mount): call s/getpgrp()
- correctly depending on whether it takes a void or a 0.
-
- * configure.in: check if s/getpgrp() takes void or a 0.
-
-2002-01-08 Erez Zadok <ezk@whitestar.dyn.optonline.net>
-
- * configure.in: use the newer AC_CONFIG_LINKS instead of
- AC_LINK_FILES.
-
- * aux/macros/check_autofs_style.m4, check_checkmount_style.m4,
- check_mnttab_style.m4, check_mount_style.m4,
- check_network_transport_type.m4, check_umount_style.m4,
- check_nfs_prot_headers.m4: removed backward compatible code for
- pre-autoconf-2.14.
-
-2002-01-07 Erez Zadok <ezk@whitestar.dyn.optonline.net>
-
- * doc/Makefile.am: define @SET_MAKE@ for AC_PROG_MAKE_SET macro, since
- this Makefile could explicitly chdir to other directories and run
- make there.
- (install-ps): use ${MAKE} with ${MFLAGS}.
-
- * Makefile.am (EXTRA_DIST_AUX): distribute new package_*.m4 files.
- Define @SET_MAKE@ for AC_PROG_MAKE_SET macro, since this Makefile
- could explicitly chdir to other directories and run make there.
- (install-snapshot): use ${MAKE} ${MFLAGS}, not hardcoded "make".
-
- * configure.in: call AC_PROG_MAKE_SET to check if make program
- defines $MAKE variable.
-
- * amd/get_args.c (get_version_string): use new PACKAGE_* macros
- and also report the bug-reporting address.
-
- * aux/macros/package_{name,version}.m4, header_templates.m4: using
- new PACKAGE_{NAME,VERSION,BUGREPORT} macros.
-
- * aux/macros/name_bugreport.m4: simple macro to print out the
- bug-reporting address which was configured in AC_INIT.
-
- * bootstrap: remove new autoconf messages about misuse of
- m4_patsubst and m4_regexp (internal GNU M4 macros).
-
- * configure.in: remove old comment above AC_OUTPUT.
- Use AC_CONFIG_FILES and AC_OUTPUT separately.
- Fix AC_REVISION use.
- Add AC_COPYRIGHT.
- Use new style for AC_INIT, listing package name, version, and
- bug-reporting address.
- Call new AMU_PACKAGE_* macros.
-
- * updated copyright year to 2002 on all files
-
- * configure.in: using newly renamed am-utils macros (AMU_*)
-
- * aux/macros/*.m4: renamed ALL am-utils specific macros so they
- start with AMU_*, not AC_*. That way it is easier to distinguish
- between macros that come with am-utils and those that are part of
- Autoconf or Automake. It helps to identify those am-utils macros
- that can be removed once there is generic support for them in a
- future version of Autoconf.
-
- * bootstrap: run automake --copy
- remove autom4te.cache dir before rerunning autoconf
-
-2001-12-13 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * scripts/amd.conf.5: correct title to section 5, not 8. Correct
- reversed meaning of nfs_proto and nfs_vers parameters. Typos
- reported by Peter Breitenlohner <peb@mppmu.mpg.de>.
-
-2001-12-02 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * scripts/ctl-amd.in: run "test" or "[" in front of -x/-f
-
- * scripts/ctl-hlfsd.in: run "test" or "[" in front of -x/-f
-
-2001-12-02 Ion Badulescu <ionut@moisil.badula.org>
-
- * hlfsd/homedir.c (plt_print): fix typo (s/plot/plog/) in
- non-mkstemp code
-
- * scripts/ctl-amd.in: touch/remove /var/lock/subsys/amd to make RH
- happy
-
- * scripts/ctl-hlfsd.in: ditto (for hlfsd)
-
- * conf/mtab/mtab_file.c (rewrite_mtab): fchmod(644) the file we
- get from mkstemp(), otherwise samba becomes very unhappy (sigsegv)
-
- * conf/mtab/mtab_mach3.c (rewrite_mtab): ditto
-
-2001-11-29 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * tasks: updated
-
- * NEWS: document the fixed autofs fd leak
-
- * amq/amq.8: better document the -f option
-
-2001-11-29 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * libamu/mount_fs.c (mnt_flags): same this as for nolock option
- handling, do for maxgrps.
-
-2001-11-29 Ion Badulescu <ion@guppy.limebrokerage.com>
-
- * conf/autofs/autofs_linux.c (hash_init): determine the max number
- of fd's at runtime, use it to dynamically scale the hash and list
- arrays
- (autofs_get_fh): sanity check, don't allow a pipe() fd greater
- than autofs_max_fds
- (autofs_release_fh): close our end of the pipe here (no clue why
- or when it got commented out)
- (autofs_mounted): set kernelfd to -1 after closing it
-
-2001-11-28 Philippe Troin <phil@fifi.org>
-
- * libamu/mount_fs.c (mnt_flags): Drop nolock from generic mount
- opts.
- (compute_nfs_args): Added nolock handling.
- Adapted from an original patch from Avery Pennarun <apenwarr@nit.ca>.
-
-2001-11-27 Erez Zadok <ezk@a-hpux11i.fsl.cs.sunysb.edu>
-
- * ported to ia64-hp-hpux11.20 using HP's ANSI/C compiler.
- Couldn't use bison/flex because of 32-bit vs. 64-bit binaries
- issues. Had to use HP's own yacc/lex.
-
-2001-11-26 Erez Zadok <ezk@a-hpux11i.fsl.cs.sunysb.edu>
-
- * */Makefile.am: don't use $(OBJECTS) directly because it is no
- longer automatically defined now that Automake has automatic
- dependency tracking (which I turn off). Instead, hard-code
- minimal dependencies on am-utils' header files to depend on
- PROG_OBJECTS (where PROG is the program name being built). This
- was discovered by using HP's non-GNU make program.
-
- * amd/nfs_start.c (checkup): cast getpagesize() return val to
- long, to avoid conflicts in division of a long by an int (on
- hpux11i, with their ANSI/C compiler).
-
- * INSTALL, doc/am-utils.texi: port updates
-
- * minor new ports: ia64-hp-hpux11.20, i386-unknown-freebsd5.0,
- i386-unknown-freebsd4.4, i386-pc-linux-rh7.2,
- ia64-unknown-linux-rh7.1.
-
- * include/am_defs.h: actually declare extern definition for
- xdr_callmsg() if it doesn't already exist.
-
- * aux/macros/header_templates.m4: declare template for
- HAVE_EXTERN_XDR_CALLMSG.
-
- * configure.in: check for extern definition for xdr_callmsg()
- because hpux11 has that function but a bad <rpc/xdr.h> header file
- that doesn't define it in the right place.
-
- * libamu/mount_fs.c (print_nfs_args): cast ->rdev to u_long b/c
- on hpux11 its type is dev_t.
-
- * conf/nfs_prot/nfs_prot_hpux11.h: don't support autofs on hpux11
- yet.
-
-2001-11-16 Erez Zadok <ezk@fsl-gw.fsl.cs.sunysb.edu>
-
- * buildall (Usage): separate $cnf_flags and $extra_cnf_flags due
- to /bin/sh limitations.
-
- * bootstrap (cmd): turn back on --ignore-deps (this Automake may
- have problems)
-
- * libamu/xutil.c: remove __attribute__ format_arg statement for
- expand_error() because this function, although taking a
- printf-like string, does not use it in a printf function; it only
- expands a non-printf amd-special syntax %m.
-
-2001-11-14 Erez Zadok <ezk@fsl-gw.fsl.cs.sunysb.edu>
-
- * conf/nfs_prot/nfs_prot_linux.h: define KERNEL_VERSION macro
- before using it because older Linux systems don't define this
- (e.g., Red Hat 4.2)
-
-2001-11-13 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * configure.in: convert to using autoconfig 2.52. Use new macros.
- AC_MSG_NOTICE for messages; AH_TOP and AH_BOTTOM to top and bottom
- parts of autogenerated config.h.in; increase autoconf
- pre-requisite to version 2.50; use AC_DISABLE_SHARED not
- AM_DISABLE_SHARED.
-
- * aux/macros/cache_check_dynamic.m4: finally I can use the new
- $ECHO_N syntax in macros instead of $ac_n, since I'm using a new
- autoconf. Isn't it nice to be such forward looking and having
- placed a comment "XXX: use the next line for autoconf-2.14 and
- newer"... :-)
-
- * aux/macros/save_state.m4: highlight message with ***'s
-
- * aux/macros/host_macros.m4: use proper M4 quoting ([], not "")
-
- * config.{guess,sub}: upated from latest prep ftp distributions
-
- * depcomp, missing, mkinstalldirs: upated from latest Automake 1.5
-
- * ltmain.sh: updated from latest Libtool 1.4.2
-
- * bootstrap: finally, new autoconf doesn't print silly "AC_TRY_RUN
- called without default to allow cross compiling" warnings. And,
- it only took like 3+ years to fix this. But, now it has anoter,
- albeit less annoying warning (which the manual says to ignore):
- "AC_PROG_LEX invoked multiple times".
- When autoheader is run, don't treat the "all clear" message
- "config.h.in is update" as an error.
-
- * ltconfig: removed. not needed with latest version of libtool
-
- * aux/macros/header_templates.m4: replaces acconfig.h and defines
- all CPP macros we use in this package, including their
- accompanying C /* comments */.
-
- * acconfig.h: removed. replaced by new autoconf system to generate
- header templates using AH_TEMPLATE macros and such.
-
- * aux/macros/msg.m4: removed. Replaced with new macro
- AC_MSG_NOTICE
-
- * Makefile.am (EXTRA_DIST_AUX): remove aux/macros/msg.m4. Add
- aux/macros/header_templates.m4
-
- * configure.in: early, in host_macros.m4, I'm renaming silly linux
- $host_os names such as linux-gnu and lignux to plain "linux".
- Alas, RMS finally had his way and libtool will NOT recognize
- "linux" as a valid system, only "linux-gnu". Sigh. Rich, I know
- you're responsible to Linux's fame. Kudos to you and your
- cohorts. But please don't force the rest of us to use those ugly
- or long names. Solution: temporarily name $host_os to "linux-gnu"
- before calling the AC_PROG_LIBTOOL macro, then name it back to
- "linux". (That way I don't have to maintain my own version of
- ltmain.sh.
-
- * buildall: force running configure -C (to create and use a local
- config.cache file). New default behavior for autoconf is NOT to
- use cache files. Yeah, that's gonna fly real well with am-utils,
- with its 700+ automatic tests.
-
- * conf/mtab/mtab_mach3.c (rewrite_mtab): use mkstemp instead of
- mktemp, if the former is available.
-
- * conf/mtab/mtab_file.c (rewrite_mtab): use mkstemp instead of
- mktemp, if the former is available.
-
- * mk-amd-map/mk-amd-map.c (main): use mkstemp instead of mktemp,
- if the former is available.
-
- * aux/macros/check_nfs_socket_connection.m4: AC_DEFINE calls must
- be on a separate line, as per new Autoconf manual, to avoid some
- Bourne Shell syntactical bizarreness.
-
-2001-11-13 Erez Zadok <ezk@a-rh71i.fsl.cs.suunysb.edu>
-
- * amd/amfs_auto.c (amfs_auto_readdir_browsable): cast to u_long,
- for IA64 Linux.
-
-2001-11-12 Ion Badulescu <ionut@buggy.badula.org>
-
- * libamu/mtab.c (hasmntval): strtol can return a non-NULL pointer
- pointing to '\0' on success, so we need to allow for it. This
- fixes the problem with rejecting numerical mount options if they
- are the last option in the string.
-
- * configure.in: increased library patchlevel
-
- * NEWS: document the parsing bug
-
-2001-10-29 Ion Badulescu <ionut@moisil.badula.org>
-
- * configure.in: bumped version up to 6.1a5-pre
-
- * NEWS: fixed speeling mistaike
-
-2001-10-29 Ion Badulescu <ionut@moisil.badula.org>
-
- * released snapshot am-utils-6.1a4
-
-2001-10-26 Ion Badulescu <ionut@moisil.badula.org>
-
- These changes fix autofs support for sublinks. While it is not
- perfect by any means and is hardly better than non-autofs, at
- least it works.
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_lookup_2_req): don't
- reply if the mount is in progress
- (autofs_mount_succeeded): handle both delayed lookups and mounts
- (autofs_mount_failed): ditto
-
- * amd/amfs_auto.c (amfs_auto_lookup_mntfs): don't dispose of the
- original opt_fs if we have a sublink
-
-2001-10-23 Ion Badulescu <ionut@moisil.badula.org>
-
- * amd/amfs_auto.c (amfs_auto_lookup_mntfs): fixed silly typo (mf
- instead of new_mf) which was causing null pointer error when
- sublinks were being used
-
-2001-10-22 Ion Badulescu <ionut@moisil.badula.org>
-
- * README.autofs: updated
-
- * NEWS: updated
-
- * INSTALL: updated
-
- * AUTHORS: added myself
-
- * doc/am-utils.texi: updated
-
- * conf/autofs/autofs_solaris_v2_v3.c (xdr_autofs_rddirargs): use
- xdr_u_int() and cast things to (int) to appease Solaris 2.7 compile
- (autofs_readdir_2_req): cast req->rda_offset to (int), same as
- above
-
-2001-10-22 Ion Badulescu <ionut@moisil.badula.org>
-
- Autofs direct mounts have been verified to work on Solaris2.[67].
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_lookup_2_req):
- retrieve the uid and gid from the lookup request
- (autofs_mount_2_req): skip the first char in the name (it's a
- leading '/') if this is a direct mount
-
- * amd/amfs_direct.c (amfs_direct_ops): use amfs_auto_lookup_child
- and amfs_auto_mount_child for amfs_direct's methods
-
- * amd/amfs_auto.c (amfs_auto_lookup_child): don't leak an am_node
- if the mntfs lookup fails
-
-2001-10-21 Ion Badulescu <ionut@moisil.badula.org>
-
- * include/am_utils.h (AMF_REMOUNT): new flag, marks the node as
- pending a remount
- (mntfs): new member mf_fsflags, holds a copy of the filesystem's
- fs_flags
- (am_ops): new member autofs_fs_flags, holds the filesystem's flags
- when mounted onto an autofs node; fs_flags renamed to nfs_fs_flags
-
- * conf/autofs/autofs_linux.c (create_autofs_service): turn on
- FS_MKMNT for amfs_auto and FS_MBACKGROUND for amfs_link
- (autofs_umount_succeeded): don't rmdir the mountpoint if a remount
- is needed [lest the access that triggered the remount will fail]
-
- * amd/mntfs.c (init_mntfs): copy the filesystem's nfs_fs_flags
- into mf_fsflags on initialization
-
- * amd/autil.c (am_unmounted): start the remounting right away if
- the node is marked as needing a remount [fixes the Linux autofs
- deadlock when mount/unmount collide]
-
- * amd/amfs_auto.c (amfs_auto_lookup_node): mark the node as
- needing a remount if a mount request comes in while we're
- unmounting it
- (amfs_auto_lookup_mntfs): copy the filesystem's autofs_fs_flags
- into mf_fsflags if this is an autofs node
-
- * amd/amfs_*.c, amd/ops_*.c: added initialization for the new
- autofs_fs_flags member of am_ops
-
-2001-10-20 Ion Badulescu <ionut@moisil.badula.org>
-
- With these changes, Solaris 2.[67] autofs support is finally
- functional!
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_readdir_2_req): stub
- (autofs_readdir_2_free, xdr_autofs_rddirargs, xdr_autofs_putrddirres,
- xdr_autofs_getrddirres, xdr_autofs_rddirres): new functions
- (autofs_lookup_2_req): do an actual lookup here, and tell the
- kernel to create a symlink if necessary
- (autofs_mount_2_req): no need to am_autofs_data
- (autofs_program_2): enable AUTOFS_READDIR
- (autofs_link_mount): no code needed here
- (autofs_link_umount): return success
- (autofs_mount_succeeded): lstat real mount points; don't mark
- symlinks as NOTIMEOUT
-
- * amd/mntfs.c (init_mntfs): mf_dev and mf_rdev don't exist anymore
-
- * amd/map.c (init_map): init am_dev and am_rdev to -1
- (free_map): free am_mfarray and all mntfs's listed
-
- * amd/autil.c (mf_mounted): move the lstat of the node to the
- autofs-specific code
-
- * amd/amfs_link.c (amfs_link_ops): don't background symlink creation
-
-2001-10-18 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * aux/macros/os_cflags.m4 (irix6*): Enforce N32 ABI/mips3 ISA with cc.
- * BUGS: Explain this.
-
-2001-10-02 Erez Zadok <ezk@agora.fsl.cs.sunysb.edu>
-
- * doc/am-utils.texi (redhat-ctl-amd): document new script.
-
- * scripts/Makefile.am: build redhat-ctl-amd but do not install it.
-
- * scripts/redhat-ctl-amd.in: new script, useful to correctly
- control Amd on Red Hat Linux systems. Script adapted from ctl-amd
- and Red Hat's own rc.d script.
-
-2001-10-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * conf/nfs_prot/nfs_prot_osf5.h: Renamed from nfs_prot_osf5_1.h.
- (MNT2_NFS_OPT_AUTO): Disable.
- * Makefile.am (EXTRA_DIST_CONF): Reflect new name.
- * aux/macros/check_nfs_prot_headers.m4: Use this file for all
- Tru64 UNIX V5 and up releases.
-
-2001-09-24 Ion Badulescu <ionut@moisil.badula.org>
-
- * include/mount_headers1.h (MFS): define as 1 instead of nothing,
- to fix compile problems on OS X (patch from Ahmon Dancy)
-
- * aux/macros/try_compile_anyfs.m4 (MFS): ditto
-
-2001-08-13 Erez Zadok <ezk@fsl-gw.fsl.cs.sunysb.edu>
-
- * doc/am-utils.texi (in_network Selector Variable): document
- expanded syntax
-
- * libamu/wire.c (is_network_member): support for network/netmask
- as well as network/bits syntax in in_network()
-
-2001-08-11 Erez Zadok <ezk@a-linux64.fsl.cs.sunysb.edu>
-
- * amq/amq.c (show_mti): print full four digits for year, and print
- it in MM/DD/YYYY format, not in YY/MM/DD format.
-
-2001-08-11 Ion Badulescu <lionut@gonzales.badula.org>
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_lookup_2_req):
- initial attempt to do something useful -- but commented out for now
- (autofs_link_mount): create an action structure with a link
- request and pass it up
- (autofs_mount_2_req): pass the link request to the kernel
- (autofs_free_data): new helper function
-
- * conf/autofs/autofs_linux.h: added definition for autofs_data_t
-
- * conf/autofs/autofs_solaris_v2_v3.h: ditto
-
- * amd/map.c (init_map): initialize am_autofs_data
- (free_map): call the autofs cleanup function if necessary
-
- * include/am_utils.h (am_node): added private data and cleanup
- function for autofs
-
- * tasks: removed some obsolete entries
-
-2001-08-11 Erez Zadok <ezk@a-solaris8.fsl.cs.sunysb.edu>
-
- * amd/map.c (free_map_if_success): run autofs_umount_failed() only
- if this mount node is of type autofs.
-
-2001-08-11 Ion Badulescu <lionut@gonzales.badula.org>
-
- * amd/amd.h: removed mf_array from struct continuation (moved into
- am_node)
-
- * include/am_utils.h: removed VLOOK_LOOKUP; renamed vlookuppn to
- vlookup_child; added vmount_child; added mount_child to the fs_ops
- API; added prototypes for amfs_auto_mount_child and
- amfs_error_mount_child
-
- * amd/map.c (init_map): initialize am_mfarray to 0
-
- * amd/amfs_*, amd/ops_*: new API function mount_child, old API
- function lookuppn renamed to lookup_child
-
- * amd/amfs_auto.c: renamed amfs_auto_lookuppn1 to
- amfs_auto_lookup_node; renamed amfs_auto_lookuppn2 to
- amfs_auto_lookup_mntfs; renamed amfs_auto_lookuppn3 to
- amfs_auto_mount_child; moved the freeing of the error mntfs in the
- newly allocated am_node from lookup_mntfs to mount_child; make
- sure lookup_child returns a negative error if the node needs to be
- mounted; removed the call to lookuppn3 from lookup_child
-
- * amd/amfs_error.c: added stub implementations of
- amfs_error_lookup_child and amfs_error_mount_child
-
- * amd/amfs_direct.c, amd/amfs_union.c, amd/map.c, amd/nfs_subr.c,
- conf/autofs/autofs_linux.c, conf/autofs/autofs_solaris_v2_v3.c:
- call both lookup_child and mount_child, instead of the old
- lookuppn API method
-
-2001-07-19 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/get_args.c (get_args): a better way to handle GNU and
- non-GNU getopts without strdup-ing the getopt string.
-
-2001-07-04 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/info_ldap.c (amu_ldap_rebind): The first time you called
- amu_ldap_init, aldh->ldap is not set. So when amu_ldap_rebind is
- called, this function is absolutely sure to return 0. Then
- amu_ldap_init return 0 without having opened any LDAP connection.
- This is not the correct behavior.
- (get_ldap_timestamp, amu_ldap_search): error to free an object
- ("entry") that is automatically freed by the library. Patch from
- Sebastien Bahloul <sebastien.bahloul@mangoosta.fr>.
-
-2001-07-19 Ion Badulescu <ionut@moisil.badula.org>
-
- * AUTHORS (variables): added Philippe Troin
-
- * Makefile.am (EXTRA_DIST): added bootstrap
-
- * include/am_compat.h (xfs_args_t): define as u_int if the
- filesystem is supported but we can't autodetect the type for
- xfs_args_t. This allows Linux to mount xfs filesystems.
-
-2001-07-12 Philippe Troin <phil@fifi.org>
-
- * doc/am-utils.texi: Added @dircategory Administration.
-
-2001-07-12 Philippe Troin <phil@fifi.org>
-
- * aux/macros/with_addon.m4: Created. Wrapper around AC_ARG_WITH
- with only the `yes' and `no' as possible answers.
-
- * configure.in: Added support for disabling LDAP and HESIOD even
- if the supporting libraries are found.
-
- * Makefile.am (EXTRA_DIST_AUX): Added with_addon.m4 macro file.
-
-2001-07-12 Philippe Troin <phil@fifi.org>
-
- * include/am_compat.h: Removed forced definition of MNTTAB_OPT_DEV
- if MNT2_GEN_OPT_NODEV was found. Actually, the dev= (SVR4) options
- and the linux nodev options are different beasts.
-
- * conf/mount/mount_linux.c (opt_map): Removed the MNTTAB_OPT_DEV
- entry (not really necessary on linux).
-
-2001-07-12 Philippe Troin <phil@fifi.org>
-
- * amd/get_args.c (get_args): Prepend "+" to the getopt string if
- HAVE_GNU_GETOPT to avoid getting all options (even the ones after
- the first non-option argument) slurped in by GNU getopt.
-
- * aux/macros/check_gnu_getopt.m4: Created. Defines HAVE_GNU_GETOPT
- if GNU/glibc getopt implementation is detected.
-
- * configure.in: Added call to AC_CHECK_GNU_GETOPT.
-
- * acconfig.h: Document HAVE_GNU_GETOPT.
-
- * Makefile.am (EXTRA_DIST_AUX): Added check_gnu_getopt.m4 macro file.
-
-2001-06-25 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * LSM.am-utils, NEWS, README.y2k, ChangeLog: make sure all
- am-utils URL references use www.am-utils.org, not the columbia
- URL.
-
-2001-06-08 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/transp/transp_sockets.c (create_nfs_service): cast to
- u_long to ensure clean compile on freebsd5 and bsdi2.
-
-2001-05-23 Ion Badulescu <ionut@moisil.badula.org>
-
- WARNING: WORK IN PROGRESS
-
- It works for me on Linux (both autofs and nfs mounts), for nfs and
- link, but I won't make any guarantees outside those.
-
- * amd/mntfs.c (find_mntfs): reuse the mntfs only if both the mount
- point and the device/fileserver are the same. This is an important
- change of philosophy, watch out for memory leaks!
-
- * amd/map.c (get_ap_child): helper function for
- amfs_auto_lookuppn, creates a new am_node for key fname, inits it,
- and inserts it into all necessary structures
-
- * amd/amfs_auto.c (free_continuation): free unused mntfs's; don't
- free any of the removed fields
- (amfs_auto_lookuppn, amfs_auto_bgmount): split lookuppn into three
- subfunctions, including some code stolen from bgmount; lookuppn
- now generates an array of possible mntfs to try mounting, and
- bgmount will actually try to mount each of them.
- (amfs_auto_lookuppn[123]): the three new subfunctions for lookuppn
- (amfs_parse_defaults): new helper function for lookuppn
-
-2001-05-19 Erez Zadok <ezk@kosh.dyn.optonline.net>
-
- * conf/mount/mount_linux.c: typo: added comma after '0' element.
-
-2001-05-19 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * conf/autofs/autofs_linux.c (AUTOFS_MAX_VERSION): allow using
- autofs-v4 again
- (autofs_get_opts): don't pass pgrp, the kernel will get it
- automatically anyway, not to mention that we were passing bogus
- data if amd was not daemonized.
-
- * conf/mount/mount_linux.c (linux_nfs_error): don't special case
- the 0 result, just put it into the translation list
-
-2001-05-19 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * conf/mount/mount_linux.c (linux_nfs_error): don't report success
- (0) as error (NE_IO)!
-
-2001-05-18 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * amd/amfs_host.c (amfs_host_mount): don't fail the mount if at
- least one share is already mounted
-
-2001-05-17 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * libamu/util.c (str3cat): updated comment
-
- * include/am_utils.h: added VLOOK_LOOKUP and FS_DIRECT
-
- * conf/autofs/autofs_linux.c (autofs_get_fh): removed obsolete comment
- (autofs_mounted): disable autofs support for host f/s if version < 4
- (create_autofs_service): turn on FS_MKMNT on auto f/s if using autofs
- (autofs_umount_succeeded): use rmdirs instead of rmdir
- (autofs_mount_failed): ditto
-
- * amd/opts.c (expand_op): align the debugging messages
-
- * amd/map.c (mount_auto_node): use am_node *mp instead of casting
- the void *arg; update the comment
-
- * amd/autil.c (am_mounted): check the FS_DIRECT flag instead of
- comparing to &amfs_direct_ops
- (mount_node): ifs_mount doesn't exist, make note of it in the
- comment
-
- * amd/amfs_direct.c (amfs_direct_ops): added FS_DIRECT to fs_flags
-
- * amd/amfs_auto.c (amfs_auto_mount): removed the autofs hack to
- create the mountpoint directory for auto f/s; it is now handled in
- autofs_linux.c
- (amfs_auto_bgmount): renamed the mpe parameter to mp_error;
- renamed dont_retry to retry and reverted its meaning as well;
- moved the mp variable up one scope and made use of it throughout
- the function;
- (amfs_auto_readdir): whitespace
- (amfs_auto_readdir_browsable): whitespace, also some debugging
-
- * amd/am_ops.c (vops): updated a comment
-
- * .cvsignore: added A.i386-pc-linux-rh7.[01]
-
-2001-05-01 Ion Badulescu <ionut@gonzales.dev.hydraweb.com>
-
- * conf/mount/mount_linux.c: fixed stupid error in the linux
- nfs_errormap[], which was mapping ENOENT to success!!!
-
-2001-04-28 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * BUGS: added info about the direct mount problems on Linux and
- about the kernel patches on www.am-utils.org.
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_unmount_2_req):
- removed obsolete comment
-
- * amd/autil.c (forcibly_timeout_mp): always log a message when the
- forced unmount request is ignored
- (mf_mounted): don't lstat unless this is an autofs mount point,
- lest we deadlock
-
- * amd/amfs_auto.c (amfs_auto_bgmount): don't gratuitously add
- MFF_MKMNT to the flags, it causes deadlocks later on when
- unmounting
-
-2001-04-14 Erez Zadok <ezk@whitestar.dyn.optonline.net>
-
- * COPYING: update copyright year
-
- * amd/amfs_auto.c, amd/amfs_host.c, amd/amfs_nfsx.c,
- amd/amfs_toplvl.c, amd/amfs_union.c, amd/conf.c, amd/info_nis.c,
- amd/info_nisplus.c, amd/mapc.c, amd/nfs_subr.c, amd/ops_nfs.c,
- amd/rpc_fwd.c, amd/srvr_amfs_auto.c, amd/srvr_nfs.c,
- conf/autofs/autofs_solaris_v1.c, conf/mtab/mtab_file.c,
- conf/mtab/mtab_isc3.c, conf/mtab/mtab_svr4.c,
- conf/transp/transp_sockets.c, conf/transp/transp_tli.c,
- libamu/mount_fs.c, libamu/mtab.c: rewritten various dlog/plog
- messages for clarity, to avoid duplication, to better recognize
- what the message means and where it ran, and to fix typos.
-
- * amd/nfs_subr.c (nfsproc_lookup_2_svc): moved trace message of
- function's name to the beginning of the function, before any other
- messages are logged.
-
-2001-04-14 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * conf/mount/mount_linux.c (do_mount_linux): removed plog() of
- binary data
-
-2001-04-05 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * include/am_defs.h: define NFSCLIENT, NFS, PCFS, LOFS, RFS,
- MSDOSFS, MFS and CD9660 to 1, so that both #if FOO and #ifdef FOO
- work (needed for MacOS X); removed duplicate definition of NFS.
-
-2001-03-29 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * amd/amd.h, amd/amfs_auto.c, amd/conf.c,
- doc/am-utils.texi,
- scripts/amd.conf-sample, scripts/amd.conf.5:
- renamed selectors_on_default to selectors_in_defaults,
- kept the former as a deprecated option;
- renamed CFM_ENABLE_DEFAULT_SELECTORS to CFM_SELECTORS_IN_DEFAULTS;
- renamed gopt_selectors_on_default() to gopt_selectors_in_defaults()
-
-2001-03-19 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * amd/amfs_toplvl.c, amd/amfs_auto.c, amd/srvr_nfs.c,
- include/am_utils.h: compile fixes for --enable-debug=no
-
-2001-03-15 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * NEWS: updated
-
- * README.autofs: updated
-
- * conf/mount/mount_linux.c (linux_version_code): export the fn
-
- * conf/nfs_prot/nfs_prot_linux.h: ditto
-
- * conf/autofs/autofs_linux.c (create_autofs_service): verify the
- kernel version here, and turn off bind_works if the kernel is
- older than 2.4.0.
- (autofs_link_mount): don't touch bind_works here, it's useless
- b/c we're in a child process; remove the mountpoint directory if
- the bind mount fails
-
- * amd/opts.c (eval_fs_opts): changed some annoying debugging plogs
- into dlogs
-
- * conf/autofs/autofs_linux.c (autofs_link_mount): zero out the
- mntent struct before initializing it
-
-2001-03-14 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * conf/mount/mount_linux.c (parse_opts): added support for lofs
- (mount_linux): support lofs through bind mounts and/or FiST lofs
-
- * scripts/ctl-hlfsd.in: search for /var/spool/mail in addition to
- /var/mail and /usr/spool/mail
-
- * conf/nfs_prot/nfs_prot_linux.h (MS_BIND): add define for it, if
- kernel is newer than 2.4.0
- (MNTTYPE_LOFS): ditto
-
- * conf/autofs/autofs_solaris_v2_v3.c (autofs_link_umount): new stub
- (autofs_lookup_failed): removed stub
-
- * conf/autofs/autofs_linux.c (autofs_lookup_failed): moved up in
- the file, made static;
- (autofs_link_mount): activate MNT2_GEN_OPT_BIND code; use stat()
- and friends to determine if bind mounts can be used and to trigger
- further cascading mounts; return proper error codes
- (autofs_link_umount): distinguish between symlinks and bind mounts
- and handle both correctly
- (autofs_umount_succeeded): remove call to autofs_link_umount()
-
- * amd/map.c (umount_exported): try to unmount all mount points on
- an autofs filesystem; this isn't really needed and will be removed
- when we start handling restarting autofs mounts
-
- * amd/amfs_link.c (amfs_link_[u]mount): call autofs_link_[u]mount,
- if necessary
-
- * amd/amfs_auto.c (amfs_auto_bgmount): fixed a bug that was
- causing the wrong mntfs to be selected when using autofs; removed
- call to autofs_link_mount() (moved where it belongs, in
- amfs_link.c)
-
- * amd/amfs_link.c: added FS_MBACKGROUND to fs flags -- cleaner
- solution is needed, because background mounting is only necessary
- for linux autofs + bind mounts
-
- * amd/amd.h: removed prototype for autofs_lookup_failed (internal
- static function for linux autofs); added prototype for
- autofs_link_umount
-
- * configure.in: bump up library patchlevel
-
-2001-02-28 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * aux/macros/check_mount_trap.m4,
- aux/macros/check_nfs_fh_dref.m4,
- aux/macros/check_nfs_prot_headers.m4,
- aux/macros/type_recvfrom_fromlen.m4,
- aux/macros/type_yp_order_outorder.m4:
- Fixed newer freebsd's fh type, expanded more aix3, osf2, hpux9 to
- aix[1-3], osf[1-3] and hpux[6-9].
-
-2001-02-28 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * check_mount_style.m4, check_mount_trap.m4,
- check_network_transport_type.m4, check_nfs_fh_dref.m4,
- check_nfs_prot_headers.m4, check_nfs_sa_dref.m4,
- check_nfs_socket_connection.m4, os_cflags.m4,
- type_yp_order_outorder.m4: small fixes to Ion's cleanup, and more
- cleanup (use [[0-1]] instead of M4 changequote commands).
-
- * Makefile.am: removed unused conf/trap/trap_hpux11.h
-
-2001-02-27 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * aux/macros/check_network_transport_type.m4,
- aux/macros/check_mount_style.m4,
- aux/macros/check_mount_trap.m4,
- aux/macros/check_network_transport_type.m4,
- aux/macros/check_nfs_fh_dref.m4,
- aux/macros/check_nfs_prot_headers.m4,
- aux/macros/check_nfs_sa_dref.m4,
- aux/macros/check_nfs_socket_connection.m4,
- aux/macros/os_cflags.m4,
- aux/macros/type_auth_create_gidlist.m4,
- aux/macros/type_recvfrom_fromlen.m4,
- aux/macros/type_yp_order_outorder.m4:
- Reworked the scripts, so that a new _unknown_ version of a known OS
- will use the option for the newest _known_ version of that OS. For
- example, when freebsd6 comes out, it will use the stuff for
- freebsd5, not the stuff for freebsd2. This makes configure more
- likely to succeed on new systems/versions.
-
- * Makefile.am (EXTRA_DIST_AUX): added check_autofs_style.m4 (grr)
-
-2001-02-24 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * Makefile.am (install-snapshot): use a different symlink target
- for the experimental snapshots.
-
-2001-02-23 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * Makefile.am (EXTRA_DIST_CONF): include nfs_prot_darwin.h in
- distributions.
-
-2001-02-22 Erez Zadok <ezk@earth.cs.columbia.edu>
-
- * released snapshot am-utils-6.1a3
-
- * amd/Makefile.am (EXTRA_amd_SOURCES): don't forget to distribute
- get_args.c
-
-2001-02-21 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/mtab.c: added the functions hasmnteq and haseq to
- ease checks for non-numeric values in opt=value strings.
- Recoded hasmntval to qualify input as numeric, allow hex and
- octal strings on rhs of =, and log when the value is missing
- or invalid.
-
- * conf/mount/mount_linux.c: revised mount_linux to use new
- hasmnteq function to extract type of non-nfs mounts, and added
- a log message to catch possible failure of strdup.
-
- * amd/am_ops.c: revised merge_ops to use new haseq function
-
- * amd/srvr_nfs.c: revised find_nfs_srvr to use hasmnteq to
- discover protocol setting.
-
- * include/am_utils.h: added function prototypes for hasmnteq
- and haseq
-
-2001-02-19 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * include/mount_headers2.h (_LINUX_NFS3_H): define it, to avoid
- pulling in unwanted declarations from 2.2.19pre and 2.4.1ac
-
- * include/am_defs.h (_LINUX_NFS3_H): ditto
-
- * conf/nfs_prot/nfs_prot_linux.h: whitespace, comments
-
-2001-02-19 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_fs_mntent.m4 (ac_safe): remove debugging "echo"
- command.
-
-2001-02-18 Erez Zadok <ezk@earth.cs.columbia.edu>
-
- * aux/macros/mount_headers.m4, include/mount_headers[12].h: split
- mount_headers.h in two because one relative header (nfs_prot.h)
- file cannot be included inside another from the start directory of
- the first (it's relative to the directory of the first).
-
-2001-02-09 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * AUTHORS: added Ahmon Dancy <dancy@franz.com>
-
- * (all): added Darwin/Rhapsody/Apple OS X support from Ahmon Dancy
-
- * aux/macros/mount_headers.m4: moved all the C code into a
- separate file, include/mount_headers.h; the effect is that
- configure goes down in size by a factor of 2.5!
-
- * include/mount_headers.h: new file, with C code from
- aux/macros/mount_headers.m4
-
-2001-02-01 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * conf/mount/mount_linux.c: made linux_nfs_error() more robust.
-
-2001-02-01 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.1a2
-
- * updated ltmain.sh and ltconfig from latest stable version of
- libtool-1.3.5
-
-2001-02-01 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * conf/nfs_prot/nfs_prot_linux.h (nfs_error): moved the definition
- of nfs_error here, from mount_linux.c, so that it can actually be
- used.
-
- * conf/mount/mount_linux.c: added unused errno 41 to the
- nfs_errormap array, lest the following errno's get shifted up by
- one!
-
-Sat Jan 13 00:04:38 2001 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * amd/amd.h (autofs_lookuppn): Fixup whitespace.
- * amd/amfs_auto.c (amfs_auto_bgmount): Likewise.
- * amd/amfs_error.c: (amfs_error_match): Likewise.
- * amd/amfs_host.c (fetch_fhandle): Fixup whitespace. Remove
- unnecessary temporary variable.
- * amd/info_file.c (read_line): Likewise.
- (search_or_reload_file): Likewise.
- * amd/info_ldap.c (get_ldap_timestamp): Likewise.
- * amd/map.c (get_root_ap): Likewise.
- * amd/nfs_prot_svc.c: Likewise.
- * amd/ops_TEMPLATE.c (foofs_match, foofs_lookuppn,
- foofs_readlink, foofs_ffserver): Likewise.
- * amd/ops_autofs.c (autofs_bgmount): Likewise.
- * amd/ops_lofs.c (lofs_match): Likewise.
- * amd/ops_nfs.c (got_nfs_fh): Fixup whitespace.
- * amd/ops_xfs.c (xfs_match): Likewise.
- * amd/srvr_amfs_auto.c (srvrlog): Line break.
- * amd/srvr_nfs.c (got_portmap, call_portmap, nfs_pinged,
- nfs_srvr_port): Fixup whitespace.
- * conf/nfs_prot/nfs_prot_bsdi2.h: Likewise.
- * conf/nfs_prot/nfs_prot_hpux.h: Likewise.
- * conf/nfs_prot/nfs_prot_hpux11.h: Likewise.
- * conf/nfs_prot/nfs_prot_irix5.h: Likewise.
- * conf/nfs_prot/nfs_prot_irix6.h: Likewise.
- * conf/nfs_prot/nfs_prot_nextstep.h: Likewise.
- * conf/nfs_prot/nfs_prot_osf2.h: Likewise.
- * conf/nfs_prot/nfs_prot_osf4.h: Likewise.
- * conf/nfs_prot/nfs_prot_osf5_1.h: Likewise.
- * conf/nfs_prot/nfs_prot_sunos3.h: Likewise.
- * conf/nfs_prot/nfs_prot_sunos4.h: Likewise.
- * conf/nfs_prot/nfs_prot_ultrix.h: Likewise.
- * conf/transp/transp_tli.c (get_mount_client): Likewise.
- * hlfsd/nfs_prot_svc.c: Likewise.
- * include/am_defs.h (sys_errlist): Likewise.
- * include/am_utils.h (am_get_progname, am_get_hostname,
- amq_program_1): Likewise.
- (nfsxprt): Moved declaration.
-
-Fri Jan 12 23:31:45 2001 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- Removed support for amq -M.
-
- * acconfig.h (ENABLE_AMQ_MOUNT): Removed.
- * aux/macros/opt_amq_mount.m4: Removed.
- * Makefile.am (EXTRA_DIST_AUX): Don't distribute
- opt_amq_mount.m4.
- * configure.in (AC_OPT_AMQ_MOUNT): Removed invocation.
-
- * amd/amq_subr.c (ok_security, amqproc_mount_1_svc): Removed.
- * amd/amq_svc.c (amq_program_1): Removed amq -M support.
- * amq/amq.c (mount_map): Removed.
- (main): Removed -M option handling.
- Removed transport-type specific CLIENT creation.
- (get_secure_amd_client, amq_bind_resv_port, privsock): Removed.
-
- * amq/amq.8: Removed -M documentation.
- * doc/am-utils.texi (Top-level Filesystem): Removed amq -M
- reference, but retain comment on mount -t amd.
- (Controlling Amd): Likewise.
-
- * tasks: Removed this task.
-
-Fri Jan 12 23:18:26 2001 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * conf/autofs/autofs_*.c: Bump copyright year to 2001.
- * hlfsd/hlfsd.h (HLFSD_VERSION): Likewise.
-
- * aux/macros/check_autofs_style.m4: Renamed solaris[12] styles to
- solaris_v1, solaris_v2_v3 to reflect that these are AutoFS
- protocol version numbers, not solaris versions.
- * conf/autofs/autofs_solaris[12].[ch]: Renamed to
- autofs_solaris_{v1, 2_v3}.[ch] to reflect this.
- * Makefile.am (EXTRA_DIST_CONF): Likewise.
-
- * aux/macros/check_autofs_style.m4: Use solaris2 style for both
- versions 2 and 3 of the AutoFS protocol.
-
- Handle missing AUTOFS_POSTUNMOUNT, AUTOFS_POSTMOUNT (unnecessary
- with Solaris 8 mntfs).
-
- * conf/autofs/autofs_solaris2.c (xdr_postumntreq, xdr_postumntres,
- xdr_postmountreq, xdr_postmountres, autofs_postunmount_2_req,
- autofs_postmount_2_req ): Don't define for version 3.
- (autofs_program_2): Don't handle AUTOFS_POSTUNMOUNT,
- AUTOFS_POSTMOUNT if missing.
-
- * conf/nfs_prot/nfs_prot_sunos5_8.h: Enable AutoFS support.
-
- * aux/macros/check_autofs_style.m4: Use empty autofs_default.[ch]
- files on systems without existing autofs port.
- * conf/autofs/autofs_default.[ch]: New files, empty.
- * Makefile.am (EXTRA_DIST_CONF): Distribute them.
- * INSTALL: With this change, Solaris 8 and Tru64 5.1 compile and
- link.
-
-2001-01-12 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * Makefile.am (EXTRA_DIST): distribute new LDAP files.
-
- * README.ldap, ldap-id.txt, ldap-id.ms: LDAP status information,
- proposed Schema, and internet draft.
-
-Fri Jan 12 22:27:07 2001 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * Support Tru64 UNIX V5.1:
-
- * conf/nfs_prot/nfs_prot_osf5_1.h: New file.
-
- * Makefile.am (EXTRA_DIST_CONF): Distribute it.
-
- * aux/macros/check_nfs_prot_headers.m4: Tru64 UNIX V5.1 has
- AutoFS, need to disable it until a port exists.
-
- * INSTALL, doc/am-utils.texi (Supported Platforms): Mention new
- minor port.
-
-2001-01-09 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * ALL: bump copyright year to 2001.
-
-2001-01-05 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * acconfig.h: correct comments for NODEV/NONDEV mount options
-
-Fri Jan 5 05:12:02 2001 Erez Zadok <ezk@subzero.cs.columbia.edu>
-
- * libamu/xdr_func.c: removed ugly casts to "groups*", now that
- irix6's nfs_prot.h is fixed.
-
- * conf/nfs_prot/nfs_prot_irix6.h: copied relevant parts of
- <rpcsvc/mount.h> here so we don't have to include this header.
-
-2001-01-04 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_irix6.h: redefine "groups" typedef to
- struct groups, not the pointer to this struct.
-
- * include/am_xdr_func.h: prototype should take "groups *" as 2nd
- arg.
-
- * libamu/xdr_func.c (xdr_groupnode, xdr_exportnode): change
- casting of second arg of xdr_groups to "groups *". It's only
- needed for irix6, due to problems with xdr_groups on that platform.
- (xdr_groups): prototype should take "groups *" as 2nd arg.
-
- * conf/nfs_prot/nfs_prot_aix*.h: correct xdr_groups extern
- definition. Report from Ahmon Dancy <dancy@franz.com>.
-
-2000-12-06 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * include/am_defs.h: force non-inclusion of <linux/fs.h> via
- <linux/auto_fs.h>
-
- * conf/autofs/autofs_linux.c (autofs_mounted): rename
- AUTOFS_MIN_PROTO_VERSION to AUTOFS_MIN_VERSION (leftover from
- previous commit)
-
- * configure.in: fixed libtool version
-
-2000-12-02 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * doc/am-utils.texi (opts Option): document lock/nolock
-
-2000-12-02 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * conf/autofs/autofs_linux.h: added struct autofs_pending_mount;
- modified autofs_fh_t to have a linked list of autofs_pending_mount;
- added some support for autofs4
-
- * conf/autofs/autofs_linux.c: use a linked list for pending
- request, to allow for handling multiple simultaneous request;
- incipient non-functional support for autofs4; incipient
- non-functional support for bind-mounting
-
- * amd/amd.c (main): print a warning if PROCLOCK is requested but
- the O/S doesn't support it
-
- * libamu/mount_fs.c (mnt_flags): allow the use of the "nolock"
- option
-
- * include/am_defs.h: don't include <linux/fs.h> on a glibc2
- system; include <linux/auto_fs4.h> if it exists, instead of
- <linux/auto_fs.h>
-
- * include/am_compat.h: define the "nolock" mnttab option if the
- NONLM NFS mount option is defined
-
- * acconfig.h: added MNT2_NFS_OPT_NONLM, MNT2_GEN_OPT_BIND
-
- * configure.in: added detection of the NONLM Linux NFS mount
- option; added a clarification for the library versioning rules and
- increased the minor level; added detection of <linux/auto_fs4.h>
- and the MS_BIND generic mount option
-
-2000-11-29 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * Enabled Solaris 2.7 autofs support (tested, works)
-
- * Updated NEWS, README.autofs
-
- * Updated Makefile's, make dist is now fixed
-
- * Fixed potential memory leak in map.c
-
- * Fixed autofs style detection for solaris 2.[67]
-
- * Added a few casts in autofs_solaris2.c, needed on Solaris 2.7
-
-2000-11-28 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- More Solaris 2.[67] work in progress:
-
- * changed the API for the mount/umount methods: fmount/fumount are
- gone, and mount/umount now take two arguments (am_node and mntfs)
-
- * changed the semantics of the MFF_AUTOFS flag: MFF_AUTOFS now
- means the mntfs is a filesystem of type autofs, and AMF_AUTOFS
- means the am_node is a node on a filesystem of type autofs.
-
- * renamed nfs_program_2_transp to current_transp so it can be used
- with autofs
-
- * renamed quick_reply() to nfs_quick_reply()
-
- * added two more autofs methods: autofs_umount_failed() and
- autofs_compute_mount_flags() -- it turns out that on sol2.6 the
- autofs mounts MUST be overlay'ed
-
- * moved the autofs_mount_succeeded() into am_mounted()
-
- * made amd *not* timeout autofs mounts -- the kernel will do it
- for us
-
- * store dev and rdev of a mounted filesystem in the mntfs
- structure, to help autofs
-
- * moved the rmdirs() call from uninit_mntfs() to am_umounted(), to
- prevent deadlocking with autofs
-
- * amd/Makefile.am: shuffled things around to make
- update_build_version be the last thing that runs
-
-2000-11-27 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * split amd/ops_autofs.c into conf/autofs/autofs_<system>.c files
- and made configure create a symlink to the appropriate one
-
- * moved the xdr autofs functions from libamu/xdr_func.c into the
- system-specific conf/autofs/autofs*.c
-
- * added some more experimental code to the sol2.6 autofs support,
- but it's by no means functional
-
-2000-11-27 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * libamu/wire.c (getwire_lookup): truncate the hostname to
- MAXHOSTNAMELEN characters.
-
-2000-11-26 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * include/am_utils.h (MAXHOSTNAMELEN): if not defined, set this to
- 256 bytes, not 64. Suggestion form Kris Kennaway
- <kris@FreeBSD.org>.
-
-2000-11-26 Erez Zadok <ezk@dmath5.geometrie.tuwien.ac.at>
-
- * configure.in (AC_CHECK_MNT2_NFS_OPTS): check for NFS mount
- options kerb, rdirplus, readdirsize, and xlatecookie
- (NetBSD-1.5K).
-
- * acconfig.h: recognize NFS mount options rdirplus, readdirsize,
- and xlatecookie (NetBSD-1.5K)
-
-2000-11-24 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/srvr_nfs.c: comment on NFS proto search order.
-
- * libamu/xutil.c (real_plog): don't try to write the last byte of
- the fmt buf. security suggtion from NetBSD: Thomas Klausner
- <wiz@danbala.ifoer.tuwien.ac.at>
-
-2000-11-22 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * amd/amfs_auto.c (amfs_auto_bgmount): removed the initialization of
- fattr.na_fileid, it is now done in map.c when the map is initialized
-
- * amd/map.c (init_map): initialize fattr.na_fileid to am_gen, not
- to 0, to avoid cache aliasing problems on Linux (and to follow the
- NFS spec!)
-
-2000-11-22 Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>
-
- * libamu/mount_fs.c (mount_fs): avoid using extra limited-size buf
- (security)
-
- * libamu/xutil.c, fsinfo/fsinfo.h, include/am_utils.h: use
- __attribute__, __format__, and __printf__ for GCC string auditing.
-
- * wire-test/wire-test.8: this is not a section 8L man page.
-
- * libamu/xutil.c (expand_error): don't use sys_nerr on systems
- that support strerror().
- (dplog): fmt is const
- (plog): fmt is const
- (real_plog): fmt is const. use new expand_error function with its
- new return value. be more careful about running off the end of
- char[] fixed size buffers.
-
- * libamu/wire.c (getwire): fix alignment error on alpha using an
- extra automatic storage variable ifrpool.
-
- * hlfsd/hlfsd.c (fatal): use proper printf style to plog.
-
- * fsinfo/fsinfo.c (find_username): getlogin() returns a const.
-
- * fsinfo/fsi_util.c (error, lerror, lwarning, fatal, log): use
- vfprintf.
-
- * fsinfo/fsi_lex.l (yyerror): use vfprintf.
-
- * fixmount/fixmount.8: this is not a section 8L man page.
-
- * doc/am-utils.texi (Hesiod maps): fixed typo.
-
- * amd/sched.c (do_task_notify): typo in comment.
-
- * amd/opts.c (expand_op): expand_error[] is a const char *.
-
- * amd/amd.c (main): use proper printf style to plog.
-
-2000-11-22 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/mount_fs.c (mnt_flags, compute_nfs_args): recognize
- proplist mnttab flag. Bug fix from Wolfram Klaus
- <klaus@physik.fu-berlin.de>.
-
-2000-11-19 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * updated config.guess, config.sub, and doc/texinfo.tex from
- mirrors
-
- * Makefile.am (update): proper updating of config.* and texinfo
- from mirrors.
-
- * aux/macros/check_nfs_prot_headers.m4: newer netbsd systems
- reports their system name as "netbsdelf" in config.guess.
-
-2000-11-13 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (opts Option): document new mount option
- "proplist"
-
- * include/am_compat.h: define amd mount option "proplist" if the
- system doesn't recognize it, but the NFS bit flag exists.
-
- * configure.in, acconfig.h: recognize/support "proplist" NFS mount
- option in Amd, useful under DU-4.0 to process ACLs over NFS
- mounts.
-
-2000-11-10 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- * conf/mount/mount_linux.c (mount_linux): removed unnecessary
- rsize/wsize defaults -- performance killers on 2.2.18+ and 2.4.0+
-
-2000-10-16 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/am-eject.in: accept "cdrom" and "floppy" as arguments.
-
-2000-11-05 Ion Badulescu <ionut@moisil.dev.hydraweb.com>
-
- Too many changes to list them here. Here's a high level
- description:
-
- * Forward-ported the Linux fixes from 6.0.5pre
-
- * Got rid of a mountain of #ifdef DEBUG, replaced with smart
- header-file #ifdef's
-
- * and, the grand finale: initial Solaris 2.6 autofs
- support. Compiles, mounts, gets requests; all the
- infrastructure is in place to actually implement the calls. Linux
- autofs might be a bit broken, but only compile-time so it'll be
- easy to fix.
-
-2000-11-01 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * MIRRORS (Note): added a mirror at ufl.edu
-
-2000-10-11 Erez Zadok <ezk@lorien.dev.hydraweb.com>
-
- * amq/amq.8: synchronize Amq's options with reality
-
- * amq/amq.c (main): synchronize Amq's usage() string with reality
-
-2000-10-10 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/ctl-amd.in: add targets condrestart (redhat) and
- reload.
-
-2000-10-04 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/lostaltmail.in (vrfy_user): ensure that MAILDIR is
- defined.
-
-2000-09-18 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/opts.c (backslash): Bell char (ASCII 007) should be \g, not
- \a.
-
-2000-09-17 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * include/am_utils.h: removed unused field opt_autopref
-
- * amd/opts.c: removed unused variable $autopref
-
-2000-09-05 Erez Zadok <ezk@aladdin.dev.hydraweb.com>
-
- * conf/mtab/mtab_svr4.c (lockfile): function not needed unless
- MOUNT_TABLE_ON_FILE is defined.
- mtlckname static var is onlyneeded if MOUNT_TABLE_ON_FILE.
- (update_mnttab_fields): only needed if MOUNT_TABLE_ON_FILE.
-
-2000-09-03 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * buildall (Usage): typo in usage string
-
-2000-08-25 Erez Zadok <ezk@lynn.soscorp.com>
-
- * conf/mount/mount_linux.c (mount_linux): MNT2_NFS_OPT_VER3 may
- is no defined on older Linux systems (kernel 2.0.36)
-
-2000-08-19 Erez Zadok <ezk@earth.cs.columbia.edu>
-
- * scripts/amd.conf.5: correct swapped descriptions for ldap_base
- and ldap_hostports.
-
- * doc/am-utils.texi: correct swapped descriptions for ldap_base
- and ldap_hostports.
-
- * scripts/amd.conf-sample: swap examples for ldap_base and
- ldap_hostports.
-
-2000-08-13 Erez Zadok <ezk@earth.cs.columbia.edu>
-
- * scripts/amd.conf-sample: -O is CLI equivalent to "os"
- amd.conf parameter
-
-2000-07-30 Erez Zadok <ezk@earth.cs.columbia.edu>
-
- * scripts/amd.conf-sample (nfs_retransmit_counter): correct
- meaning and use of parameter
-
-2000-07-23 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi: updated URLs to www.am-utils.org.
-
-2000-07-04 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (Supported Platforms): document osf4.0f
-
-2000-06-19 Erez Zadok <ezk@vir.cs.columbia.edu>
-
- * doc/am-utils.texi (dollar Selector Variable): document
- ${dollar}.
-
- * amd/opts.c: special new variable ${dollar} which expands into a
- literal '$' sign. Otherwise there is no way to include a literal
- dollar symbol in an amd map.
-
-2000-06-11 Ion Badulescu <ib42@moisil.cs.columbia.edu>
-
- * amd/opts.c (eval_selectors): don't deref opt after it's been
- XFREE'd
-
-2000-06-11 Erez Zadok <ezk@earth.cs.columbia.edu>
-
- * amd/opts.c: move mount_type expansion until later in the list,
- so common variable are "hit" first.
-
-2000-06-11 Ion Badulescu <ib42@moisil.cs.columbia.edu>
-
- * amd/opts.c (split_opts, eval_selectors): split old function
- eval_opts into two, one that only splits non-selectors and
- assigns the values to fs_static, and one that only evaluates
- selectors; also simplified the rather obfuscated logic inside
- these functions
- (expand_op): made it take a char * instead of a structure from
- which it was using only one field (a char *). Also now returns a
- char * instead of modifying said structure in place
- (expand_opts): deal with the change above
- (expand_selectors): renamed from expand_key
- (expand_options): new function, expands non-selectors; it's the
- complement of expand_selectors, both of which are just wrappers
- around expand_op()
- (eval_fs_opts): use the new split_opts, eval_selectors to allow
- using options (like ${rhost}) in selectors
-
-2000-06-11 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * config.guess.long: munge config.guess' output so that intel
- linux appears as i386-pc-linux
-
-Fri Jun 9 16:06:56 2000 Erez Zadok <ezk@defiant.dev.hydraweb.com>
-
- * conf/nfs_prot/nfs_prot_bsdi2.h: getifaddrs() on bsdi2 is broken.
- Don't use it.
-
-2000-06-09 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * amd/mapc.c (maptypes): Change default allocation mode to
- MAPC_INC where reload support is missing to avoid warning in
- mapc_create().
-
-2000-06-09 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_sunos5_5.h: turn off autofs support for
- solaris 2.5 until a full port can be done.
-
-2000-06-07 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * Makefile.am, aux/GNUmakefile: fix maintainer rules to update
- config.* and texinfo.tex files.
-
- * amd/nfs_subr.c (nfsproc_getattr_2_svc): Don't conditionalize the
- mtime update of the symlinks on the SYMTTL option, but rather
- delay unmount of what was looked up using am_timeo_w. Patch from
- Nick Williams <Nick.Williams@msdw.com>. As Nick says "Basically:
- during unmount, increment the parent dir's mtime (fixes
- people doing amq -u). During stat, increase the TTL (to fix bad-luck
- timeouts), but leave the mtime alone."
-
- (nfsproc_lookup_2_svc, nfsproc_readlink_2_svc, unlink_or_rmdir,
- nfsproc_readdir_2_svc): correctly update d_drops stats for amq -s.
- Patch from Nick Williams <Nick.Williams@msdw.com>.
-
- * amd/map.c (unmount_mp): update mtime of amd symlink to further
- reduce the chances of race conditions between unmounting and
- looking up an entry again. Patch from Nick Williams
- <Nick.Williams@msdw.com>.
-
- * README: updated instructions
-
- * bootstrap: remove log file before existing
-
-2000-06-06 Erez Zadok <ezk@aladdin.dev.hydraweb.com>
-
- * configure.in: no longer using aux/ subdir. don't force autoconf
- 2.14. comment out (but leave explanation) everything that's needed
- for autoconf 2.14, so for now it works with autoconf-2.13, but the
- code is ready for 2.14 when it is released. Similar changes to
- make code work with automake-1.4, until the next release comes
- out.
-
- * libamu/Makefile.am: include definitions that are required in
- automake 1.4, but won't be necessary when the next release of
- automake comes out (see XXX comments).
-
- * cache_check_dynamic.m4, check_checkmount_style.m4,
- check_mnttab_style.m4, check_mount_style.m4,
- check_network_transport_type.m4, check_nfs_prot_headers.m4,
- check_umount_style.m4: use symlink creation code that works for
- both autoconf 2.13 and 2.14 (when the latter comes out).
-
- * bootstrap: new script for maintainers to run to update autoconf,
- automake, and libtool related files. Has the same effect as
- "buildall -K".
-
- * removed dependencies on CVS versions of autoconf, automake, and
- libtool, especially the modified automake I had. This is so that
- maintainers could built the auto* files out of the latest released
- GNU autoconf, automake, and libtool. However, without my nice
- patches to automake, many files that used to live in the aux/
- subdir now were moved to the top level source directory: acconfig.h,
- acinclude.m4, aclocal.m4, aux_conf.h.in, config.guess,
- config.guess.long, config.h.in, config.sub, configure.in, depcomp,
- install-sh, ltconfig, ltmain.sh, missing, and mkinstalldirs. Also
- texinfo.tex and mdate-sh moved from aux/ dir to doc/ dir.
-
-2000-06-05 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * cvs-server.txt: instructions for maintainers to access the CVS
- server for am-utils.
-
-2000-06-03 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * amd/restart.c (restart): grr.. passing around initialized
- structures is *really* bad habit. memset(mo, 0) so at least we can
- test for NULL pointers...
-
-2000-06-02 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/am_ops.c (ops_match): changed XLOG_USER messages about
- merging addopts options to the more appropriate XLOG_INFO. Patch
- submitted by Tom Schmidt <tschmidt@micron.com>.
-
- * config.{guess,sub}: make sure chmod'ed a+rx. Updated from
- latest GNU copies.
-
-2000-05-30 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * aux/configure.in: bump up the version to 6.1a2
-
-2000-05-29 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * released snapshot am-utils-6.1a1
-
-2000-05-29 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * amd/ops_autofs.c (autofs_mounted): retrieve the autofs protocol
- version and store it in the fh
- (autofs_get_opts): support protocol version 4
-
- * amd/mntfs.c (uninit_mntfs): clear the autofs fh pointer after
- releasing it
-
- * conf/transp/transp_sockets.c (amu_svc_getcaller): cast result of
- svc_getcaller() to sockaddr_in, to appease glibc 2.2
-
- * amd/amfs_auto.c (amfs_auto_bgmount): if the filesystem wants
- autofs handling and the parent is already handled by autofs,
- handle this filesystem as well
- (amfs_auto_mount): create the mountpoint for an autofs mount
- (amfs_auto_umount): do a real UMOUNT_FS() call for autofs mounts
-
- * include/am_utils.h (FS_AUTOFS): new flag signalling that the
- filesystem wants autofs handling; toplvl, auto, host and direct
- have this flag, at least for now
-
-2000-05-28 Erez Zadok <ezk@mulberry.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (Network Filesystem Group): minor typos
-
-2000-05-28 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * amd/autil.c (am_unmounted): check mp->am_parent before dereferencing
-
- * amd/srvr_nfs.c (find_nfs_srvr): if NFS_SCALEDOWN, force
- version=2 and proto=udp and try again
-
- * amd/ops_nfs.c (prime_nfs_fhandle_cache): take an explicit mntfs
- instead of a voidp; handle the NFS_SCALEDOWN case by removing the
- cached server entry and re-querying the server
-
- * amd/amfs_toplvl.c (amfs_toplvl_mount): removed ugly if
- statement, assign mnttype from the fs-specific mf_ops->fs_type
- instead
-
- * amd/amfs_nfsx.c (amfs_nfsx_init): call fs_init() only if it's
- defined;
- (amfs_nfsx_remount): removed superfluous check for fmount_fs -- it
- always exists
- (amfs_nfsx_umount): removed the hacked am_node -- umounted() now
- takes an mntfs; call umounted() only if it's defined
-
- * amd/amfs_auto.c: removed amfs_auto_umounted and moved its
- functionality into am_umounted().
- (amfs_auto_cont): Linux hack: if we got an EINVAL, mark the mntfs
- as needing an "NFS scaledown" and retry the operation
-
- * amd/amfs_*.c: changed all fmount/fumount functions to
- mount/umount and made them take an am_node instead of an
- mntfs. This is a first step towards an amfs/ops API separation.
-
- * amd/{amfs,ops}_*.c: changed the umounted() function to take an
- mntfs instead of an am_node
-
-2000-05-28 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * amd/amfs_toplvl.c (mount_amfs_toplvl): init error to 0 to shut
- up gcc
-
- * aux/macros/check_hide_mount_type.m4: revert to the 6.0 version
- which always defines HIDE_MOUNT_TYPE
-
- * amd/ops_autofs.c (autofs_mounted): remove MFF_AUTOFS
- initialization -- now done in init_mntfs()
-
- * amd/mntfs.c (init_mntfs): init mf_flags to MFF_AUTOFS if we are
- mounting an autofs-style map
-
- * amd/*.c: use the MFF_AUTOFS flag instead of doing a costly STREQ
-
- * amd/amfs_toplvl.c (mount_amfs_toplvl): MTYPE_TYPE is not
- necessarily a string type, so handle the nfs/autofs separation
- differently
-
- * amd/amfs_auto.c (amfs_auto_bgmount): removed initialization of
- opt_mount_type (now done in ops_match())
-
- * amd/am_ops.c (ops_match): need to initialize opt_mount_type if
- it's not initialized yet
-
-2000-05-27 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/wire.c (getwire_lookup): handle calling irs_gen_acc with
- one or two arguments (bsdi3 vs. bsdi4)
-
-2000-05-27 Ion Badulescu <ib42@chestnut.mcl.cs.columbia.edu>
-
- * libamu/xutil.c (amu_release_controlling_tty): removed an unused
- variable from the previous patch
-
-2000-05-26 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * aux/macros/check_autofs_style.m4: fixed substitution for default
- case
-
- * libamu/xutil.c (amu_release_controlling_tty): close standard
- file descriptors, re-open them as /dev/null
-
- * include/am_defs.h: don't try to include both <ndbm.h> and
- <db1/ndbm.h>, it really doesn't work
-
-2000-05-16 Ion Badulescu <ib42@earth.cs.columbia.edu>
-
- * hlfsd/stubs.c (nfsproc_lookup_2_svc): added code to update mtime
- on lookup if MNT2_NFS_OPT_SYMTTL is not defined (copied from
- getattr). This fixes the problem introduced by the Linux nfsv3
- patches.
-
-2000-05-12 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * Makefile.am (EXTRA_DIST_CONF): added conf/autofs/autofs_linux.h
-
-2000-05-10 Ion Badulescu <ib42@earth.cs.columbia.edu>
-
- * amd/ops_autofs.c (autofs_handle_fdset): call
- autofs_lookup_failed instead of autofs_mount_failed, if the name
- is not in the map
- (autofs_umount_{succeeded,failed}): pass the actual mount point,
- not its parent, as it's needed for clean-up;
-
- * amd/autil.c (am_unmounted): notify autofs that the umount
- succeeded
-
- * amd/amfs_link.c (amfs_link_[u]mount): autofs link notification
- moved elsewhere
-
-2000-05-09 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * amd/amfs_auto.c (amfs_auto_bgmount): initialize opt_mount_type
- if necessary;
- (amfs_auto_mounted): test if opt_mount_type is NULL first
- (amfs_auto_mount): revert earlier change
-
- * amd/ops_autofs.c (autofs_mount_failed): remove autofs directory
- if mount failed
-
-2000-05-09 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * amd/ops_autofs.c (autofs_link_mount): use am_link as target
-
- * amd/map.c (unmount_mp): release file handle for autofs f/s about
- to be unmounted; this leak was preventing the unmount altogether
-
- * amd/amfs_auto.c (amfs_auto_umount): removed autofs-specific
- code, was broken
- (amfs_auto_bgmount): nfs mounts + sublinks is a valid combination,
- handle it
-
-2000-05-07 Ion Badulescu <ib42@moisil.cs.columbia.edu>
-
- * Merged changes from stable branch
-
-2000-04-30 Erez Zadok <ezk@beetle.mcl.cs.columbia.edu>
-
- * include/am_defs.h, aux/macros/mount_headers.m4,
- aux/macros/try_compile_anyfs.m4: include linux/kdev_t.h and
- linux/list.h before including linux/fs.h, and define __KERNEL__
- for those two headers. All of this to get a couple of definitions
- that are needed in the new struct vfsmount.
-
- * aux/configure.in: look for <linux/kdev_t.h> and <linux/list.h>.
-
- * include/am_defs.h, aux/macros/mount_headers.m4: avoid conflicts
- between linux/in.h. and netinet/in.h (linux-2.3.99-pre6), by
- defining _LINUX_IN_H so it doesn't get included.
-
-2000-04-03 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * minor new ports: i686-pc-linux-gnu-rh6.2,
- i386-unknown-freebsdelf3.4, i586-pc-linux-gnu-rh6.2.
-
-2000-04-03 Erez Zadok <ezk@vir.cs.columbia.edu>
-
- * aux/acconfig.h: move all #undef macros above @TOP@, so they can
- be recognized by pickier autoconf.
-
-2000-04-03 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/cache_check_dynamic.m4 (ac_tmp): use correct echo -n
- or \c.
-
-2000-03-25 Erez Zadok <ezk@beetle.mcl.cs.columbia.edu>
-
- * include/am_defs.h: ditto
-
- * aux/macros/{mount_headers,try_compile_anyfs}.m4: force
- non-inclusion of <linux/string.h>. Breaks build on newer 2.3
- kernels.
-
-2000-02-26 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (Amq -w option): document new amq -w option.
-
- * amq/amq.8: document new amq -w option.
-
- * amq/amq.c: disable last remains of insecure amq -M code.
- (main): add amq -H option to show usage.
- (main): new amq -w option, translates getpwd() into an amd path.
-
-2000-02-25 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * libamu/util.c (get_server_pid): new function
-
- * hlfsd/hlfsd.c (main): make use of HIDE_MOUNT_TYPE
-
- * conf/transp/transp_sockets.c: removed create_autofs_service
-
- * conf/mount/mount_linux.c: added autofs mount options; split
- mount_linux into two functions, itself and do_mount_linux
-
- * aux/macros/check_hide_mount_type.m4: better failover
-
- * aux/configure.in: changed version to 6.1a1; added
- AC_CHECK_AUTOFS_STYLE
-
- * aux/aux_conf.h.in: added @am_utils_autofs_style@
-
- * amd/opts.c: added "mount_type" option
-
- * amd/ops_autofs.c: ifdef-ed out solaris code; moved all autofs
- variables in here; split create_autofs_service into sun and linux
- specific functions
-
- * amd/nfs_start.c: removed autofs-specific variables
-
- * amd/map.c (get_root_nfs_fh): renamed root_fh to get_root_nfs_fh
- (get_root_ap): renamed root_ap to get_root_ap
-
- * amd/amfs_toplvl.c (amfs_toplvl_ops): replaced
- amfs_toplvl_mounted with amfs_auto_mounted
- (mount_amfs_toplvl): moved code around, added autofs handling
- (amfs_toplvl_mounted): removed
-
- * amd/amfs_nfsl.c (amfs_nfsl_ops): removed amfs_auto_fu?mount,
- replaced with amfs_nfsl_u?mount
-
- * amd/amfs_linkx.c (amfs_linkx_ops): removed amfs_auto_fumount,
- replaced with amfs_link_umount
-
- * amd/amfs_link.c (amfs_link_ops): removed amfs_auto_fu?mount,
- replaced with amfs_link_u?mount
-
- * amd/amfs_direct.c (amfs_direct_ops): changed "mounted" function
- from amfs_toplvl_mounted to amfs_auto_mounted
-
- * all: added autofs hooks throughout the code
-
- * amd/am_ops.c (vops): autofs_ops doesn't belong in here, removed
-
- * README.autofs: linux status update
-
-2000-02-24 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * minor new port: alphaev6-dec-osf5.0
-
- * doc/am-utils.texi (Supported Platforms): hpux-11 supports NFSv3,
- but only for UDP.
-
- * released snapshot am-utils-6.0.4s3
-
- * conf/nfs_prot/nfs_prot_hpux11.h: support NFSv3 in hpux-11. Note
- that hpux-11 NFSv3 supports UDP only, and trying TCP locks up the
- kernel! Must set nfs_proto=udp in amd.conf [global].
-
- * aux/config.guess.long: set and export PATH separately. DU5
- /bin/sh doesn't like setting it on the command line in a
- back-tick'ed `script`.
-
-2000-02-24 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * Makefile.am: removed struct_nfs_mount_data.m4
-
- * aux/macros/struct_nfs_mount_data.m4: deleted
-
- * aux/acconfig.h: removed definition for HAVE_NFS_MOUNT_DATA
-
- * aux/configure.in: removed check for struct nfs_mount_data
-
-2000-02-24 Ion Badulescu <ib42@beetle.mcl.cs.columbia.edu>
-
- * amd/amfs_auto.c (amfs_auto_bgmount): changed log message to
- avoid having 'failed' in a message not indicating a failure
- (amfs_auto_lookuppn): ditto
-
- * amd/ops_autofs.c (autofs_bgmount): ditto
- (autofs_lookuppn): ditto
-
-2000-02-24 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * added .cvsignore files into the CVS repository.
-
- * remove files which can be regenerated: .in, configure, some
- files in aux/, and more.
-
-2000-02-20 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (nfs_vers/nfs_proto): description of two
- parameters was reversed. Reported by Paul Jenner
- <p.jenner@eim.surrey.ac.uk>.
-
-2000-02-16 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.4s2
-
- * amd/mntfs.c (realloc_mntfs): don't fallback on certain ops such
- as inherit, error, and toplvl (failover code).
-
- * amd/conf.c (gopt_nfs_vers, gopt_nfs_proto): two new (documented)
- global options in amd.conf: one to set the NFS version globally
- (i.e., nfs_vers=2), and one to set the NFS protocol globally
- (i.e., nfs_proto=udp).
-
- * amd/mntfs.c (realloc_mntfs): attempt to fix the failover code,
- so when a matching mount entry failed, try the next one.
-
-2000-02-15 Erez Zadok <ezk@moisil.cs.columbia.edu>
-
- * amd/amfs_auto.c: a new debug option "readdir" to trace the
- progress of the browsable_dirs code.
-
- * conf/mount/mount_linux.c (mount_linux): ensure that the new
- linux NFSv3 code works for v2-only machines.
-
-2000-02-14 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: cleanup unused dnl entries.
-
- * conf/mount/mount_linux.c (parse_opts): typo: check for string
- equality, not string inequality for pcfs and cdfs.
-
- * aux/acconfig.h: look for MNT2_NFS_OPT_INTR as well.
-
- * libamu/mount_fs.c (compute_mount_flags): check for INTR and
- NOINTR options as well (intr was never passed to linux mount
- syscall).
-
-2000-02-10 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.4s1
-
- * aux/GNUmakefile: buildall -k (for maintainers) temporarily now
- ignores autoconf warnings: "The macro `AC_OUTPUT_COMMANDS' is
- obsolete". It is harmless but annoying, and will be fixed when
- autoconf and automake in their respective CVS trees are working
- and in sync again.
-
- * scripts/amd.conf.5: document -D hrtime,xdrtrace
-
- * all man pages: update copyright to 2000.
-
- * doc/am-utils.texi: update copyright to 2000.
-
-Wed Feb 9 14:22:31 2000 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * include/am_utils.h (D_XDRTRACE): Define.
- (D_TEST): Disable here.
-
- * libamu/xutil.c (dbg_opt): Handle it.
-
- * doc/am-utils.texi (-D-Option): Document it.
-
- * libamu/xdr_func.c: Use it instead of D_TRACE.
-
- * include/am_utils.h (D_HRTIME): Define.
-
- * doc/am-utils.texi (-D-Option): Document it.
-
- * libamu/xutil.c (show_time_host_and_name): Print high-resolution
- timestamp if available and activated.
-
- * aux/configure.in (clock_gettime): Check for it in -lrt and
- -lposix4.
-
- * hlfsd/hlfsd.c (mnttab_file_name): Initialize to MNTTAB_FILE_NAME
- if defined, even for some systems with in kernel mount tables.
-
-2000-02-08 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * aux/macros/mount_headers.m4: remove #if 0 around linux/nfs.h to
- allow compiles against libc5
-
- * aux/macros/check_mnttab_type.m4: avoid detecting nfs3 under
- linux when the kernel doesn't support it
-
- * include/am_compat.h: add workaround for linux efs
-
-2000-02-08 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: test for ANSI C compiler (before AC_C_CONST).
- Comment out unused AC_STRUCT_ST_RDEV (which is obsolete anyway).
-
-2000-02-07 Ion Badulescu <ionut@moisil.cs.columbia.edu>
-
- * libamu/mount_fs.c (compute_nfs_args): turn on VER3 option for
- nfs (linux NFSv3).
-
- * include/am_defs.h: avoid reinclusion of some header files under
- linux.
-
- * conf/nfs_prot/nfs_prot_linux.h: support NFSv3.
-
- * conf/mount/mount_linux.c (mount_linux): support nfs mount
- (implementation) version 4 for NFSv3.
-
- * aux/macros/try_compile_nfs.m4: use AC_MOUNT_HEADERS.
-
- * aux/macros/mount_headers.m4: don't include <linux/fs.h> (may
- need to fix the code on other linux machines).
-
- * aux/macros/check_mnttab_type.m4 (ac_safe): ditto.
-
- * aux/macros/check_fs_mntent.m4 (ac_safe): check for nfs3 option
- under linux (depends on ac_cv variable, is that a good idea?)
-
- * added NFSv3 support for linux
-
- * aux/{configure.in,acconfig.h}: new option ver3
-
- * aux/macros/mount_headers.m4: commented out inclusion of
- linux/fs.h, it's not needed on rh61 (and actually generates
- conflicts), we should see if it's still needed on libc5 systems
-
- * aux/macros/try_compile_nfs.m4: use AC_MOUNT_HEADERS rather than
- try to have its own (out of date) list of headers and ifdef's and
- ...
-
-2000-02-07 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0.3 ***
- *******************************************************************
-
-2000-02-06 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/mount/mount_default.c: dummy empty file to work around a
- limitation of automake (it looks for LIBBOBJS in aclocal.m4 and
- processes them even if they are optional, enclosed in if/else).
-
-2000-01-29 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.3s5
-
-2000-01-25 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * update to use latest version of autoconf, automake, and libtool.
-
- * aux/GNUmakefile (depcomp): "make update" should also update the
- depcomp script.
-
- * Makefile.am (EXTRA_DIST_AUX): include depcomp in distribution.
-
- * aux/configure.in: use renamed AC_CHECK_AMU_FS.
-
- * aux/macros/check_amu_fs.m4: renamed macro name and file name to
- say AMU_FS, not AM_FS.
-
- * aux/acconfig.h: renamed HAVE_AM_FS_* to HAVE_AMU_FS_* because
- latest version of autoconf doesn't handle it (bug in 2.14a)
-
- * aux/configure.in: require version 2.14 of autoconf.
-
- * amd/mapc.c (mapc_reload_map): more fixes from Nick Williams.
-
- * doc/am-utils.texi (Automount Filesystem): document type:=auto
- map browsability option.
-
- * amd/mapc.c (make_entry_chain): patch from Steven Danz
- <sdanz@awc.kc.noaa.gov> to allow browsable auto maps.
-
-2000-01-24 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.3s4
-
- * amd/mapc.c (mapc_reload_map): fixes to sync maps even if they
- are set to mapcache:=sync. Fix from Nick Williams
- <Nick.Williams@msdw.com>.
-
-2000-01-20 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.3s3
-
- * minor port to i386-unknown-netbsd1.4.1
-
- * amd/nfs_subr.c (nfsproc_getattr_2_svc): patch from Nick Williams
- <Nick.Williams@msdw.com> to fix (or reduce the incidence of) stale
- file handles when doing rapid mounts and umounts in succession
- such as "ls /vol/foo ; amq -u /vol/foo ; ls /vol/foo"
-
-2000-01-18 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * minor port to i386-pc-bsdi4.1.
-
-2000-01-13 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/wire.c (getwire_lookup): pass NULL as conf_file (2nd)
- argument to irs_gen_acc(), which was changed in bsdi 4.1.
-
-2000-01-12 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/get_args.c (get_args): don't use MNTTAB_FILE_NAME for
- systems with in-kernel mount tables unless this macro is defined
- (Solaris 8).
-
-2000-01-01 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * ALL: bump copyright year to 2000.
-
-1999-12-16 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/mount/mount_svr4.c (mount_svr4): optionstr exists on
- solaris 7, but should not be used unless MAX_MNTOPT_STR also
- exists (solaris 8).
-
- * doc/am-utils.texi (opts Option): document new mount option:
- optionstr.
-
-Fri Dec 10 01:31:53 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * conf/trap/trap_svr4.h (MOUNT_TRAP): Pass mount option string to
- mount_svr4().
- (mount_svr4): Adapt prototype.
- * conf/mount/mount_svr4.c (mount_svr4): Pass them to kernel so
- they are evaluated and show up in Solaris 8 in-kernel mnttab.
-
- * aux/configure.in: Check for new Solaris 8 MS_OPTIONSTR mount(2)
- option.
- * aux/acconfig.h (MNT2_GEN_OPT_OPTIONSTR): Provide template.
-
-1999-12-10 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.3s2
-
-1999-12-09 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (opts Option): document noexec and nomnttab
- (new to Solaris 8).
-
- * Makefile.am (EXTRA_DIST_CONF): include nfs_prot_sunos5_8.h in
- distribution.
-
- * applied fixes from Rainer Orth for Solaris 8.
-
- * libamu/wire.c (getwire): increment the cp pointer in the loop
- body, because the ioctl() inside the "for" loop will overwrite the
- ifr structure, thus not detecting all of the interfaces. Bug
- reported and fixed by Amitha Perera <perera@cs.rpi.edu>.
-
-Thu Dec 9 19:09:38 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * conf/mtab/mtab_svr4.c (unlockmnttab, lockmnttab): No-ops if
- MOUNT_TABLE_ON_FILE.
-
- * amd/get_args.c (get_args): Initialize mnttab_file_name even for
- in-kernel mount table. conf/mtab/mtab_svr4.c (read_mtab) depends
- on a non-NULL value.
-
- * amd/info_ldap.c (get_ldap_timestamp): Don't peek into opaque
- LDAP structure to get error code, but use it directly.
- (amu_ldap_search): Likewise.
-
- * conf/nfs_prot/nfs_prot_sunos5_7.h: Rip superfluous and wrong
- ldap support.
- * conf/nfs_prot/nfs_prot_sunos5_8.h: Likewise.
-
- * conf/nfs_prot/nfs_prot_sunos5_8.h: New file, doesn't typedef
- nfsstat, already in <nfs/nfs.h>.
- * aux/macros/check_nfs_prot_headers.m4: Use it for all Solaris
- versions beyond 7.
- Allow for micro versions of SunOS 5.[67].
-
- * aux/configure.in: Check for new Solaris 8 Beta Refresh
- MS_NOMNTTAB mount(2) option.
- * aux/macros/check_mnttab_location.m4: Use it to test for
- mntfs-based in-kernel mnttab.
-
- * aux/macros/os_cflags.m4: Treat Solaris 8 and higher like 2.6/7.
-
- * aux/macros/check_fs_headers.m4: Revert test for duplicate
- objects.
- * aux/macros/check_fs_mntent.m4: Likewise
-
- * aux/macros/HEADER: Fixed typo.
-
- * include/am_defs.h: Likewise.
-
-1999-12-01 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/*.m4: prepare for hpux-12 (assume same as hpux-11)
-
-1999-11-16 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * BUGS: document glibc-2.1 nis file descriptor leak in yp_bind.
-
- * amd/info_ldap.c (string2he): updated function which does not
- corrupt strings when called more than once. Patch from
- JOHANN.PFEFFERL.JP@germany.agfa.com.
-
-1999-11-15 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * MIRRORS (Asia): two new mirrors in Japan.
-
-1999-11-10 Erez Zadok <ezk@kosh.cs.columbia.edu>
-
- * doc/am-utils.texi: document new variables for ${uid} and ${gid}.
-
- * amd/nfs_subr.c (nfsproc_lookup_2_svc): find the uid/gid of the
- last lookup from the RPC credentials.
-
- * aux/configure.in: upped version-info to 4:0:2 because I've added
- a new interface to libamu.
-
- * libamu/misc_rpc.c (getcreds): moved function from hlfsd to here,
- so it can be used by amd.
-
- * amd/opts.c: new variables ${uid} and ${gid}.
-
-1999-10-15 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/ctl-amd.in: add "status" command that tells you if amd
- is running on not (same output as RedHat scripts).
- Added start_msg and stop_msg targets as they are used on HPUX.
- reported by Jon Peatfield <J.S.Peatfield@damtp.cam.ac.uk>.
-
-1999-10-13 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.3s1
-
-1999-10-12 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/amd.c (main): On AIX you must lower the stack size using
- ulimit() before calling plock. Otherwise plock will reserve a lot
- of memory space based on your maximum stack size limit. Since it
- is not easily possible to tell what should the limit be, I print a
- warning before calling plock(). See the manual pages for
- ulimit(1,3,4) on your AIX system.
-
- * include/am_defs.h: define default extern for vsnprintf()
-
- * aux/configure.in: check for extern definition for vsnprintf()
-
-1999-10-08 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/amfs_auto.c (amfs_auto_bgmount): patch from Nick Williams
- <njw@ms.com>. SYMPTOMS: 'occasionally' sublinks do not point to
- the correct location, but to the top level of the mountpoint and
- an (error-hook) is seen being mounted in the log file. This causes
- things to Go Wrong(TM).
- CAUSE: When evaluating two locations which are requested
- 'practically simultaneously', and the two locations resolve to the
- same NFS mountpoint (but different sublinks), the later request
- will be "deferred" and retried after wakeup when the first mount
- succeeds. To do this, it rewinds the options location string to
- re-evaluate the location when the mount is retried. However, it
- shouldn't rewind the options for two reasons: (a) the semantics of
- the map language say you shouldn't and (b) the NFS mount reference
- is not reset at the same time, meaning that on the retry it will
- have an options structure out-of-sync with the mount
- structure. The "shortcut" code when retrying the mount sees the
- mount structure is already filled in and does not fully evaluate
- the options structure.... so if the first location is not the one
- which ties in with the mountpoint (see ordering in the
- recreate-by), you're now well messed up.
-
- * BUGS: mention aix4.3 plock() bug (memory usage blows up and
- plock fails)
-
-1999-10-07 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/GNUmakefile: certain files should be copied if they are
- newer, not also if they are bigger: install-sh, ltconfig,
- ltmain.sh, mdate-sh, missing, mkinstalldirs, and texinfo.tex.
-
- * minor new port: i586-pc-linux-gnu-rh6.1 (RedHat Linux 6.1)
-
-1999-10-05 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_nfs_prot_headers.m4: prepare for OSF-5.
-
- * aux/macros/check_nfs_fh_dref.m4: prepare for Tru64, aka OSF-5.
-
-1999-09-30 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0.2 ***
- *******************************************************************
-
-1999-09-27 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/mount/mount_linux.c (mount_linux): print the updated mount
- flags.
-
- * doc/am-utils.texi: document $full_os and $vendor.
-
- * scripts/amd.conf-sample: examples of $full_os and $vendor.
-
- * scripts/amd.conf.5: document $full_os and $vendor.
-
- * amd/conf.c: add support for $full_os and $vendor.
-
-1999-09-26 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (netgrp Selector Function): don't give
- examples with old single '=' assignment variable. Use foo:=bar.
-
- * amd/amfs_auto.c (amfs_auto_bgmount): corectly indent long
- comment describing this complex function.
-
- * doc/Makefile.am (alldocs): do install-ps last (because distiller
- is slow) and install-html next to last (because texi2html is also
- slow).
-
- * amd/amd.8: Major fixes to the description of the option -t
- timeout.retransmit.
-
- * doc/am-utils.texi: better description of "trace" debug option.
- amd -H (not -v) shows log_options and debug_options. Major fixes
- to the description of amd -t timeout.retransmit, and the amd.conf
- parameters nfs_retransmit_counter and nfs_retry_interval.
-
- * scripts/amd.conf.5: better description of "trace" debug option.
- amd -H (not -v) shows log_options and debug_options. Major fixes
- to the description of the parameters nfs_retransmit_counter and
- nfs_retry_interval.
-
-1999-09-25 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (Automount Filesystem): cache:= is not a mount
- option, but a mount map option.
-
- * libamu/xutil.c (switch_to_logfile): log the name of the log file
- we switched into, after the log file had been [re]opened.
-
-1999-09-24 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/mapc.c (mapc_reload_map): count and show the number of times
- a map was reloaded. Only reload a map if its modify-time was
- updated. But amq -f forced a reload no matter what.
-
- * amd/amd.h: new flag to struct mnt_map to count number of times a
- map was reloaded.
-
- * amd/mapc.c (mapc_reload_map): attempt to reload the map without
- losing current data by reloading into a temp copy, and switching
- the hashes round only if the reload was successful. Patch from Jon
- Peatfield <J.S.Peatfield@damtp.cam.ac.uk>.
- (mapc_sync): mapc_reload_map() always succeeds.
-
-1999-09-22 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/info_ldap.c (amu_ldap_rebind): don't busy-loop trying to
- rebind to an LDAP server forever. Try up to 10 times.
-
- * fsinfo/fsi_lex.l (yyerror): rework code that will never happen
-
- * released snapshot am-utils-6.0.2s2
-
- * aux/configure.in: bumped library version-info to 3:2:1, since
- some libamu code got changed.
-
- * libamu/xutil.c (real_plog): use vsnprintf, not vsprintf, which
- is better and more secure. Fix from "David O'Brien"
- <obrien@NUXI.com>.
-
- * aux/configure.in: check for vsnprintf.
-
-1999-09-21 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/linux_headers.m4: use AC_MSG_ERROR.
-
- * aux/macros/opt_{cppflags,ldflags,libs,amu_cflags}.m4: the ARG is
- not optional. Make sure ARG is supplied else flag an error.
-
-1999-09-18 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * minor port i386-unknown-freebsdelf3.3
-
- * released snapshot am-utils-6.0.2s1
-
-1999-09-17 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in (AC_CHECK_FUNCS): check for getitimer().
-
- * include/am_defs.h: extern definition for getitimer().
-
- * aux/configure.in: use AC_CHECK_EXTERNS. Look for getitimer()
- extern.
-
- * aux/macros/check_extern.m4: define a simple AC_CHECK_EXTERNS
- that calls AC_CHECK_EXTERN in a loop. This saves repeated code in
- configure.
-
- * aux/macros/type_auth_create_gidlist.m4: AIX 4.x systems use
- 'int' as the 5th arg to authunix_create().
-
- * aux/macros/type_recvfrom_fromlen.m4: all AIX 4.x systems use a
- size_t for the 6th arg of recvfrom().
-
- * aux/macros/os_cflags.m4: define _XOPEN_EXTENDED_SOURCE for
- aix4.x systems.
-
- * libamu/mount_fs.c (print_nfs_args): cast some values to int, to
- avoid gcc -Wall errors.
-
- * scripts/expn.in: use sockaddr_in(), not pack() to correctly fill
- in a struct sockaddr_in. On Solaris x86 hosts, using pack()
- results in byte-misaligned values. Bug fix from Jeffrey C Honig
- <jch@BSDI.COM>.
-
- * libamu/mount_fs.c (compute_automounter_mount_flags): turn on
- automntfs (ignore on bsdi-4.1) flag.
- (compute_automounter_nfs_args): ditto.
-
- * aux/acconfig.h: add new flag for automntfs (ignore)
-
- * aux/configure.in: check for new automntfs flag (bsdi-4.1).
-
-1999-09-14 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * MIRRORS: added new site in Germany. Updated status of umn.edu
- and ferginc.com, who may no longer be mirroring am-utils.
-
-1999-09-08 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0.1 ***
- *******************************************************************
-
-1999-09-08 Erez Zadok <ezk@cs.columbia.edu>
-
- * aux/macros/mount_headers.m4: bsdi-2.1 needs MAXQUOTAS and struct
- netexport defined.
-
- * aux/macros/try_compile_anyfs.m4: bsdi-2.1 needs MAXQUOTAS and
- struct netexport defined.
-
-1999-09-07 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_field.m4 (ac_upcase_var_name): include
- <ifaddrs.h> so we can detect fields within struct ifaddrs.
-
- * libamu/wire.c (getwire): bsdi-2.1 uses a second arg to
- getifaddrs() and struct ifaddrs has no ifa_next field.
-
- * aux/configure.in: check if 'struct ifaddrs' has a field
- ifa_next.
-
- * include/amq_defs.h (AMQ_STRLEN): double size of amq string
- length to 2048 bytes.
-
- * conf/nfs_prot/nfs_prot_netbsd1_4.h: include several more nfs
- header files and ufs/ufs/ufsmount.h. Bug reported by <Christos
- Zoulas> christos@zoulas.com.
-
- * aux/macros/try_compile_anyfs.m4: include <ufs/ufs/ufsmount.h>.
- Bug reported by <Christos Zoulas> christos@zoulas.com.
-
- * aux/macros/mount_headers.m4: include <ufs/ufs/ufsmount.h>
-
-1999-09-06 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/xutil.c (expand_error): use strerror if available instead
- of sys_errlist. Bug reported by <Christos Zoulas>
- christos@zoulas.com.
-
- * hlfsd/hlfsd.c (fatal): use strerror if available instead of
- sys_errlist.
-
- * amq/amq.c (show_mi): use strerror if available instead of
- sys_errlist.
-
- * aux/macros/check_nfs_prot_headers.m4: make sure netbsd1.4
- nfs_prot header is used for any future (1.5 etc.) netbsd systems.
-
- * amq/pawd.c (find_mt): check for type nfsl as well. Fix from
- "Andrew J. Korty" <ajk@purdue.edu>
-
-1999-08-29 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (Supported Platforms): updates for redhat
- systems.
-
- * INSTALL: updates for redhat systems.
-
- * libamu/wire.c (getwire_lookup): spell "succeeded" correctly
-
-1999-08-28 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/ctl-amd.in: sleep 1 second between killing amd and
- restarting it, because amq may respond that amd is down, where in
- fact it is still trying to unmount itself after unmapping itself
- from the portmapper.
-
- * aux/config.guess.long: new script to print long version of
- config.guess output.
-
- * buildall (host_alias): use long version of config.guess.
-
-1999-08-27 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/ctl-{amd,hlfsd}.in: update RH tags for start/stop
- scripts.
-
-1999-08-24 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.1s11
-
- * libamu/xutil.c (expand_error): make sure expanding the string
- with textual version of errno doesn't overrun the 1024 bytes
- buffer.
- (real_plog): null terminate msg, just in case.
-
- * amq/amq.c (main): don't getopt -M option and don't process it
- unless ENABLE_AMQ_MOUNT is on.
-
- * amd/amq_svc.c (amq_program_1): all code that relates to amq -M
- is conditional on #ifdef ENABLE_AMQ_MOUNT.
-
- * amd/amq_subr.c: remove amqproc_mount_1_svc() function invoked
- when amq -M code is disabled. Not taking any chances.
-
-1999-08-23 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.1s10
-
-Sun Aug 22 16:18:59 1999 Erez Zadok <ezk@subzero.cs.columbia.edu>
-
- * libamu/wire.c (getwire_lookup): if getnetbyaddr failed (e.g., on
- 128.59.16.0), try to shift the network out of zeros (e.g.,
- 128.59.16) and try again. Irix 6.4 requires short network
- numbers.
-
-1999-08-22 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/wire.c (getwire_lookup): correctly compute subnet using
- netmask.
-
- * libamu/mount_fs.c (compute_automounter_nfs_args): require that
- Amd's own NFS mounts use reserved ports (if possible). IP packet
- security fix from Jeffrey C Honig <jch@BSDI.COM>.
-
- * conf/transp/transp_tli.c (create_autofs_service): use correct
- autofs_port. IP packet security fix from Jeffrey C Honig
- <jch@BSDI.COM>.
-
- * conf/transp/transp_sockets.c (bindnfs_port): remove unnecessary
- function. IP packet security fix from Jeffrey C Honig
- <jch@BSDI.COM>.
- (create_nfs_service): use bind_resv_port() directly. ensure that
- privileged ports are used. IP packet security fix from Jeffrey C
- Honig <jch@BSDI.COM>.
-
- * amd/nfs_prot_svc.c (nfs_program_2): verify that requests come
- from reserved ports and from a local IP address. IP packet
- security fix from Jeffrey C Honig <jch@BSDI.COM>.
-
- * amd/amq_subr.c (ok_security): use IPPORT_RESERVED, instead of
- hard-coded 1024. IP packet security fix from Jeffrey C Honig
- <jch@BSDI.COM>.
- (amqproc_mount_1_svc): provide information on the caller making an
- amq -M request. IP packet security fix from Jeffrey C Honig
- <jch@BSDI.COM>.
-
- * amd/map.c (free_map_if_success): If the program doing an unmount
- of a program filesystem fails, amd tries to interpret the return
- code as an errno. Fix from Jeffrey C Honig <jch@BSDI.COM>.
-
- * amd/info_nis.c (determine_nis_domain): don't always print
- warning about NIS domain name not being set, even if NIS is not in
- use.
-
-1999-08-21 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/info_ldap.c (get_ldap_timestamp): initialize variable err.
- (amu_ldap_search): initialize variable err.
-
-1999-08-16 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/wire.c: written using getifaddrs() for BSD systems,
- contributed by BSDI, Jeffrey C Honig <jch@BSDI.COM>).
-
-1999-08-15 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * include/am_utils.h (SALLOC): a simple macro to allocate N bytes.
-
- * aux/configure.in: check for irs.h and ifaddrs.h.
- Increase libamu.so --version-info to 3:1:1 since we've changed the
- source code for the library.
- Check for getifaddrs() function.
-
-1999-08-14 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/mount_fs.c (print_nfs_args): print fields namlen and
- bsize if they exist.
-
- * conf/mount/mount_linux.c (mount_linux): set nfs_args_t->namlen
- and ->bsize fields correctly, if those fields exist. This is a
- bug in that amd neglected to set these fields, but told the
- kernel it is mounting the nfs_args_t structure using mount version
- 3 (which requires both bsize and namlen fields).
-
- * aux/configure.in: test for two new nfs_args_t fields (used on
- newer linux with mount versions 2 and 3): bsize and namlen.
-
- * doc/am-utils.texi (netgrpd Selector Function): document new
- selector function.
-
- * amd/opts.c (f_netgrpd): new amd map function netgrpd(ARG) to
- test if the current host (fully-qualified name) is in the ARG host
- netgroup. The netgrp() function uses the short form of a host
- name. Patch from Christophe Kalt <Christophe-Kalt@deshaw.com>.
-
- * doc/am-utils.texi (automount2amd): document new script.
-
- * scripts/Makefile.am: create, install, and distribute
- automount2amd perl script and its man page.
-
- * scripts/automount2amd.8: new man page for automount2amd.
-
- * scripts/automount2amd.in: new file, contributed a in 1993 by
- Mike Walker <mike@tab00.larc.nasa.gov>. Fixed to use addopts for
- any automount map options specified.
-
-1999-08-09 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.1s9
-
-1999-08-09 Erez Zadok <ezk@beetle.mcl.cs.columbia.edu>
-
- * amd/amfs_auto.c (DOT_DOT_COOKIE): set the NFS cookie of '..' to
- 1.
- (amfs_auto_readdir): use DOT_DOT_COOKIE instead of (u_int)~0.
- (amfs_auto_readdir_browsable): use DOT_DOT_COOKIE instead of
- (u_int)~0.
-
- * amd/mapc.c (make_entry_chain): NFS cookies should be
- monotonically increasing, because Linux 2.3 expects that, even
- though it is not in the spec (RFC-1094) for NFS V2.
-
-1999-08-06 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_lib_funcs.m4: removed unused macro.
-
- * aux/macros/linux_headers.m4: new macro to ensure that linux
- kernel headers match running kernel version.
-
- * aux/acconfig.h: define HOST_HEADER_VERSION so we can check if
- amd is configured on linux hosts that run one kernel but have
- headers for a different version.
-
- * amd/info_nis.c (nis_isup, nis_search, nis_init): fixes for the
- logic which uses nis_isup and has_yp_order. Make sure it is used
- correctly , esp. for NIS+ in NIS-compatibility mode. Bug fix from
- Peter Breitenlohner <peb@mppmu.mpg.de>.
-
- * include/am_defs.h: fix conflicts on linux 2.2 systems with older
- libc5. Bug fix from Peter Breitenlohner <peb@mppmu.mpg.de>.
-
- * scripts/lostaltmail.in: use sockaddr_in(), not pack() to
- correctly fill in a struct sockaddr_in. On Solaris x86 hosts,
- using pack() results in byte-misaligned values.
-
-1999-08-02 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/mtab/mtab_aix.c (mnt_dup): add support for nfs3
- mounting, as per Dale Talcott <aeh@quest.cc.purdue.edu>. Also use
- better macros for case statement.
-
- * conf/nfs_prot/nfs_prot_sunos5_7.h: don't include ldap structures
- unless ldap is actually available.
-
- * use updated config.guess and config.sub. Use newer automake
- that fixes problems with distributing optional libamu files
- (clnt_sperrno.c, hasmntopt.c, strcasecmp.c, strdup.c, strstr.c,
- and ualarm.c)
-
-1999-07-19 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * minor port i386-unknown-openbsd2.5
-
-1999-07-17 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * minor ports to freebsdelf 3.[0-2] and 4.0 completed
-
- * aux/macros/check_nfs_prot_headers.m4: support freebsdelf
-
- * aux/macros/check_nfs_socket_connection.m4: support freebsdelf
-
-1999-06-24 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.1s8
-
-1999-06-23 Erez Zadok <ezk@beetle.mcl.cs.columbia.edu>
-
- * include/am_defs.h: avoid various header conflicts on
- RedHat/Linux 6.0 and kernels 2.2.10 or newer.
-
- * aux/configure.in: look for <db1/ndbm.h> (RedHat/Linux 6.0 and
- kernel 2.2.10)
-
- * amd/amfs_program.c (amfs_program_exec): make sure logfp is
- initialized dynamically to stderr if needed.
-
- * libamu/xutil.c (dplog): make sure logfp is initialized
- dynamically to stderr if needed.
- (plog): ditto.
-
- * amd/amfs_program.c (amfs_program_exec): set logfp to stderr if
- not initialized.
-
- * libamu/xutil.c: don't initialize logfp statically to stderr,
- because on RedHat/Linux 6.0 (kernel 2.2.10) stderr can no longer
- be manipulated like a variable.
-
- * include/am_defs.h: avoid more conflicts between <linux/fs.h> and
- <sys/mount.h> on 2.2 linux kernels.
- include <db1/ndbm.h> as needed (RedHat/Linux 6.0)
-
-1999-04-20 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * all Makefile.am: use AMU_NFS_PROT_HEADER (not *_HEADERS)
-
- * aux/macros/check_nfs_prot_headers.m4 (AMU_NFS_PROT_HEADER):
- renamed AC_SUBST name from *_HEADERS to *_HEADER so that automake
- won't attempt to add it to the header files to distribute.
-
-1999-04-19 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/GNUmakefile: invoke aclocal with new --altdir flag.
-
-1999-04-16 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * minor new port: i386-unknown-netbsd1.4 (ALPHA)
-
- * aux/macros/check_field.m4: no need to include <cdfs/cdfsmount.h>
- and <isofs/cd9660/cd9660_mount.h> because they are also included
- from MOUNT_HEADERS. Causes multiple inclusion of unprotected
- headers on netbsd-1.4_ALPHA.
-
-1999-04-15 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/extern_sys_errlist.m4 (pattern): netbsd-1.4_ALPHA's
- sys_errlist extern doesn't end with [].
-
- * aux/macros/check_nfs_prot_headers.m4: netbsd 1.4 support.
-
-1999-04-11 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * newer automake wants texinfo.tex to be in aux/ not doc/
-
-1999-03-30 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/conf_parse.y: alloca support.
-
- * fsinfo/fsi_gram.y: alloca support.
-
- * libamu/Makefile.am (libamu_la_LIBADD): compile alloca.o if
- needed.
-
- * aux/configure.in: test for alloca support. Needed because bison
- generates parsers that use alloca, and hpux9 does have alloca and
- its /bin/cc doesn't support it builtin (the way gcc does).
-
- * libamu/alloca.c: new file, needed on hpux9 with /bin/cc. Taken
- verbatim from bison-1.25.
-
- * include/am_defs.h: fixed typo #errir -> #error
-
- * released snapshot am-utils-6.0.1s7
-
- * README.y2k: more information about am-utils' compatibility, from
- Paul Balyoz <pbalyoz@sedona.ch.intel.com>.
-
- * scripts/lostaltmail.in (Splice_in_resent_headers): ensure Y2K
- compliant format. Patch from Paul Balyoz
- <pbalyoz@sedona.ch.intel.com>
-
- * doc/am-utils.texi (Supported Platforms): hpux10.20 could have
- nfs v.3 support (with some vendor patches), but it is turned off.
-
- * aux/macros/os_cflags.m4: use ansi compiler options on hpux.
-
- * conf/nfs_prot/nfs_prot_hpux.h: Turn off NFS V.3 support to avoid
- confusing am-utils. 10.20 with some patches has incomplete
- support. Patch from Jon Peatfield
- <J.S.Peatfield@damtp.cam.ac.uk>.
-
-1999-03-24 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * minor port i386-pc-bsdi4.0.1
-
-1999-03-20 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (Supported Platforms): add forgotten listing
- for powerpc-linux.
-
-1999-03-18 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/amd.conf.5: fix typo. From Jeffrey C Honig
- <jch@BSDI.COM>.
-
- * doc/am-utils.texi: document iso9660 options norrip, gens, and
- extatt.
- (opts Option): documented dumbtimr and noauto options. From
- Jeffrey C Honig <jch@BSDI.COM>.
-
- * include/am_compat.h: define default strings for options norrip,
- gens, and extatt.
-
- * amd/ops_cdfs.c (mount_cdfs): support options norrip, gens, and
- extatt.
-
- * aux/macros/mount_headers.m4: also include
- <isofs/cd9660/cd9660_mount.h> as needed.
-
- * aux/configure.in: check for isofs mount options for bsdi4:
- norrip, gens, and extatt. Reported by Jeffrey C Honig
- <jch@BSDI.COM>.
-
- * aux/macros/check_mnt2_cdfs_opt.m4: check for ISOFSMNT_* flags
- (bsdi4).
-
-1999-03-17 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_freebsd3.h: ditto.
-
- * conf/nfs_prot/nfs_prot_bsdi3.h: include <ufs/ufs/ufsmount.h>,
- for bsdi4, as per Jeffrey C Honig <jch@BSDI.COM>.
-
-1999-03-15 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * get latest copies of config.guess, config.sub, ltconfig, and
- ltmain.sh from libtool-1.2f.
-
- * all Makefile.am: don't use continuation lines (using \) for
- short lists of files.
-
- * libamu/Makefile.am (DISTCLEANFILES): make distclean should
- remove mountutil.c, mtabutil.c, transputil.c, and umount_fs.c.
- Reported by Jeffrey C Honig <jch@BSDI.COM>.
-
- * fixmount/Makefile.am (DISTCLEANFILES): make distclean should
- remove checkmount.c. Reported by Jeffrey C Honig <jch@BSDI.COM>.
-
- * Makefile.am (DISTCLEANFILES): make distclean should remove
- amu_nfs_prot.h, config.cache.old, and dbgcf.h. Reported by
- Jeffrey C Honig <jch@BSDI.COM>.
-
-1999-03-13 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.1s6
-
-1999-03-12 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * INSTALL: document freebsdelf.
-
- * doc/am-utils.texi (Supported Platforms): document freebsdelf.
-
-1999-03-08 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * minor new ports: i386-unknown-freebsdelf3.1 and
- i386-unknown-freebsdelf4.0
-
- * aux/macros/check_nfs_prot_headers.m4: freebsd4 support.
-
- * aux/macros/check_nfs_socket_connection.m4: freebsd4 support.
-
- * aux/macros/check_nfs_fh_dref.m4: freebsd4 support.
-
- * amd/opts.c (eval_opts): changed log level of "executing
- negated..." message from USER to INFO, as per Guntram Wolski
- <gwolsk@sei.com>.
-
-1999-02-17 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * */Makefile.am (LDADD): force linking against an installed
- libamu.{a,so}.
-
- * doc/am-utils.texi (addopts Option): document remopts interaction
- with addopts.
-
- * amd/am_ops.c (ops_match): if addopts are specified, apply them
- to the value of remopts as well as opts.
-
- * amd/ops_nfs.c (mount_nfs_fh): tell users when remopts are used.
-
-1999-02-05 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.1s5
-
- * conf/mount/mount_linux.c (mount_linux): set default nfs_args
- options for ac{reg,dir}{min,man} as per the mount-2.8a package,
- but only if noac option was not used.
-
-1999-02-05 Erez Zadok <ezk@retro.cs.columbia.edu>
-
- * conf/mount/mount_linux.c (mount_linux): print nfs_args again
- since it was updated.
- (mount_linux): use 4KB for NFS rsize/wsize on 2.1.0 linux kernels
- and newer. Bug was found by Neil Conway
- <nconway.list@ukaea.org.uk>
-
-1999-02-04 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.1s4
-
-1999-02-03 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amq/amq.c (main): don't list -M as a valid amq option unless
- configure'd with --enable-amq-mount.
-
-Wed Feb 3 18:11:18 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * amd/nfs_start.c (amd_use_autofs): Define.
- (mount_automounter): Create autofs service listener only if
- necessary to avoid unnecessary clashes with e.g. automountd.
-
- * amd/amd.h (amd_use_autofs): Declare.
-
- * amd/conf.c (gopt_mount_type): Set amd_use_autofs.
- (ropt_mount_type): Likewise.
-
-1999-02-02 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_mnt2_nfs_opt.m4:: ditto
-
- * aux/macros/check_mnt2_cdfs_opt.m4: ditto
-
- * aux/macros/check_mnt2_gen_opt.m4: ditto
-
- * aux/macros/check_mnttab_opt.m4: new macro in this file to loop
- over AC_CHECK_MNTTAB_OPT. Reduces size of configure script a lot.
-
- * conf/nfs_prot/nfs_prot_netbsd1_3.h: include nfs/rpcv2.h,
- nfs/nfs.h and nfs/nfsmount.h if they exist. Patch from
- christos@zoulas.com (Christos Zoulas).
-
- * amd/info_hesiod.c: some forward declarations. Patch from
- christos@zoulas.com (Christos Zoulas).
-
-1999-01-28 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/mount_fs.c (compute_nfs_args): don't turn on/off noconn
- option if it was already in that state. Patch from David
- Wolfskill <dhw@whistle.com>.
-
-1999-01-20 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: automake nowadays supports LTLIBOBJS (but not
- LTALLOCA yet). Substitute value of LIBTOOL_DEPS for libtool
- rebuild make rules.
-
- * Makefile.am: new rules to remake libtool (maintainers only)
-
- * amd/amfs_toplvl.c (mount_amfs_toplvl): print generic mount flags
- if -D trace was used.
-
-1999-01-18 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * buildall: all if statements should have an else clause because
- of Ultrix's /bin/sh.
-
-1999-01-15 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amq/amq.c: removed dummy variables.
-
- * amq/pawd.c: removed dummy variable.s
-
- * fixmount/fixmount.c (usage): removed dummy variables.
-
- * fsinfo/fsinfo.c: removed dummy variables.
-
- * hlfsd/hlfsd.c: removed dummy variables.
-
- * wire-test/wire-test.c: removed dummy variables.
-
- * mk-amd-map/mk-amd-map.c: removed dummy variables.
-
- * doc/texinfo.tex: updates from GNU mirror.
-
- * aux/GNUmakefile (../doc/texinfo.tex): new rule to update
- doc/texinfo.tex from GNU mirror.
-
- * released snapshot am-utils-6.0.1s3
-
- * Makefile.am (install-snapshot): better snapshot and new
- install-snapshot and test-snapshot rules (maintainer).
-
- * amd/info_ldap.c (amu_ldap_init): don't run STREQ if one of the
- args may be NULL.
- Some dlog() entries were not enclosed in #ifdef DEBUG. Fix from
- Bill Paul <wpaul@ctr.columbia.edu>
-
-1999-01-13 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * check for experimental generic 'ignore' mount flag on freebsd3.
-
- * Update library -version-info to 3:0:1 (will result in 2.1.0 .so
- version, which is backwards compatible with older versions.) Only
- one new interface was added to libamu.
-
- * amd/amfs_toplvl.c (mount_amfs_toplvl): add generic mount flags
- that are specific to automounter mounts.
-
- * aux/configure.in: update libamu.so age and revision since a new
- interface was added to libamu/mount_fs.c
- (compute_automounter_mount_flags).
-
- * libamu/mount_fs.c (compute_automounter_mount_flags): new
- function to compute generic mount flags that are specific to mount
- points only.
-
- * aux/{configure.in,acconfig.h}: add support for generic mount
- entry ignore option.
-
- * released snapshot am-utils-6.0.1s2
-
- * amd/info_ldap.c (get_ldap_timestamp): dlog format fixes.
-
- * libamu/mount_fs.c (print_nfs_args): solaris 2.7 changed format
- of knc_semantics from u_long to u_int.
-
- * aux/macros/check_mount_style.m4: freebsd3 no longer needs a
- special mount helper.
-
-1999-01-12 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_nfs_prot_headers.m4 (AMU_NFS_PROT_HEADERS):
- amu_nfs_conf.h should always be found in $top_builddir.
-
-Tue Jan 12 00:05:42 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * conf/nfs_prot/nfs_prot_sunos5_7.h (MNTTAB_TYPE_AUTOFS): Undefine
- to avoid wrong reports from show_fstypes.
-
- * conf/nfs_prot/nfs_prot_irix5.h (MNTTAB_TYPE_XFS): Likewise.
-
- * conf/nfs_prot/nfs_prot_hpux11.h (MNTTAB_TYPE_NFS3): Likewise.
-
-Tue Jan 12 00:05:42 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * BUGS (mips-dec-ultrix4.3): Update Ultrix caveats.
-
-Tue Jan 12 00:05:42 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * hlfsd/homedir.c (delay): Cast child to long, adapt format.
- (hlfsd_getpwent): Likewise for pw_uid.
-
- * amd/info_nis.c (nis_init): Cast order to unsigned long, adapt
- format.
-
- * conf/transp/transp_tli.c (amu_clnt_create_best_vers): Cast
- tv_sec to int to match format.
- (get_nfs_version): Cast nfs_version, NFS_VERSION to int to match
- formats.
-
- * amd/amfs_program.c (amfs_program_exec): Cast ptr difference to
- long, adapt format.
-
- * include/am_defs.h: Handle __attribute__ if available. From
- GNU fileutils 4.0 lib/errors.h.
-
-Mon Jan 11 13:46:44 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * libamu/mount_fs.c (print_nfs_args): Cast sizeof() to int to
- match format.
-
- * hlfsd/stubs.c (nfsproc_getattr_2_svc): Cast uid, gid to long,
- adapt format.
- (nfsproc_lookup_2_svc): Likewise.
- (nfsproc_readlink_2_svc): Likewise for userid, groupid.
-
- * hlfsd/nfs_prot_svc.c (nfs_program_2): Cast args to int to match
- format.
-
- * hlfsd/homedir.c (homedir): Cast uid, child to long, adapt
- format.
-
- * amd/info_hesiod.c (hesiod_search): Cast m, pval, tp to unsigned
- long, adapt format.
-
- * amd/ops_nfs.c (find_nfs_fhandle_cache): Cast fh_wchan to
- unsigned long, adapt format.
- (got_nfs_fh): Likewise.
- (prime_nfs_fhandle_cache): Cast fh_nfs_version to int to match
- format.
- (call_mountd): Likewise, mnt_version also.
- (mount_nfs_fh): Likewise.
-
- * amd/ops_autofs.c (autofs_program_1): Cast args to int to match
- format.
- (autofs_unmount_1_svc): Cast ur->devid, ur_rdevid, ur->next to
- unsigned long, adapt formats.
- (autofs_bgmount): Cast opt_fs to unsigned to, adapt format.
- (autofs_bgmount): Use long format to match arg.
- (autofs_lookuppn): Removed superfluous arg.
-
- * amd/srvr_nfs.c (start_ping): Cast nfs_version to int to match
- format.
- (got_portmap): Likewise for port.
- (recompute_portmap): Likewise for fs->fs_version, mnt_version.
- (find_nfs_srvr): Likewise for nfs_version.
-
- * amd/sched.c (sched_task): Cast wchan to unsigned long, adapt
- format.
-
- * amd/nfs_start.c (checkup): Cast ptr difference to long, next_mem
- to unsigned long, adapt format.
- Cast tvv.tv_sec to int to match format.
-
- * amd/nfs_prot_svc.c (nfs_program_2): Cast args to int to match
- format.
-
- * amd/map.c (root_fh): Cast pid to long, adapt format.
- (timeout_mp): Cast time_t to long, adapt format.
-
- * amd/clock.c (reschedule_timeouts): Use long format, cast time_t
- arg.
-
- * amd/amfs_host.c (fetch_fhandle): Cast nfs_version to int to
- match format.
- (amfs_host_fmount): Likewise.
- (amfs_host_umounted): Likewise. Removed superfluous arg.
-
- * amd/amfs_auto.c (amfs_auto_bgmount): Cast pointer to unsigned
- long, adapt format.
- (amfs_auto_bgmount): Use long format, cast time_t arg.
- (amfs_auto_lookuppn): Removed superfluous arg.
-
- * amd/amd.c (main): Cast geteuid() result to long, adapt format.
-
- * conf/transp/transp_sockets.c (get_nfs_version): Cast nfs_version
- to int to match format.
-
- * include/am_utils.h: Declare plog, dplog as printf-like.
-
- * conf/mount/mount_irix6.c (mount_irix): Print type as char *.
-
-Mon Jan 11 13:46:44 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * amd/info_hesiod.c (hesiod_isup): New function.
- * amd/mapc.c (maptypes): Add it.
-
-1999-01-10 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0.1s1
-
-1999-01-09 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * ALL: bump copyright year to 1999.
-
-Fri Jan 8 15:24:15 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * aux/macros/check_mtype_type.m4: Ultrix uses an int mount type,
- too.
-
- * aux/macros/check_mtype_printf_type.m4: Adapt corresponding
- printf type.
-
-Fri Jan 8 15:24:15 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * aux/acconfig.h: Removed HAVE_AM_FS_AUTOFS, unused.
-
- * conf/nfs_prot/nfs_prot_irix6.h: Likewise.
-
- * conf/nfs_prot/nfs_prot_sunos5_6.h: Likewise.
-
- * conf/nfs_prot/nfs_prot_sunos5_7.h: Likewise.
-
- * Makefile.am (EXTRA_DIST_DIRS): Removed, not needed by current
- automake.
-
-Thu Jan 7 02:55:18 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * aux/configure.in (AM_PROG_YACC): Replaced by AC_PROG_YACC, not
- in current automake.
-
-Thu Jan 7 02:55:18 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * doc/am-utils.texi: Added some missing inter-punctation after
- @xref, or use @pxref/@ref as appropriate. Spotted by makeinfo
- from texinfo 3.12b.
-
-1999-01-07 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/texinfo.tex: updated off of latest GNU mirror.
-
-1999-01-04 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (Supported Platforms): update platforms that
- support NFS v.3. Nicer postscript printing on double-sided pages.
-
- * amd/info_hesiod.c: add extern definition for hesiod_init()
-
-1999-01-01 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0 ***
- *******************************************************************
-
-1998-12-28 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_sunos5_7.h: support ldap in solaris 2.7.
-
-1998-12-27 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_bsdi3.h: don't use reserved ports on
- bsdi4 for NFS V3/nfs mounts.
-
-1998-12-26 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * using latest libtool (1.2e + patches), now supporting shared
- libraries on many more systems. Also using latest autoconf and
- automake (unreleased GNU CVS'd versions.)
-
- * minor new ports: hppa2.0w-hp-hpux11.00,
- i386-unknown-netbsd1.3.3, mips-sgi-irix6.5.
-
- * fsinfo/fsinfo.h (yywrap): define it for systems (osf4) that
- have /usr/bin/flex but not libfl.
-
-1998-12-24 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * lots of code cleanup, to make sure libamu.so does not use
- undefined symbols. Some system's shared libraries cannot handle
- that.
-
-1998-12-23 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * include/am_defs.h: only defined seteuid extern if function also
- exists and is not superceded by setresuid (hpux).
-
- * amd/ops_autofs.c (autofs_bgmount, autofs_lookuppn): put explicit
- braces to avoid confusion with nested if-then-else clauses.
-
- * aux/config.{sub,status}, aux/{ltmain.sh,ltconfig,mkinstalldirs:
- updated from latest versions.
-
-1998-12-22 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * minor new port: i386-pc-bsdi4.0
-
- * conf/nfs_prot/nfs_prot_bsdi3.h: add missing hesiod header
- definitions for bsdi4.
-
- * {amd,fsinfo}/Makefile.am: force path to .y/.l files, because
- some make programs (bsdi4) do not support VPATH correctly.
-
-1998-12-16 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/mount/mount_aix.c: minor code cleanup
-
- * aux/configure.in: check for extern definition to xdr_groups.
-
-1998-12-15 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * minor new port: powerpc-ibm-aix4.3.1.0
-
- * aux/macros/*.m4: updates for aix 4.3
-
-1998-12-14 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * minor new port: i386-unknown-openbsd2.4
-
- * aux/configure.in: don't check for xfs on openbsd because
- openbsd-2.4 introduces a new file system named xfs, but different
- than Irix's XFS. Sigh.
-
- * minor new port: i386-unknown-freebsd2.2.8
-
-1998-12-03 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/amfs_nfsl.c (amfs_nfsl_ffserver): use case insensitive host
- name match. Bug fix from Douglas K. Rand" <rand@aero.und.edu>.
-
-1998-11-20 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/ctl-amd.in: wait4amd2die runs in the stop action, to
- avoid race conditions when shutting down systems running amd.
-
- * Makefile.am: add a dist-hook to change modes of the directories
- in the tar file so they are not world writable.
-
- * conf/nfs_prot/nfs_prot_freebsd3.h: turned on NFSv3 support,
- since it is now finally defined in the header files and
- (hopefully) stable.
-
- * amd/srvr_nfs.c (find_nfs_srvr): allow overriding if nfsv2 option
- is specified in mount options. freebsd patches from David
- O'Brien.
-
- * amq/amq.c (main), fixmount/fixmount.c (main), hlfsd/hlfsd.c
- (main), fsinfo/fsinfo.c (fsi_get_args), hlfsd/hlfsd.c (main),
- amd/get_args.c (get_args): posix: use -1 to check for return from
- getopt() (not EOF), as per posix.
-
- * amd/amq_subr.c (xdr_amq_mount_tree_node): patches from "David
- O'Brien" <obrien@NUXI.com>, from the FreeBSD source tree. Use
- real variable whose pointer is on the stack for decoding a long
- int.
-
-1998-11-11 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/ctl-{amd,hlfsd}.in: include comments useful for redhat's
- chkconfig utility.
-
-1998-11-10 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0b2s3
-
- * conf/transp/transp_sockets.c (create_nfs_service): remove C++
- style comments.
-
-1998-11-04 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0b2s2
-
- * created CVS package
-
- * amd/nfs_subr.c (nfsproc_lookup_2_svc): try to avoid a race
- condition between unmounting and re-mounting an entry, by
- increasing the ttl of a looked up entry before unmounting it.
- Patch from Mike Mitchell <mcm@unx.sas.com>.
-
- * All files: spell comments and strings.
-
-1998-11-03 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: look for yp_all in libnsl only if yp_all not
- already found elsewhere (in libc or other default libraries).
- This is so RedHat 5.1 systems could find yp functions in libnsl,
- but also so AIX 4.2.1 will NOT include libnsl, because the latter
- has broken nis functionality that also exists and works ok in libc.
-
-1998-10-29 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/amd.c (main): bug fix: swapped arguments to kill(2). Fix
- from Danny Rathjens <dkr@cs.fiu.edu>.
-
-1998-10-28 Erez Zadok <ezk@spruce.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0b2s1
-
-1998-10-27 Erez Zadok <ezk@spruce.mcl.cs.columbia.edu>
-
- * aux/macros/*.m4: support bsdi4 as bsdi3.
-
- * aux/macros/os_ldflags.m4: enable detection of LDAP on solaris
- 2.7 (libraries located in /usr/lib/fn). This is off until Sun
- includes LDAP header information.
-
-1998-10-20 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0b1 ***
- *******************************************************************
-
-1998-10-18 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * mk-amd-map/mk-amd-map.c (main): use perror not strerror.
- (main): set return type to int if no ndbm maps.
-
- * include/am_defs.h: avoid conflicts with <sys/mount.h> in 2.1
- kernels.
-
-1998-10-18 Erez Zadok <ezk@london.mcl.cs.columbia.edu>
-
- * A.i386-unknown-netbsd1.3.2/amu_nfs_prot.h: trim down and cleanup
- for netbsd 1.3.2.
-
-1998-10-17 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: check for yp_all in libnsl, b/c redhat 5.1
- systems put NIS functions there.
-
- * mk-amd-map/mk-amd-map.c: patch from "David O'Brien"
- <obrien@NUXI.com> merged in. Use POSIX -1 return code from
- getopt(), not EOF. Use .db extentions for systems that use it,
- instead of .{pag,dir}.
-
-1998-10-15 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * wire-test/wire-test.c, hlfsd/hlfsd.c, fixmount/fixmount.c,
- amd/amd.c (main): avoid overrunning hostname buffer. Bug fix from
- "David O'Brien" <obrien@NUXI.com>.
-
- * scripts/amd.conf.5: minor typo reported by "David O'Brien"
- <obrien@NUXI.com> in .TH section of man page.
-
- * amd/info_nis.c (am_yp_all): don't leak key-val entries. Patch
- from Thomas Richter <richter@chemie.fu-berlin.de>.
-
-1998-10-12 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (Program Filesystem): minor typo fixed as per
- Andreas Stolcke <stolcke@speech.sri.com>.
-
- * minor new ports: sparc64-unknown-linux-gnu, i386-pc-solaris2.7,
- and sparc-sun-solaris2.7.
-
- * conf/mount/mount_freebsd3.c (mount_freebsd3): freebsd 3.0 is now
- a 4.4lite kernel, and somethings were removed, such as
- INITMOUNTNAMES.
-
- * amd/ops_autofs.c (autofs_lookuppn): don't leak memory while
- processing /defaults. Free temporary opts. Patch from
- dsr@mail.lns.cornell.edu (Daniel S. Riley)
-
- * amd/amfs_auto.c (amfs_auto_lookuppn): don't leak memory while
- processing /defaults. Free temporary opts. Patch from
- dsr@mail.lns.cornell.edu (Daniel S. Riley)
-
- * conf/mtab/mtab_osf.c (read_mtab): patch from
- dsr@mail.lns.cornell.edu (Daniel S. Riley) not to access
- uninitialized memory on Digital Unix.
-
-1998-10-09 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/{check_mtype_type,check_mtype_printf_type}.m4: most
- systems now use "char *" as their mount type.
-
-1998-10-08 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/conf.c (gopt_map_type, ropt_map_type): check if map type
- exists.
-
- * amd/mapc.c (mapc_type_exists): function to test if a map of
- certain type exists.
-
-1998-10-08 Erez Zadok <ezk@horatio.mcl.cs.columbia.edu>
-
- * aux/macros/{mount_headers,try_compile_anyfs,try_compile_nfs}.m4,
- include/am_defs.h: Avoid a conflict in definitions of ntohl/htonl
- in RH-5.1 sparc64 between <netinet/in.h> and
- <linux/byteorder/generic.h> (2.1 kernels).
-
-1998-09-28 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/func_bad_yp_all.m4 (ac_cv_func_yp_all_clean): RedHat
- 5.1 systems with glibc glibc-2.0.7-19 or below leak a UDP socket
- from yp_all().
-
-1998-09-25 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/mount/mount_linux.c (parse_opts): check for pcfs support
- only if autoconfigured.
-
-1998-09-18 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * Makefile.am (EXTRA_DIST): distribute README.yk2 file.
-
- * README.y2k: explain y2k compliance status of am-utils.
-
-1998-09-16 Erez Zadok <ezk@iguana.mcl.cs.columbia.edu>
-
- * amd/amfs_host.c (fetch_fhandle, amfs_host_fmount,
- amfs_host_umounted): clnt_sperrno() may return a const.
-
-Sat Aug 8 23:28:32 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: check for <nfs/nfsmount.h>, as per Christos
- Zoulas. Turned on checking for mount options: async, synchronous,
- deadthresh, leasterm, nqnfs, and readahead.
-
- * amd/info_nis.c: patch from christos@zoulas.com (Christos Zoulas)
- to include prototype definition for nis_isup().
-
-Sun Jul 19 18:50:10 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * hlfsd/stubs.c (getcreds): force sscanf arg to u_long.
-
-Tue Jul 14 20:34:25 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0a17s1
-
-Wed Jul 8 21:49:15 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/host_macros.m4: all x86 hosts should have $arch be
- i386, not i[456]86.
-
-Tue Jul 7 18:55:09 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/{mount_headers,try_compile_anyfs,try_compile_nfs}.m4,
- include/am_defs.h: include <linux/posix_types.h> before
- <linux/fs.h> because on redhat 5.1, there is a bug (misuse) of
- headers in <socketbits.h> (it defines _LINUX_TYPES_H instead of
- __KERNEL_STRICT_NAMES).
-
- * aux/configure.in: check for <linux/posix_types.h> because it is
- need for RedHat 5.1.
-
-Wed Jun 17 00:05:33 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/Makefile.am (EXTRA_DIST): have fixrmtab generated from
- .in as well, so it doesn't get removed by make clean.
-
-Tue Jun 16 22:00:15 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/{check_fs_mntent.m4, check_mnttab_type.m4,
- check_mount_type.m4}: redhat 5.1 puts some modules in
- /lib/modules/preferred/.
-
-Wed May 13 16:33:57 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/ops_autofs.c (mount_autofs): cast pid to long.
-
-Tue Apr 28 15:12:36 1998 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * conf/nfs_prot/nfs_prot/nfs_prot_irix6.h,
- conf/nfs_prot/nfs_prot_sunos5_6.h: Undef MNTTAB_TYPE_AUTOFS too to
- avoid amd/am_ops.c (show_fstypes) from erroneously claiming
- support.
-
-Fri Apr 24 23:02:11 1998 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * libamu/xutil.c (get_syslog_facility): Don't use LOG_DAEMON
- unconditionally, may be missing on Ultrix V4.3.
-
-Thu Apr 23 20:24:33 1998 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * conf/nfs_prot/nfs_prot_sunos5_4.h (MNTTYPE_CACHEFS): Define,
- missing from <sys/mntent.h>.
-
- * conf/mtab/mtab_ultrix.c: Need separate inclusion of <sys/fs_types.h>
- without KERNEL defined here.
-
- * aux/macros/mount_headers.m4: Need to include <ufs/ufs_mount.h>,
- <cdfs/cdfs_mount.h>, <cdfs/cdfsmount.h> so autoconfiguration of
- ufs_args_t, cdfs_args_t fields and cdfs mount options can succeed.
-
- * amd/ops_ufs.c (mount_ufs): Removed obsolete comment.
-
- * ChangeLog: Fixed confusing linebreaks from ChangeLog imports.
- Removed purely local (and obsolete) entry.
-
-Thu Apr 23 00:22:17 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a16 ***
- *******************************************************************
-
-Wed Apr 22 01:20:39 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_mount_style.m4: define freebsd3 mount style.
-
- * aux/macros/check_mount_trap.m4: new mount trap for freebsd3.
-
- * aux/macros/check_mtype_printf_type.m4,
- aux/macros/check_mtype_type.m4 (ac_cv_mtype_type,): freebsd3 (as
- of snapshot 3.0-980311-SNAP) uses char * types for mount(2), not
- integers, but I'll keep them as integers and do the mapping in
- conf/mount/mount_freebsd3.c
-
- * minor new port to i386-pc-bsdi3.1.
-
- * minor new port to i386-unknown-netbsd1.3.1.
-
- * amd/opts.c: new option addopts:=ARG, which smartly merges ARG
- options with whatever the /default ones for a key are. This
- allows adding or overriding /default options individual keys.
-
- * amd/am_ops.c (ops_match): strdup/malloc string assigned to
- opt_opts because it'll get free()'d upon next use.
- (merge_opts): new function to merge two sets of options.
- (ops_match): if addopts option exist, append and merge it to the
- current default options.
-
-Tue Apr 21 12:54:59 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * wire-test/wire-test.c (main): use dynamically allocated returned
- string with list of interfaces.
-
- * amd/get_args.c (get_version_string): allocate enough space for
- header version string and a list of network interfaces of any
- length.
-
- * libamu/wire.c (print_wires): return dynamically allocated string
- containing list of networks. Must be dynamic because some sites
- had potentially dozens of network interfaces. Patch from Matthew
- Crosby <mcrosby@ms.com> slightly modified.
-
-Mon Apr 20 00:37:20 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_irix5.h: underfine MNTTYPE_XFS because
- irix 5.3 does not have full header definitions for it.
-
- * fsinfo/fsi_lex.l (yywrap): define yywrap if needed, and
- undefined it when not needed (similar to amd/conf_tok.l)
-
- * hlfsd/hlfsd.h (ROOTID, SLINKID, INVALID): reduced maximum size
- of these to unsigned short (because uid_t on some linux systems is
- small).
-
- * released snapshot am-utils-6.0a16s10
-
- * doc/am-utils.texi (opts Option): documented resvport mount
- option.
-
-Sun Apr 19 18:17:03 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (-D-Option): document behavior of -D info and
- especially what it does to hesiod (turn on RES_DEBUG).
-
- * scripts/amd.conf.5: document info debugging option.
-
- * libamu/xutil.c (dbg_opt): parse info debugging option.
-
- * include/am_utils.h (D_INFO): define new trace option.
-
- * Makefile.am (EXTRA_DIST): include list of official mirrors in
- distribution.
-
- * libamu/wire.c (SIZE): in the simple case, just compute
- sizeof(struct ifreq).
-
-Sun Apr 19 16:30:35 1998 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/amd.c (daemon_mode): set a temporary secure umask(0022)
- before writing log file and restore it afterwards. Patch from
- Donald Buczek <buczek@MPIMG-Berlin-Dahlem.MPG.DE>.
-
- * amd/get_args.c (get_args):
-
- * doc/am-utils.texi (-F Option), amd/amd.8: mention that amd.conf
- file specified by -F is always processed last.
-
- * amd/amd.c (daemon_mode): do not fclose(stdout) so that the fd
- won't be reused. Allows startup script to redirect stdout. Patch
- from Donald Buczek <buczek@MPIMG-Berlin-Dahlem.MPG.DE>.
-
- * libamu/xutil.c (switch_to_logfile): compare logfile name and
- syslog string with correct length. Patch from Donald Buczek
- <buczek@MPIMG-Berlin-Dahlem.MPG.DE>.
-
- * amd/restart.c (restart): correctly inherit existing NFS V.3
- mounts upon restart. Patch from Donald Buczek
- <buczek@MPIMG-Berlin-Dahlem.MPG.DE>.
-
-Sat Apr 18 19:01:19 1998 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * using libtool 1.2 and automake 1.3 (with my patches).
-
- * aux/macros/opt_am_cflags.m4, */Makefile.in: rename AM_CFLAGS to
- AMU_CFLAGS to avoid conflicts with automake-1.3.
-
-Sun Apr 5 23:09:08 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * converted to using libtool-1.2.
-
-Tue Mar 10 16:52:09 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * fsinfo/fsi_analyze.c (fixup_required_mount_info): replaced silly
- for loop (ITER) which used to run only to initialize the variable
- dd once and then break; with a simple assignment.
-
- * hlfsd/hlfsd.h: cleanup so it compiles with Solaris
- /opt/SUNWspro/bin/cc, and use gid_t not int.
-
- * amd/mapc.c (mapc_sync): don't dereference pointer (so it
- compiles with Solaris /opt/SUNWspro/bin/cc)
-
-Sun Mar 8 15:54:22 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/config.{guess,sub}: used from gcc-2.8.1.
-
-Sat Mar 7 15:33:27 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0a16s9
-
- * INSTALL, doc/am-utils.texi (Supported Platforms): updated names
- based on new output of new config.guess.
-
- * aux/config.{sub,guess}: used newer versions from gcc-2.8.0.
-
- * amd/amd.8,doc/am-utils.texi: document correct usage of default
- /etc/amd.conf file.
-
- * fixmount/fixmount.c (inetresport,privsock): use some more
- portable code from amq/amq.c.
-
- * amd/get_args.c (get_args): use default /etc/amd.conf file only
- if no arguments had been passed to amd.
-
- * fixmount/fixmount.c (clnt_create_timeout): use tli/socket code
- ala amq/amq.c so that fixmount will work on both types of systems.
-
- * amq/amq.c (main): do no close tcp socket before running udp try,
- because we're not sure if it was opened at all.
-
- * mips-dec-ultrix* port merged in and cleaned up.
-
- * aux/configure.in: up minor shared library revision number, since
- it has changed enough.
-
- * hlfsd/hlfsd.c (main): don't check for overlay mount option here,
- as it is now done in compute_nfs_args(). Remove ultrix specific
- code also because it was moved to compute_nfs_args().
-
- * conf/mount/mount_svr4.c: removed DEBUG_MOUNT_SVR4 code, now that
- we have more generic code in print_nfs_args().
-
- * libamu/mount_fs.c (print_nfs_args): print maxlen of
- nfs_args.addr, and also syncaddr (which is mostly NULL). Print
- struct knetconfig from nfs_args->knconf.
-
- * aux/macros/mount_headers.m4 (define): do not check for ufs/cdfs
- headers here, but in try_compile_anyfs.m4.
-
- * aux/macros/type_ufs_args.m4: move test for struct ufs_specific
- (for ultrix) here from its own macro.
-
- * aux/macros/type_cdfs_args.m4: move test for struct iso_specific
- (for ultrix) here from its own macro.
-
- * amd/ops_nfs.c (mount_nfs_fh): no need to run code again checking
- for overlay mount option. Remove code which checks for overlay
- option, as it is now done in compute_nfs_args().
-
- * libamu/mount_fs.c (compute_mount_flags): move here code which
- checks for overlay mount option which was in amd/amfs_toplvl.c:
- mount_amfs_toplvl().
-
-Wed Feb 7 15:35:51 1998 Rainer Orth <ro@xayide.TechFak.Uni-Bielefeld.DE>
-
- * The following are Rainer's ChangeLog entries for his ultrix
- port, added manually. -Erez.
-
- * merged Ultrix port with am-utils 6.0 a16s5: amd/ops_afs.c
- (mount_toplvl) -> amd/amfs_toplvl.c (mount_amfs_toplvl)
-
- * include/am_defs.h: include cdfs specific mount headers
- avoid duplication definition of gt_names[] in <sys/fs_types.h> (Ultrix)
-
- * include/am_compat.h: define several mount options corresponding
- to mount flags: pgthresh, hard (nfs), defperm, nodefperm,
- noversion, rrip (cdfs), nocache, quota, sync (generic) removed
- duplicate MNTTAB_OPT_RO definition
-
- * aux/macros/try_compile_anyfs.m4: include Ultrix specific
- ufs/cdfs mount headers
-
- * aux/macros/mount_headers.m4: include several Ultrix/Digital UNIX
- specific mount headers
-
- * aux/macros/check_{fs_mntent, mount_type}.m4: check for GT_*
- mount types in mount headers (Ultrix)
-
- * aux/configure.in: Ultrix/Digital UNIX specific checks: new
- headers, mount structures and fields, filesystem and mount types,
- mount flags
-
- * aux/acconfig.h: placeholders for new mount options: quota
- (generic), ro (nfs), defperm, nodefperm, noversion, rrip (cdfs)
- cdfs, nfs, ufs mount structure fields new ufs, cdfs mount
- structures
-
- * amd/ops_ufs.c (mount_ufs): Ultrix stores generic mount flags in
- ufs_args.ufs_flags and has ufs specific pgthresh option
-
- * amd/ops_cdfs.c (mount_cdfs): handle Ultrix/Digital UNIX specific
- CDFS mount flags and options
-
- * amd/ops_afs.c (mount_toplvl), amd/ops_nfs.c (mount_nfs_fh),
- hlfsd/hlfsd.c (main): store generic mount flags in
- nfs_args.gfs_flags, handle separate NFS ro flag
-
- * aux/macros/{check_mnt2_cdfs_opt, struct_iso_specific,
- struct_ufs_specific}.m4: new files; check for Ultrix specific
- mount structures
-
- * conf/trap/trap_ultrix.h: arg 3 to mount(2) is rwflag
-
- * aux/macros/type_auth_create_gidlist.m4 (ultrix*):
- AUTH_CREATE_GIDLIST_TYPE is int (not short == gid_t) from a
- comment in <rpc/auth.h>
-
- * include/am_defs.h: #define KERNEL to avoid definition of
- gt_names[] conf/mtab/mtab_ultrix.c: #include <sys/fs_types> before
- <config.h> to force single definition here
-
- * libamu/mount_fs.c (compute_nfs_args): Ultrix support for
- nfs_args.gfs_flags moved to callers store mount options in
- nap->optstr
-
- * include/am_defs.h: fix _am_mntent mnt_{type, opts} field
- descriptions
-
- * aux/macros/mount_headers.m4, aux/macros/try_compile_nfs.m4:
- include <rpc/rpc.h> before AMU_NFS_PROTOCOL_HEADER for svc_req
- definition in prototypes
-
- * aux/macros/mount_headers.m4: include <sys/errno.h> before
- AMU_NFS_PROTOCOL_HEADER: <nfs/nfs.h> needs it for NFSERR_*
- definitions
-
- * conf/nfs_prot/nfs_prot_ultrix.h: new file
-
- * aux/macros/check_nfs_prot_headers.m4: use nfs_prot_ultrix.h
-
- * aux/macros/mount_headers.m4, aux/macros/try_compile_nfs.m4,
- aux/macros/try_compile_rpc.m4, include/am_defs.h: avoid multiple
- inclusion of <rpc/xdr.h>
-
-Sat Mar 7 13:56:05 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: save state of config.cache and confdefs.h
- (as dbgcf.h) at various points of the configure.
-
- * aux/macros/save_state.m4: new macro to save state of configure,
- esp. useful in long ones. Saves confdefs.h and write $ac_cv_*
- cache variables that are known so far.
-
- * released snapshot am-utils-6.0a16s8
-
-1998-03-06 Erez Zadok <ezk@mercer.psl.cs.columbia.edu>
-
- * fsinfo/fsi_lex.l,amd/conf_tok.l: define ECHO after undefining
- it, but only for flex.
-
-Fri Mar 6 17:23:17 1998 Erez Zadok <ezk@chestnut.mcl.cs.columbia.edu>
-
- * hlfsd/homedir.c (plt_print): change pathname of hlfsd dump file
- to /usr/tmp/hlfsd.dump.XXXXXX, and use a safe method (if possible)
- to write the dump file.
-
- * doc/am-utils.texi,amd/opts.c: rename all references to nomadic
- functions to boolean functions, which is what they really are.
-
- * aux/configure.in: don't look for strcasecmp in libucb at all,
- but rather complete it from libamu/strcasecmp.c as needed.
-
-Fri Mar 6 03:29:20 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_osf4.h: avoid conflicts with Irix's EFS.
-
- * libamu/wire.c (getwire): fix for 0.0.0.0 loopback on SunOS 3.X
- which defines IFF_ROUTE instead of IFF_LOOPBACK. Patch from Tom
- Schmidt <tschmidt@micron.com>.
-
- * released snapshot am-utils-6.0a16s7
-
- * conf/nfs_prot/nfs_prot_hpux11.h: a first working port of amd to
- hppa1.0-hp-hpux11.00.tgz.
-
-Thu Mar 5 21:59:03 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * converted all sources to use mntent field names, and map mnttab
- field names to mntent's.
-
- * include/am_defs.h (mnt_special): map struct mnttab field names
- to struct mntent field names.
-
- * aux/macros/check_mount_trap.m4: hpux11's mount trap style is
- identical to svr4/solaris2.
-
- * aux/macros/check_mount_style.m4: hpux11's mount style is
- identical to svr4/solaris2.
-
- * aux/macros/check_network_transport_type.m4: hpux11 is a TLI
- system!
-
- * aux/macros/check_nfs_sa_dref.m4: hpux11's NFS host address
- dereferencing style is same as svr4.
-
- * aux/macros/check_nfs_fh_dref.m4: hpux11's NFS file fh
- dereferencing style is same as svr4.
-
- * conf/transp/transp_tli.c (create_nfs_service): if failed to
- getnetconfigent() of ticlts, then try udp (hpux11).
-
- * conf/nfs_prot/nfs_prot_hpux11.h: added correct definitions for
- struct nfs_args, nfs_fh, and NFSMNT_* flags, taken from solaris
- 2.5.1 (HP used them).
-
- * amd/rpc_fwd.c (fwd_init): don't use O_NDELAY for t_open()
- because hpux11 doesn't like it. if t_open failed, print error
- based on t_errlist, not sys_errlist.
-
-Wed Mar 4 22:01:55 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi: lots of documentation fixes from Rainer Orth
- <ro@TechFak.Uni-Bielefeld.DE>.
-
-Sat Feb 28 22:16:35 1998 Erez Zadok <ezk@kosh.cs.columbia.edu>
-
- * fsinfo/fsi_lex.l: undefine ECHO again, so it doesn't get used
- later.
-
- * include/am_defs.h: defined the extern for ualarm() if it isn't
- found, regardless if the function isn't found in standard
- libraries, because otherwise libamu will include it.
-
-1998-02-28 Erez Zadok (per Ron Snyder) <ezk@short.cvo.roguewave.com>
-
- * initial port to hpux-11 completed. Compiles cleanly, but
- probably does not work, because of missing NFS V.2/3 headers.
-
- * amd/conf_tok.l: cast yytext to char* when passed to strlen and
- strdup, for hpux-11's ansi-cc compiler.
-
- * include/am_utils.h: renamed all xfree() to XFREE() to avoid
- conflict with hpux-11's system headers. Also move (voidp) cast
- from sources to inside the macro itself.
-
-Sat Feb 28 13:44:21 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0a16s6
-
- * amd/info_nis.c (nis_isup): new function to test if NIS is up
- without hanging amd. Used to ensure that amd does not clear the
- maps when the expiration period arrived, if the service is down.
- Otherwise it would be left with empty maps. It is better to stay
- with possibly old information than none at all.
-
- * amd/mapc.c (mapc_sync): check to see if map service is up.
-
-Tue Feb 24 02:19:42 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_lib2.m4 (AC_CHECK_LIB2): fix macro so it
- includes auxiliary library only if needed.
-
-1998-02-22 Erez Zadok <ezk@mercer.psl.cs.columbia.edu>
-
- * amd/conf_tok.l: undefine ECHO again, so it doesn't get used
- later.
-
-Sun Feb 22 01:41:08 1998 Erez Zadok <ezk@zen.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_osf2.h: port to alpha-dec-osf2.1
- completed.
-
- * conf/mtab/mtab_osf.c (mnt_dup): not all OSF have NFS3.
-
-Sat Feb 21 19:45:48 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (Network Host Filesystem): correct example for
- type:=host map.
-
- * aux/macros/os_cflags.m4: only osf4 should compile with
- -D_SOCKADDR_LEN.
-
- * aux/macros/check_nfs_prot_headers.m4: distinguish between OSF2
- and OSF4.
-
- * BUGS: include a new file listing known bugs.
-
-Sat Feb 21 03:50:48 1998 Erez Zadok <ezk@mercer.psl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_linux.h: turn DES off on all linux
- versions.
-
- * aux/macros/type_recvfrom_fromlen.m4: linux alpha should use
- size_t for recvfrom fromlen arg.
-
-Sat Feb 21 03:33:59 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/ctl-hlfsd.in: turn -D fork so primary process never
- hangs.
-
-Sat Feb 21 02:45:51 1998 Erez Zadok <ezk@mercer.psl.cs.columbia.edu>
-
- * include/am_defs.h: don't include <sys/stat.h> and
- <linux/stat.h>, just remaining definitions in <statbuf.h>
-
-Thu Jan 29 00:44:28 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0a16s5
-
- * conf/mount/mount_irix6.c (mount_irix): pass {u,e,x}fs_args to
- mount(2).
-
- * check for <sys/fs/xfs_clnt.h> and include it when needed.
-
- * conf/mount/{mount_irix5.c,mount_irix6.c} (mount_irix): recognize
- efs and xfs separately from "ufs".
-
- * amd/{ops_xfs.c,ops_efs.c}: new support for irix xfs/efs.
-
- * aux/configure.in: look for irix efs and xfs file systems.
-
- * scripts/amd.conf.5: new unmount_on_exit option documented.
-
- * doc/am-utils.texi (unmount_on_exit): new option documented.
-
- * amd/conf.c (gopt_unmount_on_exit): new function to handle new
- amd.conf option.
-
- * amd/map.c (umount_exported): if global amd.conf flag
- unmount_on_exit is on, then try to unmount all mounted (or
- restartable) file systems.
-
- * amd/amd.c: if print_pid option is on, then normally print it to
- stdout. If also pid_file is specified, then print the process ID
- into that file.
-
- * amd/get_args.c (get_args): print correct -l option depending if
- system supports syslog and/or syslog facilities. Patch from
- Tom Schmidt <tschmidt@micron.com>.
-
- * doc/am-utils.texi (opts Option): updates for documentation for
- new cdfs options defperm, nodefperm, noversion, rrip.
-
- * amd/ops_cdfs.c (mount_cdfs): support cdfs options defperm,
- nodefperm, noversion, rrip.
-
- * conf/nfs_prot/nfs_prot_osf.h: need to look at <cdfs/cdfsmount.h>
- on osf.
-
- * aux/macros/{expand_cpp_hex.m4, expand_cpp_int.m4,
- expand_cpp_string.m4}: use #error to make failed compilations
- fail faster, rather than have the program fail during a run.
-
- * include/am_compat.h: added a few new cdfs options: rrip,
- noversion, defperm, and nodefperm (used in OSF).
-
-Wed Jan 28 20:24:09 1998 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * released snapshot am-utils-6.0a16s4
-
- * doc/am-utils.texi (Global Parameters): update manual for new
- amd.conf global variable hesiod_base.
-
- * scripts/amd.conf.5: update man page for new amd.conf global
- variable hesiod_base.
-
- * amd/get_args.c (get_args): use /etc/amd.conf file if exists by
- default, else try command line options. Patch from Randall
- S. Winchester <rsw@Glue.umd.edu>.
-
-Wed Jan 28 12:20:56 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/info_hesiod.c (hesiod_search), amd/conf.c
- (gopt_hesiod_base), amd/amd.h, amd/amd.c (init_global_options):
- included patch from Randall S. Winchester <rsw@Glue.umd.edu>, to
- support a hesiod base name in the amd.conf file.
-
- * doc/am-utils.texi (pid_file Parameter): document new global
- amd.conf parameter.
-
- * scripts/amd.conf.5: document new global option pid_file.
-
- * amd/amd.c (daemon_mode): if cannot open pid_file, continue to
- run, but print error message.
-
- * amd/conf.c (gopt_pid_file), amd/amd.h, amd/amd.c (daemon_mode,
- init_global_options): Included patch from Randall S. Winchester
- <rsw@Glue.umd.edu>, to support pid files in the amd.conf file.
-
- * amd/get_args.c (get_args): correct usage info on amd -t.
-
- * amd/*.c: massive file name and symbol name changes. All amd
- file systems files and symbols are prefix with amfs_*. Now using
- real name of file system: amfs_auto instead of afs, amfs_inherit
- instead of ifs, amfs_linkx instead of sfsx, etc. This will enable
- clear distinction between amd file system and generic ones like
- nfs/ufs/pcfs/hsfs. Also, now we can implement true afs (Andrew
- f/s) and DFS (Distributed f/s).
-
- * amd/amfs_union.c: unionfs for amd is always defined, no need to
- #ifdef it.
-
-Mon Jan 26 16:51:38 1998 Erez Zadok <ezk@chestnut.mcl.cs.columbia.edu>
-
- * libamu/mount_fs.c (compute_nfs_args): set 'noconn' NFS option on
- or off, based on the particular quirks of the OS in question.
-
- * aux/macros/check_nfs_socket_connection.m4: new macro to set the
- correct wait of handling un/connected NFS sockets.
-
- * scripts/wait4amd.in: use rlogin instead of rsh.
-
- * amd/am_ops.c (ops_showfstypes): when showing F/S types in amd
- -v, always show "nfs3" for NFS V.3.
-
-1998-01-25 Erez Zadok <ezk@snoopy.cs.columbia.edu>
-
- * lots of small fixes for solaris 2.6, since gcc 2.8.0 -Wall gets
- more picky than 2.7.2.3 did.
-
-1998-01-24 Erez Zadok <ezk@snoopy.cs.columbia.edu>
-
- * include/am_utils.h (dlog): amuDebug macros reduced to shorter
- forms.
-
-Fri Jan 23 18:38:30 1998 Erez Zadok <ezk@goat.mcl.cs.columbia.edu>
-
- * released snapshot am-utils-6.0a16s3
-
- * include/am_defs.h: on Solaris 2.6, <sys/varargs.h> is included
- in <sys/fs/autofs.h> but since stdargs.h is used, and varargs.h
- must not, fake a definition for varargs.
-
-Fri Jan 16 10:16:40 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * README: show how to configure in additional support such as
- hesiod using various --enable-* flags.
-
-Wed Jan 14 15:13:02 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: look for strcasecmp(), and replace it if not
- available.
-
- * amd/ops_nfsl.c (nfsl_match): host names should be compared using
- case insensitive.
-
- * amd/opts.c: for each map variable, define if the comparison
- needs to be done case insensitive.
-
- * include/am_utils.h (STRCEQ): a new macro to use strcasecmp().
- Patch from Thomas Richter <richter@chemie.fu-berlin.de>
-
-1998-01-14 Erez Zadok <ezk@irt.cs.columbia.edu>
-
- * aux/configure.in: look for "isofs" as a possible mount type for
- cdfs (RedHat Linux).
-
-Wed Jan 14 02:07:05 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/mount/mount_linux.c (parse_opts): don't look for cdfs mount
- type if not defined.
-
- * conf/nfs_prot/nfs_prot_linux.h: don't define __FD_* macros if
- already defined.
-
- * aux/configure.in: look for ext2fs before ufs, b/c some linux
- have both.
-
-Mon Jan 12 15:43:20 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * Makefile.am (snapshot): allow me to install snapshots into the
- ftp directory.
-
- * scripts/ctl-hlfsd.in: don't turn on -D mem by default.
-
- * amd/get_args.c (get_args): minor bug in output of amd -H.
-
-Mon Jan 12 03:05:06 1998 Erez Zadok <ezk@chestnut.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a15 ***
- *******************************************************************
-
-Sun Jan 11 15:06:34 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/conf.c (*_browsable_dirs): allow specifying
- browsable_dirs=full, which will print *all* entries (other than
- /default), including those with '*' and '/' characters.
-
- * amd/info_file.c (MAX_LINE_LEN): up maximum readdir chain length
- to 1500.
-
- * doc/am-utils.texi: fixed reversed documentation for NFS mount
- options vers and proto.
-
- * doc/Makefile.am (install-html): separate target just for
- installing html files. Another new target "alldocs" is just for
- installing all files needed for the am-utils home page.
-
- * scripts/amd.conf-sample: updated example for log_file.
-
- * scripts/amd.conf.5: updated for new way to declare new syslog
- facility in the log_file option.
-
- * amd/amd.8: updated for new way to declare new syslog facility in
- the -l option.
-
- * libamu/xutil.c (get_syslog_facility): allow users to specify the
- syslog facility as an appended string to the log device. Ex. amd
- -l syslog:local7 will use LOG_LOCAL7, while the older -l syslog
- will use the default LOG_DAEMON facility.
-
- * amd/get_args.c (get_args): updated new syntax for amd -l
- syslog:facility.
-
-Thu Jan 8 04:05:10 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/host_macros.m4: don't confuse sun3 (sparc) with sun3
- (intel).
-
- * libamu/wire.c (print_wires): bug fix. Nullify output buffer
- before appending to it, on systems with two or more network
- interfaces.
-
- * conf/nfs_prot/nfs_prot_sunos5_3.h: add missing definition for
- the mntent for cachefs.
-
- * include/am_defs.h: external definition for strstr() should use
- const for both arguments.
-
- * aux/configure.in: add extern definitions for getwd() if missing.
-
- * include/am_defs.h: define the extern for strdup() even if the
- function does not exist, for it will be filled in by
- libamu/strdup.c
-
- * amq/pawd.c (cluster_server): don't use getccent() if the extern
- for it isn't there. On hpux 10.20, the function is in libc, but
- <cluster.h> and struct cct_entry do not exist.
-
- * aux/configure.in: check for an extern for getccent() b/c some
- hpux systems don't have it (hpux 10.20).
-
-Wed Jan 7 00:09:19 1998 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * doc/am-utils.texi (Amq -T option): manual documentation updates
- for new amq options -T/-U.
-
- * amq/amq.8: updated man page for new amq options -T/-U.
-
- * amq/amq.c: two new switches to amq. -U will contact amd using
- UDP only. -T will use TCP only. Normally amq will try TCP and
- if that failed, will try UDP.
-
- * doc/am-utils.texi (pawd): manual documentation for pawd.
-
- * amq/pawd.1: new man page for pawd.
-
-Tue Jan 6 04:21:59 1998 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amq/pawd.c: a new program, Print Automounter Working Directory,
- to print the proper pathname of the cwd or any other pathname,
- adjusted for automounter paths, while avoiding mount points.
-
- * aux/macros/localconfig.m4: trivial support for am-utils
- maintainers to adjust some of the configuration of am-utils after
- it has been auto-configured by putting whatever definitions you
- wish in a file called localconfig.h, located in the top build
- directory (the same one where config.h is created for you).
-
- * doc/am-utils.texi (Caching Filesystem): updated documents for
- cachefs file system.
-
- * amd/ops_cachefs.c: initial cachefs support, for solaris.
- type:=cachefs, requires cachedir:=/cache/dir/name to be defined
- and initialized with cfsadmin -c. $rfs is backdir to be cached
- from, and $fs is the local mount point of the cachefs.
-
- * conf/mount/mount_svr4.c (mount_svr4): support mounting of
- cachefs file systems.
-
- * amd/ops_cdfs.c: cdfs should be named 'cdfs', not whatever the
- mnttab type is.
-
-Mon Jan 5 23:22:49 1998 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/opts.c: added support for new variable $cachedir.
-
- * include/am_utils.h: added opt_cachedir field to struct am_opts.
-
-Sat Jan 3 01:43:57 1998 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/ops_nfsl.c (nfsl_ffserver, nfsl_match): also check if the
- local hostname does not match $rhost, and if so, also assume
- type:=nfs.
-
-Fri Jan 2 01:00:40 1998 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * updated all source files to add 1998 as a copyright year.
-
- * amd/ops_nfsl.c: new amd meta file system "type:=nfsl". Behaves
- like type:=linkx if the pathname denoted by $fs exists, and like
- type:=nfs if it does not. A convenient shortcut for the most
- popular amd map entry.
-
- * amd/amd.c (main): amd should chdir to / before starting, to
- avoid hanging on other NFS server if started elsewhere.
-
- * amd/ops_TEMPLATE.c: added an empty template file for developers
- who wish to write new amd pseudo file systems.
-
-Thu Jan 1 00:27:28 1998 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * hlfsd/homedir.c (plt_init): make function exported, to save on
- the unnecessary init_homedir() function which was removed.
- (table_add): don't use xmalloc() when you can use strdup()
- instead.
-
-Thu Jan 1 00:15:58 1998 Erez Zadok <ezk@chestnut.mcl.cs.columbia.edu>
-
- * hlfsd/homedir.c (hlfsd_endpwent): Don't actually run this
- because we will be making more passwd calls afterwards. On
- Solaris 2.5.1, making getpwent() calls after calling endpwent()
- results in a memory leak! (and no, even Purify didn't detect
- it...)
-
-Tue Dec 23 18:23:47 1997 Erez Zadok <ezk@chestnut.mcl.cs.columbia.edu>
-
- * hlfsd/hlfsd.c (main): Bug fix. Don't try to free() an
- automatically allocated address.
-
- * amd/ops_afs.c (mount_toplvl): Bug fix. Don't try to free() an
- automatically allocated address.
-
- * ALL SOURCES: change every direct call to free() to xfree(), so
- it can be mapped to the right debugging function as needed.
-
- * include/am_utils.h: new free() policy. If debugging memory,
- call dxfree(), which will print the file name and line number
- where the free occurred and the pointer address. if only regular
- debugging, then free() and reset the pointer to NULL so it cannot
- be used afterwards inadvertently. If not DEBUG at all, then just
- run free(). Three different #define macros set the right mapping.
-
- * libamu/xutil.c (dxfree): renamed function to dxfree(), so it can
- be called only when debugging the memory.
-
-Tue Dec 23 04:24:28 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * wire-test/wire-test.c (main): use xmalloc() not malloc().
-
- * conf/transp/transp_tli.c (get_knetconfig): use xzalloc() not
- calloc().
-
- * conf/mtab/mtab_mach3.c (convert): use xzalloc() not calloc().
-
- * conf/mount/mount_linux.c (parse_opts): use xmalloc() not
- malloc().
-
- * amd/info_ldap.c: use xmalloc() not malloc().
-
- * libamu/xutil.c (xzalloc): new function to allocate memory and
- zero its bytes.
-
- * amq/amq.c: amq does not need its own definition of xfree().
-
- * aux/macros/opt_debug.m4: if used --enable-debug=mem, then also
- look for function malloc_verify() in libmapmalloc.a, and function
- mallinfo() in libmalloc.
-
- * libamu/xutil.c (checkup_mem): do not use mallinfo field
- uordbytes, because it does not always exist. Rather, compute it
- from other fields..
-
- * include/am_utils.h: add external definition to xfree() function
- used when debugging memory references.
-
-Mon Dec 22 03:01:30 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/ops_afs.c (afs_readdir_browsable): reduce the number of
- bytes heuristically computed to be returned to the kernel.
- Otherwise browsable_dirs fails on OpenBSD 2.2.
-
- * amd/mntfs.c (uninit_mntfs): bug fix. Moved freeing of
- mf_private field to AFTER it gets used.
-
-Sat Dec 20 00:51:21 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/ops_host.c (host_umounted): don't use clnt_spcreateerror()
- on systems that don't support it.
-
- * include/am_defs.h: add missing extern definition for free().
-
- * aux/configure.in: check for external definition for free().
-
- * libamu/Makefile.am: add to comment a mention of strstr as an
- optional function.
-
- * libamu/xutil.c (switch_to_logfile): use openlog() options only
- if they exist.
-
- * conf/transp/transp_sockets.c (get_nfs_version): don't use
- clnt_spcreateerror if it does not exist.
-
- * aux/configure.in: check for missing functions clnt_create and
- clnt_spcreateerror. Check for missing strstr, and complete
- its code. Check for missing external definition for strstr.
-
- * aux/macros/host_macros.m4: normalize sun3* names.
-
- * Makefile.am: updates for new sunos3 files distributed.
-
- * conf/nfs_prot/nfs_prot_sunos3.h: new file.
-
- * conf/fh_dref/fh_dref_sunos3.h: new file.
-
- * aux/macros/check_nfs_prot_headers.m4: added sunos3 case.
-
- * aux/macros/check_nfs_fh_dref.m4: added sunos3 case.
-
- * doc/am-utils.texi (wire Selector Variable): updated manual for
- adjusted variables wire, network, and netnumber, all using the
- in_network() function.
-
-Fri Dec 19 04:37:36 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/opts.c: allow options to be processed by executing arbitrary
- functions. Converted wire, network, and netnumber all to use the
- nomadic function in_network. So from now on they perform a match
- against all networks, not just primary.
-
- * initial port to alpha-unknown-linux-gnu, probably works, but
- untested yet.
-
- * conf/nfs_prot/nfs_prot_linux.h: add special definitions for
- __FD_* macros which for som strange reason do not get included
- from <selectbits.h> on redhat alpha linux. Also turn off usage of
- <rpc/des_auth.h> because it is incomplete on the same systems.
-
- * hlfsd/homedir.c (table_add): cast uid field to int, for
- comparison.
-
- * include/am_defs.h: more coflicts with redhat alpha linux
- "resolved".
-
- * aux/macros/{mount_headers,try_compile_anyfs,try_compile_nfs}.m4:
- There's a conflict of definitions on redhat alpha linux between
- <netinet/in.h> and <linux/fs.h> which must be avoided.
-
- * aux/configure.in: check for <socketbits.h>, which is in use on
- redhat alpha linux.
-
- * doc/am-utils.texi (Selectors): added documentation to describe
- the new "!" (negated) nomadic functions.
-
- * amd/opts.c (f_in_network): print debugging info that is correct,
- rather than saying that any ARG is on a local network.
- (eval_opts): added support for negating nomadic functions, by
- prepending "!" to their name. Example, !exists(/foo/bar).
-
-Thu Dec 18 20:57:19 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * include/am_compat.h: ensure that all NFS3 systems have the mount
- table entries (and amd opts switches) "proto" and "vers".
-
- * hlfsd/homedir.c (table_add): added some debugging info to try
- and track down a serious memory leak in hlfsd.
-
-1997-12-18 Erez Zadok <ezk@t-rex.mcl.cs.columbia.edu>
-
- * libamu/mount_fs.c (compute_nfs_args): OpenBSD 2.2 requires that
- you do NOT set the noconn option, and use connected sockets
- always. So I'm now forced not to set it at all, and have the user
- specify it as "conn" or "noconn" in their /default entry. Argh...
- Finally, it looks as if OpenBSD 2.2's NFS 3 implementation may be
- buggy (TCP hangs with "short receive" kernel errors). I'd better
- wait until they get it working in their version of the automounter
- first. So I'm putting the "noconn" option back.
-
-Thu Dec 18 02:39:39 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/mount_fs.c (compute_nfs_args): use maxgrps option and set
- nfs_args field maxgrouplist accordingly.
-
- * include/am_compat.h (MNTTAB_OPT_MAXGROUPS): complete definition
- for mount table entry for maxgroups based on NFS mount option
- maxgrp.
-
- * aux/configure.in: put back testing for NFS mount option
- "maxgrps". Added test for mount table entry "maxgroups".
-
- * libamu/mount_fs.c (compute_nfs_args): perform more careful tests
- on nfs_proto, because it could be NULL.
-
- * doc/am-utils.texi (Selectors): added example of in_network()
- selector.
-
- * aux/macros/check_hide_mount_type.m4: all hpux versions,
- including 9.x, should use "ignore" as the mount type to hide from
- amd.
-
-Wed Dec 17 13:09:21 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * include/am_utils.h (NSTREQ): use new macro instead of strncmp()
- every where in the sources.
-
-Wed Dec 17 01:15:01 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * libamu/mount_fs.c (print_nfs_args): if -D trace is on, will
- print as much info that is given in struct nfs_args as possible.
- useful for detecting internal flags and options, as well as the
- file handle used.
-
- * scripts/ctl-amd.in: look for amd.conf file in ${prefix}/etc
- after /etc and before /etc/local.
-
-Tue Dec 16 18:51:36 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in, libamu/Makefile.am: added support for linking
- with specific versions of libamu. Upped shared library version of
- libamu to 1 (libamu.so.1.0.0)
-
- * include/am_defs.h: added external definition for mkstemp() as
- needed.
-
- * minor new port to i386-unknown-netbsd1.3 (BETA version of
- netbsd).
-
- * aux/config.guess: don't leave a trailing '.' on the system name
- for NetBSD-1.3_BETA and similarly for OpenBSD.
-
- * conf/nfs_prot/nfs_prot_netbsd1_3.h: new header for the slight
- differences in ypall calling conventions.
-
- * mk-amd-map/mk-amd-map.c (main): use mkstemp() whenever possible
- in preference over mktemp(), b/c it is more secure.
-
- * aux/configure.in: check for mkstemp(), a more secure version of
- mktemp().
-
-Mon Dec 15 02:32:14 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/ops_nfs.c (mount_nfs_fh): Systems that include the mount
- table "vers" option generally do not set the mnttab entry to
- "nfs3", but to "nfs" and then they set "vers=3". Setting it to
- "nfs3" works, but it may break some things like "df -t nfs" and
- the "quota" program (esp. on Solaris and Irix). So on those
- systems, set it to "nfs".
-
-Sat Dec 13 01:36:27 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (Distrib): updates for new ports, location of
- am-utils' home page, and URL cross references (now supported by my
- version of texi2html).
-
- * aux/macros/check_mtype_type.m4: also use string type for file
- system mount types under nextstep for mount(2).
-
- * aux/macros/check_mtype_printf_type.m4}: nextstep can handle both
- integer and string types for file system mount types in mount(2),
- but it is better to use string types.
-
- * conf/nfs_prot/nfs_prot_nextstep.h: set emum nfsstat's NFS_OK to
- 0, not 1! Otherwise, all NFS calls (esp. mount) return errno 1
- (EPERM) instead of 0 (OK). Fixes m68k-next-nextstep3 which now
- works.
-
- * conf/nfs_prot/nfs_prot_bsdi2.h: set emum nfsstat's NFS_OK to 0,
- not 1! Otherwise, all NFS calls (esp. mount) return errno 1
- (EPERM) instead of 0 (OK).
-
- * libamu/xdr_func.c (xdr_*): add debugging calls that are optioned
- by -D trace (protocol trace).
-
-1997-12-11 Erez Zadok <ezk@bach.cs.columbia.edu>
-
- * A.m68k-next-nextstep3/amu_nfs_prot.h: define missing S_ISDIR
- macro based on existence on others, and include <sys/stat.h>.
-
-Thu Dec 11 14:14:38 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/try_compile_nfs.m4 (AC_TRY_COMPILE): turn off
- inclusion of <nfs/nfs_mount.h> which only affects nextstep3, on
- which this header is broken (it tries to include non-existing
- headers).
-
-Wed Dec 10 16:09:07 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/mount_fs.c (mnt_flags): support either nfs or generic
- mount option for grpid.
-
- * aux/configure.in: turn back on NFS mount option grpid.
-
-Sat Dec 6 04:36:05 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/Makefile.am (install-ps): added target to install postscript
- file in the am-utils' home page, as well as a few other useful
- files for the new am-utils Web page.
-
-Mon Nov 17 05:22:56 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a14 ***
- *******************************************************************
-
-Sun Nov 16 21:56:16 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (Supported Platforms): updated table of new
- ports.
-
-Sat Nov 15 06:36:27 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/mount_fs.c (compute_automounter_nfs_args): pass mnttab
- options so that they can be printed in logs as needed.
-
- * doc/am-utils.texi (osver Parameter): updated for the correct
- usage of the -o/-O options.
-
- * scripts/amd.conf.5: corrected info for -o/-O options.
-
- * amd/amd.8: updated man page for new -O op_sys_name option, and
- corrected the usage of the -o op_sys_ver option
-
- * amd/get_args.c (get_args): added new amd option -O to override
- OS name.
- (get_args): updated usage string. Removed old -m option. Added
- -o and -O options.
-
- * conf/nfs_prot/nfs_prot_irix5.h: add definition to FHSIZE in case
- it is not there. Reportedly, irix 5.2 does not define it.
-
- * scripts/lostaltmail.in: removed references to unused $hack
- variable.
-
- * aux/macros/check_nfs_prot_headers.m4: Patch from Chris Metcalf
- <metcalf@cag.lcs.mit.edu> to correctly set the nfs_prot headers
- for solaris2.5.
-
- * doc/am-utils.texi (Distrib): typo in the subscription
- instructions to amd-dev. Patch from Stefan Vogel
- <vogel@physik-rzu.unizh.ch>.
-
-1997-11-15 Erez Zadok <ezk@amtrak.cs.columbia.edu>
-
- * NFS3 works on powerpc-ibm-aix4.2.1.0.
-
- * libamu/mount_fs.c (compute_nfs_args): set fh3 variable to
- static. Some compilers (gcc from egcs on aix 4.2.1) corrupt the
- stack of an automatic variable when pointer to it is passed around
- several times.
-
-Fri Nov 14 20:09:28 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/xutil.c (real_plog): syslog like behavior for normal
- logging. Will not print repeated strings, only a count "last
- message repeated N times", but will always print something if
- message is repeated more than 100 times.
-
- * scripts/lostaltmail.in: look for lostaltmail.conf files also in
- /etc/global, /etc/os, and /etc/local (in that order).
-
-Mon Nov 10 03:03:17 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * conf/mount/mount_aix.c (mount_aix3): add support for NFS V.3
- mounts.
-
- * aux/macros/struct_nfs_args.m4 (AC_TRY_COMPILE_NFS): test for
- aix42_nfs_args, specially set in conf/nfs_prot/nfs_prot_aix4_2.h
-
- * conf/sa_dref/sa_dref_*.h: from now on, the "dst" argument to the
- NFS_SA_DREF macro is a pointer to the structure that used to be
- passed to it before. So now I have to dereference the pointer
- before accessing its values.
-
- * hlfsd/hlfsd.c (main): use the new and cleaner
- compute_nfs_args() and compute_automounter_nfs_args() functions.
-
- * amd/ops_nfs.c (mount_nfs_fh): use the new and cleaner
- compute_nfs_args() and compute_automounter_nfs_args() functions.
-
- * amd/ops_afs.c (mount_toplvl): MAJOR CODE REVISION. Use the new
- and cleaner compute_nfs_args() and compute_automounter_nfs_args()
- functions.
-
- * libamu/mount_fs.c (compute_nfs_args): major code cleanup that
- relates for struct nfs_args. A new function sets the numerous
- possible flags and fields of nfs_args_t in an orderly fashion.
- Code cleaned up, organized, and moved from amd/hlfsd into
- libamu. This saves on overall size of code.
- (compute_automounter_nfs_args): A variant of compute_nfs_args()
- which sets special options/flags that need to be used when NFS
- mounting an automounter's mount point. Used by hlfsd and amd.
-
- * amq/amq.c (get_secure_amd_client): don't print any more
- "get_secure_amd_client: using TCP, port 12345". It's more
- annoying than useful a message, even when assumed to be compiled
- under DEBUG only.
-
-Thu Oct 30 14:33:38 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_mnttab_type.m4: MAJOR BUG fixed for non-nfs
- mount table entries. The code used to define the /etc/mnttab name
- for file systems based on physical media (disk, cdrom, floppy) to
- the generic name, rather than the OS specific name. For example
- autoconf searches for all these types of mount table entries for a
- floppy based file system: vfat pcfs pc msdos msdosfs fat. But if
- it found any, it hard-coded the mnttab name to "pcfs" rather than
- the actual name found! Same for ufs, cdfs, pcfs, tmpfs, lofs,
- nullfs, unionfs, and umapfs.
-
- * aux/configure.in: also test for xfs (for newer Irix) when
- looking for mount type names, numbers, etc of a disk-based ufs.
-
-Sun Oct 26 19:32:57 1997 Erez Zadok <ezk@defiant.soscorp.com>
-
- * amq/amq.c (main): use pmap_ping() to test if remote host is up.
- This works better on bsdi2 and bsdi3, because their portmapper
- does not appear to like forwarding operations (it is generaly
- insecure).
-
-Sat Oct 25 04:55:56 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a13 ***
- *******************************************************************
-
-Fri Oct 24 05:04:37 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_ncr2.h: added missing definition for
- struct datum typedef.
-
- * conf/nfs_prot/nfs_prot_netbsd.h: corrected typedef for
- ypall_callback_fxn_t for netbsd.
-
- * aux/macros/type_auth_create_gidlist.m4: hpux10.10 uses int for
- the 5th arg to authunix_create(), while before and after they used
- gid_t.
-
- * conf/transp/transp_tli.c (amu_clnt_create_best_vers): don't use
- clnt_create_timed() on older Solaris 2.3 systems that did not have
- it.
-
- * conf/nfs_prot/nfs_prot_bsdi2.h: <msdosfs/msdosfsmount.h> is for
- kernel only on bsdi2, so do not include it.
-
-Fri Oct 24 00:29:42 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * hlfsd/stubs.c (nfsproc_readlink_2_svc): avoid logging repeated
- messages about resolution of mailboxes based on uid/gid.
-
- * scripts/ctl-hlfsd.in: check for alternate password file in
- ${prefix}/etc/passwd and use it in hlfsd's startup.
-
-Thu Oct 23 22:48:50 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * hlfsd/homedir.c (hlfsd_getpwent): added support for -P
- passwdfile option. If hlfsd is started with -P passwdfile, then
- the passwdfile is read and parsed just as a standard unix
- passwd(4) file. Only the username, uid, and homedir fields are
- read and checked. All the rest are ignored. No NIS/netgroup
- support!
-
- * hlfsd/hlfsd.c (main): check if hlfsd is run as root after
- parsing command line options, so that usage() can be printed when
- -h is invoked.
-
-Wed Oct 22 00:16:39 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/nfs_start.c (mount_automounter): if autofs service listener
- fails to initialize it is OK if using a test amd.
-
- * amd/opts.c (f_in_network): new nomadic function in_network(arg),
- which returns TRUE if 'arg' is any one of this host's networks.
-
- * libamu/wire.c (getwire): rewritten parts of function, to store
- all networks names and numbers in the order of the interface (not
- in reverse).
-
-Mon Oct 20 01:59:25 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: don't add ops_ufs.o on AIX twice. My code
- would have worked had it not been due to AIX's buggy /bin/sh.
-
- * doc/Makefile.am (EXTRA_DIST): include am-utils.dvi and
- am-utils.ps in the distribution sources.
- (html): generate html documentation for
- http://www.am-utils.org
-
-Sun Oct 19 12:35:49 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_netbsd.h: override the definition of
- ypall_callback_fxn_t. The NetBSD team compiles all sources with
- gcc -Wall -Wmissing-prototypes -Wstrict-prototypes.
-
- * amd/info_nis.c: allow for override of ypall_callback_fxn_t
- function typedef.
-
- * libamu/xutil.c (amu_release_controlling_tty): new function to
- release the controlling tty in a clean and sane manner. No longer
- using setpgid() b/c it may not work. Uses setsid(),
- and ioctl() (in order). This new function is used in amd/amd.c
- and hlfsd/hlfsd.c. Also avoid setpgrp(), because it works on some
- systems, but on others it is the same as setpgid().
-
-Sat Oct 18 23:42:40 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/acconfig.h: check for nfs mount option 'fsname'. Code for
- it was in amd/ops_afs.c, amd/ops_nfs.c, and hlfsd/hlfsd.c, but
- never used, because the configure test for fsname flag wasn't
- used. This fixed a bug in HPUX 10, where syncer and manual mounts
- left blank lines in /etc/mnttab.
-
- * aux/configure.in: check for nfs mount option 'fsname'.
-
-Fri Oct 17 13:30:27 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/ops_afs.c (mount_toplvl): turn on 'ignore' option in nfs
- mount flags of toplvl mounts. Important esp. for HPUX 10. Now
- hpux-10 will mount amd's mounts points as 'ignore' (by df).
-
- * aux/configure.in: check for NFS mount option 'ignore', useful in
- HPUX 10.
-
-Thu Oct 16 03:28:33 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_hide_mount_type.m4: hpux 10 should use "ignore"
- mount type and not NFS, for the amd mount points.
-
- * conf/transp/transp_tli.c (amu_clnt_create_best_vers): don't log
- an RPC timeout as an error, but just an info message. From
- Andreas Stolcke <stolcke@speech.sri.com>
-
- * If the NFS server is down or does not support the portmapper
- call (such as certain Novell NFS servers) we mark it as version 2
- and we let the nfs code deal with the case that is down. If when
- the server comes back up, it can support NFS V.3 and/or TCP, it
- will use those. From christos@deshaw.com (Christos Zoulas).
-
- * hlfsd/homedir.c (plt_print): various compile time cleanups to
- printfs that take a long, but pass an int to print. From
- christos@deshaw.com (Christos Zoulas).
-
- * aux/macros/func_bad_yp_all.m4 (ac_cv_func_yp_all_clean,): new
- macro to determine if the OS has a bad yp_all(), based on the host
- OS name. So far only irix (all versions) have a bad yp_all, so
- they will use am_yp_all() instead (which is slower as it
- enumerates manually all of the map's entries).
-
-Thu Oct 16 03:14:37 1997 Erez Zadok <ezk@subzero.cs.columbia.edu>
-
- * amd/info_nis.c (am_yp_all): code for a replacement yp_all that
- avoids using a file-descriptor leaking yp_all() on some systems
- like irix.
-
-Wed Oct 15 21:52:35 1997 Erez Zadok <ezk>
-
- * fsinfo/fsinfo.h: avoid redefining yywrap incorrectly on DU-4.x
- systems using /usr/bin/flex.
-
- * amd/conf_tok.l (yywrap): avoid redefining yywrap for systems
- that have a modified GNU flex which does define yywrap (DU-4.x).
-
-Fri Sep 26 14:25:29 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/checkmount/checkmount_bsd44.c: include prototype.
-
-Fri Sep 26 01:26:24 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a12 ***
- *******************************************************************
-
-Fri Sep 26 00:13:48 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_irix6.h: completely turn off all autofs
- code in irix6 until it can be tested correctly
-
- * conf/transp/transp_tli.c (amu_clnt_create_best_vers): time out
- on clnt_create for 3 seconds, rather than wait for the much longer
- default.
-
- * conf/nfs_prot/nfs_prot_aix4_2.h: port to powerpc-ibm-aix4.2.1.0.
- Includes NFS3, untested.
-
-Thu Sep 25 11:03:11 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/ops_pcfs.c (mount_pcfs): fill in uid/gid fields of
- pcfs_args_t if they exist.
-
- * amd/ops_cdfs.c (mount_cdfs): fill in ssector field of
- cdfs_args_t if it exists.
-
- * new minor ports hppa1.1-hp-hpux10.10, hppa1.1-hp-hpux9.05,
- hppa1.1-hp-hpux9.07, m68k-hp-hpux9.00, and sparc-sun-sunos4.1.4.
-
-Wed Sep 24 00:48:05 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (wire-test): updated documentation for the new
- option.
-
- * wire-test/wire-test.8: updated man page for new option.
-
- * wire-test/wire-test.c (main): added a test for various
- combinations of NFS proto/vers to a remote/local host.
-
- * aux/macros/try_compile_anyfs.m4 (AC_TRY_COMPILE): include
- <isofs/cd9660/cd9660_mount.h> and <msdosfs/msdosfsmount.h> so that
- freebsd will correctly set mount options for pcfs and cdfs.
-
- * amd/ops_pcfs.c (mount_pcfs): set mask field of pcfs_args to
- 0777 (if field exists).
-
- * aux/macros/try_compile_anyfs.m4 (AC_TRY_COMPILE): include
- <msdosfs/msdosfsmount.h> if available.
-
- * minor new port: rs6000-ibm-aix4.1.4.0.
-
- * libamu/mount_fs.c (mount_fs): fixed bug that caused HPUX not to
- write the "time" field in /etc/mnttab.
-
- * conf/mtab/mtab_file.c (mnt_dup): fixed typo in macro names for
- detecting mnt_time field of mntent_t.
-
- * libamu/mtab.c (mnt_free): fixed typo in macro names for
- detecting mnt_time field of mntent_t.
-
-Tue Sep 23 15:30:03 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/mtab/mtab_file.c (lock): Use flock() in preference over
- fcntl() to lock the mtab file.
-
-Mon Sep 22 23:04:58 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/transp/transp_sockets.c (get_nfs_version): define
- the try_again goto label only for NFS3.
- (pmap_ping): assume timeout failure of clnt_stat.
-
- * libamu/xdr_func.c (xdr_groupnode, xdr_exportnode): cast to
- "groups *".
-
-Mon Sep 22 20:34:33 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * conf/transp/transp_sockets.c (pmap_ping): patch from Dan Riley
- <dsr@mail.lns.cornell.edu> to make sure that amd works with more
- secure portmappers that do not allow forwarding of RPC messages to
- other services.
-
- * */Makefile.am: all source files should also depend on the new
- include/am_xdr_func.h header.
-
- * include/am_xdr_func.h: new file as part of the code cleanup from
- Christos Zoulas <christos@deshaw.com>.
-
- * Lots of fixes from Christos Zoulas <christos@deshaw.com> that
- involved missing prototypes, cleaned up ones, and removal of
- unused variables.
-
- * libamu/xdr_func.c (xdr_mountres3): some code cleanup. A switch
- statement with only one case is unclean.
-
-Mon Sep 22 17:26:38 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/ops_<FOO>fs.c (mount_<FOO>fs): initialize mntent_t fields to
- 0 so that all fields are initialized to zero at first. This way
- SunOS 4.x and other systems don't get /etc/mtab entries with
- random integers for the fsck/freq fields. Patch from Andreas
- Stolcke <stolcke@speech.sri.com>.
-
-Mon Sep 22 00:34:19 1997 Erez Zadok <ezk@americas.psl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_sunos4.h: include <nfs/nfs_clnt.h> so
- that the important definition for HOSTNAMESZ will be found.
-
- * amd/ops_afs.c (mount_toplvl): limit hostname size to HOSTNAMESZ
- (inside the nfs_args structure) if the system uses that macro.
- Otherwise systems like SunOS refuse to NFS mount long pathnames
- and result in ENAMETOOLONG errno's.
-
-Wed Sep 17 04:56:11 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * doc/am-utils.texi (Supported Platforms): specify new support for
- solaris 2.6, and hlfsd running on 2.5.1 too.
-
-Wed Sep 17 03:55:02 1997 Erez Zadok <ezk@amsterdam.psl.cs.columbia.edu>
-
- * conf/mount/mount_svr4.c (mount_svr4): don't attemt an autofs
- mount if it is not supported or was turned off.
-
-Wed Sep 17 03:19:36 1997 Erez Zadok <ezk@americas.psl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_sunos4.h: fixed so that it will nfs mount
- again. Apparently at some previous release SunOS 4 supported was
- broken and all nfs mounts resulted in ESTALE.
-
-Wed Sep 17 00:26:25 1997 Erez Zadok <ezk@amsterdam.psl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_sunos5_6.h: nfs protocol headers for
- solaris 2.6.
-
- * aux/macros/check_nfs_prot_headers.m4: added solaris 2.6 nfs
- protocol header selection.
-
-Sat Sep 13 14:31:51 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/transp/transp_tli.c (amu_clnt_create_best_vers): avoid
- infinite loop.
-
-Sun Sep 7 18:23:23 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a11 ***
- *******************************************************************
-
-Fri Sep 5 11:55:10 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/amd.c (main): if plock() succeeded, don't try to display
- errno message. Patch from Chris Metcalf
- <metcalf@catfish.lcs.mit.edu.
-
-Thu Sep 4 19:17:58 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * hlfsd/homedir.c (table_add): make sure duplicate passwd entries
- are ignored. Only the first entry should ever be used, because
- that's how lookup in passwd database works.
-
- * conf/transp/transp_sockets.c (get_nfs_version): when determining
- if a remote host is up or down, use NFS v.2. Fix suggested by
- Enami Tsugutomo <enami@cv.sony.co.jp>.
-
- * conf/transp/transp_tli.c (amu_clnt_create_best_vers): new
- function to get the best possible NFS version, but also timeout
- faster than normal defaults, so remote hosts which are down can be
- detected in a reasonable time.
- (get_nfs_version): use the new "best" function.
-
-Tue Sep 2 00:41:00 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a10 ***
- *******************************************************************
-
-Mon Sep 1 15:39:51 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/transp/transp_tli.c (get_nfs_version): don't use
- clnt_tp_create_timed() on systems that don'e have it (Solaris 2.4
- and earlier).
-
- * aux/configure.in: test for existence of clnt_tp_create_timed(),
- since Solaris 2.4 (and possibly earlier) do not have it.
-
-Mon Sep 1 15:23:18 1997 Erez Zadok <ezk@felix.psl.cs.columbia.edu>
-
- * amd/ops_autofs.c (autofs_unmount_1_svc): only display rdevid
- field if it exists (solaris 2.4's autofs does not have it).
-
-Mon Sep 1 14:45:09 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/type_auth_create_gidlist.m4: a new test to determine
- the correct type to the 5th argument of authunix_create().
-
-Mon Sep 1 03:44:32 1997 Erez Zadok <ezk@felix.psl.cs.columbia.edu>
-
- * libamu/xdr_func.c (xdr_umntrequest): add test for autofs
- structure umntrequest, if it has the field rdevid. Seems Solaris
- 2.4 and earlier didn't have it.
-
-Mon Sep 1 01:10:53 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * hlfsd/hlfsd.c (hlfsd_init): moved initialization upwards, so it
- can be done before primary process forks.
- (main): bug fix: wait a bit to give child a chance to initialize.
- Without this, hlfsd got into a busy infinite loop while, never
- completing the mount.
-
- * amd/info_nis.c: patch from Jason Thorpe <thorpej@nas.nasa.gov>
- to make amd works when talking to NIS+ servers in NIS
- compatibility mode.
-
-Mon Sep 1 00:46:56 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/mapc.c (MAX_CHAIN): increased maximum chain size to 1024.
-
-Sun Aug 31 20:20:40 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/conf.c (gopt_fully_qualified_hosts): a new function to
- process another new global variable.
-
- * amd/ops_nfs.c (make_nfs_auth): if a new global variable
- fully_qualified_hosts is on, use FQHN in RPC/NFS authentications.
- Patch from Chris Metcalf <metcalf@catfish.lcs.mit.edu>.
-
- * amd/conf.c (process_last_regular_map): If the amd.conf file only
- has a [global] section (pretty useless IMHO), do not try to
- process a map that does not exist.
-
- * scripts/amd.conf.5: fixed typos (repeated 'as' word).
-
- * doc/am-utils.texi: MAJOR DOCUMENTATION REVISION COMPLETED!!!
-
- * amd/conf.c (reset_cf_map): Bug fix. Reset 'tag' field of cfm
- structure, so it does not carry over from map entry to another.
-
-Sat Aug 30 18:39:21 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/amd.c (main): fixed the meaning of the plock option. A bug
- caused it to be reversed.
-
-Sat Aug 30 15:13:18 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * hlfsd/stubs.c: don't initialize some statics here. They are
- better initialized in hlfsd_init_filehandles().
-
-Fri Aug 22 14:47:16 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/conf.c (gopt_show_statfs_entries): new function and a global
- amd.conf key show_statfs_entries. Defaults to 'no'. If 'yes',
- then all maps flagged as browsable will also show a count of the
- number of entries (keys) in that map.
-
- * amd/nfs_subr.c (count_map_entries): new function to count number
- of entries in a map. Now used if browsable is turned on in a map,
- to return a count of available keys in a given map.
-
- * hlfsd/stubs.c (eq_fh): use correct memcmp(). BUG fixed! hlfsd
- confused the file handles for ".", "..", and the symlink, causing
- mess.
-
- * aux/macros/func_bad_memcmp.m4: new test, based on autoconf 2.12,
- but also defines HAVE_BAD_MEMCMP, so I avoid linkage conflicts
- with bad memcmp() in libc's (nextstep3).
-
-Thu Aug 21 17:38:41 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: check if autofs_args_t has a field named
- addr. Solaris has it for specifying the address of the daemon,
- but Irix does not. So how does irix tell the kernel the daemon's
- address? I suspect that it is hardcoded to "localhost" using a
- "private well-known port" (#define AUTOFS_PORT 2048).
-
- * conf/nfs_prot/nfs_prot_linux.h: added missing autofs
- definitions.
-
- * README.autofs: new file listing autofs support notes
-
- * very preliminary autofs code working. Call it pre-alpha
- quality.
-
-Sun Aug 17 02:25:09 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/conf.c (ropt_mount_type, gopt_mount_type): don't accept
- "autofs" if system does not support it.
-
- * amd/amd.c (main): log am-utils version string (same as amd -v)
- at start of run.
-
- * conf/transp/transp_sockets.c (get_nfs_version): in order to tell
- if a remote host is available, try to contact its portmapper and
- timeout if no answer is received in 3 seconds.
-
-Thu Aug 14 16:12:04 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_extern.m4 (pattern): use a simpler pattern for
- match for external function definitions. The function could span
- multiple lines, so only match the opening parenthesis, not the
- closing one too.
-
- * aux/macros/os_cpp-flags.m4 (ac_cv_os_cppflags,): do NOT turn on
- posix mode for nextstep3. It is broken.
-
- * amd/amd.c (init_global_options): run uname() only if
- <sys/utsname.h> and uname(2) exist.
-
- * amd/rpc_fwd.c (fwd_packet): if remote host is down, the
- forwarding socket is null, so declare this an error.
-
- * include/am_utils.h (AM_ERRNO_HOST_DOWN): find best errno to set
- for when a remote host is down. Try, in order, "host down", "host
- unreachable", "invalid argument".
-
- * amd/ops_nfs.c (discard_fh): don't dereference a null pointer
- (happens when remote host is down, and fp->fh_fs is NULL).
- (prime_nfs_fhandle_cache): ditto, and set fs flags to !FSF_VALID
- and FSF_DOWN.
-
- * amd/sched.c: nobody uses "union wait" any more, or so it
- appears, so clean up that code.
-
- * conf/transp/transp_tli.c (get_nfs_version): if remote host is
- down, time it out faster than default (3 seconds).
- (get_mount_client): free netconfig entry when done with it.
-
- * conf/nfs_prot/nfs_prot_nextstep.h: initial (and somewhat ugly)
- port to nextstep3 (m68k-next-nextstep3).
-
- * fsinfo/Makefile.am (LDADD): needs to link with libamu in case
- system does not have strdup().
-
- * include/am_defs.h: complete external definition for getlogin()
- if needed.
-
- * conf/transp/transp_tli.c (get_nfs_version): no need to keep
- static versout variable.
-
- * amd/rpc_fwd.c (fwd_packet): if fwdto packet is null, remote
- server is probably down. Don't use sendto() in that case.
-
- * buildall (default): run gmake if found, before trying plain
- make. GNU make is always preferable.
-
-Tue Aug 12 21:23:58 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/host_macros.m4: cleanup of os_version and os
- overrides. Solaris 2.5.1 for example will come up as solaris2 and
- 2.5.1, rather than sunos5 and 5.5.1. Both can be overridden in
- the amd.conf file.
-
-Fri Aug 8 14:37:30 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a9 ***
- *******************************************************************
-
-Thu Aug 7 00:52:14 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_ncr2.h: new file, for NCR2
- (i486-ncr-sysv4.3.03) headers. Needed to complete missing stuff
- from <ndbm.h> and <sys/resource.h>.
-
- * scripts/amd.conf.5: new map page.
-
- * amd/info_hesiod.c: define extern for hesiod_resolve, since bsdi3
- does not.
-
- * amd/amd.8: updated man page.
-
- * amd/get_args.c (get_args): removed defunct -h option to amd.
-
- * amq/amq.8: updated man page.
-
- * amd/info_nisplus.c (nisplus_search): prototype fixes so Sun
- SparcCompiler CC won't complain.
-
- * amd/info_hesiod.c (hesiod_search): small fixes to compile with
- hesiod-1.3, as per Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>.
-
- * aux/macros/opt_ldflags.m4: new option added to configure
- --enable-ldflags, to specify -L option for configuring/compiling.
- The older one --enable-libs is now to be used only for -l options.
-
- * amd/ops_nfs.c (mount_nfs_fh): bug fixed. Should initialize
- nc_protoname from nfs_proto if available for all TLI systems, not
- just those that have NFS V3.
-
- * amd/info_ldap.c: ldap patches from Leif Johansson
- <leifj@matematik.su.se>, adding two new amd.conf ldap variables:
- ldap_cache_seconds and ldap_cache_maxmem.
-
- * hlfsd/hlfsd.c (main): bug fixed. port number must be wrapped in
- htons().
-
-Sun Aug 3 17:20:05 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/nfs_start.c (mount_automounter): register amd with the rpc
- program number that may have been overridden by amd.conf.
-
- * libamu/xutil.c (set_amd_program_number, get_amd_program_number):
- allow storing and retrieving alternate amd program numbers.
-
- * amd/conf.c (gopt_portmap_program): new function to parse
- amd.conf entry portmap_program=1234.
-
- * amq/amq.c (main): allow specifying an alternate rpc program
- number for amd via -P prognum.
-
- * new amq RPC to get the process id of the running amd. This is
- used in ctl-amd to quickly find the pid of the amd that is to be
- killed.
-
- * expanded shared libraries support. Using GNU libtool-1.0,
- am-utils now builds shared libraries on many platforms that have
- support for it and proper compilers/linkers. See "INSTALL" file
- for compatibility chart.
-
-Thu Jul 31 13:07:23 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * fsinfo/fsi_lex.l: removed code that was in support of very old
- versions of flex. No longer needed.
-
-Tue Jul 29 12:00:13 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/amd.c (init_global_options): find the kernel architecture
- from uname() if possible.
-
-Mon Jul 28 03:53:59 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * new working port: i386-unknown-openbsd2.1
-
-Fri Jul 25 03:16:31 1997 Erez Zadok <ezk@felix.psl.cs.columbia.edu>
-
- * working port: sparc-sun-solaris2.4. Had to fix fhandle_t from
- structure to actual char[], because the structure was passed to
- xdr_fhandle as data and not a pointer. Surprisingly, gcc
- -fpcc-struct-return did not help.
-
- * conf/nfs_prot/nfs_prot_sunos5_4.h: special nfs protocol
- definitions for solaris 2.4 have to be different from 2.3, and
- different from 2.5.
-
- * libamu/xdr_fhstatus.c (xdr_fhstatus): minor code cleanup.
-
-Thu Jul 24 16:22:39 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/mount/mount_svr4.c (mount_svr4): use STREQ to compare mount
- types, not ==. Fix from Christos Zoulas <christos@deshaw.com>.
-
- * mk-amd-map/mk-amd-map.8: man page taken from bsd44.
-
-Thu Jul 24 00:01:55 1997 Erez Zadok <ezk@moisil.cs.columbia.edu>
-
- * conf/mount/mount_linux.c: made the nfs error mapping code into a
- small function.
-
-Wed Jul 23 16:11:49 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_linux.h (NFS_ERROR_MAPPING): special
- error mappings from errno numbers to NFS errors. From Debian
- Linux.
-
- * scripts/am-eject.in (fs): new script (taken from Debian Linux
- folks) to auto-unmount floppy/cd devices before ejecting them.
-
- * fsinfo/wr_exportfs.c (write_exportfs): from Debian folks, pass
- '5' as second arg to show_area_being_processed. I'm not sure why.
-
- * fsinfo/wr_atab.c (write_atab): from Debian folks, pass '5' as
- second arg to show_area_being_processed. I'm not sure why.
-
- * conf/mount/mount_linux.c (parse_opts): as per Debian Linux,
- ensure that you have a buffer in *xopts to strcat onto.
- (mount_linux): fixed from Debian folks to ensure that NFS mount
- sockets are connected only for kernels prior to 1.3.10 (avoids
- hangs for multi-homed hosts).
-
- * amd/mapc.c (make_entry_chain): from Debian folks: don't skip
- over amd map keys that have a prefix, and include the prefix in
- the returned readdir().
-
- * amd/info_passwd.c (passwd_init, passwd_search): format
- enhancements from the Debian Linux folks. They added
- - var0:=pw-prefix:=anydir
- - var1:=pw-rhost:=dom3.dom2.dom1
- - var2:=pw-user:=user
- - var3:=pw-home:=/anydir/dom1/dom2/dom3/user
-
- * new ports: sparc-sun-solaris2.4 and sparc-sun-sunos4.1.1.
-
- * amd/ops_afs.c (afs_retry): patches from Debian Linux. If
- afs_mount timed out, then explicitly forbid further retries after
- the timeout. (afs_bgmount): bug fix from Debian Linux. Timeout
- values (17 and 5) were mistakenly swapped.
-
-Wed Jul 23 15:53:25 1997 Erez Zadok <ezk@felix.psl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_sunos5_3.h: turn off non-existent NFS V.3
- support for Solaris 2.4 (the header files incorrectly define parts
- of the NFS V.3 protocol, but the kernel does not support it).
-
-Wed Jul 23 00:07:12 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/info_hesiod.c: minor cleanup to use hes_init and hesiod_init
- for determining if using old or new hesiod libraries,
- respectively.
-
- * amd/ops_nfs.c (mount_nfs_fh): If "noconn" option exists in NFS
- V.3 then use non-connected sockets (both TCP and UDP). Otherwise
- they cause hangs of mounts from multi-homed hosts when the return
- route is not the same as the outgoing route (esp. on NetBSD
- 1.2.1). If "conn" option was supplied, then don't turn on the
- "noconn" mount option. Otherwise default to "noconn" mount
- option.
-
- * aux/configure.in: better check for systems that need libgdbm and
- <ndbm.h>
-
-Tue Jul 22 04:02:05 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * hlfsd/hlfsd.c (main), amd/ops_afs.c (mount_toplvl): ensure that
- mounts are hidden from df(1) on systems that keep mount tables in
- kernel, such as osf1.
-
-Tue Jul 22 02:26:55 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a8 ***
- *******************************************************************
-
-Mon Jul 21 21:33:19 1997 Erez Zadok <ezk@stone.mcl.cs.columbia.edu>
-
- * hlfsd/hlfsd.c (main): bug fixed: forgot to set sin_family to
- AF_INET when hlfsd mounts itself, thus getting an errno "protocol
- family not supported".
-
-Mon Jul 21 20:46:59 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * verified that amd on NetBSD 1.2.1 (i386) works, but the OS
- itself is flaky.
-
- * verified that amd AIX 3 works w/ the new readdir() code.
-
-Mon Jul 21 18:59:30 1997 Erez Zadok <ezk@chestnut.mcl.cs.columbia.edu>
-
- * amd/mapc.c (maptypes): changed the default map caching type for
- nis and ndbm maps to "MAPC_ALL", so that all possible entries will
- be available to amd for browsable_dirs=yes.
-
-Mon Jul 21 18:04:16 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/ops_afs.c (afs_readdir, afs_readdir_browsable): split
- afs_readdir into a browsable version and a non-browsable one.
- Fixed bugs that resulted in an infinite nfs_readdir loop on the
- localhost for some operating systems.
-
-Sat Jul 19 19:38:38 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/ops_afs.c (afs_readdir): fixed up the browsable code to
- comply with nfs_readdir specs. It was returning all entries at
- once, even if there was not enough space in the RPC packet. Now,
- it sends a reasonably sized chunk, and sets static state to resume
- it for the next continuation RPC of readdir.
-
- * amd/conf.c (set_conf_kv): fixed bug that resulted in the first
- regular map not getting all of the [global] options defaulted from.
-
-Fri Jul 18 00:45:12 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amq/amq.c (main): fixed so that portmapper "ping" will only fail
- upon an RPC timeout
-
- * scripts/ctl-{amd,hlfsd}.in (killproc): better method to find the
- amd/hlfsd process to kill.
-
- * amd/ops_afs.c (mount_toplvl), hlfsd/hlfsd.c (main): code to
- determine how to avoid df from seeing amd's toplvl mounts. Moved
- from libamu/mount_fs.c and include/am_utils.h. Ensure that hlfsd
- is hidden from df.
- (mount_toplvl): fixed df types for irix.
-
-Thu Jul 17 21:59:45 1997 Erez Zadok <ezk@americas.psl.cs.columbia.edu>
-
- * amq/amq.c (main): fixed bug that caused the 5 second timeout for
- TLI amq using udp to be ignored.
- (main): if amq cannot contact remote host's portmapper within 5
- seconds, timeout and fail faster than the default longer timeout
- (this is for non-TLI systems).
-
-Thu Jul 17 17:08:13 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amq/amq.c (get_secure_amd_client): if amq cannot contact
- remote host's portmapper within 5 seconds, timeout and fail faster
- than the default TLI timeout of over 4 minutes.
-
- * amd/am_ops.c (ops_showfstypes): added styles for new bsd44
- file systems nullfs, unionfs, and umapfs.
- (ops_show1): cleanup code and and reuse this function.
- (vops): empty placeholders for nullfs, unionfs, and umapfs.
-
- * amd/ops_{nullfs, unionfs, umapfs}.c: 3 new empty templates for
- bsd44 style file systems.
-
- * fsinfo/fsinfo.8: man page for fsinfo rewritten from bsd44
- sources.
-
- * amd/conf_tok.l, fsinof/fsi_lex.c: undefine ECHO to avoid
- conflict with systems that define it in <sys/ioctl.h> and also
- define a conflicting one via lex. Newer versions of f/lex are ok.
-
-Wed Jul 16 00:17:45 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/ops_nfs.c (mount_nfs_fh): fill in nfs_args' fields
- acdirmin/max and acregmin/max only if they exist.
-
- * aux/configure.in: test for nfs_args fields acdirmin and
- acregmin.
-
-Tue Jul 15 17:24:09 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: commented out checking for MNT2_GEN_OPT_* for
- "nondev" and commented back in checking for "nodev". This was a
- typo.
-
- * include/am_compat.h: more compatibility options: define "ro"
- mnttab option all the time. Define "overlay" as needed. Added
- more fillers of mnttab options (as per Daniel S. Riley
- <dsr@mail.lns.cornell.edu>), for acdirmax, acdirmin, acregmax,
- acregmin, noac, grpid, nosuid, and actimo.
-
- * libamu/mount_fs.c (mnt_flags): fixed a typo in "ro" option as
- per dsr@mail.lns.cornell.edu (Daniel S. Riley). Then cleaned up
- the same code for other options in struct opt_tab.
-
-Mon Jul 14 22:36:37 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/get_args.c (get_args): moved amd.conf file parsing to before
- the switching the default log/debug options. Suggested by
- dsr@mail.lns.cornell.edu (Daniel S. Riley).
-
- * aux/update_build_version: new script to record the build version
- of amd, along with the rest of the info thet comes up with amd -v.
-
-Sun Jul 13 00:30:24 1997 Erez Zadok <ezk@decca.damtp.cam.ac.uk>
-
- * aux/macros/os_cflags.m4: new macro, to add additional
- compilation options (also used during configuration), based on the
- OS and the compiler. Used for solaris-2.6, osf, and irix6.
-
-Fri Jul 11 10:15:11 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/conf_tok.l, conf_parse.y: allow values of keys to include
- white spaces, if they are double-quoted (key="some value")
-
- * amd/info_hesiod.c (hesiod_search): cleanup and minor bug fixes
- of hesiod from Danny Braniss <danny@cs.huji.ac.il>.
-
-Fri Jul 11 02:16:06 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a7 ***
- *******************************************************************
-
-Thu Jul 10 12:19:25 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * include/am_defs.h: fill in extern definition of innetgr() in
- case system headers don't.
-
- * aux/macros/path_prog_lex.m4 aux/configure.in: using macros that
- will show the full pathname to yacc/bison and f/lex. Some systems
- have older or bad versions of those and this way the user will
- know for sure what is being invoked.
-
- * tasks: file populated with todo items.
-
- * scripts/amd2ldif.in: Script to convert amd maps to plain text
- LDAP object files. Contributed by Leif Johansson
- <leifj@matematik.su.se>.
-
- * aux/config.guess: added recognition for sun3's running 4.2bsd,
- from Tom Schmidt <tschmidt@micron.com>. Fixed one small typo.
-
- * amd/conf.c: several variables that were local to a map, were
- also added to [global], where they apply to all maps. Each map
- can then individually override those defaults. Flags
- affected: browsable_dirs and mount_type. Options affected:
- map_type, map_options, and search_path.
-
- * amd/amd.h: eliminated several global flags each of which took an
- int, in favor of one global flags variable used as a bit field.
-
- * amd/amd.c (init_global_options): moved all global variables into
- a single struct amu_global_options, so it is easier to add new
- ones and/or identify existing ones.
-
- * amd/get_args.c (get_args): removed unused amd -m option.
-
- * amd/conf.c (gopt_cluster): added new amd.conf option for cluster
- name, same as amd -C.
-
- * amd/info_ldap.c: LDAP info map functions from Leif Johansson
- <leifj@matematik.su.se>.
-
- * amd/conf.c (gopt_ldap_base, gopt_ldap_hostports): put in global
- amd.conf options for ldap_base and ldap_hostports.
-
- * amd/opts.c (f_netgrp): new amd map function netgrp(ARG) to test
- if the current host is in the ARG host netgroup.
-
- * aux/configure.in: some systems replaced dbm in libc with GNU's
- libgdbm, so check for libgdbm, but only if dbm_open is not in
- libc already. This was a recommendation from Tom Schmidt
- <tschmidt@micron.com>.
-
- * conf/nfs_prot/nfs_prot_sunos5_3.h: port to sparc-sun-solaris2.3
- completed.
-
-Wed Jul 9 18:14:59 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * port to sparc-unknown-netbsd1.2E done, not tested. Includes NFS
- V.3.
-
-Tue Jul 8 17:35:07 1997 Erez Zadok <ezk@elk.mcl.cs.columbia.edu>
-
- * port to i386-unknown-freebsd3.0 done and working. Includes NFS
- V.3.
-
- * aux/macros/check_nfs_fh_dref.m4: freebsd3 should use
- file handle dereferencing style similar to freebsd22.
-
- * include/am_defs.h: need to include <net/if_var.h> before
- <netinet/if_ether.h> on freebsd3.
-
- * conf/nfs_prot/nfs_prot_freebsd3.h: new protocol header additions
- for freeBSD 3.0.
-
-Tue Jul 8 16:53:41 1997 Erez Zadok <ezk@moisil.cs.columbia.edu>
-
- * amd/info_nis.c (nis_reload): cast nis' callback function so
- picky compilers won't complain.
-
- * libamu/xdr_mountres3.c (xdr_mountres3): make sure this function
- gets compiled only if the system has NFS V3 and does not have
- xdr_mountres3.
-
-Tue Jul 8 12:42:03 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * COPYING: put in some legal stuff in this file.
-
-Mon Jul 7 19:10:44 1997 Erez Zadok <ezk@prometheus.soscorp.com>
-
- * NFS V3 now works under Irix5, thanks to patches from
- Andreas Stolcke <stolcke@speech.sri.com>.
-
- * conf/mount/mount_irix5.c: sparate mount_irix.c into an irix5
- version and an irix6 version, since irix5's NFS V3 code is broken
- and hacky.
-
- * amd/info_hesiod.c (hs_zone_transfer): minor fixes to buffer
- sizes for some hesiod queries. Patch from Danny Braniss
- <danny@cs.huji.ac.il>.
-
-Mon Jul 7 19:04:14 1997 Erez Zadok <ezk@glory.soscorp.com>
-
- * amd/ops_nfs.c (mount_nfs_fh): fixed NFS V.3 support for bsdi3.
-
-Sun Jul 6 14:22:24 1997 Erez Zadok <ezk@glory.soscorp.com>
-
- * aux/{configure.in,acconfig.h}: added checks for struct
- nfs_args's fields proto and sotype (bsdi3).
-
- * amd/ops_nfs.c (mount_nfs_fh): added nfsv3 option to
- nfs_args.flags for bsdi3. Set field proto to 0. Set sotype field
- to SOCK_STREAM or SOCK_DGRAM.
-
- * aux/macros/check_mount_style.m4: add case for bsdi3.
-
- * amd/info_hesiod.c: got hesiod support for bsdi3.
-
-Sun Jul 6 11:14:47 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: look for hesiod on libc (bsdi3)
-
- * amd/get_args.c (get_args): reformat usage so it fits in 80
- columns.
-
- * scripts/ctl-amd.in: changed directory name for optional tftpboot
- map to /tftpboot/.amd.
-
-Sat Jul 5 17:46:45 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a6 ***
- *******************************************************************
-
-Sat Jul 5 03:17:09 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/ctl-amd.in: include -T tag for tftpboot.
-
- * new port: mips-sgi-irix5.3. Compiled with gcc, but NFS V3 code
- is broken and needs work on the specific nfs_args that irix5 uses
- for V3 mounts.
-
-Sat Jul 5 01:44:25 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/get_args.c (get_args): new options amd -T tag. A map with
- tag=foo matching the -T tag will be processed. All untagged maps
- get processed all the time.
-
-Fri Jul 4 16:19:26 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: need to check for strcasecmp in libucb (ncr2)
-
- * aux/macros/check_os_libs.m4: a new macro to set the usage of
- libnsl and libsocket based on the OS.
-
- * libamu/mount_fs.c (mnt_flags): used MNTTAB_OPT_GRPID if it is
- defined (problem on osf4).
-
- * conf/nfs_prot/nfs_prot_irix5.h: new file for irix5 headers.
-
- * include/am_defs.h, aux/macros/try_compile_nfs.m4,
- aux/macros/mount_headers.m4: do include <sys/proc.h> because it
- failes on irix5. Rather, put in the individual
- conf/nfs_prot/nfs_prot_*.h headers.
-
- * amd/conf.c: AIX3 doesn't like strdup() being passed a constant
- char*, so cast all strdup()'s args to a non-const char*.
-
- * amd/mapc.c (root_newmap): don't try to strdup only a "const
- char *".
-
-Fri Jul 4 15:47:10 1997 Erez Zadok <ezk@americas.psl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_sunos4.h: added rpc/rpc.h and
- sys/errno.h.
-
-Thu Jul 3 17:49:00 1997 Erez Zadok <ezk@prometheus.soscorp.com>
-
- * made sure am-utils compiles, links, and runs properly on Irix
- 6.2 using "cc -32 -Wl,-woff,"
-
- * aux/macros/check_lib2.m4: a bug fix version to autoconf 2.12
- AC_CHECK_LIB. If OTHER-LIBRARIES are defined and used, then add
- them to $LIBS.
-
- * aux/configure.in: some cleanup of which libraries are needed.
- Espectially ensure that libnsl is included only on Solaris, where
- so far it is the only system on which it is absolutely necessary.
- Also no longer need to include libc explicitly.
-
- * amd/amd.c,wire-test/wire-test.c (main): convert IP address to
- network-long order before printing it.
-
- * wire-test/wire-test.c (main): also check and report on the IP
- address of the local host, since some systems have bad versions of
- get_myaddress, or ones that conflict with other versions in
- multiple libraries (SunOS 4 and Irix especially).
-
-Wed Jul 2 18:19:02 1997 Erez Zadok <ezk@starblazers.soscorp.com>
-
- * scripts/ctl-amd.in: don't use full pathname so killproc() works
- better. Also run bsd44 and irix style ps programs.
-
- * aux/macros/check_lib_funcs.m4: bug fixed: used to define usage
- of library no matter if it was found or not.
-
-Wed Jul 2 02:11:48 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/macros/check_mnt2_gen_opt.m4: turned back on the checking
- for M_* macros, but ensure that <sys/stream.h> is not included at
- all so it won't conflict with other M_* macros.
-
-Tue Jul 1 21:16:51 1997 Erez Zadok <ezk@mako.cs.columbia.edu>
-
- * conf/mount/mount_irix.c (mount_irix): first arg to mount(2) on
- irix should be "spec" (host:/path), not the dir of the mnt point.
-
- * amd/ops_afs.c (afs_lookuppn): bug in enable_default_selectors
- fixed. If on, it essentially ignored the setting in a
- selector-controlled /defaults if there were 2 or more entries in it.
-
-Tue Jul 1 12:23:38 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/ctl-{amd,hlfsd}.in (killproc): if failed to find process
- using BSD style ps, then try SVR4 style ps.
-
- * include/am_utils.h (amuDebug): renamed Debug macro to amuDebug
- etc., to avoid conflicts with similar named macros in <ldap.h>.
-
- * aux/configure.in, amd/info_ldap.c, etc.: put in all the autoconf
- support needed for LDAP. Now the code has to be written mostly in
- amd/info_ldap.c.
-
- * Included additional patches from Andreas Stolcke
- <stolcke@speech.sri.com> to support using the best possible
- combination of NFS version (2,3) and protocol (udp,tcp) for any
- given host, since it appears that some Irix versions have NFS V3,
- but do not support TCP.
-
- * scripts/ctl-amd.in: updated amd control script to look for and
- use amd.conf file.
-
-Tue Jul 1 00:28:23 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/mapc.c (mapc_create): now, each map in the amd.conf can be
- initialized off of a different type, or default to cycling through
- all maps until one of them matches.
-
-Mon Jun 30 20:49:13 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/ops_afs.c (afs_readdir): per-map browsing (readdir) done.
- if browsable_dirs=yes is set in the map section in amd.conf, that
- map will return all entries back to a readdir(2).
-
-Sun Jun 29 16:22:11 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * rudimentary amd.conf file support included. You may even
- override things like os=sos5, to get "backwards" compatibility with
- upl102.
-
-Sat Jun 28 13:35:02 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/conf.c: new file to process amd.conf file.
-
- * amd/get_args.c (get_args): new options -H to print help.
-
- * moved enable_default_selectors to be amd.conf controlled, and
- not compiler controlled.
-
- * amd/get_args.c (get_args): new options -F <conf-file> to parse an
- amd configuration file.
-
-Wed Jun 25 23:15:42 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * converted all files that used strcmp() == 0 or != 0 to using
- the STREQ() macro.
-
-Mon Jun 23 22:31:14 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * aux/macros/check_lib_funcs.m4: new M4 macro that can be used to
- search for any number of functions in any given library.
-
-Mon Jun 23 01:04:23 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/mapc.c: Included patch from Leif Johansson
- <leifj@matematik.su.se> to ensure that systems without an RE
- library can compile.
-
- * libamu/mount_fs.c (mount_fs): Included patch from Andreas
- Stolcke <stolcke@speech.sri.com>, to ensure that mount options on
- table are properly delimited by a comma.
-
- * amd/ops_nfs.c (mount_nfs_fh): Included patch from Andreas
- Stolcke <stolcke@speech.sri.com>, to allow users to override the
- proto= and vers= mount options.
-
-Sun Jun 22 01:00:11 1997 Eric Dana (edana@ncr2.bgs.com)
-
- * conf/nfs_prot/nfs_prot_svr4.h: port completed to
- i486-ncr-sysv4.3.03. Assorted source cleanups done.
-
- * include/am_defs.h, aux/macros/mount_headers.m4: don't include
- mnttab.h if sys/mnttab.h was already included, because on ncr2,
- they contain conflicting entries for struct mnttab.
-
-Sat Jun 21 23:52:15 1997 Eric Dana (edana@ncr2.bgs.com)
-
- * aux/macros/check_nfs_prot_headers.m4: added support for ncr2.
-
-Fri Jun 20 06:14:17 1997 Erez Zadok <ezk>
-
- * amd/*.c: lots of 64-bit "ugly" ports like casts to long ints.
-
- * aux/macros/struct_nfs_fh.m4: check for "struct nfssvcfh" because
- on DU-4.0 it is better than the next one to be picked (nfsv2fh_t).
-
-Wed Jun 18 18:59:49 1997 Erez Zadok <ezk@defiant.soscorp.com>
-
- * aux/macros/struct_nfs_fh.m4 (AC_TRY_COMPILE_NFS): check for
- nfsv2fh_t before fhandle_t becasue on bsdi2.1 the former is
- better.
-
-Tue Jun 10 17:06:58 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/rpc_fwd.c (fwd_packet): TLI bug fix. if fwdto socket is
- NULL, set the maxlen and len fields in netbuf to zero.
-
-Wed May 28 22:52:28 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/fix-amd-map.in (name): replace all matching patterns on
- line.
-
-Sun May 25 19:33:41 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a5 ***
- *******************************************************************
-
-Sun May 25 13:37:24 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/amq_subr.c (amqproc_getvers_1_svc): amq's RPC service
- procedure now returns the full string that amd -v returns.
-
- * amd/get_args.c (get_version_string): new function to return
- complete version/info string so it could be used more flexibly.
-
- * amd/am_ops.c (ops_showamfstypes, ops_showfstypes): put the list
- of Fs types into a string buffer, rather than a FILE*.
-
- * amd/mapc.c (mapc_showtypes): put the list of map types into a
- string buffer, rather than a FILE*.
-
-Sun May 25 01:25:36 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/get_args.c (get_args): amd -v also prints user who built
- amd, hostname built on, and date of configuration.
-
-Sat May 24 13:40:50 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * scripts/lostaltmail.conf-sample: sample lostaltmail
- configuration file.
-
- * scripts/lostaltmail.in: new script lostaltmail used to redeliver
- "lost" mail that hlfsd redirected to a temp location because the
- primary home file system of the user was full.
-
- * scripts/amd2sun.in: new script amd2sun. Used to convert Sub
- automount maps to amd maps.
-
- * scripts/ctl-hlfsd.in: new script ctl-hlfsd. Used to start,
- stop, or restart hlfsd.
-
- * scripts/expn.1: man page for expn command.
-
- * scripts/ctl-amd.in: new script ctl-amd. Used to start, stop, or
- restart amd.
-
- * scripts/expn.in: new script expn. Actually taken from David
- Muir Sharnoff <muir@idiom.com>. Used by hlfsd's mail re-delivery
- script.
-
- * scripts/wait4amd.in: new script wait4amd added. Waits for amd
- to come up on a host, and then runs a command (rsh $hostname by
- default).
-
- * scripts/Makefile.am: new directory now holds all shell/perl
- scripts that belong to am-utils.
-
- * conf/mount/mount_linux.c (parse_opts): new parser for
- linux-specific mounts. Handles fs-type specific mount-options
- correctly. Currently implemented: msdos, iso9660.
-
- * amd/ops_pcfs.c (pcfs_ops): don't timeout pcfs mounts by default
- (fix for linux).
-
- * amd/ops_cdfs.c (cdfs_ops): don't timeout cdfs mounts by default
- (fix for linux).
-
- * amd/mapc.c (make_entry_chain): fixed bug that resulted in amd
- core dumps upon "ls" of a mount point; an invalid pointer was
- being returned and dereferenced.
-
- * port to Linux sparc working!
-
- * hlfsd/homedir.c (hlfsd_diskspace): close file descriptor if
- failed to write test file, or else the fd will leak.
-
-Sun May 18 00:42:41 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/info_hesiod.c (hs_strip_our_domain): use strcasecmp()
- instead of strcmp().
-
- * Port to Digital Unix 4.0 (OSF) done.
-
- * hlfsd/hlfsd.c: renamed dirname to dir_name to avoid conflicts
- with dirname() function in <string.h> on OSF systems.
-
- * fsinfo/fsi_util.c (set_ether_if): take out extern definition of
- inet_addr(). It should come from <arpa/inet.h> instead.
-
- * conf/mtab/mtab_osf.c: fixed macros and added NFS V3 specs.
-
- * include/am_utils.h: renamed FIRST/LAST to AM_FIRST/AM_LAST to
- avoid conflicts with DU 4.0 system header.
-
-Thu May 15 22:49:12 1997 Erez Zadok <ezk@subzero.cs.columbia.edu>
-
- * libamu/mount_fs.c (mount_fs): pass along NFS version so I can
- determine if to include additional options in the mount table file
- entry (such as proto=tcp, and vers=3).
-
-Thu May 15 00:42:12 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * libamu/mount_fs.c (mount_fs): include NFS version number in the
- mount table options, as well as proto={tcp,udp}.
-
-Wed May 14 14:30:19 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * NFS V3 code ported to most other systems, so it compiles for V2
- and V3 NFS systems.
-
- * NFS VERSION 3 support, first pass. Working for Solaris and
- using TCP.
-
-Sun May 11 01:14:29 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * amq/amq.c: many newline characters were missing from various
- stderr printfs.
-
-Sat May 10 13:09:06 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_sunos5.h: protocol defintions for
- Solaris, which include NFS V3 support.
-
- * conf/nfs_prot/nfs_prot_default.h: default NFS protocol headers.
-
- * conf/transp/transp_{tli,sockets}.c (get_mount_client): use NFS
- protocol version while getting a mount client.
-
- * amd/ops_nfs.c (mount_nfs_fh): set the mount types, mnttab types,
- file handle size, and proper file handle based on the correct NFS
- version number.
-
- * conf/mount/mount_svr4.c (mount_svr4): support NFS3 mounts under
- Solaris and other SVR4 systems.
-
- * amd/ops_nfs.c: store NFS file handle version and version
- specific handle in struct fh_cache.
- (got_nfs_fh): pick the correct RPC reply based on the NFS version
- of the server.
- (prime_nfs_fhandle_cache): figure out the right NFS file handle
- for a node, but now include NFS protocol version information.
- (call_mountd): set the correct version for the mount protocol,
- based on the NFS protocol version.
- (nfs_init): use the NFS protocol generic structure
- am_nfs_handle_t.
-
- * include/am_utils.h: new structure am_nfs_handle_t to contain all
- possible versions of NFS file handles.
-
- * amd/srvr_nfs.c (start_ping): ping program performs NFS version
- specific pings.
- (recompute_portmap): figure out the correct portmap version mount.
- (nfs_keepalive): call start_ping() with the correct NFS version.
- (find_nfs_srvr): if mount option "vers=" is given, use it. Get
- the NFS server version and verify that it is up.
-
- * conf/transp/transp_{tli,sockets}.c (get_nfs_version): a new
- function to find the best NFS version for a particular host.
-
- * libamu/amu.h: determine what is the highest version of NFS we
- should try.
-
- * include/am_utils.h (NFS_VERSION3): added definition for NFS V3
- protocol number.
- Added field fs_version to struct fserver, so we can now store the
- server protocol version.
-
-Fri May 9 01:09:45 1997 Erez Zadok <ezk@lorien.cs.columbia.edu>
-
- * aux/macros/check_field.m4 (AC_MOUNT_HEADERS): map '.' (dot) into
- underscores too, so I can test for sub-fields.
-
- * libamu/wire.c: use test that checks for sub-fields of struct
- ifreq.
-
-Sat May 6 10:20:17 2000 Erez Zadok <ezk@glory.soscorp.com>
-
- * port to BSD/OS 3.0 completed! Many xdr_ functions were broken
- into smaller files. M4 macros fixed to test for existence of
- file systems using getvfsbyname().
-
- * amd/sched.c (sigchld): signal handler must waitpid() for all
- possible children.
-
- * hlfsd/homedir.c: signal handler must waitpid() for all possible
- children.
-
- * aux/macros/check_restartable_signals.m4: new macro to determine
- if need to reinstall signal handlers per OS is better than trying
- to figure these out based on system macros.
-
-Fri May 5 19:23:28 2000 Erez Zadok <ezk@glory.soscorp.com>
-
- * amd/ops_nfs.c (mount_nfs_fh): set nfs_args_t version number.
-
- * amd/ops_afs.c (mount_toplvl): set nfs_args_t version number.
-
- * amd/ops_nfs.c (mount_nfs_fh): process nfs mount option resvport
- (must be supplied for bsdi 3.0)
-
- * libamu/wire.c: use HAVE_FIELD_STRUCT_IFREQ_IFR_ADDR (and
- associated new macro) for determining the right way to compute the
- size of the interface structure.
-
-Fri Apr 11 15:56:13 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * aux/configure.in: need to include libc before libnsl if
- get_myaddress() is available because on irix libnsl has a buggy
- get_myaddress().
-
- * include/am_defs.h: make sure REINSTATE_SIGNAL_HANDLER is defined
- on Irix 6 (an SVR4 variant)
-
-Thu Mar 27 02:28:40 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a4 ***
- *******************************************************************
-
-Wed Mar 26 21:15:36 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/amq_subr.c (ok_security): turned off insecure code unless
- user explicitly runs configure --enable-amq-mount.
-
- * hlfsd/hlfsd.c (main): use new protoypes dor create_nfs_service().
-
- * amd/nfs_start.c (mount_automounter): use code that separately
- creates the NFS and the amq service. Register tcp and udp
- services for amd.
-
- * conf/transp/transp_*.c (create_amq_service): new function to
- separately create the amq service for amd. Simplified prototypes
- for create_nfs_service().
-
-Wed Mar 19 20:40:56 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a3 ***
- *******************************************************************
-
-Wed Mar 19 17:49:18 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * new port: rs6000-ibm-aix3.2.5 and rs6000-ibm-aix4.1.5.0. Lots
- of small changes to support these two.
-
-Wed Mar 19 14:33:30 1997 Erez Zadok <ezk@grande.cs.columbia.edu>
-
- * conf/umount/umount_default.c (umount_fs): bug: unlock_mntlist()
- should run if MOUNT_TABLE_ON_FILE, not otherwise.
-
-Mon Mar 17 22:02:43 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * hlfsd/hlfsd.c (main): fill in fhsize field if exists
- (freebsd-2.2).
-
- * amd/ops_{nfs,afs}.c (mount_toplvl): fill in fhsize field if
- exists (freebsd-2.2).
-
-Sat Mar 15 19:37:48 1997 Erez "HWank1" Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * new port: i386-unknown-freebsd2.2. FreeBSD 2.2 and higher
- changed the filehandle type in struct nfs_args from nfsv2fh_t to
- u_char.
-
-Sat Mar 14 10:11:03 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * SHARED LIBRARIES: too many changes to list individually. Now,
- libamu can be built as a shared library, and other programs link
- with it.
-
-Tue Mar 11 22:24:09 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * aux/macros/opt_shared.m4: new macro for setting options for
- building shared am-utils libraries.
-
-Sun Mar 9 19:17:46 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * fixmount/fixrmtab: cleaned up the script.
-
- * fixmount/Makefile.am (EXTRA_DIST): adde $(sbin_SCRIPTS) so that
- fixrmtab gets distributed too.
-
- * conf/nfs_prot/nfs_prot_bsdi2.h: added support for MOUNTPROC_DUMP.
- Added extern for xdr_mountlist().
-
- * aux/configure.in: trimmed down many tests for MNT2_GEN_OPT,
- MNT2_NFS_OPT, and MNTTAB_OPT that were not referenced anywhere in
- the sources.
-
-Sat Mar 8 00:23:58 1997 Erez Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * fixmount/hlfsd ported to bsd44, hpux, and linux systems.
-
- * aux/macros/check_fixmount_style.m4: add check for bsd44 systems.
-
- * conf/fixmount/fixmount_default.c: use lockf() if flock() is
- unavailable.
-
- * include/am_defs.h: include <string.h> even if don't have
- STDC_HEADERS defined (sunos4).
- (seteuid): define seteuid() to be setresuid() for systems that
- have but not the other (hpux).
-
- * aux/macros/check_extern.m4: test should include <strings.h>.
-
-Tue Mar 4 17:16:52 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * lib/xutil.c (debug_option): moved from amd/getargs.c to this
- more proper file.
-
- * include/am_utils.h: put in structure for debug options, for all
- progams to use.
-
- * amd/get_args.c: moved structure for debug options out.
-
-Sun Mar 2 00:13:07 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * ported fixmount.
-
- * lib/ualarm.c: replacement function for systems that don't have a
- ualarm().
-
- * ported fsinfo.
-
-Sun Mar 1 10:23:34 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * ported mk-amd-map.
-
- * buildall: added -K option to buildall, to run mkconf.
-
-Fri Feb 28 01:10:25 1997 Erez "HWank1" Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a2 ***
- *******************************************************************
-
-Thu Feb 27 13:58:59 1997 Erez "HWank1" Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * all *.[hcyl] files: add copyright line.
-
- * aux/macros/check_mount_type.m4: test for mount type for
- linux-like systems, by checking for loadable or statically linked
- kernel filesystem modules.
-
- * aux/macros/check_mnttab_type.m4: test for mount table entry
- for linux-like systems, by checking for loadable or statically
- linked kernel filesystem modules.
-
- * aux/configure.in: pcfs filesystems can use vfat type (linux)
-
- * aux/macros/check_fs_mntent.m4: test for filesystem existence for
- linux-like systems, by checking for loadable or statically linked
- kernel filesystem modules.
-
- * conf/trap/trap_hpux.h: ugly hack added because of stupide HPUX
- 9.0 header files. This should be removed when HPUX 9.0 is deemed
- defunct.
-
- * aux/acconfig.h: set an undefined variable for having an extern
- to clnt_sperrno().
-
- * include/am_defs.h: define extern for clnt_sperrno() if needed.
-
- * aux/configure.in: test for extern clnt_sperrno().
-
- * aux/macros/check_nfs_fh_dref.m4: HPUX's NFS fhandle dref is
- similar to irix.
-
- * aux/macros/check_mount_style.m4: use mount helper on HPUX.
-
- * aux/macros/check_mtype_type.m4: hpux's mount type is a char*,
- not integer (but may be mapped to one later).
-
- * conf/mount/mount_hpux.c (mount_hpux): HPUX has confusing header
- files. They have mount(2) and vfsmount(2) which don't take same
- arguments, and they have string mount types MNTTYPE_* as well as
- integer types MOUNT_*. So I need this new mount function to map
- from string types to integer types for the vfsmount() function.
-
- * conf/trap/trap_hpux.h (MOUNT_TRAP): instead of calling
- vfsmount(), call mount_hpux().
-
-Thu Feb 27 03:34:14 1997 Erez "HWank1" Zadok <ezk@okeeffe.cs.columbia.edu>
-
- * lib/mount_fs.c (mnt_flags): make sure SYNC option is on only if
- both MNTTAB_OPT_SYNC and MNT2_GEN_OPT_SYNC are defined.
-
-Thu Feb 27 00:26:00 1997 Erez "HWank1" Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/nfs_prot/nfs_prot_hpux.h: NFS protocol definitions for
- hpux.
-
- * include/am_defs.h: no need to include rpc/auth.h or rpc/clnt.h.
-
- * aux/configure.in: no need to test for rpc/auth.h and rpc/clnt.h.
-
- * buildall: added ability to configure using other shells than
- /bin/sh, on those systems where /bin/sh is buggy or limited
- (HPUX).
-
- * aux/macros/struct_nfs_fh.m4: reinstated the macro but have it
- defined am_nfs_fh, and also test for plain typedef "nfs_fh".
-
- * aux/acconfig.h: #undef am_nfs_fh, which is being defined by a
- reinstated macro.
-
- * aux/configure.in: check for <nfs/export.h>
-
- * include/am_defs.h: include <nfs/export.h> (HPUX) if exists.
-
- * aux/macros/try_compile_nfs.m4: include <nfs/export.h> (HPUX) if
- exists.
-
- * aux/macros/mount_headers.m4 (define): removed some non-working
- (on HPUX) code that attempts to recreate the fhandle_t rather than
- load it up from system headers. Also added some NFS protocol
- header inclusion. include <nfs/export.h> (HPUX) if exists.
-
-Wed Feb 26 00:32:35 1997 Erez "HWank1" Zadok <ezk@okeeffe.cs.columbia.edu>
-
- * aux/macros/mount_headers.m4 (define): Use M4 changequote to
- ensure [] brackets are correctly used.
-
- * aux/macros/expand_cpp_{string,hex,int}.m4: encapsulate
- multi-line M4 inclusions in [].
-
-Tue Feb 25 22:19:44 1997 Erez "HWank1" Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * conf/mtab/mtab_bsd.c (mnt_dup): use statfs field f_fstypename if
- it exists.
-
- * aux/acconfig.h: HAVE_FIELD_STRUCT_STATFS_F_FSTYPENAME, new
- config.h macro for field f_fstypename of struct statfs.
-
- * aux/configure.in: testing for field f_fstypename field of struct
- statfs (NetBSD).
-
- * aux/acconfig.h: moved all of the "static" definitions out to a
- fixed file called include/am_defs.h. Added to all */Makefile.am
- files a dependency on am_defs.h. Created am_defs.h of course, and
- then added #include <amd_defs.h> to all of the source and header
- files that required it.
-
-Mon Feb 24 01:27:02 1997 Erez Zadok <ezk@defiant.soscorp.com>
-
- * aux/acconfig.h: two more externals for xdr functions that may be
- implemented by libamu.
-
- * conf/nfs_prot/nfs_prot_bsdi2.h: added missing RPC and XDR
- definitions.
-
-Sun Feb 23 15:25:26 1997 Erez "HWank1" Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * buildall (default): added -D option for turning on even stricker
- developer options.
-
- * */Makefile.am: make sure @AMU_NFS_PROT_HEADERS@ is used to
- determine dependencies on optional NFS protocol headers.
-
- * aux/acconfig.h: define and use HAVE_NFS_PROT_HEADERS as needed.
-
- * aux/macros/check_nfs_prot_header.m4: new test to determine what
- NFS protocol headers to use.
-
- * conf/nfs_prot/nfs_prot_{irix6,sunos4,bsdi2}.h: new headers to
- complete missing system headers for NFS protocol definitions.
-
-Sun Feb 16 15:58:42 1997 Erez "HWank1" Zadok <ezk@vir.cs.columbia.edu>
-
- * amd/ops_nfs.c (mount_nfs_fh): encapsulated some more code in
- #ifdef's as needed.
-
- * amd/ops_afs.c (mount_toplvl): make sure TIMEO/RETRANS code is
- suitable #ifdef'ed.
-
- * include/am_compat.h: a couple more mnttab options
- (timeo/retrans) setting just in case.
-
- * amd/autil.c (host_normalize): make sure hostent->h_name is
- passed a non-const char *.
-
- * conf/mount/mount_linux.c (mount_linux): cleaned up a block of code.
-
- * {lib,amq,amd}/*.c (many functions): cast xdr_entry to
- XDRPROC_T_TYPE.
-
- * lib/nfs_prot_svc.c (nfs_program_2): cast xdr_entry to
- XDRPROC_T_TYPE.
-
- * lib/nfs_prot_xdr.c (xdr_entry): cast xdr_entry to
- XDRPROC_T_TYPE.
-
- * lib/wire.c (getwire): Make sure safe assignment from const to
- none is done.
-
-Sat Feb 15 19:38:51 1997 Erez "HWank1" Zadok <ezk@vir.cs.columbia.edu>
-
- * aux/macros/expand_cpp_int.m4: new macro for expanding integers.
-
- * aux/configure.in: added linux/fs.h support in configure and
- several M4 macros.
-
- * conf/mount/mount_linux.c (mount_linux): use macro instead of
- "ugly" fixed hex number for mount() arguments.
-
-Sat Feb 15 02:09:47 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/info_hesiod.c: removed macro HAVE_HS_ZONE_TRANSFER and
- turned all of its code always on. That code always seems to
- compile, as long as you have hesiod and libresolv.
-
- * amd/mapc.c: removed macro HAVE_HS_ZONE_TRANSFER and turned all
- of its code always on.
-
- * aux/configure.in: removed superfluous test for hs_zone_transfer
- function (will never find it because it is an amd-internal
- function).
-
- * amd/mapc.c (maptypes): must used correct new name for am-utils'
- hesiod initialization function: hesiod_am_init.
-
- * amd/info_hesiod.c (hesiod_am_init): renamed hesiod_init to
- hesiod_am_init so as not to conflict with libhesiod's
- hesiod_init() function.
-
- * aux/configure.in: added test and explicit inclusion of
- libresolv.a for later resolution of library references with
- libhesiod.
-
- * aux/macros/opt_cppflags.m4: new file. configure/compile C
- preprocessor flags.
-
- * aux/macros/opt_libs.m4: new file. configure/compile library
- flags.
-
- * Makefile.am (EXTRA_DIST_AUX): include two new macros
- opt_cppflags.m4 and opt_libs.m4.
-
- * aux/configure.in: test for libhesiod needs to additional
- libresolv to link completely. Additional configuration time
- options added for setting initial CPPFLAGS and LIBS.
-
-Tue Feb 10 02:15:40 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- *******************************************************************
- *** Released am-utils-6.0a1 ***
- *******************************************************************
-
-Thu Feb 6 02:55:19 1997 Erez "HWank1" Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * amd/info_ndbm.c (ndbm_search,ndbm_init): fixed the code so that
- it works on freebsd, where they map dbm_pagfno a non-existing
- macro on purpose, to force you to port the code to Berkeley DB.
-
-Fri Jan 31 01:35:09 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/ops_afs.c (mount_toplvl): added a sleep(1) right before the
- actual mount_toplvl, to avoid some possible race conditions.
-
-Thu Jan 30 02:31:49 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/rpc_fwd.c: removed all TLI (HAVE_T_OPEN) code.
-
-Wed Jan 29 18:25:07 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * lib/wire.c (getwire): removed HAVE_T_OPEN (TLI code)
-
- * amd/amd.c (main): fix local address using htonl(). Free up
- buffers allocated by netdir_*() functions.
-
-Wed Jan 22 23:53:24 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/fix-amd-map.in: new script that will convert old-style amd
- maps to new one.
-
-Tue Jan 21 01:18:16 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * FIRST AMD IN AM-UTILS FINALLY WORKS (mounts itself as toplvl,
- and replies back to simple nfs/link type mount queries).
-
- * conf/mtab/mtab_svr4.c: reorganized the code in this file to be
- easier to read, and fixed a few bugs with un/setting the lock file
- descriptor.
-
-Wed Jan 8 15:27:49 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/sched.c: removed HAS_SVR3_SIGNALS code to handle older
- signals in Svr3 systems. Only stellix ever used this.
-
- * amd/rpc_fwd.c (fwd_reply): removed all code that was triggered
- by DYNAMIC_BUFFERS, since it was not in use.
-
-Tue Jan 7 00:45:59 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/opts.c (eval_opts): removed AMD_COMPAT code. Amd no longer
- takes '=' sign as old selector. Fix your maps.
- (deslashify): removed APOLLO code that treated two '//' as one.
-
-Sun Jan 5 01:25:09 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/ops_nfsx.c (nfsx_init): removed HARD_NFSX_ERRORS, code which
- was not used. It made any submount error fail the whole group.
-
- * amd/ops_nfs.c (make_nfs_auth): removed code dependent on
- HAS_NFS_QUALIFIED_NAMES.
- (mount_nfs_fh): removed macro for NFS_ARGS_NEEDS_PATH, assuming it
- is never on. So code that was triggered by #ifndef
- NFS_ARGS_NEEDS_PATH (osf1, aix3, and bsd44 variants) may have to
- be fixed later.
- Removed all ULTRIX_HACK code. Ultrix is DEAD!
- removed all PRESET_AC code, which was only on for Linux to preset
- the attribute cache values (otherwise they default to zero).
- (nfs_umounted): revobed KICK_KERNEL code (IRIX systems). Will
- have to fixed up later.
- (mount_nfs_fh): removed code that was never included, which
- attempted to set the port on which amd's nfs mounts on. This
- isn't supported by the ping algorithm yet. In any case, it is all
- done in nfs_init().
-
- * amd/srvr_nfs.c (find_nfs_srvr), amd/ops_nfs.c (mount_nfs_fh):
- removed HAS_TCP_NFS code. The whole use of NFS V.3 with TCP or
- specially hacked NFS V.2 that uses TCP (BSD 4.4 variants) will
- have to be addressed later.
-
- * amd/nfs_subr.c (nfsproc_getattr_2): removed all code dependent
- on PRECISE_SYMLINKS.
-
- * amd/mapc.c (mapc_meta_search): removed code that depended on
- HAS_DEPOT. It is known buggy code. The whole DEPOT support needs
- to be rethought.
- (mapc_add_kv): ported code to use standard regular expression
- (regexp) library.
-
- * amd/{map.c,ops_sfs.c,ops_ufs.c}: removed all code dependent on
- FLUSH_KERNEL_NAME_CACHE and the macro itself.
-
-Sat Jan 4 15:46:58 1997 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/map.c (exported_ap_alloc): removed all code triggered by
- SHRINK_EXPORTED_AP and the macro itself.
-
- * amd/info_nis.c: removed HAS_NIS_RELOAD macro, and left the code
- in all the time. Assuming that there is always NIS realod
- available.
- (yp_all_fixed): removed code for BROKEN_YP_ALL. If your yp_all()
- function is broken such that it does not release filedescriptors
- it created, then you are hosed. Get a fix for yp_all from your
- vendor or switch operating systems.
-
-Tue Dec 31 15:34:36 1996 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/info_hesiod.c: renamed macro HAS_HESIOD_RELOAD to
- HAVE_HS_ZONE_TRANSFER.
-
-Mon Dec 30 17:33:23 1996 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/{nfs,host}_ops.cremoved INFORM_MOUNTD macro, so its code is
- always included. We should always try to inform the remove mount
- daemon of mounts we performed. If we want an option for this, it
- should be a run-time option.
-
- * amd/host_ops.c: removed all that optionally did not make the
- directory mount points for amd.
-
- * HOST_EXEC code removed from everywhere. There is no indication
- that it was used anywhere. If it needs to be used, then a
- run-time switch should control it.
-
-Thu Dec 26 00:06:52 1996 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amd/*_ops.c: removed all references to mntent_t's fields
- mnt_freq and mnt_passno, since they are no longe rused (and never
- have been).
-
- * amd/am_ops.c: removed function sunos4_match, which was off
- anyway. This was one of the places where an '=' sign was allowed
- as an assignment operator (which is now ':=').
-
- * amd/afs_ops.c (afs_bgmount): removed SUNOS4_COMPAT code which
- was off anyway. This was one of the places where an '=' sign was
- allowed as an assignment operator (which is now ':=').
-
-Tue Dec 24 01:53:52 1996 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * amq/amq.c: ported to am-utils. Working.
-
- * conf/mount/mount_svr4.c (mount_svr4): changed mount type on svr4
- to be string, as it should be (rather than a string mapped to int
- and back mapped to string).
-
-Sun Dec 22 13:26:05 1996 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * lib/mount_fs.c (mount_fs): removed MNTINFO_PREF code.
-
- * lib/umount_fs.c: split this into three files: default, osf, and
- bsd44, that are in conf/umount/umount_*.c.
-
-Thu Dec 19 17:33:46 1996 Erez "HWank1" Zadok <ezk@lorien.cs.columbia.edu>
-
- * aux/configure.in, aux/aclocal.m4, aux/acconfig.h: added new
- macro to automatically figure out if an external definition for
- sys_errlist[] exists.
-
- * lib/xutil.c (xfree): removed "#undef free" because it's not
- needed there. Any system that redefines free() needs help.
-
- * conf/mtab/mtab_file.c (REWRITE_MTAB_IN_PLACE): removed code that
- was dependent on REWRITE_MTAB_IN_PLACE. It does not appear to be
- in active use anywhere. If added later, it should be a run-time
- configuration option.
-
- * conf/mtab/mtab_mach3.c: removed code that was #ifdef'ed not to
- be MOUNT_TABLE_ON_FILE, since mach2 always stores its mount tables
- in a file in /etc.
-
- * lib/util.c (str3cat): removed _AIX code. AIX should have a
- working realloc, or else find a cleaner solution to this.
- (mkdirs): removed SUNOS4_WORKAROUND code. This was to do a sync()
- after immediately making directories so that fsck will be able to
- fix the filesystem in the event of an immediate crash. This was
- because a bug in UFS which is fixed by now.
-
- * lib/hutil.c (domain_strip): removed PARTIAL_DOMAINS triggered
- code. Does not appear to be on and used anywhere.
- (dofork): removed MACH3 code, b/c mach3 NFS bugs are fixed by now.
-
- * lib/resvport.c: split the binding of reserved ports code to a
- separate file. A #define (HAVE_T_OPEN) separates the TLI (SVR4)
- from the BSD code.
-
-Thu Dec 19 02:08:35 1996 Erez "HWank1" Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * lib/Makefile.am (amu_LIBADD): includs @LIBOBJS@ now, auto-filled
- in by automake and configure, for optional sources that need to be
- built as part of libamu.a.
-
- * aux/aclocal.m4: Make sure AC_CHECK_MOUNT_STYLE adds mountutil.o
- to LIBOBJS.
-
- * lib/memcmp.c (memcmp): new file added to replace a possible bad
- implementation of memcmp.
-
-Wed Dec 18 22:20:23 1996 Erez "HWank1" Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * converted the sources to use memset/memmove/memcmp instead of
- bzero/bcopy/bcmp.
-
- * ran all sources through gnu Indent w/ options specified in
- aux/amindent.
-
-Wed Dec 11 22:19:29 1996 Erez "HWank1" Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- * At this point the initial generation of config.h via autoconf and
- some preliminary makefiles via automake is done. I will not begin
- modifying sources, so it's a good time to document from here.
-
-Wed Dec 10 22:19:29 1996 Erez "HWank1" Zadok <ezk@shekel.mcl.cs.columbia.edu>
-
- *******************************************************************
- *** Initial ChangeLog Entry ***
- *******************************************************************
diff --git a/contrib/amd/FAQ b/contrib/amd/FAQ
deleted file mode 100644
index 3fbcb4cdb1d0..000000000000
--- a/contrib/amd/FAQ
+++ /dev/null
@@ -1,69 +0,0 @@
- Am-utils Frequently Asked Questions
-
-Note: we started this FAQ only on March 15, 2005; so it's not long or
-comprehensive, yet. Amd is much older than that, and so there's a lot of
-information that's already available in other forms. If this FAQ doesn't
-answer your questions, see information in the following sources:
-
-1. The Am-utils book: http://www.am-utils.org/docs/amd-book/
-
-2. The Am-utils user manual, which is part of the distribution and is also
- available from www.am-utils.org.
-
-3. The www.am-utils.org Web site resources, especially the "am-utils" mailing
- list (and its archives).
-
-4. In the am-utils distribution (always use the latest ones), see all of the
- various README files (README, README.autofs, README.ldap, README.osx, and
- README.y2k). The "BUGS" file also lists useful information about bugs
- and problems with specific OSs which affect Amd. All of these text files
- are also available from www.am-utils.org.
-
-5. Some FAQ questions (including newbie questions) are available here:
- http://www.kernelcorp.com/resources_faqs.html
-
-6. Some problems are known bugs but have not been fixed yet: this are
- listed in bugzilla in https://bugzilla.am-utils.org/
-
-If you have additions to this FAQ, please let us know at
-the am-utils list (see www.am-utils.org).
-
-Thank you,
-The Am-utils development team.
-
-<FAQ>
-
-*** Linux Questions
-
-Q1. When I use Amd with Autofs and I restart Amd, how come it cannot remount
- the Autofs partitions?
-
-A1. This is a limitation of the Linux Autofs kernel module (for both autofs
- v2. and v3). The Linux Autofs does not allow restarting automounted
- points. There's nothing Amd can do about this. In fact, the same
- problem exists if you use the userland "automount" daemon instead of
- Amd. Hopefully Autofs-v4 or the separate effort of Autofs-NG will
- address this serious problem.
-
- Note that Amd itself can restart autofs automounted points just fine on
- OSs that support it, for example Solaris.
-
-
-Q2. When I use Amd, I get this console message frequently: "mount version
- older than kernel." Is it a problem?
-
-A2. No, it's a harmless warning message that the Linux kernel prints for NFS
- mounts. The intent was to alert administrators that the kernel has
- supposedly a different version of the mount(2) code than a userland
- program used. This happens if you compile Amd against kernel headers
- that are different than the kernel you're running. If the message
- really bothers you, then one way to "fix" the problem is to recompile
- Amd against the same kernel headers as the running kernel.
-
- Nevertheless, it is a relatively useless message because as far as we
- know, the NFS v2 and v3 mount codes have been in perfect sync between
- the userland and kernel sides, and were "standardized" for years
- already. This warning message caused more unnecessary worry among
- administrators than helping alert them to legitimate problems.
-
-</FAQ>
diff --git a/contrib/amd/FREEBSD-Xlist b/contrib/amd/FREEBSD-Xlist
deleted file mode 100644
index 2b2484ed0da4..000000000000
--- a/contrib/amd/FREEBSD-Xlist
+++ /dev/null
@@ -1,268 +0,0 @@
-$FreeBSD$
-*LSM.am-utils
-*Makefile.*
-*README.autofs
-*README.osx
-*ac*.m4
-*.old
-*acconfig.h
-*aux
-*autom4te.cache*
-*buildall
-*config*
-*depcomp
-*install-sh
-*lt*
-*missing
-*mkinstalldirs
-*stamp-h.in
-*amd/test1.sh
-*amd/Makefile.*
-*amq/Makefile.*
-*commit
-*cvs-server.txt
-*conf/checkmount/checkmount_aix.c
-*conf/checkmount/checkmount_default.c
-*conf/checkmount/checkmount_osf.c
-*conf/checkmount/checkmount_svr4.c
-*conf/checkmount/checkmount_ultrix.c
-*conf/fh_dref/fh_dref_aix3.h
-*conf/fh_dref/fh_dref_aix42.h
-*conf/fh_dref/fh_dref_bsd44.h
-*conf/fh_dref/fh_dref_default.h
-*conf/fh_dref/fh_dref_hpux.h
-*conf/fh_dref/fh_dref_irix.h
-*conf/fh_dref/fh_dref_isc3.h
-*conf/fh_dref/fh_dref_linux.h
-*conf/fh_dref/fh_dref_nextstep.h
-*conf/fh_dref/fh_dref_osf2.h
-*conf/fh_dref/fh_dref_osf4.h
-*conf/fh_dref/fh_dref_sunos3.h
-*conf/fh_dref/fh_dref_sunos4.h
-*conf/fh_dref/fh_dref_svr4.h
-*conf/hn_dref/hn_dref_default.h,
-*conf/hn_dref/hn_dref_isc3.h
-*conf/hn_dref/hn_dref_linux.h
-*conf/mount/mount_aix.c
-*conf/mount/mount_aix3.c
-*conf/mount/mount_bsdi3.c
-*conf/mount/mount_default.c
-*conf/mount/mount_freebsd3.c
-*conf/mount/mount_hpux.c
-*conf/mount/mount_irix5.c
-*conf/mount/mount_irix6.c
-*conf/mount/mount_isc3.c
-*conf/mount/mount_linux.c
-*conf/mount/mount_mach3.c
-*conf/mount/mount_stellix.c
-*conf/mount/mount_svr4.c
-*conf/mtab/mtab_aix.c
-*conf/mtab/mtab_file.c
-*conf/mtab/mtab_isc3.c
-*conf/mtab/mtab_linux.c
-*conf/mtab/mtab_mach3.c
-*conf/mtab/mtab_osf.c
-*conf/mtab/mtab_svr4.c
-*conf/mtab/mtab_ultrix.c
-*conf/nfs_prot/nfs_prot_aix3.h
-*conf/nfs_prot/nfs_prot_aix4.h
-*conf/nfs_prot/nfs_prot_aix4_2.h
-*conf/nfs_prot/nfs_prot_aix4_3.h
-*conf/nfs_prot/nfs_prot_aix5_1.h
-*conf/nfs_prot/nfs_prot_aix5_2.h
-*conf/nfs_prot/nfs_prot_bsdi2.h
-*conf/nfs_prot/nfs_prot_bsdi3.h
-*conf/nfs_prot/nfs_prot_darwin.h
-*conf/nfs_prot/nfs_prot_default.h
-*conf/nfs_prot/nfs_prot_hpux.h
-*conf/nfs_prot/nfs_prot_hpux11.h
-*conf/nfs_prot/nfs_prot_irix5.h
-*conf/nfs_prot/nfs_prot_irix6.h
-*conf/nfs_prot/nfs_prot_linux.h
-*conf/nfs_prot/nfs_prot_ncr2.h
-*conf/nfs_prot/nfs_prot_netbsd.h
-*conf/nfs_prot/nfs_prot_netbsd1_3.h
-*conf/nfs_prot/nfs_prot_netbsd1_4.h
-*conf/nfs_prot/nfs_prot_nextstep.h
-*conf/nfs_prot/nfs_prot_openbsd.h
-*conf/nfs_prot/nfs_prot_osf2.h
-*conf/nfs_prot/nfs_prot_osf4.h
-*conf/nfs_prot/nfs_prot_osf5.h
-*conf/nfs_prot/nfs_prot_osf5_1.h
-*conf/nfs_prot/nfs_prot_sunos3.h
-*conf/nfs_prot/nfs_prot_sunos4.h
-*conf/nfs_prot/nfs_prot_sunos5_3.h
-*conf/nfs_prot/nfs_prot_sunos5_4.h
-*conf/nfs_prot/nfs_prot_sunos5_5.h
-*conf/nfs_prot/nfs_prot_sunos5_6.h
-*conf/nfs_prot/nfs_prot_sunos5_7.h
-*conf/nfs_prot/nfs_prot_sunos5_8.h
-*conf/nfs_prot/nfs_prot_svr4.h
-*conf/nfs_prot/nfs_prot_ultrix.h
-*conf/autofs/autofs_linux.h
-*conf/autofs/autofs_linux.c
-*conf/autofs/autofs_solaris_v1.h
-*conf/autofs/autofs_solaris_v1.c
-*conf/autofs/autofs_solaris_v2_v3.h
-*conf/autofs/autofs_solaris_v2_v3.c
-*conf/sa_dref/sa_dref_386bsd.h
-*conf/sa_dref/sa_dref_aix3.h
-*conf/sa_dref/sa_dref_aoi.h
-*conf/sa_dref/sa_dref_default.h
-*conf/sa_dref/sa_dref_isc3.h
-*conf/sa_dref/sa_dref_linux.h
-*conf/sa_dref/sa_dref_svr4.h
-*conf/transp/transp_tli.c
-*conf/trap/trap_aix3.h
-*conf/trap/trap_aux.h
-*conf/trap/trap_dgux.h
-*conf/trap/trap_freebsd3.h
-*conf/trap/trap_hcx.h
-*conf/trap/trap_hpux.h
-*conf/trap/trap_hpux11.h
-*conf/trap/trap_irix.h
-*conf/trap/trap_isc3.h
-*conf/trap/trap_linux.h
-*conf/trap/trap_mach3.h
-*conf/trap/trap_news4.h
-*conf/trap/trap_rtu6.h
-*conf/trap/trap_stellix.h
-*conf/trap/trap_svr4.h
-*conf/trap/trap_ultrix.h
-*conf/umount/umount_aix.c
-*conf/umount/umount_default.c
-*conf/umount/umount_linux.c
-*conf/umount/umount_osf.c
-*doc/Makefile.am
-*doc/Makefile.in
-*doc/am-utils.dvi
-*doc/am-utils.info
-*doc/am-utils.info-1
-*doc/am-utils.info-2
-*doc/am-utils.info-3
-*doc/am-utils.info-4
-*doc/am-utils.info-5
-*doc/am-utils.info-6
-*doc/am-utils.info-7
-*doc/am-utils.ps
-*doc/hlfsd.ps
-*doc/mdate-sh
-*fixmount/Makefile.*
-*fsinfo/Makefile.*
-*hlfsd/Makefile.*
-*libamu/Makefile.*
-*libamu/alloca.c
-*libamu/clnt_sperrno.c
-*libamu/memcmp.c
-*libamu/strcasecmp.c
-*libamu/strdup.c
-*libamu/strstr.c
-*libamu/strlcat.c
-*libamu/strlcpy.c
-*libamu/ualarm.c
-*mk-amd-map/Makefile.*
-*wire-test/Makefile.*
-*m4/GNUmakefile
-*m4/amdgrep*
-*m4/amindent*
-*m4/autopat*
-*m4/chop-aclocal.pl*
-*m4/copy-if-newbig*
-*m4/mk-aclocal*
-*m4/mkconf*
-*m4/rmtspc*
-*m4/update_build_version*
-*m4/macros/HEADER
-*m4/macros/TRAILER
-*m4/macros/c_void_p.m4
-*m4/macros/cache_check_dynamic.m4
-*m4/macros/check_amu_fs.m4
-*m4/macros/check_checkmount_style.m4
-*m4/macros/check_extern.m4
-*m4/macros/check_fhandle.m4
-*m4/macros/check_field.m4
-*m4/macros/check_fs_headers.m4
-*m4/macros/check_fs_mntent.m4
-*m4/macros/check_gnu_getopt.m4
-*m4/macros/check_hide_mount_type.m4
-*m4/macros/check_lib2.m4
-*m4/macros/check_map_funcs.m4
-*m4/macros/check_mnt2_cdfs_opt.m4
-*m4/macros/check_mnt2_gen_opt.m4
-*m4/macros/check_mnt2_nfs_opt.m4
-*m4/macros/check_mnttab_file_name.m4
-*m4/macros/check_mnttab_location.m4
-*m4/macros/check_mnttab_opt.m4
-*m4/macros/check_mnttab_style.m4
-*m4/macros/check_mnttab_type.m4
-*m4/macros/check_mount_style.m4
-*m4/macros/check_mount_trap.m4
-*m4/macros/check_mount_type.m4
-*m4/macros/check_mtype_printf_type.m4
-*m4/macros/check_mtype_type.m4
-*m4/macros/check_network_transport_type.m4
-*m4/macros/check_nfs_fh_dref.m4
-*m4/macros/check_nfs_hn_dref.m4
-*m4/macros/check_nfs_prot_headers.m4
-*m4/macros/check_nfs_sa_dref.m4
-*m4/macros/check_nfs_socket_connection.m4
-*m4/macros/check_os_libs.m4
-*m4/macros/check_restartable_signal_handler.m4
-*m4/macros/check_umount_style.m4
-*m4/macros/check_unmount_args.m4
-*m4/macros/check_unmount_call.m4
-*m4/macros/expand_cpp_hex.m4
-*m4/macros/expand_cpp_int.m4
-*m4/macros/expand_cpp_string.m4
-*m4/macros/expand_run_string.m4
-*m4/macros/extern_optarg.m4
-*m4/macros/extern_sys_errlist.m4
-*m4/macros/field_mntent_t_mnt_time_string.m4
-*m4/macros/func_bad_memcmp.m4
-*m4/macros/func_bad_yp_all.m4
-*m4/macros/header_templates.m4
-*m4/macros/host_macros.m4
-*m4/macros/linux_headers.m4
-*m4/macros/localconfig.m4
-*m4/macros/mount_headers.m4
-*m4/macros/name_package.m4
-*m4/macros/name_version.m4
-*m4/macros/opt_amu_cflags.m4
-*m4/macros/opt_cppflags.m4
-*m4/macros/opt_debug.m4
-*m4/macros/opt_ldflags.m4
-*m4/macros/opt_libs.m4
-*m4/macros/os_cflags.m4
-*m4/macros/os_cppflags.m4
-*m4/macros/os_ldflags.m4
-*m4/macros/package_bugreport.m4
-*m4/macros/package_name.m4
-*m4/macros/package_version.m4
-*m4/macros/save_state.m4
-*m4/macros/struct_field_nfs_fh.m4
-*m4/macros/struct_mntent.m4
-*m4/macros/struct_mnttab.m4
-*m4/macros/struct_nfs_args.m4
-*m4/macros/struct_nfs_fh.m4
-*m4/macros/struct_nfs_fh3.m4
-*m4/macros/struct_nfs_gfs_mount.m4
-*m4/macros/try_compile_anyfs.m4
-*m4/macros/try_compile_nfs.m4
-*m4/macros/try_compile_rpc.m4
-*m4/macros/type_auth_create_gidlist.m4
-*m4/macros/type_cachefs_args.m4
-*m4/macros/type_cdfs_args.m4
-*m4/macros/type_efs_args.m4
-*m4/macros/type_lofs_args.m4
-*m4/macros/type_mfs_args.m4
-*m4/macros/type_pcfs_args.m4
-*m4/macros/type_recvfrom_fromlen.m4
-*m4/macros/type_rfs_args.m4
-*m4/macros/type_svc_in_arg.m4
-*m4/macros/type_time_t.m4
-*m4/macros/type_tmpfs_args.m4
-*m4/macros/type_ufs_args.m4
-*m4/macros/type_xdrproc_t.m4
-*m4/macros/type_xfs_args.m4
-*m4/macros/type_yp_order_outorder.m4
-*m4/macros/with_addon.m4
diff --git a/contrib/amd/FREEBSD-upgrade b/contrib/amd/FREEBSD-upgrade
deleted file mode 100644
index 8e77d0fb4e4a..000000000000
--- a/contrib/amd/FREEBSD-upgrade
+++ /dev/null
@@ -1,103 +0,0 @@
-# ex:ts=8
-$FreeBSD$
-
-AMD (am-utils) 6.1.5
- originals can be found at: ftp://ftp.am-utils.org/pub/am-utils/
-
-For the import of AMD many files were pruned by:
-
- tar -X FREEBSD-Xlist -xf am-utils-6.1.5.tar.gz
-
-and `find . -name '.cvsignore' -delete`
-
-Then imported by:
-
- cvs import -m 'Virgin import of AMD (am-utils) v6.1.5' \
- src/contrib/amd COLUMBIA amd_6_1_5
-
-After the import, a separate extraction of am-utils was GNU configured in
-the "normal" way. The resulting config.h file should be compared with
-src/usr.sbin/amd/include/config.h, and src/usr.sbin/amd/include/config.h
-updated as needed.
-
-To make local changes to amd, simply patch and commit to the main
-branch (aka HEAD). Never make local changes on the vendor (COLUMBIA) branch.
-
-Note, we don't trim anything in scripts/ as sysadmins may find the bits
-as a useful reference.
-
-All local changes should be submitted to "am-utils@am-utils.org" or
-https://bugzilla.am-utils.org for inclusion in the next vendor release.
-
-Local changes:
-
- amd/amd.8
- - corrected formatting of SEE ALSO
- r1.17 Uniformly refer to a file system as "file system"
- r1.16 Add the am-utils homepage to SEE ALSO
- r1.15 s/BSD/.Bx/ where appropriate
- r1.14 Avoid using parenthesis enclosure macros
- r1.13 split punctuation characters + misc fixes
- r1.12 mdoc(7)NG
- r1.11 Catch a left over reference to "/a"
- r1.10 Document change to the default mount dir.
- r1.9 Mention "amd -H" in the synopsis
- r1.8 Fix miscellaneous mdoc macro argument limit infringements
- r1.7 Don't refer to non-existent automount(8)
- r1.6 Fix errors in .Xr usage
- r1.3 un-mandocafied, un4.4BSD'ed
- r1.2 sort cross references
- amd/amd.c
- r1.7 use /.amd_mnt as default for -a
- amq/amq.8
- r1.9 Uniformly refer to a file system as "file system".
- r1.8 s/BSD/.Bx/ where appropriate.
- r1.6 mdoc(7)NG.
- r1.5 Remove reference to non-existent manpage
- r1.4 Fix typos
- r1.3 un-mandocafied, un4.4BSD'ed
- amq/pawd.1
- r1.3 un-mandocafied, un4.4BSD'ed
- r1.2 sorting of references
- conf/nfs_prot/nfs_prot_freebsd3.h
- r1.11 Userland part of nfs client/server split and cleanup
- r1.6 restore the standard name nfs_fh3
- r1.3 Fully use our own generated files for NFSv3
- r1.2 rpcgen our own files for NFSv3 support
- fixmount/fixmount.8
- r1.8 Uniformly refer to a file system as "file system"
- r1.6 split punctuation characters + misc fixes.
- r1.5 mdoc(7)NG.
- r1.4 ".Mn mountd" -> ".Nm mountd"
- r1.3 un-mandocafied, un4.4BSD'ed
- r1.2 More sorting of references.
- fsinfo/fsinfo.8
- r1.9 add section number to .Xr directive
- r1.7 Uniformly refer to a file system as "file system"
- r1.6 split punctuation characters + misc fixes
- r1.5 mdoc(7)NG
- r1.3 describe all of the command line options
- r1.2 un-mandocafied, un4.4BSD'ed
- hlfsd/hlfsd.8
- - Fix a broken SEE ALSO section and some mdoc issues
- mk-amd-map/mk-amd-map.8
- r1.4 removed HISTORY info from the .Os call.
- r1.2 un-mandocafied, un4.4BSD'ed
- scripts/amd.conf.5
- r1.15 Bring man page back in shape
- r1.13 Uniformly refer to a file system as "file system"
- r1.12 Avoid using parenthesis enclosure macros
- r1.11 mdoc(7)NG
- r1.10 Fix miscellaneous mdoc macro argument limit infringements
- r1.8 Fix a bunch of broken cross-references
- r1.7 Bad reference of uname(2) -> uname(3)
- r1.6 Grammer fix and style nits.
- r1.5 xfer typo
- r1.4 un-mandocafied, un4.4BSD'ed
- r1.3 More sorting of references.
- wire-test/wire-test.8
- r1.2 un-mandocafied, un4.4BSD'ed
-
-mbr@FreeBSD.org
-obrien@NUXI.com
-05-November-1999
diff --git a/contrib/amd/INSTALL b/contrib/amd/INSTALL
deleted file mode 100644
index 2099840756e6..000000000000
--- a/contrib/amd/INSTALL
+++ /dev/null
@@ -1,370 +0,0 @@
-Installation Instructions
-*************************
-
-Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
-Inc.
-
- Copying and distribution of this file, with or without modification,
-are permitted in any medium without royalty provided the copyright
-notice and this notice are preserved. This file is offered as-is,
-without warranty of any kind.
-
-Basic Installation
-==================
-
- Briefly, the shell command `./configure && make && make install'
-should configure, build, and install this package. The following
-more-detailed instructions are generic; see the `README' file for
-instructions specific to this package. Some packages provide this
-`INSTALL' file but do not implement all of the features documented
-below. The lack of an optional feature in a given package is not
-necessarily a bug. More recommendations for GNU packages can be found
-in *note Makefile Conventions: (standards)Makefile Conventions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You need `configure.ac' if
-you want to change it or regenerate `configure' using a newer version
-of `autoconf'.
-
- The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system.
-
- Running `configure' might take a while. While running, it prints
- some messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package, generally using the just-built uninstalled binaries.
-
- 4. Type `make install' to install the programs and any data files and
- documentation. When installing into a prefix owned by root, it is
- recommended that the package be configured and built as a regular
- user, and only the `make install' phase executed with root
- privileges.
-
- 5. Optionally, type `make installcheck' to repeat any self-tests, but
- this time using the binaries in their final installed location.
- This target does not install anything. Running this target as a
- regular user, particularly if the prior `make install' required
- root privileges, verifies that the installation completed
- correctly.
-
- 6. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
- 7. Often, you can also type `make uninstall' to remove the installed
- files again. In practice, not all packages have tested that
- uninstallation works correctly, even though it is required by the
- GNU Coding Standards.
-
- 8. Some packages, particularly those that use Automake, provide `make
- distcheck', which can by used by developers to test that all other
- targets like `make install' and `make uninstall' work correctly.
- This target is generally not run by end users.
-
-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.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c99 CFLAGS=-g LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
- 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 can use GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'. This
-is known as a "VPATH" build.
-
- With a non-GNU `make', it is safer to compile the package for one
-architecture at a time in the source code directory. After you have
-installed the package for one architecture, use `make distclean' before
-reconfiguring for another architecture.
-
- On MacOS X 10.5 and later systems, you can create libraries and
-executables that work on multiple system types--known as "fat" or
-"universal" binaries--by specifying multiple `-arch' options to the
-compiler but only a single `-arch' option to the preprocessor. Like
-this:
-
- ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
- CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
- CPP="gcc -E" CXXCPP="g++ -E"
-
- This is not guaranteed to produce working output in all cases, you
-may have to build one architecture at a time and combine the results
-using the `lipo' tool if you have problems.
-
-Installation Names
-==================
-
- By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc. You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX', where PREFIX must be an
-absolute file name.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-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. In general, the
-default for these options is expressed in terms of `${prefix}', so that
-specifying just `--prefix' will affect all of the other directory
-specifications that were not explicitly provided.
-
- The most portable way to affect installation locations is to pass the
-correct locations to `configure'; however, many packages provide one or
-both of the following shortcuts of passing variable assignments to the
-`make install' command line to change installation locations without
-having to reconfigure or recompile.
-
- The first method involves providing an override variable for each
-affected directory. For example, `make install
-prefix=/alternate/directory' will choose an alternate location for all
-directory configuration variables that were expressed in terms of
-`${prefix}'. Any directories that were specified during `configure',
-but not in terms of `${prefix}', must each be overridden at install
-time for the entire installation to be relocated. The approach of
-makefile variable overrides for each directory variable is required by
-the GNU Coding Standards, and ideally causes no recompilation.
-However, some platforms have known limitations with the semantics of
-shared libraries that end up requiring recompilation when using this
-method, particularly noticeable in packages that use GNU Libtool.
-
- The second method involves providing the `DESTDIR' variable. For
-example, `make install DESTDIR=/alternate/directory' will prepend
-`/alternate/directory' before all installation names. The approach of
-`DESTDIR' overrides is not required by the GNU Coding Standards, and
-does not work on platforms that have drive letters. On the other hand,
-it does better at avoiding recompilation issues, and works well even
-when some directory options were not specified in terms of `${prefix}'
-at `configure' time.
-
-Optional Features
-=================
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
- 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
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
- Some packages offer the ability to configure how verbose the
-execution of `make' will be. For these packages, running `./configure
---enable-silent-rules' sets the default to minimal output, which can be
-overridden with `make V=1'; while running `./configure
---disable-silent-rules' sets the default to verbose, which can be
-overridden with `make V=0'.
-
-Particular systems
-==================
-
- On HP-UX, the default C compiler is not ANSI C compatible. If GNU
-CC is not installed, it is recommended to use the following options in
-order to use an ANSI C compiler:
-
- ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
-
-and if that doesn't work, install pre-built binaries of GCC for HP-UX.
-
- HP-UX `make' updates targets which have the same time stamps as
-their prerequisites, which makes it generally unusable when shipped
-generated files such as `configure' are involved. Use GNU `make'
-instead.
-
- On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
-parse its `<wchar.h>' header file. The option `-nodtk' can be used as
-a workaround. If GNU CC is not installed, it is therefore recommended
-to try
-
- ./configure CC="cc"
-
-and if that doesn't work, try
-
- ./configure CC="cc -nodtk"
-
- On Solaris, don't put `/usr/ucb' early in your `PATH'. This
-directory contains several dysfunctional programs; working variants of
-these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
-in your `PATH', put it _after_ `/usr/bin'.
-
- On Haiku, software installed for all users goes in `/boot/common',
-not `/usr/local'. It is recommended to use the following options:
-
- ./configure --prefix=/boot/common
-
-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
-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:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS
- KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-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'.
-`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.
-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
-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
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf limitation. Until the limitation is lifted, you can use
-this workaround:
-
- CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
-
-`configure' Invocation
-======================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
- Print a summary of all of the options to `configure', and exit.
-
-`--help=short'
-`--help=recursive'
- Print a summary of the options unique to this package's
- `configure', and exit. The `short' variant lists options used
- only in the top level, while the `recursive' variant lists options
- also present in any nested packages.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`--prefix=DIR'
- Use DIR as the installation prefix. *note Installation Names::
- for more details, including other options available for fine-tuning
- the installation locations.
-
-`--no-create'
-`-n'
- Run the configure checks, but stop before creating any output
- files.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
diff --git a/contrib/amd/MIRRORS.html b/contrib/amd/MIRRORS.html
deleted file mode 100644
index 511df2b905cc..000000000000
--- a/contrib/amd/MIRRORS.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<HTML>
-<HEAD>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
- <META NAME="Author" CONTENT="Erez Zadok">
- <TITLE>Am-Utils 6.x Mirror Sites</TITLE>
-</HEAD>
-<BODY BGCOLOR="#FFFFFF">
-
-<CENTER>
-<H1> Am-Utils 6.x Software Mirror Sites</H1></CENTER>
-
-Note: in case of any problems accessing the individual FTP sites, please
-contact their respective maintainers. If you wish to be added to the
-official mirror list, please send mail to
-"am-utils-developers AT am-utils.org" with the
-full URL, maintainer's email, and geographical location.
-
-<P>
-
-<H2>North America</H2>
-<UL>
-
-<LI> New York (Stony Brook, Primary Site)
- <UL>
- <LI> FTP: <A
- HREF="ftp://ftp.am-utils.org/pub/am-utils">ftp.am-utils.org</A>.
- Contact person in case of problems
-"am-utils-developers AT am-utils.org".
- </LI>
- </UL>
-
-<LI> Minnesota
- <UL>
- <LI> FTP: <A
- HREF="ftp://ftp.cs.umn.edu/pub/am-utils">ftp.cs.umn.edu</A>.
- Maintainer <A HREF="mailto:dokas AT cs.umn.edu">dokas AT cs.umn.edu</A>.
- </LI>
- </UL>
-
-<LI> Florida (University of Florida)
- <UL>
- <LI> FTP: <A HREF="ftp://ftp.cise.ufl.edu/pub/mirrors/am-utils">ftp.cise.ufl.edu</A>.
- Maintainer <A HREF="mailto:mirror AT cise.ufl.edu">mirror AT cise.ufl.edu</A>.
- </LI>
- </UL>
-
-</UL>
-
-<H2>Europe</H2>
-<UL>
-
-<LI> Germany
- <UL>
- <LI> FTP: <A HREF="ftp://ftp.fu-berlin.de/unix/network/am-utils">ftp.fu-berlin.de</A>.
- Maintainer <A HREF="mailto:ftp-adm AT ftp.fu-berlin.de">ftp-adm AT ftp.fu-berlin.de</A>.
- </LI>
- <LI> FTP: <A HREF="ftp://ftp.tu-darmstadt.de/pub/networking/filesystems/am-utils/">ftp.tu-darmstadt.de</A>.
- Maintainer <A HREF="mailto:networking AT ftp.tu-darmstadt.de">networking AT ftp.tu-darmstadt.de</A>.
- </LI>
- </UL>
-
-<LI> Sweden
- <UL>
- <LI> FTP: <A HREF="ftp://ftp.sunet.se/pub/unix/admin/am-utils">ftp.sunet.se</A>.
- Maintainer <A HREF="mailto:archive AT ftp.sunet.se">archive AT ftp.sunet.se</A>.
- </LI>
- </UL>
-
-<LI> UK
- <UL>
- <LI> FTP: <A HREF="ftp://sunsite.org.uk/package/am-utils">sunsite.org.uk</A>.
- Maintainer <A HREF="mailto:lmjm AT icparc.ic.ac.uk">lmjm AT icparc.ic.ac.uk</A>.
- </LI>
- </UL>
-
-</UL>
-
-<H2>Asia</H2>
-<UL>
-
-<LI> Japan
- <UL>
- <LI> FTP: <A HREF="ftp://ftp.u-aizu.ac.jp/pub/net/amd/am-utils">ftp.u-aizu.ac.jp</A>.
- Maintainer <A HREF="mailto:ftp-admin AT u-aizu.ac.jp">ftp-admin AT u-aizu.ac.jp</A>.
- </LI>
-
- <LI> FTP: <A HREF="ftp://core.ring.gr.jp/pub/net/am-utils/">core.ring.gr.jp</A>.
- Maintainer <A HREF="mailto:ftpadmin AT ring.gr.jp">ftpadmin AT ring.gr.jp</A>.
- </LI>
-
- <LI> FTP: <A HREF="ftp://ftp.ring.gr.jp/pub/net/am-utils/">ftp.ring.gr.jp</A>.
- Maintainer <A HREF="mailto:ftpadmin AT ring.gr.jp">ftpadmin AT ring.gr.jp</A>.
- </LI>
- </UL>
-</UL>
-
-<HR>
-<I> Last updated: 2006-11-27</I>
-
-</BODY>
-</HTML>
-
-<!---
- <LI> FTP: <A HREF="X">X</A>.
- Maintainer <A HREF="mailto:X">X</A>.
--->
diff --git a/contrib/amd/MIRRORS.txt b/contrib/amd/MIRRORS.txt
deleted file mode 100644
index 087c6ccd0cce..000000000000
--- a/contrib/amd/MIRRORS.txt
+++ /dev/null
@@ -1,60 +0,0 @@
- AM-UTILS-6.x MIRRORS
-
-Note: in case of any problems accessing the individual FTP sites, please
-contact their respective maintainers. If you wish to be added to the
-official mirror list, please send mail to am-utils-developers AT am-utils.org
-with the full URL, maintainer's email, and geographical location.
-
-U.S.A:
- New York (Stony Brook, Primary Site):
- ftp://ftp.am-utils.org/pub/am-utils
- Maintainer: ezk AT am-utils.org
- Minnesota:
- ftp://ftp.cs.umn.edu/pub/am-utils
- Maintainer: dokas AT cs.umn.edu
-#Avoid for now: empty directory
-# Virginia (Newport News):
-# ftp://ftp.ferginc.com/pub/unix/am-utils
-# Maintainer: Branson.Matheson AT FergInc.com
-#server gone? (Jan 5, 2004)
-# Ohio (Kent State University):
-# ftp://info.mcs.kent.edu/pub/am-utils
-# Maintainer: root AT mcs.kent.edu
- Florida (University of Florida)
- ftp://ftp.cise.ufl.edu/pub/mirrors/am-utils
- Maintainer: mirror AT cise.ufl.edu
-
-Europe:
- Germany:
- ftp://ftp.fu-berlin.de/unix/network/am-utils
- Maintainer: ftp-adm AT ftp.fu-berlin.de
- Germany:
- ftp://ftp.tu-darmstadt.de/pub/networking/filesystems/am-utils/
- Maintainer: networking AT ftp.tu-darmstadt.de
- Sweden:
- ftp://ftp.sunet.se/pub/unix/admin/am-utils
- Maintainer: archive AT ftp.sunet.se
-# not responding (Jan 5, 2004)
-# Sweden (Stockholm University, Math Depat):
-# ftp://mirror.matematik.su.se/pub/am-utils
-# Maintainer: leifj AT matematik.su.se
- UK:
- ftp://sunsite.org.uk/package/am-utils
- Maintainer: lmjm AT icparc.ic.ac.uk
-
-Asia:
- Japan:
- ftp://ftp.u-aizu.ac.jp/pub/net/amd/am-utils
- Maintainer: ftp-admin AT u-aizu.ac.jp
- Japan:
- ftp://core.ring.gr.jp/pub/net/am-utils/
- Maintainer: ftpadmin AT ring.gr.jp
- Japan:
- ftp://ftp.ring.gr.jp/pub/net/am-utils/
- Maintainer: ftpadmin AT ring.gr.jp
-
-# gone? (Jan 5, 2004)
-# Australia:
-# Melbourne:
-# ftp://ftp.sage-au.org.au/pub/network/filesystem/am-utils
-# Maintainer: mirror AT ftp.sage-au.org.au
diff --git a/contrib/amd/NEWS b/contrib/amd/NEWS
deleted file mode 100644
index b7fbedac6d02..000000000000
--- a/contrib/amd/NEWS
+++ /dev/null
@@ -1,1567 +0,0 @@
-*** Notes specific to am-utils version 6.2
-
- - Removed license advertising clause
- - Removed expn program
-
-*** Notes specific to am-utils version 6.2-rc1
-
-Filesystem Support:
- - Add support for NFSv4
- - Add support for Lustre
- - Add support for ext{2,3,4}
- - Add support for linux autofs version 5
- - Add support for TMPFS and UDF
-New features:
- - Add amq -i (prints information about maps)
- - Add synchronous unmount code for amq -uu
- - Allow a comma-separated list of LDAP servers for failover
-Changes in behavior:
- - Empty variable assignments, now unset the variable value.
- - Share LDAP connections between different maps to save resources
-Portability fixes:
- - Changes to work with Linux-2.6.x, Linux-3.x and NetBSD-5.x, NetBSD-6.x,
- FreeBSD 7.x, Solaris
-Bug fixes:
- - Many bug fixes, see ChangeLog
-
-*** Notes specific to am-utils version 6.2a3
-
-- minor new ports:
- i386-apple-darwin8.8.1
- i386-pc-linux-centos4.4 (RHEL4 clone)
- i386-pc-linux-fc6 (Fedora Core 6)
- i386-pc-solaris2.11-nexentaos (GNU/OpenSolaris)
- ia64-hp-hpux11.23 (gcc and cc)
- powerpc-apple-darwin8.7.0
-
-- Bugs fixed:
- * reduce annoying warnings from xstrlcpy when expanding options.
- * translate '*' Sun maps correctly with "${key}"
-
-*** Notes specific to am-utils version 6.2a2
-
-New amd.conf global parameter: nfs_allow_any_interface. By default it is
-set to 'no' which means that Amd accepts local NFS packets only from
-127.0.0.1. If set to 'yes' then Amd will accept local NFS packets from any
-local interface; this is useful on hosts that may have multiple interfaces
-where the system is forced to send all outgoing packets (even those bound to
-the same host) via an address other than 127.0.0.1.
-
-Add support for specifying the host to match in the mount selectors netgrp
-and netgrpd. Now one can use either netgrp(<group-name>) or
-netgrp(<group-name>,<host-name>).
-
-Support new mount options for type:=pcfs mounts: longname, nowin95,
-shortname, user=N, group=N, mask=N, and dirmask=N.
-
-Two new amd.conf [global] parameters: nfs_retry_interval_toplvl and
-nfs_retransmit_counter_toplvl. They are similar to nfs_retry_interval and
-nfs_retransmit_counter, and allow you to set the "timeo" and "retrans" NFS
-mount parameters, respectively, but ONLY for Amd's top-level mounts (which
-are NFSv2/UDP currently). This is useful because on some systems you may
-wish to set these parameters differently than the OS default, so as to
-better tune Amd's responsiveness under heavy scheduler loads.
-
-- minor new ports:
- i386-pc-linux-fc5 (Fedora Core 5)
- i386-pc-linux-suse10.1 (beta 8)
- i386-unknown-freebsd6.0 (RELEASE)
- i386-unknown-freebsd6.1 (RELEASE)
- i386-unknown-netbsdelf2.1
- i386-unknown-netbsdelf3.0 (RELEASE)
- i386-unknown-openbsd3.8
- i386-unknown-openbsd3.9
- powerpc-apple-darwin8.5.0
- powerpc-apple-darwin8.6.0
-
-- Bugs fixed:
- * one serious memory leak in amfs_generic (caught by Coverity)
- * assorted potential (but rare) NULL pointer dereferences (Coverity)
- * correctly print nfs_args->addr info (sin_family/port/addr)
- * pawd should resolve path repeatedly until no more to do
- * handle old-style filehandles correctly (for mount points longer
- than 28 chars)
- * use-after-free bug in amfs_lookup_mntfs (Coverity)
- * don't turn off attribute cache for regular NFS mounts (improves
- performance)
- * detect G/DBM support via gdbm_compat library (Debian)
- * detect NDBM support in libc (FreeBSD 6)
-
-*** Notes specific to am-utils version 6.2a1
-
-MAJOR BUG FIXES: Synchronize Amd's view of its file systems with the
-kernel's NFS client-side DNLC/dcache. Amd changes its view when it reloads
-maps (automatically or via "amq -f") because new map entries could be added,
-old one removed, or existing ones changed. Amd also changes its view when a
-simple entry has expired and was flushed, or was forced out via "amq -u".
-Amd was not updating the mtime of its parent directory (often the amd
-automount point): this resulted in the kernel re-using cached entries, which
-are now possibly stale. Many users had seen this problem in the form of
-occasional ESTALE errors, or dangling/broken automounted symlinks,
-especially on systems under heavy use. To tell the kernel to ignore (flush)
-its old entries for an directory, the mtime of the directory must be updated
-(monotonically incremented). Amd was indeed doing so in several places, but
-unfortunately it was using time(2) which only provides a one-second
-resolution clock: this was fine a decade ago, but not good enough on today's
-fast systems; using only a one-second resolution clock meant that on busy
-systems that invoke Amd many times a second, some rapidly changing entries
-do not get flushed from the kernel, and the kernel thus uses stale entries.
-The solution to all of these was to rework the whole clock timer updates to
-use gettimeofday(), using a micro-second resolution timer, and to use that
-time whenever Amd needs to update an mtime/atime/ctime of any node.
-Finally, we now update the mtime in places that were never updated before
-(when a whole map is flushed or a single entry times out).
-
-Warning: some OSs, we discovered, are incapable of turning off their
-NFS attribute cache entirely. This means that Amd cannot work fully
-reliability on these systems, not under heavy load. This is documented in
-detail in the README.attrcache file included with this distribution.
-
-Include test-attrcache script to test the NFS attribute cache behavior using
-Amd.
-
-Tell syslog not to log automatically to /dev/console; it's unfriendly. If
-user really wants to, they can set it in /etc/syslog.conf.
-
-Moved pawd's path-matching functionality into Amd, where it can be done a
-lot more efficiently (we no longer need to construct and send the whole
-mounted tree, only to match small parts of it). This will lessen the CPU
-and network load on systems that use pawd heavily, and also minimize the
-chance that we exceed default or hard-coded UDP/TCP RPC packet sizes.
-
-Changed slightly how Amd behaves when you try to change log_options after
-Amd started (options can be turned on/off via "amq -x ARG"). It used to be
-that Amd won't let you turn off options which were on when Amd started.
-That limited users' ability to reduce Amd's logging levels to a minimum.
-Now, Amd will allow you to turn on/off any option, other than the two
-options "fatal" and "error." Both are on by default and considered
-mandatory. These two don't produce a lot of log messages, so your logs will
-remain small, but they are important to keep on, so Amd can report serious
-problems (including errors relating to incorrectly setting other log
-options).
-
-Amd now understands a new log_option called "defaults" which is synonymous
-with "fatal,error,user,warning,info" (and is also what logging happens by
-default).
-
-Amd now understands a new debug_option called "defaults" which is synonymous
-with "all,nohrtime,nomtab,noxdrtrace".
-
-Changed the misleading inverted logic of certain debug_options:
-
-1. "xdrtrace" is included in "all" because "all" (as the name implies),
- should be *all* options, not just a subset. If you want the old behavior
- of "all" then use "defaults" (all only adds "xdrtrace" which can be
- chatty on some systems).
-
-2. Certain debug options are hereby declared immutable: they may not be
- changed by "amq -D" after Amd starts, because it doesn't make much sense
- to change them after Amd starts, and it could really mess up Amd. These
- immutable flags are currently "daemon," "fork," "amq," and "mtab."
-
-3. the debug option "daemon" *will* cause Amd to daemonize. Before, it was
- causing Amd NOT to daemonize. This was greatly confusing, especially
- since the code, documentation, and comments often conflicted with each
- other. If you don't want Amd to daemonize, which is useful for debugging
- it, then use the debug option "nodaemon" -- it makes a lot more sense.
-
-4. Similarly, the "fork" option *will* cause Hlfsd to fork. Use "nofork" if
- you don't want Hlfsd to fork. This option is only applicable to Hlfsd.
-
-5. Similarly, the "amq" option, which is now on by default, will cause Amd
- to register itself with the RPC portmapper (for Amq), as is done
- normally. If you don't want Amd to register with the portmapper, use
- "noamq" -- this naming convention makes more sense. This was also
- confusingly documented and coded in places.
-
- Note: unfortunately, these changes to the "daemon," "fork," and "amq"
- debug options may be incompatible with people's previous use of Amd.
- Some of you may have to update your amd.conf slightly or your startup
- options (if they're hard-coded in your amd startup script). Sorry, but
- we have to fix those old problems sooner or later. However, if you never
- set any debug_options, or you used to "all," then you won't be affected
- by the change in meaning of these three flags.
-
-- minor new ports:
- i386-pc-linux-deb3.1
- i386-unknown-netbsdelf3.0 (BETA)
- powerpc-apple-darwin8.2.0
-
-- Bugs fixed:
- * abort with an error if yacc/lex programs not found
- * properly turn off the attrcache in freebsd and openbsd
- * can turn off attrcache on netbsd, but need kernel patch, see
- README.attrcache
- * pawd goes into an infinite loop on type:=auto
- * consistent search for file system mnttab/mount names
- * convert all sprintf to safer xsnprintf
- * convert all strcat to safer xstrlcat
- * convert all strcpy to safer xstrlcpy
- * fix three buffer overruns in expand_op (amd/opts.c)
- * pawd was trying UDP only, now try TCP if UDP failed
-
-*** Notes specific to am-utils version 6.1.1
-
-New amd.conf global parameter: forced_unmounts (default to "no"). If set to
-"yes," and the client OS supports forced or lazy unmounts, then Amd will
-attempt to use them if it gets any of three serious error conditions when
-trying to unmount an existing mount point or mount on top of one: EIO,
-ESTALE, or EBUSY. This could be useful to recover from serious conditions
-such as hardware failure of mounted disks, or NFS servers which are down
-permanently, were migrated, or changed their IP address. Only
-"type:=toplvl" mounts hung with EBUSY are forcibly unmounted using this
-option: this is useful to ensure that a new Amd can mount itself even if a
-previous Amd died and left its mount points hung, or to force Amd to
-shutdown cleanly, even if some processes (i.e., user shells) have their CWD
-on Amd's own mount point. This functionality is available for Linux, BSD44
-systems, Solaris, OSF/1, and partially for AIX.
-
-New amd.conf global parameter: truncate_log (default to "no"). If set to
-"yes", then Amd will truncate the log file (if it's a regular file) on
-startup. This could be useful when conducting extensive testing on Amd maps
-(or Amd itself) and you don't want to see log data from a previous run in
-the same file.
-
-- minor new ports:
- i386-pc-linux-fc4
- i386-pc-linux-suse9.3
- i386-pc-linuxoldld-deb3.1
-
-- bugs fixed:
- * safer mtab handling for Linux (locks + handles /proc/mounts)
- * small compile problems on Solaris 6 (rpcvers_t)
- * small compile problems on HPUX 10 (h_errno)
- * possibly missing definition of INADDR_NONE in wire.c
- * extern for sleep(3) may be missing on older gcc systems
- * updated nfs_args structure on aix4.
- * possible running off end of exported_ap[] array.
- * buffer overflow in pawd.
- * aix4 clean build.
- * use strlcat/snprintf in a few places for safety.
- * recover from IP address change of a down NFS server
- * don't discard restarted mntfs that was used.
-
-*** Notes specific to am-utils version 6.1
-
-- bugs fixed:
- * set timeo/retrans for type:=nfs only if user asked
-
-Also, if you want to know what's new in 6.1 compared to 6.0.x, it's
-EVERYTHING below this line, up to "6.0.4." Yes, that's a lot of stuff.
-
-*** Notes specific to am-utils version 6.1-rc7
-
-Remove alloca from am-utils, and rewrite code that used it.
-
-Assorted minor code cleanups.
-
-- minor new ports:
- alpha-unknown-linux-gentoo1.4.16
- alphaev56-dec-osf4.0f (using both cc and gcc)
- mips-sgi-irix6.5 (using both cc and gcc)
- mips-unknown-linux-gentoo1.4.16
- sparc64-unknown-linux-gentoo1.4.16
-
-- bugs fixed:
- * getwire() detects networks correctly on OSF/1
-
-*** Notes specific to am-utils version 6.1-rc6
-
-- minor new ports:
- i386-pc-linux-deb3.0
- i386-pc-linux-gentoo1.4.16
- i386-pc-linux-suse9.2
- i386-unknown-freebsd5.4
- i386-unknown-netbsdelf2.0.2
- i386-unknown-openbsd3.7
- powerpc-unknown-linux-yellowdog2.3
-
-- bugs fixed:
- * minor compile error of nfs_subr.c on some systems.
- * AIX 5.2/5.3 PPC compile fixes.
-
-*** Notes specific to am-utils version 6.1-rc5
-
-For NetBSD systems, $os used to say "netbsdelf1" or "netbsdelf2." Now it
-just says "netbsd."
-
-- minor new ports:
- powerpc-apple-darwin7.9.0
-
-- bugs fixed:
- * silly (but nasty) null pointer dereferencing
- * improved fix for '-opts' syntax for resetting map options
-
-*** Notes specific to am-utils version 6.1-rc4
-
-- bugs fixed:
- * check for "macosx" in M4 macros properly
- * minor memory leaks (thanks to Valgrind)
-
-*** Notes specific to am-utils version 6.1-rc3
-
-Minor fix to configure.in. Reran bootstrap to get a working configure
-script that indeed checks for certain Linux nfs/autofs headers.
-
-*** Notes specific to am-utils version 6.1-rc2
-
-New amd.conf global parameter: normalize_slashes (default to "yes"). If set
-to "no," then Amd will not condense repeated slashes or remove trailing ones
-from strings representing pathnames. This is sometimes useful with SMB
-mounts, which often require multiple slash characters in pathnames.
-
-Using a custom version of strlcpy instead of strncpy (but only where it
-makes sense), to minimize string overflow changes. Audited all use of
-strncpy/strlcpy to ensure safety.
-
-On Apple machines, use "powerpc" for $arch, instead of "Power Macintosh".
-Also, use sw_vers to find out more appropriate OS name (macosx) and OS
-version (10.3.x) than uname(3) reports.
-
-- minor new ports:
- powerpc64-unknown-linux-rhel4
- powerpc64-unknown-linux-sles9
-
-- bugs fixed:
- * pawd handles all file systems
- * fix double-free in type:=nfsx
- * timeo and retrans shouldn't be set for type:=toplvl
- * fix inconsistency in handling filehandle generation number
- * document proper use of hosts.allow (don't spawn)
- * single dash '-' map entry now resets the defaults
-
-*** Notes specific to am-utils version 6.1-rc1
-
-- minor new ports:
- i386-pc-linux-fc2 (Fedora Core 2).
- i386-pc-linux-fc3 (Fedora Core 3).
- i386-pc-linux-rhel3
- i386-pc-linux-rhel4
- i386-pc-linux-suse8.2
- i386-pc-linux-suse9.1
- i386-pc-solaris2.10
- i386-unknown-freebsd4.8
- i386-unknown-freebsd4.9
- i386-unknown-freebsd4.10
- i386-unknown-freebsd4.11
- i386-unknown-freebsd5.1 (5.1-RELEASE)
- i386-unknown-freebsd5.2 (5.2-RELEASE)
- i386-unknown-freebsd5.2.1 (5.2.1-RELEASE)
- i386-unknown-freebsd5.3 (5.3-RELEASE)
- i386-unknown-freebsd6.0 (6.0-CURRENT-SNAP001)
- i386-unknown-netbsdelf1.6.1
- i386-unknown-netbsdelf2.0
- i386-unknown-openbsd3.6
- ia64-hp-hpux11.20
- ia64-unknown-linux-rhel4
- mipsel-unknown-linux-rhPS2 (Linux on Sony PlayStation 2)
- powerpc-apple-darwin7.6.0
- powerpc-apple-darwin7.7.0
- powerpc-apple-darwin7.8.0
- powerpc-ibm-aix5.2.0.0
- powerpc-ibm-aix5.3.0.0
- sparc-sun-solaris2.10
- sparc64-unknown-linux-deb3.0
- x86_64-unknown-linux-rh2.9.5AS
-
-- support for executable maps ala Sun automounter. Set map_type=exec in
- amd.conf, and map_name to a program/script that takes a key as argv[1],
- and returns key-value pair on stdout. See also exec_map_timeout [global]
- parameter which defines how many seconds (default 10 sec) Amd will wait
- for an executable map program to return output before timing out. See
- am-utils manual for full details.
-
-- new amd.conf parameter "nfs_allow_insecure_port". Used to work around
- bugs in certain kernels, which cause them to try and talk to amd from
- unprivileged ports.
-
-- new amd.conf parameter: localhost_address. Used to override the localhost
- (often 127.0.0.1) address Amd uses to connect to for the local NFS server
- and RPC server.
-
-- new amd.conf [global] parameter: domain_strip (default "yes"). If set to
- "no," Amd won't strip domain names from host names, which is useful if
- your Amd maps are served by multiple domains and you want to tell from the
- logs which exact host did what.
-
-- new amd.conf [global] parameter: auto_attrcache (default to 0). Sets
- Amd's own NFS attribute-cache timeout in seconds. A value of 0 turns off
- attribute caching, meaning that Amd will be consulted via a kernel-RPC
- each time someone stat's the mount point (which could be abused as a
- denial-of-service attack). If you're concerned, set this to something
- greater than zero (a value of 1 second is currently recommended).
- Warning: if you set this option to any non-zero value, especially a large
- value, and you get ESTALE errors on your particular OS, then set this
- value back to 0 seconds.
-
-- four new amd.conf [global] parameters, similar to nfs_retry_interval and
- nfs_retransmit_counter, which allow you to set the "timeo" and "retrans"
- NFS mount parameters, respectively. Now you can set those parameters
- globally and separately for UDP vs. TCP, using any of these:
- nfs_retry_interval_udp, nfs_retransmit_counter_udp nfs_retry_interval_tcp,
- and nfs_retransmit_counter_tcp.
-
-- new amd.conf [global] parameter: preferred_amq_port. Allows you to select
- the UDP+TCP port that Amd's amq service will use with the RPC portmapper.
- Useful with firewalls and NAT'ed environments.
-
-- new amd.conf option "debug_mtab_file". Allows user to define the mtab
- file during debug-mtab mode. The default path is "/tmp/mtab".
-
-- new function selector xhost(ARG) which will match ARG against the current
- host name. This works even if ARG is a CNAME (unlike the host==ARG
- selector).
-
-- support restarting the automounter's own mount points (only over NFS,
- for now).
-
-- fully support WebNFS as per RFC 2054. It now tries v3/TCP first, falling
- back to v2/UDP if this doesn't work. The "webnfs" pseudo-mount options
- has been renamed (again) to "public" to match Solaris 2.
-
-- restructured the restarting of already-mounted filesystems, in the process
- also fixing a problem with restarting nfsx components.
-
-- support escaped slashes, needed for SMB mounts. Use '\\\/\\\/' in a
- string to get a double slash.
-
-- amd -v now prints domain, host, and hostd values: foo, example.com, and
- foo.example.com, respectively.
-
-- On Linux, if umount(2) failed with EIO or ESTALE, try the new umount2(2)
- system call with MNT_FORCE+MNT_DETACH. This could be quite helpful to
- unmounting hung mount points that otherwise cannot be fixed without a
- reboot.
-
-- The ping=N mount option now works. N defaults to 30 seconds for all NFS
- servers. It can now be set to any value for each server separately.
- Setting it to a large value can reduce the amount of NFS_NULL chatter on
- your network considerably, especially in large sites. Setting this to -1
- will turn off pings for that server (useful in NFS-HA setups). Setting N
- to 0 will pick the default ping value in Amd (currently 30 seconds). Note
- that if you have multiple Amd entries using the same file server, and each
- entry sets a different value of N, then each time Amd mounts a new entry,
- the ping value will be re-evaluated (and updated, turned off, or turned
- back on as needed). Note that NFS_NULL pings are sent for both UDP and
- TCP mounts, because even a hung TCP mount can cause user processes to
- hang.
-
-- file system inheritance code restructured, so it's no longer a pseudo file
- system, but actually integrated into Amd (as it should have been).
-
-- for type:=program, the "umount" program doesn't have to be defined; it'll
- default to "unmount ${fs}".
-
-- "amd -v" now prints the distribution name if it's known (e.g., rh9, fc3,
- suse8, etc.).
-
-- bugs fixed:
- * various memory management problems (leaks, etc)
- * fixed nfsx support
- * fixed a race involving late replies to network queries which
- arrive after the file system has already been mounted
- * recognize pcfs_args_t fields in FreeBSD 5
- * recognize other mount types in pawd: host, linkx, and nfsx
- * allow exactly one of umount and unmount in type:=program
- * race condition between calls to mntctl() on AIX
- * plock/mlockall wasn't inherited by fork(); moved after
- daemonizing.
- * fix inconsistency between Socket and TLI RPC timeouts.
- * don't warn when couldn't rmdir a dir with a readonly ancestor.
- * avoid hangs of amd in ctl-amd (must chdir to /)
- * workaround occasional daemonizing problems (parent won't die)
- * don't hang on exit if debug_options=mtab was used
- * utimeout=N mount option works with non-nfs types (ufs, pcfs, etc.)
- * SEGV (null pointer deref) in type:=program and type:=cachefs
- * unmount_on_exit of type:=program caused amd to hang
- * match amd2ldif output with ldap.schema
-
-*** Notes specific to am-utils version 6.1b4
-
-- minor new ports:
- i686-apple-darwin6.6
-
-- speed up the recovery of inherited (restarted) filesystems by using the
- proper waiting channels
-
-- added support for mounting webnfs filesystems, see entry below. It doesn't
- do any probing currently, so it will default to v2/UDP unless another
- version and/or protocol are explicitly specified.
-
-- pseudo-mount option "ignore_portmapper" renamed to "webnfs"
-
-- bugs fixed:
- * properly time out autofs filesystems on Linux
- * link mounts with relative targets weren't working on autofs
- * the link side of the nfsl file system wasn't working on autofs
- * umount code was accidentally turning all symlinks into directories
- during attempted umounts, causing stale filehandles
- * various minor build fixes for "impossible" configurations
- * prevent ldap code from dereferencing a null pointer
-
-*** Notes specific to am-utils version 6.1b3
-
-- new amd.conf option autofs_use_lofs, set by default to "yes". "yes" means
- using in-place mounts (lofs, bind mounts, etc.), thus utilizing one of
- Autofs's main advantages. "no" means using symlinks instead, which has
- the "/bin/pwd" problem and certain efficiency issues on Solaris 2.6+ and
- is also not supported on Solaris Autofs v1 and derivatives; however, the
- autofs code that uses symlinks is simpler and more thoroughly tested.
-
-- new amd.conf option map_default (can be used in [global] and overwritten
- in the per-map section). This will overwrite the /defaults entry of the
- map itself, to allow people to set defaults in amd.conf (useful when you
- cannot control your amd maps, or you'd rather not modify them globally).
-
-- for type:=program, you can use either unmount:=XXX or umount:=XXX (but not
- both). This new 'unmount' name is an alias for convenience.
-
-- fixed the "multiple matching sub-entries in a map entry" semantics to try
- mounting those sub-entries one by one, until either one succeeds or all
- fail. The old semantics of trying to mount everything in parallel and use
- the one that mounted fastest hasn't worked in a long time; in fact, 6.0
- currently simply ignores all but the first matching sub-entry.
-
-- made amd fail much faster (instantly, in fact) if the remote server
- doesn't have a functional portmapper or NFS service. Also reduced the
- total timeout to 3 seconds for a completely downed server.
-
-- new pseudo-mount option "ignore_portmapper"; not very useful currently,
- will make more sense when we also accept hard-coded ports for mountd and
- nfsd.
-
-- amd will no longer query the portmapper for all possible NFS versions and
- protocols if the user requested to use specific ones.
-
-- increased the major number for the library, so that 6.0 and 6.1 can't
- share libraries anymore.
-
-- support tcpd/libwrap tcpwrappers. If your system supports libwrap, then
- you can use /etc/hosts.allow and /etc/hosts.deny to control remote Amq
- access to Amd. The new amd.conf parameter use_tcpwrappers is set to "yes"
- by default.
-
-- support NULL entries in Hesiod maps, if they start with a ".".
-
-- code reorganization
-
-- documentation cleanup, corrections, and general updates. Better
- references to all man pages. Support newer texi2html. Proper building of
- DVI and PSI files. Allow building of am-utils manual in one long Web
- page.
-
-- minor new ports:
-
- ia64-unknown-linux-rh2.1AS (Red Hat Itanium Advanced Server)
- i386-unknown-freebsd5.0 (5.0-RELEASE)
- sparc64-unknown-linux-suse7.3
- i386-unknown-netbsdelf1.6.1
- i386-unknown-openbsd3.3
- i386-pc-solaris2.9
-
-- bugs fixed:
-
- * autofs mode on Linux was segfaulting on a silly error (and noone
- complained, which proves that I'm probably the only one testing
- these beta releases, tsk tsk).
- * fixed handling of host entries over autofs.
- * fixed handling of nfsl entries over autofs.
- * the matching in find_mntfs() was causing problems for inherited
- filesystems, so make an exception for them. Tighten the
- matching even more, to take into account the f/s type as well.
- * recognize xlatecookie mnttab option on netbsd
- * document Solaris lex bug (use flex)
- * document AIX 5.x NFS bug (need patch)
- * document Solaris 8 autofs version change (need to fix system
- header file)
- * ensure lex doesn't run out of output slots
- * support GNU flex-2.5.31+
- * force version.texi to be rebuilt unconditionally
- * mk-amd-map open db file exclusively (security)
- * turn off maintainer-only rules in distros
- * don't core dump if log_file is NULL (Solaris)
- * don't include malloc.h if stdlib.h exists
- * recognize file system failures (EIO) upon reading file maps
-
-*** Notes specific to am-utils version 6.1b2
-
-- new mount flag "softlookup", which determines how amd will respond to
- lookups of NFS shares already mounted (return a valid symlink or return
- EIO). The default, if "softlookup" is not specified, depends on whether the
- mount is "soft" or "hard".
-
-- return EIO instead of ENOENT if amd thinks the server is down; this allows
- well-written applications to sleep and retry the operation.
-
-- minor new ports:
-
- i386-apple-darwin6.0
- i386-pc-linux-rh8.0
- ia64-unknown-linux-rh2.1AW
- sparc-sun-solaris2.9
-
-- automatic support for loop mounts on Linux (deprecates the "loop" mount
- option)
-
-- new amd.conf parameter ldap_proto_version (default 2) for setting the LDAP
- protocol version to use.
-
-- bugs fixed:
-
- * redundancy mode (multiple servers for the same share) wasn't working
- * non-autofs mode had some rather nasty hangs on downed file servers
- * double-free'ing problem in assign_error_mntfs and free_continuation
- * free'ing non-malloc'ed memory in amfs_auto_mount
- * late server ping replies were not ignored
- * amfs_auto_lookup_mntfs wasn't propagating errors up to callers
- * autofs-v4 on Solaris 9 works
- * handle std{in,out,err} correctly when releasing controlling tty
- (for real this time)
- * don't cast pointers between enum_t and u_long, it doesn't work on
- 64-bit big-endian platforms
- * fix compile problem with mlockall() on Darwin
-
-*** Notes specific to am-utils version 6.1b1
-
-- Major Autofs work
- Partial support for Sun Autofs v1
- Documented known problems with Sun Autofs v1 (possible deadlocks)
- Fixes for Sun Autofs v2/v3
- Preliminary support for Sun Autofs v4 (Solaris 9)
- Kernel-based expirations for Linux Autofs
-
-- Minor new ports:
- powerpc-ibm-aix5.1.0.0
- i386-unknown-netbsd1.6A
-
-- Work around IBM's NFSv3 ABI change in aix4.3
-
-- trivial regression test suite started: run "make check" on a built
- am-utils to execute tests. Currently only one test which checks to see if
- "amd -v" executes correctly.
-
-- new command line option "amd -A arch" to overwrite the value of $arch.
-
-- bugs fixed:
-
- * Linux loop mounts of ISO images
- * assorted LDAP fixes
- * strerror not found on some systems
- * small fixes for hpux9 and aix43
- * exclude ldap/hesiod support unless both libraries+headers exist
- * fully support "xlatecookie" mount option
- * security: if -D noamq option, don't listen on socket.
-
-*** Notes specific to am-utils version 6.1a5:
-
-- browsable_dirs support for Solaris autofs, *without* mount storms!
-
-- new amd.conf global parameter: map_reload_interval (default 1 hour).
- Determines how often Amd checks to see if maps have changed at the source
- (and then reloading only those that have changed).
-
-- "amd -v" now lists bug-reporting address.
-
-- assorted code cleanups and porting to use latest versions of GNU
- Autotools.
-
-- opts:=loop works for type:=cdfs, for mounting ISO-9660 files on Linux.
-
-- bugs fixed:
-
- * fixed sublink support in Linux autofs (broken in a4)
- * hlfsd takes uid 0's home from root's passwd entry instead of
- defaulting to '/'
- * (not really our bug) Linux ignores the microseconds field in
- mtime, so hlfsd and amd need to increment the seconds field all
- the time to prevent symlink caching
- * generic map parsing bug which was rejecting a numerical mount
- option if it was the last option in the string.
- * file descriptor leak in Linux autofs.
- * "nolock" is an NFS mount option, not a generic one.
- * use mlockall(2) on systems that have it, for plock=yes. Now
- pinning Amd's pages in memory works on Linux.
- * ctl-amd/ctl-hlfsd correctly refer to @sysconfdir@ for alternate
- location of configuration files.
-
-*** Notes specific to am-utils version 6.1a4:
-
-- full autofs support for Solaris 2.[67], including symlinks, sublinks and
- direct mounts
-
-- fixed mount/umount deadlock in Linux autofs
-
-- fixed sublinks in Linux autofs
-
-- support for network/netmask pairs in the in_network() selector
-
-- support disabling LDAP and Hesiod support using configure
-
-- forward-ported all the fixes from the stable branch (MacOS X support,
- minor Linux fixes)
-
-- bind-mount support for type==link and type==lofs with Linux 2.4+
-
-- FiST lofs support under Linux (also in 6.0.6s2)
-
-*** Notes specific to am-utils version 6.1a3:
-
-- various things from the 6.0 branch:
- compile fixes for Linux 2.4-ac and 2.2.19pre+
- Darwin/Rhapsody/OS X support
- much reduced configure script (works around a bug in Darwin's cpp)
-
-*** Notes specific to am-utils version 6.1a2:
-
-- working autofs support for Solaris 2.[67], but incomplete
-
-- forward-ported all the changes up to 6.0.5s2
-
-- removed support for amq -M
-
-- known bugs
- nfsx support is broken
- linux NFS codes fixes
- NFS cache aliasing fixes
- lots of stuff ported from 6.0 branch
-
-*** Notes specific to am-utils version 6.1a1:
-
-- working autofs (v3 and v4) support for Linux!
-
-- forward-ported all the changes in 6.0.4s4
-
-- bugs fixed
- client-side fail-over to NFSv2/UDP
-
-- known bugs
- autofs v3 will probably break with host maps
-
-*** Notes specific to am-utils version 6.0.4:
-
-- NFSv3 support for Linux and HPUX-11
-
-- new amd.conf [global] options:
- nfs_vers: force all NFS mounts to version 2 or 3
- nfs_proto: force all NFS mounts to udp or tcp
-
-- new debug_options (amd -D):
- hrtime: turns on high-resolution timer if available
- readdir: traces browsable_dirs code
- xdrtrace: traces XDR routines
- (trace: only traces NFS and RPC)
-
-- new amq options:
- -H: shows usage
- -w: translate getpwd() into an Amd path
-
-- new map syntax:
- ${dollar}: to include a literal '$' in assignments
-
-- new "opts:=" options:
- ver3: turns on NFS version 3 on some systems (linux)
-
-- updated or minor new ports:
- alpha-dec-osf4.0f
- alphaev6-dec-osf5.0
- i386-pc-linux-rh6.2
- i386-unknown-freebsd3.4
-
-- bugs fixed:
- symlink mtime fixes to avoid u/mount race conditions
- update amq -s failed umounts count correctly
- linux compiles even if efs is available
- linux works with mount(2) option "intr"
- linux works with pcfs and cdfs
- handle std{in,out,err} correctly when releasing controlling tty
- browsable_readdir works on 64-bit kernel architectures
- irs/wire routines compile for bsdi{2,3,4}
-
-*** Notes specific to am-utils version 6.0.3:
-
-- updated or minor new ports:
- hppa1.0-hp-hpux11.00
- i386-pc-bsdi4.1
- i386-unknown-netbsd1.4.1
- sparc-sun-solaris2.8
- i*86-pc-linux-gnu-rh6.1
- (some preparations for Compaq Tru64)
-
-- new variables ${uid} and ${gid}, return the numeric UID/GID of the user
- (not root) who invokes an amd pathname. Similar to what hlfsd does.
-
-- automake now uses automatic dependency tracking
-
-- new mount options: optionstr, noexec, nomnttab
-
-- maps of type:=auto are now browsable (using map option "browsable")
-
-- ctl-amd has "status" argument (same as RedHat)
-
-- bugs fixed:
- document buggy AIX 4.3 plock() behavior
- fixes to stale file handle on symlinks
- reduce race conditions upon rapid umount/mount sequences
- use vsnprintf, more secure than vsprintf
- more assorted and smaller bugs
-
-*** Notes specific to am-utils version 6.0.2:
-
-- safe map reloads: when a map needs to be reloaded, it is reloaded into a
- temporary copy first. Only if the reload was completely successful, Amd
- discards the old map and uses the new one. Otherwise Amd continues to use
- the old maps. This should help a lot with transient NIS problems.
-
-- amq -f now also forces a (safe) map reload, but only if the timestamp on
- the maps was updated.
-
-- two new selector variables: ${vendor} and ${full_os}, which are the same
- as the output seen in "amd -v".
-
-- documentation fixes and updates
-
-- updated or minor new ports:
- i386-unknown-freebsdelf3.3
-
-- support 'ignore' flags (automntfs) in bsdi-4.1
-
-- bugs fixed:
- expn.pl uses correct sockaddr_in() not, pack()
- make sure configure --enable-*args take an argument
- don't busy-loop trying to rebind to ldap servers
- use vsnprintf, not vsprintf (security)
-
-*** Notes specific to am-utils version 6.0.1:
-
-- updated or minor new ports:
- i386-pc-bsdi4.0.1
- i386-unknown-freebsdelf3.0
- i386-unknown-freebsdelf3.1
- i386-unknown-freebsdelf3.2
- i386-unknown-freebsdelf4.0
- i386-unknown-netbsd1.4
- i386-unknown-openbsd2.5
- powerpc-unknown-linux-gnu
-
-- automount2amd added, a new script to convert Sun automount maps to Amd maps
-
-- new map function netgrpd(ARG), same as netgrp() but matches FQHN
-
-- 'ignore' is a generic mount option
-
-- hesiod info service isup() function to check if service is up
-
-- more Y2K fixes (see README.y2k for the full story)
-
-- using alloca.c on systems that don't have it (hpux9 with /bin/cc)
-
-- configure script reduced in size by using M4/sh loops instead of repeated
- entries
-
-- documentation updates
-
-- too many bugs fixed to list here:
- 'addopts' option works with 'remopts' as well as 'opts'
- AIX can perform NFS V.3 mounts explicitly
- NIS is_up fixed, especially for NIS+ running in compatibility mode
- amd -v incorrectly listing file systems that don't really work
- amd's own mounts use reserved ports if possible
- browsable directories works for Linux 2.3 (NFS cookies)
- bsd44 systems check for isofs flags
- bsd44 systems check for new options: norrio, gens, and extatt
- buildall works better on Ultrix's /bin/sh
- compile and build on Linux kernels 2.2 and newer
- compile and build on RedHat Linux 6.0 (glibc 2.1)
- compile and build on Solaris 7 (with or without vendor LDAP)
- completely eliminate all of amd's amq -M code, when not enabled
- correctly interpret failure code of unmount of type:=program
- don't create autofs listener service unless used
- don't list or process amq's -M option unless feature was turned on
- don't turn on/off noconn option if it was already in that state
- ldap info service: don't strcmp null strings
- lostaltmail correctly sets struct sockaddr_in
- make sure Linux systems have configured kernel headers
- test for bsize/namlen fields in nfs_args (linux mount versions 2/3)
- turn off broken NFS V.3 support for HPUX
- use getifaddrs() on bsd44 systems makes wire.c more reliable
- use matching NFS rsize/wsize on Linux 2.0 and 2.[123] kernels.
- verify that RPC requests come from reserved, privileged local ports
- warn when Linux kernel headers mismatch with running kernel
- pawd works for type:=nfsl too
-
-*** Notes specific to am-utils version 6.0:
-
-- updated or minor new ports:
- hppa2.0w-hp-hpux11.00,
- i386-pc-bsdi4.0
- i386-unknown-freebsd2.2.8
- i386-unknown-netbsd1.3.3
- i386-unknown-openbsd2.4
- mips-sgi-irix6.5
- powerpc-ibm-aix4.3.1.0
- i386-unknown-freebsd3.0 now supports nfs v.3
-
-- ctl-amd and ctl-hlfsd now compatible with RedHat's chkconfig utility
-
-- ctl-amd stop will now wait until amd is down
-
-- libamu.so completely self contained --- does not export any symbols which
- must be defined by the process linking with it. This is so shared
- libraries could be supported on systems that have restrictive shared
- libraries.
-
-- use latest autoconf, automake, and libtool (off of cygnus' CVS server) to
- support shared libraries on many more platforms.
-
-- posix code cleanups
-
-- bugs fixed:
- case insensitive host match in type:=nfsl
- correct swapped args to kill(2)
- try to avoid a race condition b/t mounting and unmounting
- yp_all support is found in libnsl in RH-5.1 systems
-
-*** Notes specific to am-utils version 6.0b1:
-
-- updated or minor new ports:
- - *-pc-linux-gnu (glibc2 systems such as RedHat 5.1)
- - sparc-sun-solaris2.7
- - i386-pc-solaris2.7
- - i386-unknown-freebsd3.0 (official release, post 4.4lite port)
- - sparc64-unknown-linux-gnu (RH 5.1 on Sun Sparc Ultra)
-
-- bugs fixed:
- - major memory leak in processing of /defaults
- - core dump if map_type given in amd.conf doesn't exist
- - memory leak in replacement yp_all
- - don't access uninitialized memory in DU 4.0
- - other smaller bugs, see ChangeLog
-
-*** Notes specific to am-utils version 6.0a16:
-
-- new ports:
- hppa1.0-hp-hpux11.00 (works, not NFS V.3 due to missing headers)
- mips-dec-ultrix4.3 (working, unverified)
-
-- new minor ports:
- i386-pc-bsdi3.1
- i386-unknown-netbsd1.3.1
- alpha-dec-osf2.1
-
-- new options addopt:=ARG will "smartly" add and override options specified
-in opts:=
-
-- new amd.conf options:
- pid_file: specifies the file to store the PID
- hesiod_base: specifies the base for the Hesiod service
- unmount_on_exit: if 'yes' will attempt to unmount all file systems
- when amd exits.
-
-- amd.conf file is parsed after all other command line options. If no
-options specified at all, then use /etc/amd.conf by default.
-
-- some variables' values are now compared case-insensitive as per specs,
-such as host names, domain names, and more.
-
-- NIS service uses a new isup() function to detect if the service is up
-before using it. Used to ensure amd doesn't clear the existing maps before
-reloading them, unless the remote info service is working.
-
-- new cdfs mount options: rrip, noversion, defperm, nodefperm (OSF)
-
-- support efs/xfs separately on irix
-
-- new -D info trace option to turn on info specific debugging, such as
-RES_DEBUG for hesiod services.
-
-- document updates and fixes
-
-- new file MIRRORS lists official mirror sites (also in am-utils home page)
-
-- new file BUGS lists known amd/OS bugs
-
-- source restructuring: rename all Amd file-systems' sources to amfs_ARG.c
-such that it matches the type:=ARG as well. Free names afs/dfs for Andrew
-F/S and Distributed F/S.
-
-- checkpoint config.guess several times during the long configure, so that
-if it is aborted midway, the bulk of the features discovered will be re-read
-from the config.cache file.
-
-- more systems support shared libraries (libtool 1.2)
-
-- using automake 1.3 + more fixes
-
-- bugs fixed:
- use dynamic buffer for list of interfaces, not fixed size
- output of amd -H duplicated if >2 interfaces
- -D mem for hlfsd not on by default (so it will daemonize)
- linux looks for ext2fs before ufs
- CDFS looks for 'isofs' mount type as well
- compile on Solaris 2.6 with /opt/SUNWspro/bin/cc
- various additional fixes which gcc 2.8.x reported
- print syslog help string based on what's supported
- correctly ignore loopback interface on SunOS 3.x
- don't use -lucb for strcasecmp
- hlfsd's dump file securely written in /usr/tmp/hlfsd.dump.XXXXXX
- inherit NFS V.3 mounts correctly
- write pid file securely
-
-*** Notes specific to am-utils version 6.0a15:
-
-- new ports:
- alpha-unknown-linux-gnu: works
- i386-unknown-netbsd1.3: fully working
- *-sun-sunos3: compiles, not tested
-
-- updated ports:
- m68k-next-nextstep3: cleaner compile, works.
-
-- new file system type nfsl (NFS Link). Uses nfs if file system is remote,
-and link if it is local (based on if $rhost equals the host name).
-
-- support for Solaris cachefs. Requires setting fs, rfs, and a new variable
-cachedir. See documentation for explanation, examples, and caveats.
-
-- support negated selector functions such as !exists(/foo/bar)
-
-- wire, network, netnumber, in_network() selectors now match against all
-locally attached networks (by either name or number), not just the first two
-interfaces.
-
-- new program pawd (and man page for it) --- Print Automounter Working
-Directory, to print the proper pathname of the cwd or any other pathname,
-adjusted for automounter paths, while avoiding mount points.
-
-- two new switches to amq: -U will force using UDP only; -T will force using
-only TCP to communicate with amd. If neither (or both) are specified, amq
-will try TCP first, and if that failed, will try UDP.
-
-- support syslog facilities, using "amd -l syslog:facility". Old behavior
-when using only -l syslog is to use the LOG_DAEMON facility.
-
-- you may specify browsable_dirs=full, to get a listing of all entries
-(other than /default), including those with '*' wildcard and '/'
-characters.
-
-- amd -D trace now also includes as much of struct nfs_args as can be
-displayed. Useful in figuring out what the kernel really gets during a
-mount(2), as opposed to what the /etc/mnttab file says. -D trace also
-traces the xdr_* functions.
-
-- support for versions of shared libamu version. upped version from 0.0.0
-to 1.0.0. each am-utils release that will change the library will also
-update its version.
-
-- amd/ops_TEMPLATE.c: a new template file for those brave enough to try and
-implement a new amd file system. Includes comments and other info useful
-for developers.
-
-- if localconfig.h exists in the current directory during the run of
-configure, it is included in all am-utils sources. This allows courageous
-developers to make certain modifications during compilations, and especially
-turn off undesired features (not very recommended).
-
-- documentation types and updates for all new features, ports, etc.
-
-- bugs fixed:
- support NFS mount options grpid and maxgrps
- nextstep: set NFS success code to 0 (NFS_OK), not 1 (EPERM)
- bsdi2: set NFS success code to 0 (NFS_OK), not 1 (EPERM)
- set NFS V.3 mount table names to "nfs" if vers/proto exist
- use mkstemp() if possible (more secure)
- ctl-amd looks for amd.conf in ${prefix}/etc after /etc
- hpux: use "ignore" mount table type
- openbsd2.2: turn off "noconn" mount option, so only connected used
- fixed memory leak in hlfsd (don't setpwent after endpwent)
- all NFS3 systems should have proto/vers mount/amd options
- DEBUG_MEM compiles and prints something more useful
- uninit_mntfs(): free() mf_private *after* it is used
- browsable_readdir: fewer bytes sent back to kernel for each chunk
- mount_toplvl: don't free() an automatic variable!
- amd should chdir() to / before daemonzing (for core dumps etc)
- cdfs should be called 'cdfs' not whatever the mnttab type is
- amd -v: don't print "FS:" list twice when >=2 net interfaces
-
-*** Notes specific to am-utils version 6.0a14:
-
-- updated ports:
- powerpc-ibm-aix4.2.1.0: NFS V.3 works
-
-- minor new ports:
- sparc-sun-sunos4.1.3C
- m68k-sun-sunos4.1.1 (sun3)
- mips-sgi-irix5.2
-
-- new option to amd, -O ARG, will override the operating systems *name* with
-ARG. Corrected documentation for amd -o ARG --- it overrides the operating
-system *version* and not the name as the docs incorrectly stated.
-
-- logging now behave more like syslog: will not print repeated strings, but
-rather a count such as "last message repeated N times". (N will not exceed
-100.)
-
-- restructured the code which deals with the numerous possible fields and
-flags that are set in struct nfs_args. That code was moved to libamu as
-the functions compute_nfs_args() and compute_automounter_nfs_args().
-
-- bugs fixed:
- mnttab name ufs/cdfs/pcfs/etc filesystems corrected
- use pmap_ping for amq (a must for secure portmappers, bsdi2/3)
- test for xfs (irix) as a disk-based file system
- set correct nfs_prot headers for Solaris 2.5
- removed stale code from lostaltmail.in
- lostaltmail will look for conf file in multiple locations
- assorted documentation corrections
- amq does not print "get_secure_amd_client" if run as root
-
-*** Notes specific to am-utils version 6.0a13:
-
-- new in_network(ARG) nomadic selector, true if ARG is the name (or number)
-of any of this host's network interfaces.
-
-- removed variables primnetname, primnetnum, subsnetname, and subsnetnum.
-(Kept "wire" and its alias "network", and "netnumber".)
-
-- include am-utils.dvi and am-utils.ps in distribution.
-
-- hlfsd supports new option -P ARG, for reading password map off of file
-ARG. Allows you to use the hlfs redirector using paths other than user's
-home directories.
-
-- use a replacement yp_all for some systems (irix) known to have a broken
-one which leaks a file descriptor each time called.
-
-- if remote NFS server is down or does not support portmap, downgrade
-machine to NFS V.2 and retry again later.
-
-- bugs:
- don't redefine yywrap on systems using a modified flex
- use correct "ignore" mnttab/mount option on hpux for df(1)
- use nfs_args' fsname field (hpux) to avoid syncer/mount(1) problems
- don't add ops_ufs.o twice to Makefile's $(OBJS)
- don't fail if autofs listener fails to initialize
- hlfsd should test if run as root after usage() and getopt
-
-- minor code cleanups for netbsd
-
-- html docs now in http://www.am-utils.org
-
-- added README file in binaries ftp directory
-
-*** Notes specific to am-utils version 6.0a12:
-
-- minor or updated/broken ports fixed:
- hppa1.1-hp-hpux10.10: compiles, untested (probably works).
- hppa1.1-hp-hpux9.05: compiles, untested (probably works).
- hppa1.1-hp-hpux9.07: compiles, untested (probably works).
- m68k-hp-hpux9.00: compiles, untested (probably works).
- rs6000-ibm-aix4.1.4.0: compiles, untested.
- sparc-sun-solaris2.6: works w/ NFS V.3.
- sparc-sun-sunos4.1.4: compiles, untested (probably works).
-
-- new ports:
- powerpc-ibm-aix4.2.1.0: compiles w/ NFS V.3, untested.
-
-- wire-test also checks for combinations of NFS protocol/version from the
-client to a remote (or local) host.
-
-- conf/mtab/mtab_file.c: use flock() to lock the file, and fcntl() if
-flock() is not available. (Used to prefer fcntl() over flock().)
-
-- bug fixes:
- tli get_nfs_version() gets into an infinite loop
- tli get_nfs_version() should time out faster
- sockets get_nfs_version() should work w/ secure portmappers
- ESTALE returned for NFS mounts for SunOS 4.x fixed
- do not exceed HOSTNAMESZ for nfs_args.hostname (get ENAMETOOLONG)
- properly initialize some mntent_t fields (fsck, freq, mnt_time)
- properly initialize some pcfs_args fields (mask, uid, gid)
- properly initialize some cdfs_args fields (ssector)
-
-*** Notes specific to am-utils version 6.0a11:
-
-- bug fixes:
- amd could not NFS mount v.2 servers from v.3 clients
- hlfsd will only use first occurrence of home dir for same uid
-
-*** Notes specific to am-utils version 6.0a10:
-
-- MAJOR DOCUMENTATION UPDATE! (first time in 6 years)
-
-- new ports:
- m68k-next-nextstep3: configures, compiles, not tested.
-
-- preliminary autofs support. See README.autofs for details.
-
-- new amd.conf [global] yes/no keywords:
- show_statfs_entries: shows number of entries for df(1)
- fully_qualified_hosts: use FQHN for NFS/RPC authentication
-
-- detect down remote hosts faster
-
-- log output of "amd -v" at startup
-
-- removed $osver override for solaris: now it is 2.5.1, not 5.5.1
-
-- buildall will use gmake first if available
-
-- bugs fixed:
- amd core dumped when remote host was down
- allow up to 1024 entries back from readdir()
- amd.conf works even if only [global] option defined
- avoid using bad memcmp() implementations
- fixed meaning of plock [global] option (was reversed)
- hlfsd infinite loop unless compiled with --enable-debug
- NIS code works with NIS+ servers in NIS compatibility mode
- reset tag fields in amd.conf so they don't carry to other entries
-
-*** Notes specific to am-utils version 6.0a9:
-
-- new ports:
- sparc-sun-solaris2.4:
- configures/compiles, and runs (no NFS V3)
- i386-unknown-openbsd2.1:
- configures/compiles, runs (NFS V3)
-
-- updated ports:
- i486-ncr-sysv4.3.03: configures/compiles, not tested
-
-- Multiple amd support: new amd.conf [global] key "portmap_program" can be
-used to specify an alternate RPC program number for amd to un/register.
-Allowed numbers range from 300019 to 300029. A matching new option for amq:
--P prognum, will use an alternate program number to contact.
-
-- man pages:
- amd.conf.5 new
- mk-amd-map.8 new
- amd.8 updated
- amq.8 updated
- (other man pages required minor updates)
-
-- shared libraries support expanded. Using GNU libtool-1.0. You can build
-a shared version of libamu, and link with it accordingly, by specifying
---enable-shared to configure. Default is --enable-static --disable-shared,
-and you can mix and match. See "INSTALL" file for listing of systems on
-which shared libraries seem to build and work fine.
-
-- new option: amq -p, will return the PID of the running amd (local or
-remote). Uses a new RPC message. Useful especially in "ctl-amd stop".
-
-- new configure script options --enable-ldflags, for specifying -L flags.
-The older --enable-libs is to be used only for -l options.
-
-- two new LDAP map options for amd.conf: ldap_cache_seconds and
-ldap_cache_maxmem.
-
-- new script, am-eject from Debian linux's version of amd-upl102.
-
-- additional passwd map support using var[0-3], from Debian folks.
-
-- hesiod code cleanup. works for hesiod 1.3 as well as 3.0.
-
-- removed defunct -h option from amd.
-
-- started using automake-1.2. This fixed several bugs that caused some
-versions of yacc/lex and non-GNU make to fail.
-
-- bug fixes:
- amd/hlfsd mounts should be hidden from df(1)
- use "noconn" option for nfs mounts (multi-homed hosts)
- don't use connected sockets on linux before 1.3.10 (from Debian)
- better checks for [gn]dbm
- forbid excessive retries after timeouts (from Debian)
- readdir(): don't skip over map entries with prefix, and include it
- more assorted linux fixes from Debian folks
- lofs mount on svr4 was broken
- find default value of $karch from uname() not $arch
- hlfsd failed to mount itself on some little-endians
-
-
-*** Notes specific to am-utils version 6.0a8:
-
-- new ports:
- i386-unknown-netbsd1.2.1: configures/compiles (with NFS V.3), works,
- but some OS stability problems exist.
-
-- updated ports:
- hppa1.1-hp-hpux9.01:
- now tested and working
- rs6000-ibm-aix3.2 and rs6000-ibm-aix3.2.5:
- now tested and working
-
-- fixed browsable directories (readdir) code.
-
-- better methods to find amd/hlfsd pid to kill in ctl-{amd,hlfsd}
-
-- "ignore/auto" mount types fixed for irix, sunos, and others, so "df" does not
-show amd mounts by default (but GNU df -a does).
-
-- each time amd is built, a new "build" version is incremented. See amd -v.
-
-- man page for fsinfo added
-
-- empty fillers for new file (bsd44) systems: nullfs, unionfs, umapfs.
-
-- when amd is not running, or portmapper is down, make amq timeout faster (5
-sec) than system default, usually 4-5 minutes.
-
-- bug fixes:
- hlfsd mount got "protocol not supported"
- first regular map in amd.conf didn't inherit global options
- make "bad" versions of lex still work with amd/conf_parse.l
- check for 'nodev' option, not 'nondev'
- typo in "ro" option, and fillers to ac{reg,dir}{min,max} and others
- amd.conf parsing done before switching default log/debug options
- allow doubly-quoted values in amd.conf
- hesiod-reload code cleanup
-
-- assorted code cleanup
-
-
-*** Notes specific to am-utils version 6.0a7:
-
-- new ports:
- i386-unknown-freebsd3.0:
- fully functional with NFS V.3
- sparc-sun-solaris2.3:
- fully functional (should work for 2.4)
- sparc-unknown-netbsd1.2E:
- configures/compiles (with NFS V.3), untested
-
-- updated ports:
- i386-pc-bsdi3.0:
- NFS V.3 works
- look for hesiod in libc
- mips-sgi-irix5.3:
- fully functional with NFS V.3
-
-- LDAP support! New [global] amd.conf options ldap_base and ldap_hostports.
-Also includes a new script amd2ldif to convert amd maps into plain text LDAP
-object files.
-
-- the following amd.conf variables: browsable_dirs, map_options, map_type,
-mount_type, and search_path --- can now be specified in [global] as well as
-the map entry itself. That way you can declare them only once in [global],
-and override them as needed per map.
-
-- option "cluster" added to [global] (HPUX clusters ala "amd -C").
-
-- assorted info_hesiod map fixes and cleanup. removed HESIOD_RELOAD code.
-
-- added netgrp(name) function to amd map syntax to see if current host is in
-the <name> netgroup.
-
-- removed unused option "amd -m".
-
-- filled in "tasks" file with todo items.
-
-- filled "COPYING" file with legal stuff.
-
-- cleanup: all global variables are now in one big structure (struct
-amu_global_options) that's easy to identify and enhance. Also migrated
-several flags that used be an integer each into one unsigned integer that's
-used as a bit-flag.
-
-- big fixes:
- xdr_mountres3 should compile only if has NFS V3
- lex/yacc macros show full pathname (to tell if correct one runs)
- misc fixes/cleanup
-
-
-*** Notes specific to am-utils version 6.0a6:
-
-- amd configuration file!
-
-See scripts/amd.conf-sample for help and some explanation. This new conf
-file allows for the following new features:
-
- default selectors can be turned on/off globally.
- browsable_dirs/readdir() support can be turned on per map.
- search paths for file type maps.
- can force the map type to file, nis, ndbm, etc. rather than default
- to looking at all of them.
- tag each map for "amd -T tag", useful for grouping maps.
- can override $os and others (so if you don't like "sunos5" default
- naming, set os=sos5 and it will work with your old maps).
- and more goodies...
-
-- enable-default-selectors: No longer turned on by the configure script or
-optionally compiled. Code made dynamic and can be turned on or off from the
-amd.conf file. This code is off by default, and must be turned on by
-amd.conf's [global] section.
-
-- new ports:
- mips-sgi-irix5.3: configure/compile, not tested
- i486-ncr-sysv4.3.03: configure/compile, not tested
-
-- updated ports:
- alpha-dec-osf4.0: major code redone
- sparc-sun-sunos4.1.3: fixed and working
- mips-sgi-irix6.2: tested with gcc and "cc -32 -Wl,-woff,84"
- mips-sgi-irix6.4: tested with gcc and "cc -32 -Wl,-woff,84"
-
-- better NFS3 port, including more support for proto= and vers=, and
-automatic determination of proto/vers combination.
-
-- conf/nfs_prot/nfs_prot_*.h: all of the NFS protocol header files had to be
-redone, because of the osf4 port. OSF used very different names for these,
-and they conflicted with am-utils'. The only solution was to more or less
-conform to OSF4's naming, and change all the others.
-
-- ctl-amd script:
- improved to look for amd.conf in $prefix/etc and /etc
- better methods for finding the pid of amd to kill
-
-- autoconf support for LDAP. amd/info_ldap.c needs to be written.
-
-- wire-test also reports the local IP address. Some systems have multiple,
-buggy version of get_myaddress(), esp. SunOS and Irix. Note that Solaris
-x86 has a buggy htonl().
-
-- amd -H prints usage.
-
-- bugs fixed:
- minor TLI problem in fwd_socket
- mount options properly comma delimited
- LIBS is set only to the right set of libraries to include
- selectors-on-default code ignored last selector ent in /defaults
- assorted code cleanups
-
-
-*** Notes specific to am-utils version 6.0a5:
-
-- NFS Version 3 support!!!
-
- Works on Solaris 2.5.1.
- Minimal testing done on Irix 6.
- Compiles cleanly on DU-4.0 but no tests performed.
-
-Will fall back to V2 mounts when V3 is not available. Will also use TCP if
-possible, UDP otherwise.
-
-- Ports to new platforms:
-
- alpha-dec-osf4.0 (not tested)
- i386-pc-bsdi3.0 (tested and working)
- i386-unknown-freebsd2.2.1 (tested and working)
- sparc-unknown-linux-gnu (tested and working)
-
-- New scripts added:
-
- amd2sun: convert amd maps to Sun automount maps
- ctl-amd: script to start/stop/restart amd
- ctl-hlfsd: script to start/stop/restart hlfsd
- expn: expand mail alias (used by hlfsd)
- lostaltmail: redeliver "lost" mail redirected by hlfsd
- lostaltmail.conf-sample: sample conf file for lostaltmail
- wait4amd: run a command once amd is up on a host
- wait4amd2die: wait for an amd process to die before returning
-
-- "amd -v" now includes more info and "amq -v" lists all of it.
-
-- new parser for linux specific mount options.
-
-- Main bugs fixed:
-
- "new toplvl readdir" bug caused amd to dump core
- handler for SIGCHLD didn't check for all possible children
- hlfsd leaking file descriptors when home file system was full
- cdfs/pcfs mounts should not timeout by default
- hesiod domain names should be compared in case-insensitive manner
- several printfs in amq were missing \n
-
-
-*** Notes specific to am-utils version 6.0a4:
-
-- amd services both TCP and UDP amq requests. This will help because of the
-limited UDP message size.
-
-- "amq -M" code is disabled by default because it is insecure. It is
-rarely used. Users who wish to use it should run
-"configure --enable-amq-mount".
-
-
-*** Notes specific to am-utils version 6.0a3:
-
-- New tested ports (configures, compiles, and runs):
-
- i386-unknown-freebsd2.2
-
-- New ports (configures and compiles correctly, not tested):
-
- rs6000-ibm-aix3.2.5
- rs6000-ibm-aix4.1.5.0
-
-- More am-utils programs ported to all existing platforms: hlfsd, fsinfo,
-mk-amd-map, and fixmount.
-
-- Shared libraries: a new configure option --enable-shared will build a
-shared libamu.so, link applications with it, and use it. Reduces binary
-sizes by 20-30%. This is the first step towards loadable modules, as many
-changes had to be done to be able to compile and use PIC code. This is code
-that obviously needs to be generalized to be able to build shared libraries
-on many other platforms. It was only tested on Solaris 5.5.1.
-
-- the file INSTALL contains the latest compatibility table of which
-platforms am-utils configures, compiles and runs on.
-
-- Trimmed down the size of the configure script. Some tests that are not
-used anywhere were removed.
-
-
-*** Notes specific to am-utils version 6.0a2:
-
-- New ports (configures and compiles correctly, not tested):
-
- i386-pc-bsdi2.1
- hppa1.1-hp-hpux9.01
- hppa1.1-hp-hpux10.20
-
-- new configure options:
-
- --enable-cppflags[=ARG]
- configure/compile with ARG (-I) preprocessor flags
- --enable-libs[=ARG]
- configure/compile with ARG (-L/-l) library flags
-
-- file system, mount table entries, and mount type tests can now look in
-/lib/modules and /proc/filesystems for statically/dyadically loadable kernel
-modules (linux)
-
-- prefer vfat over msdos/pc/etc file system for PCFS.
-
-- moved all fixed headers to include/am_defs. Left only #define/#undef
-entries in aux/acconfig.h.
-
-- make more sense of systems that have full, partial, or no NFS protocol
-headers.
-
-- minor fixes for NetBSD (untested platform).
-
-- hesiod map fixed.
-
-- buildall -D: new option to run even stricter developer options.
-
-- lots of other bugs fixed (see ChangeLog).
-
-
-*** Notes specific to am-utils version 6.0a1:
-
-I have it configure and build correctly for the following systems:
-
- i386-pc-solaris2.5.1
- i386-unknown-freebsd2.1.0
- mips-sgi-irix6.2
- sparc-sun-solaris2.5.1
- sparc-sun-sunos4.1.3
-
-Amq, wire-test, and "amd -v" work on all of the above. A real running amd
-was only tested and confirmed working on
-
- i386-pc-solaris2.5.1
- sparc-sun-solaris2.5.1
-
-Many things are still missing: options, features, etc. But for now, let's
-concentrate on getting the basic functionality working on the more popular
-systems.
diff --git a/contrib/amd/README b/contrib/amd/README
deleted file mode 100644
index 4b4aec0e8c0c..000000000000
--- a/contrib/amd/README
+++ /dev/null
@@ -1,104 +0,0 @@
-This is the official version of am-utils.
-
-See the file NEWS for news on this and previous releases.
-
-*** General Notes to alpha/beta testers:
-
-[A] as alpha/beta testers, I expect you to be able to find certain things on
-your own (especially look at the sources to figure out how things work).
-
-[B] if you intend to modify any files, first find out if the file you want
-to modify gets autogenerated from some other place. If so, modify it at the
-source.
-
-You can adjust some of the configuration of am-utils after it has been
-auto-configured by putting whatever definitions you wish in a file called
-localconfig.h, located in the top build directory (the same one where
-config.h is created for you).
-
-[C] there are several ways you can build am-utils:
-
-(1) run the buildall script as follows:
-
- ./buildall
-
-This would build all the applications inside a special directory relative to
-the root of the source tree, called A.<cpu-company-system>, where the <>
-part is filled in by GNU's config.guess script. This is the preferred
-method, for it will separate the build from the sources, and allow you to
-run buildall for multiple architectures concurrently.
-
-You can run "buildall -h" to see what options it takes.
-
-(2) run the configure script such as:
-
- ./configure
-
-and then run
-
- make
-
-This would configure amd in the directory you've run the configure script
-in, and the built it there. Run "make install" to install all the necessary
-files.
-
-Note that this is good for building only one version of amd on one
-architecture! Don't try this for multiple architectures. If you must, then
-after doing one such build, run "make distclean" and then reconfigure for
-another architecture.
-
-(3) run the configure script for build in a different location. Let's say
-that /src/am-utils-6.0 is where you unpacked the sources. So you could
-
- mkdir /src/build/sunos5
- cd /src/build/sunos5
- /src/am-utils-6.0/configure --srcdir=/src/am-utils-6.0
- make
-
-This is a manual method that will let you build in any directory outside the
-am-utils source tree. It requires that your "make" program understand
-VPATH. This can be used multiple times to build am-utils concurrently in
-multiple (but different) directories. In fact, the buildall script
-described above does precisely that, using the A.* subdirectories.
-
-(4) If you need to configure am-utils with extra libraries and/or headers,
-for example to add hesiod support, do so as follows:
-
- configure --enable-libs="-lhesiod -lresolv" \
- --enable-ldflags="-L/usr/local/hesiod/lib" \
- --enable-cppflags="-I/usr/local/hesiod/include"
-
-[D] If you modify any of the *.[chyl] sources in the directories amd, amq,
-hlfsd, lib, etc, all you need to do to get a new version of am-utils is run
-make.
-
-If you modify any of the files in the m4/ or conf/ directories, or any *.in
-or *.am file, then you must rebuild the configure script, Makefile.in files,
-aclocal.m4, etc. The best way to do so is to run
-
- ./bootstrap
-or
- ./buildall -K
-
-To be a developer and be able to run "bootstrap", you must have
-autoconf-2.68, automake-1.11.1, and libtool 2.2.6b installed on your system (or
-later versions thereof). You no longer need to get my special version of
-automake. Contact me if you'd like to be a maintainer and get access to the
-CVS server.
-
-After you've remade the basic configuration files you must rerun the
-buildall script to rerun configure and then remake the binaries.
-
-Modifying M4 macros may not be very intuitive to anyone that has not done so
-before. Let me know if you are having any problems with them. I fully
-expect, at least initially, to have to be the sole developers of the M4
-macros and let others concentrate on C sources.
-
-[E] Report all bugs via Bugzilla or the am-utils list (see
-www.am-utils.org). Avoid reporting to my personal email address. It is
-important to involve the whole list in bug fixes etc.
-
-Good luck.
-
-Erez Zadok,
-Maintainer, am-utils.
diff --git a/contrib/amd/README.attrcache b/contrib/amd/README.attrcache
deleted file mode 100644
index 7bd10874bf8c..000000000000
--- a/contrib/amd/README.attrcache
+++ /dev/null
@@ -1,129 +0,0 @@
- NFS Attribute Caching OS Problems and Amd
- Last updated September 18, 2005
-
-* Summary:
-
-Some OSs don't seem to have a way to turn off the NFS attribute cache, which
-breaks the Amd automounter so badly that it is not recommend using Amd on
-such OS for heavy use, not until this is fixed.
-
-
-* Details:
-
-Amd is a user-level NFSv2 server that manages automounts of all other file
-systems. The kernel contacts Amd via RPCs, and Amd in turn performs the
-actual mounts, and then responds back to the kernel's RPCs. Every kernel
-caches attributes of files, in a cache called the Directory Name Lookup
-Cache (DNLC), or a Directory Cache (dcache).
-
-Amd manages its namespace in the user level, but the kernel caches names
-itself. So the two must coordinate to ensure that both namespaces are in
-sync. If the kernel uses a cached entry from the DNLC, without consulting
-Amd, users may see corruption of the automounter namespace (symlinks
-pointing to the wrong places, ESTALE errors, and more). For example,
-suppose Amd timed out an entry and removed the entry from Amd's namespace.
-Amd has to tell the kernel to purge its corresponding DNLC entry too. The
-way Amd often does that is by incrementing the last modification time
-(mtime) of the parent directory. This is the most common method for kernels
-to check if their DNLC entries are stale: if the parent directory mtime is
-newer, the kernel will discard all cached entries for that directory, and
-will re-issue lookup methods. Those lookups will result in
-NFS_GETATTR/NFS_LOOKUP calls sent from the kernel down to Amd, and Amd can
-then properly inform the kernel of the new state of automounted entries.
-
-In order to ensure that Amd is "in charge" of its namespace without
-interference from the kernel, Amd will try to turn off the NFS attribute
-cache. It does so by using the NFSMNT_NOAC flag, if it exists, or by
-setting various "cache timeout" fields in struct nfs_args to 0 (acregmin,
-acregmax, acdirmin, or acdirmax).
-
-We have released a major new version of am-utils, version 6.1, in June 2005.
-Since then, a lot of people have experimented with Amd, in anticipation of
-migrating from the very old am-utils 6.0 to the new 6.1. For a couple of
-months since the release of 6.1, we have received reports of problems with
-Amd, especially under heavy use. Users reported getting ESTALE errors from
-time to time, or seeing automounted entries whose symlinks don't point to
-where it should be. After much debugging, we traced it to a few places in
-Amd where it wasn't updating the parent directory mtime as it should have;
-in some places where Amd was indeed updating the mtime, it was using a
-resolution of only 1 second, which was not fine enough under heavy load. We
-fixed this problem and switched to using a microsecond resolution mtime.
-
-After fixing this in Amd, we went on to verify that things work for other
-OSs. When we got to test certain BSDs, we found out that they always cache
-directory entries, and there is no way to turn it off completely.
-Specifically, if we set the ac{reg,dir}{min,max} fields in struct nfs_args
-all to zero, the kernel seems to cache the entries for a default number of
-seconds (something like 5-30 seconds). On some OSs, setting these four
-fields to 0 turns off the attribute cache, but not on some BSDs. We were
-able to verify this using Amd and a script that exercises the interaction of
-the kernel's attrcache and Amd. (If you're interested, the script can be
-made available.)
-
-We then experimented by setting the ac{reg,dir}{min,max} fields in struct
-nfs_args all to 1, the smallest non-zero value we could. When we ran the
-Amd exercising script, we found that the value of 1 reduced the race between
-the DNLC and Amd, and the script took a little longer to run before it
-detected an incoherency. That makes sense: the smaller the DNLC cache
-interval is, the shorter the window of vulnerability is. (BTW, the man
-pages on some OSs say that the ac{reg,dir}{min,max} fields use a 1 second
-resolution, but experimentation indicated it was in 0.1 second units.)
-
-Clearly, setting the ac{reg,dir}{min,max} fields to 0 is worse than setting
-it to 1 on those OSs that don't have a way to turn off the attribute cache.
-So the current workaround I've implemented in am-utils is to create a
-configuration parameter called "broken_attrcache" which, if turned on, will
-set these nfs_args fields to 1 instead of 0. I wish I didn't have to create
-such ugly workaround features in Amd, but I've got no choice.
-
-The near term solution is for every OS to support a true 'noac' flag, which
-can be added fairly easily. This'd make Amd work reliably.
-
-The long term solution is to implement Autofs support for all OSs and to
-support it in Amd. Currently, Amd supports autofs on Solaris and Linux;
-FreeBSD is next. Still, we found that even with autofs support, many
-sysadmins still prefer to use the good 'ol non-autofs mode.
-
-
-* Confirmed Status
-
-This is the confirmed status of various OSs' vulnerability to this attribute
-cache bug. We are slowly checking the status of other OSs. The status of
-any OS not listed is unknown as of the date at the top of this file.
-
-** Not Vulnerable (support a proper "noac" flag):
-
-Sun Solaris 8 and 9 (10 probably works fine)
-Linux: 2.6.11 kernel (2.4.latest probably works fine)
-FreeBSD 5.4 and 6.0-SNAP001 (older versions probably work fine)
-OpenBSD 3.7 (older versions probably work fine)
-
-** Vulnerable (don't support a proper "noac" flag natively):
-
-NetBSD 2.0.2 (older versions are also probably affected)
-
-Note: NetBSD has promised to support a noac flag hopefully after 2.1.0 is
-released (maybe in 3.0 or 2.2). In the mean time, you can apply one of
-these two kernel patchs to support a 'noac' flag in NetBSD 2.x or 3.x:
- ftp://ftp.netbsd.org/pub/NetBSD/misc/christos/2x.nfs.noac.diff
- ftp://ftp.netbsd.org/pub/NetBSD/misc/christos/3x.nfs.noac.diff
-After applying this patch and rebuilding your kernel, reboot with the new
-kernel. Then copy the new nfs.h and nfsmount.h from /sys/nfs/ to
-/usr/include/nfs/, and finally rebuild am-utils from scratch.
-
-** Testing
-
-When you build am-utils, a script named scripts/test-attrcache is built,
-which can be used to test the NFS attribute cache behavior of the current
-OS. You can run this script as root as follows:
-
-# make install
-# cd scripts
-# sh test-attrcache
-
-If you run this script on an OS whose status is known (and not listed
-above), please report it to us via Bugzilla or the am-utils mailing list
-(see www.am-utils.org), so we can record it in this file.
-
-Sincerely,
-Erez.
diff --git a/contrib/amd/README.ldap b/contrib/amd/README.ldap
deleted file mode 100644
index 24095cafa9ca..000000000000
--- a/contrib/amd/README.ldap
+++ /dev/null
@@ -1,57 +0,0 @@
-LDAP support for am-utils was originally done by Leif Johansson
-<leifj AT it.su.se>. He no longer maintains it.
-
-The current LDAP support for am-utils is for LDAPv2 only. Reportedly,
-LDAPv3 mostly works. Volunteers and patches are welcome.
-
-The IANA has assigned the following Private Enterprise Number to:
-
- 10180 Am-utils Organization Erez Zadok ezk AT am-utils.org
-
-There are three files in this directory that relate to LDAP:
-
-ldap.schema:
-
- This is the most current schema.
-
-ldap-id.txt:
-
- This is an experimental schema for amd mount maps in LDAP. Since
- LDAP isn't maintained now, this code may not match with either the
- current ldap_info.c code or with Amd mount maps in general.
-
- The schema is written in the form of an internet-draft but it has
- not been published as such. We need volunteers who know and use
- LDAP to clean it up and further its process of submission.
-
-ldap-id.ms:
-
- This is the NROFF source of the draft. To generate the text from
- it, run "nroff -ms ldap-id.ms > ldap-id.txt"
-
-Erez.
-
-------- Forwarded Message
-
-From: "IANA Private Enterprise Number" <iana-pen AT icann.org>
-To: "Erez Zadok" <ezk AT cs.columbia.edu>
-Subject: RE: Application for Enterprise-number (10180)
-Date: Sun, 15 Jul 2001 14:43:45 -0700
-
-Dear Erez,
-
-The IANA has assigned the following Private Enterprise
-Number to:
-
-10180 Am-utils Organization Erez Zadok ezk AT am-utils.org
-
-Please notify the IANA if there is a change in your contact
-or company information.
-
-Thank you,
-
-Bill Huang
-IANA - Private Enterprise Numbers
-
-------- End of Forwarded Message
-
diff --git a/contrib/amd/README.y2k b/contrib/amd/README.y2k
deleted file mode 100644
index b0b887c500a9..000000000000
--- a/contrib/amd/README.y2k
+++ /dev/null
@@ -1,26 +0,0 @@
- AM-UTILS YEAR-2000 COMPLIANCE
-
-Most likely am-utils is y2k compliant.
-
-I do not know for sure because I have not certified am-utils myself, nor do
-I have the time for it. I do not think that amd will be affected by y2k at
-all, because it does not do anything with dates other than print the date on
-the log file, in whatever format is provided by your os/libc --- especially
-the ctime(3) call.
-
-However, on Friday, September 18th 1998, Matthew Crosby <mcrosby AT ms.com>
-reported that they evaluated 6.0a16 and found it to be compliant.
-
-On March 26, 1999, Paul Balyoz <pbalyoz AT sedona.ch.intel.com> submitted a
-patch to lostaltmail which makes it print Y2K compliant dates. He used a
-code scanner and manually "eyeballed" the code and could not find any more
-problems. Paul's patch is included in am-utils-6.0.1s7 and newer versions.
-Paul also said that other 2-digit years used in am-utils are "harmless."
-
-NOTE: NONE OF THE PERSONS MENTIONED HERE, AUTHOR INCLUDED, ARE WILLING TO
-CERTIFY AM-UTILS AS Y2K COMPLIANT. USE AT YOUR OWN RISK.
-
----
-Erez Zadok.
-Maintainer, am-utils package and am-utils list.
-WWW: http://www.am-utils.org
diff --git a/contrib/amd/amd/am_ops.c b/contrib/amd/amd/am_ops.c
deleted file mode 100644
index 4d07dc807d90..000000000000
--- a/contrib/amd/amd/am_ops.c
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/am_ops.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-
-/*
- * The order of these entries matters, since lookups in this table are done
- * on a first-match basis. The entries below are a mixture of native
- * filesystems supported by the OS (HAVE_FS_FOO), and some meta-filesystems
- * supported by amd (HAVE_AMU_FS_FOO). The order is set here in expected
- * match-hit such that more popular filesystems are listed first (nfs is the
- * most popular, followed by a symlink F/S)
- */
-static am_ops *vops[] =
-{
-#ifdef HAVE_FS_NFS
- &nfs_ops, /* network F/S (version 2) */
-#endif /* HAVE_FS_NFS */
-#ifdef HAVE_AMU_FS_LINK
- &amfs_link_ops, /* symlink F/S */
-#endif /* HAVE_AMU_FS_LINK */
-
- /*
- * Other amd-supported meta-filesystems.
- */
-#ifdef HAVE_AMU_FS_NFSX
- &amfs_nfsx_ops, /* multiple-nfs F/S */
-#endif /* HAVE_AMU_FS_NFSX */
-#ifdef HAVE_AMU_FS_NFSL
- &amfs_nfsl_ops, /* NFS with local link existence check */
-#endif /* HAVE_AMU_FS_NFSL */
-#ifdef HAVE_AMU_FS_HOST
- &amfs_host_ops, /* multiple exported nfs F/S */
-#endif /* HAVE_AMU_FS_HOST */
-#ifdef HAVE_AMU_FS_LINKX
- &amfs_linkx_ops, /* symlink F/S with link target verify */
-#endif /* HAVE_AMU_FS_LINKX */
-#ifdef HAVE_AMU_FS_PROGRAM
- &amfs_program_ops, /* program F/S */
-#endif /* HAVE_AMU_FS_PROGRAM */
-#ifdef HAVE_AMU_FS_UNION
- &amfs_union_ops, /* union F/S */
-#endif /* HAVE_AMU_FS_UNION */
-
- /*
- * A few more native filesystems.
- */
-#ifdef HAVE_FS_UFS
- &ufs_ops, /* Unix F/S */
-#endif /* HAVE_FS_UFS */
-#ifdef HAVE_FS_XFS
- &xfs_ops, /* Unix (irix) F/S */
-#endif /* HAVE_FS_XFS */
-#ifdef HAVE_FS_EXT
- &ext2_ops, /* Unix (linux) F/S */
- &ext3_ops, /* Unix (linux) F/S */
- &ext4_ops, /* Unix (linux) F/S */
-#endif /* HAVE_FS_EXT */
-#ifdef HAVE_FS_EFS
- &efs_ops, /* Unix (irix) F/S */
-#endif /* HAVE_FS_EFS */
-#ifdef HAVE_FS_LOFS
- &lofs_ops, /* loopback F/S */
-#endif /* HAVE_FS_LOFS */
-#ifdef HAVE_FS_CDFS
- &cdfs_ops, /* CDROM/HSFS/ISO9960 F/S */
-#endif /* HAVE_FS_CDFS */
-#ifdef HAVE_FS_PCFS
- &pcfs_ops, /* Floppy/MSDOS F/S */
-#endif /* HAVE_FS_PCFS */
-#ifdef HAVE_FS_CACHEFS
- &cachefs_ops, /* caching F/S */
-#endif /* HAVE_FS_CACHEFS */
-#ifdef HAVE_FS_TMPFS
- &tmpfs_ops, /* /tmp (in memory) F/S */
-#endif /* HAVE_FS_TMPFS */
-#ifdef HAVE_FS_NULLFS
-/* FILL IN */ /* null (loopback) F/S */
-#endif /* HAVE_FS_NULLFS */
-#ifdef HAVE_FS_UNIONFS
-/* FILL IN */ /* union (bsd44) F/S */
-#endif /* HAVE_FS_UNIONFS */
-#ifdef HAVE_FS_UMAPFS
-/* FILL IN */ /* uid/gid mapping F/S */
-#endif /* HAVE_FS_UMAPFS */
-#ifdef HAVE_FS_UDF
- &udf_ops, /* UDF F/S */
-#endif /* HAVE_FS_UDF */
-#ifdef HAVE_FS_LUSTRE
- &lustre_ops, /* Lustre */
-#endif /* HAVE_FS_LUSTRE */
-
- /*
- * These 4 should be last, in the order:
- * (1) amfs_auto
- * (2) amfs_direct
- * (3) amfs_toplvl
- * (4) amfs_error
- */
-#ifdef HAVE_AMU_FS_AUTO
- &amfs_auto_ops, /* Automounter F/S */
-#endif /* HAVE_AMU_FS_AUTO */
-#ifdef HAVE_AMU_FS_DIRECT
- &amfs_direct_ops, /* direct-mount F/S */
-#endif /* HAVE_AMU_FS_DIRECT */
-#ifdef HAVE_AMU_FS_TOPLVL
- &amfs_toplvl_ops, /* top-level mount F/S */
-#endif /* HAVE_AMU_FS_TOPLVL */
-#ifdef HAVE_AMU_FS_ERROR
- &amfs_error_ops, /* error F/S */
-#endif /* HAVE_AMU_FS_ERROR */
- 0
-};
-
-
-void
-ops_showamfstypes(char *buf, size_t l)
-{
- struct am_ops **ap;
- int linesize = 0;
-
- buf[0] = '\0';
- for (ap = vops; *ap; ap++) {
- xstrlcat(buf, (*ap)->fs_type, l);
- if (ap[1])
- xstrlcat(buf, ", ", l);
- linesize += strlen((*ap)->fs_type) + 2;
- if (linesize > 62) {
- linesize = 0;
- xstrlcat(buf, "\n ", l);
- }
- }
-}
-
-
-static void
-ops_show1(char *buf, size_t l, int *linesizep, const char *name)
-{
- xstrlcat(buf, name, l);
- xstrlcat(buf, ", ", l);
- *linesizep += strlen(name) + 2;
- if (*linesizep > 60) {
- xstrlcat(buf, "\t\n", l);
- *linesizep = 0;
- }
-}
-
-
-void
-ops_showfstypes(char *buf, size_t l)
-{
- int linesize = 0;
-
- buf[0] = '\0';
-
-#ifdef MNTTAB_TYPE_AUTOFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_AUTOFS);
-#endif /* MNTTAB_TYPE_AUTOFS */
-
-#ifdef MNTTAB_TYPE_CACHEFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_CACHEFS);
-#endif /* MNTTAB_TYPE_CACHEFS */
-
-#ifdef MNTTAB_TYPE_CDFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_CDFS);
-#endif /* MNTTAB_TYPE_CDFS */
-
-#ifdef MNTTAB_TYPE_CFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_CFS);
-#endif /* MNTTAB_TYPE_CFS */
-
-#ifdef MNTTAB_TYPE_LOFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_LOFS);
-#endif /* MNTTAB_TYPE_LOFS */
-
-#ifdef MNTTAB_TYPE_EFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_EFS);
-#endif /* MNTTAB_TYPE_EFS */
-
-#ifdef MNTTAB_TYPE_MFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_MFS);
-#endif /* MNTTAB_TYPE_MFS */
-
-#ifdef MNTTAB_TYPE_NFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_NFS);
-#endif /* MNTTAB_TYPE_NFS */
-
-#ifdef MNTTAB_TYPE_NFS3
- ops_show1(buf, l, &linesize, "nfs3"); /* always hard-code as nfs3 */
-#endif /* MNTTAB_TYPE_NFS3 */
-
-#ifdef MNTTAB_TYPE_NULLFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_NULLFS);
-#endif /* MNTTAB_TYPE_NULLFS */
-
-#ifdef MNTTAB_TYPE_PCFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_PCFS);
-#endif /* MNTTAB_TYPE_PCFS */
-
-#ifdef MNTTAB_TYPE_TFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_TFS);
-#endif /* MNTTAB_TYPE_TFS */
-
-#ifdef MNTTAB_TYPE_TMPFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_TMPFS);
-#endif /* MNTTAB_TYPE_TMPFS */
-
-#ifdef MNTTAB_TYPE_UFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_UFS);
-#endif /* MNTTAB_TYPE_UFS */
-
-#ifdef MNTTAB_TYPE_UMAPFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_UMAPFS);
-#endif /* MNTTAB_TYPE_UMAPFS */
-
-#ifdef MNTTAB_TYPE_UNIONFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_UNIONFS);
-#endif /* MNTTAB_TYPE_UNIONFS */
-
-#ifdef MNTTAB_TYPE_XFS
- ops_show1(buf, l, &linesize, MNTTAB_TYPE_XFS);
-#endif /* MNTTAB_TYPE_XFS */
-
- /* terminate with a period, newline, and NULL */
- if (buf[strlen(buf)-1] == '\n')
- buf[strlen(buf) - 4] = '\0';
- else
- buf[strlen(buf) - 2] = '\0';
- xstrlcat(buf, ".\n", l);
-}
-
-
-/*
- * return string option which is the reverse of opt.
- * nosuid -> suid
- * quota -> noquota
- * ro -> rw
- * etc.
- * may return pointer to static buffer or subpointer within opt.
- */
-static char *
-reverse_option(const char *opt)
-{
- static char buf[80];
-
- /* sanity check */
- if (!opt)
- return NULL;
-
- /* check special cases */
- /* XXX: if this gets too long, rewrite the code more flexibly */
- if (STREQ(opt, "ro")) return "rw";
- if (STREQ(opt, "rw")) return "ro";
- if (STREQ(opt, "bg")) return "fg";
- if (STREQ(opt, "fg")) return "bg";
- if (STREQ(opt, "soft")) return "hard";
- if (STREQ(opt, "hard")) return "soft";
-
- /* check if string starts with 'no' and chop it */
- if (NSTREQ(opt, "no", 2)) {
- xstrlcpy(buf, &opt[2], sizeof(buf));
- } else {
- /* finally return a string prepended with 'no' */
- xstrlcpy(buf, "no", sizeof(buf));
- xstrlcat(buf, opt, sizeof(buf));
- }
- return buf;
-}
-
-
-/*
- * start with an empty string. for each opts1 option that is not
- * in opts2, add it to the string (make sure the reverse of it
- * isn't in either). finally add opts2. return new string.
- * Both opts1 and opts2 must not be null!
- * Caller must eventually free the string being returned.
- */
-static char *
-merge_opts(const char *opts1, const char *opts2)
-{
- mntent_t mnt2; /* place holder for opts2 */
- char *newstr; /* new string to return (malloc'ed) */
- char *tmpstr; /* temp */
- char *eq; /* pointer to whatever follows '=' within temp */
- char oneopt[80]; /* one option w/o value if any */
- char *revoneopt; /* reverse of oneopt */
- size_t len = strlen(opts1) + strlen(opts2) + 2; /* space for "," and NULL */
- char *s1 = xstrdup(opts1); /* copy of opts1 to munge */
-
- /* initialization */
- mnt2.mnt_opts = (char *) opts2;
- newstr = xmalloc(len);
- newstr[0] = '\0';
-
- for (tmpstr = strtok(s1, ",");
- tmpstr;
- tmpstr = strtok(NULL, ",")) {
- /* copy option to temp buffer */
- xstrlcpy(oneopt, tmpstr, sizeof(oneopt));
- /* if option has a value such as rsize=1024, chop the value part */
- if ((eq = strchr(oneopt, '=')))
- *eq = '\0';
- /* find reverse option of oneopt */
- revoneopt = reverse_option(oneopt);
- /* if option or its reverse exist in opts2, ignore it */
- if (amu_hasmntopt(&mnt2, oneopt) || amu_hasmntopt(&mnt2, revoneopt))
- continue;
- /* add option to returned string */
- if (newstr[0]) {
- xstrlcat(newstr, ",", len);
- xstrlcat(newstr, tmpstr, len);
- } else {
- xstrlcpy(newstr, tmpstr, len);
- }
- }
-
- /* finally, append opts2 itself */
- if (newstr[0]) {
- xstrlcat(newstr, ",", len);
- xstrlcat(newstr, opts2, len);
- } else {
- xstrlcpy(newstr, opts2, len);
- }
-
- XFREE(s1);
- return newstr;
-}
-
-
-am_ops *
-ops_search(char *type)
-{
- am_ops **vp;
- am_ops *rop = NULL;
- for (vp = vops; (rop = *vp); vp++)
- if (STREQ(rop->fs_type, type))
- break;
- return rop;
-}
-
-
-am_ops *
-ops_match(am_opts *fo, char *key, char *g_key, char *path, char *keym, char *map)
-{
- am_ops *rop = NULL;
- char *link_dir;
-
- /*
- * First crack the global opts and the local opts
- */
- if (!eval_fs_opts(fo, key, g_key, path, keym, map)) {
- rop = &amfs_error_ops;
- } else if (fo->opt_type == 0) {
- plog(XLOG_USER, "No fs type specified (key = \"%s\", map = \"%s\")", keym, map);
- rop = &amfs_error_ops;
- } else {
- /*
- * Next find the correct filesystem type
- */
- rop = ops_search(fo->opt_type);
- if (!rop) {
- plog(XLOG_USER, "fs type \"%s\" not recognized", fo->opt_type);
- rop = &amfs_error_ops;
- }
- }
-
- /*
- * Make sure we have a default mount option.
- * Otherwise skip past any leading '-'.
- */
- if (fo->opt_opts == 0)
- fo->opt_opts = xstrdup("rw,defaults");
- else if (*fo->opt_opts == '-') {
- /*
- * We cannot simply do fo->opt_opts++ here since the opts
- * module will try to free the pointer fo->opt_opts later.
- * So just reallocate the thing -- stolcke 11/11/94
- */
- char *old = fo->opt_opts;
- fo->opt_opts = xstrdup(old + 1);
- XFREE(old);
- }
-
- /*
- * If addopts option was used, then append it to the
- * current options and remote mount options.
- */
- if (fo->opt_addopts) {
- if (STREQ(fo->opt_opts, fo->opt_remopts)) {
- /* optimize things for the common case where opts==remopts */
- char *mergedstr;
- mergedstr = merge_opts(fo->opt_opts, fo->opt_addopts);
- plog(XLOG_INFO, "merge rem/opts \"%s\" add \"%s\" => \"%s\"",
- fo->opt_opts, fo->opt_addopts, mergedstr);
- XFREE(fo->opt_opts);
- XFREE(fo->opt_remopts);
- fo->opt_opts = mergedstr;
- fo->opt_remopts = xstrdup(mergedstr);
- } else {
- char *mergedstr, *remmergedstr;
- mergedstr = merge_opts(fo->opt_opts, fo->opt_addopts);
- plog(XLOG_INFO, "merge opts \"%s\" add \"%s\" => \"%s\"",
- fo->opt_opts, fo->opt_addopts, mergedstr);
- XFREE(fo->opt_opts);
- fo->opt_opts = mergedstr;
- remmergedstr = merge_opts(fo->opt_remopts, fo->opt_addopts);
- plog(XLOG_INFO, "merge remopts \"%s\" add \"%s\" => \"%s\"",
- fo->opt_remopts, fo->opt_addopts, remmergedstr);
- XFREE(fo->opt_remopts);
- fo->opt_remopts = remmergedstr;
- }
- }
-
- /*
- * Initialize opt_mount_type to "nfs", if it's not initialized already
- */
- if (!fo->opt_mount_type)
- fo->opt_mount_type = "nfs";
-
- /* Normalize the sublink and make it absolute */
- link_dir = fo->opt_sublink;
- if (link_dir && link_dir[0] && link_dir[0] != '/') {
- link_dir = str3cat((char *) NULL, fo->opt_fs, "/", link_dir);
- normalize_slash(link_dir);
- XFREE(fo->opt_sublink);
- fo->opt_sublink = link_dir;
- }
-
- /*
- * Check the filesystem is happy
- */
- XFREE(fo->fs_mtab);
-
- fo->fs_mtab = rop->fs_match(fo);
- if (fo->fs_mtab)
- return rop;
-
- /*
- * Return error file system
- */
- fo->fs_mtab = amfs_error_ops.fs_match(fo);
- return &amfs_error_ops;
-}
diff --git a/contrib/amd/amd/amd.8 b/contrib/amd/amd/amd.8
deleted file mode 100644
index fea790410270..000000000000
--- a/contrib/amd/amd/amd.8
+++ /dev/null
@@ -1,412 +0,0 @@
-.\"
-.\" Copyright (c) 1997-2014 Erez Zadok
-.\" Copyright (c) 1989 Jan-Simon Pendry
-.\" Copyright (c) 1989 Imperial College of Science, Technology & Medicine
-.\" Copyright (c) 1989 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" Jan-Simon Pendry at Imperial College, London.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\"
-.\" File: am-utils/amd/amd.8
-.\" $FreeBSD$
-.\"
-.Dd November 22, 2019
-.Dt AMD 8
-.Os
-.Sh NAME
-.Nm amd
-.Nd automatically mount file systems
-.Sh SYNOPSIS
-.Nm
-.Fl H
-.Nm
-.Op Fl F Ar conf_file
-.Nm
-.Op Fl nprvHS
-.Op Fl a Ar mount_point
-.Op Fl c Ar duration
-.Op Fl d Ar domain
-.Op Fl k Ar kernel-arch
-.Op Fl l Ar logfile
-.Op Fl o Ar op_sys_ver
-.Op Fl t Ar timeout.retransmit
-.Op Fl w Ar interval
-.Op Fl x Ar log-option
-.Op Fl y Ar YP-domain
-.Op Fl A Ar arch
-.Op Fl C Ar cluster-name
-.Op Fl D Ar option
-.Op Fl F Ar conf_file
-.Op Fl O Ar op_sys_name
-.Op Fl T Ar tag
-.Oo
-.Ar directory mapname
-.Op Fl map-options
-.Oc
-.Ar ...
-.Sh DESCRIPTION
-.Bf -symbolic
-The
-.Nm
-daemon in the
-.Fx
-base system is deprecated and will be removed before
-.Fx 13.0 .
-Users are advised to use
-.Xr autofs 5
-or the
-.Pa sysutils/am-utils
-port or package instead.
-.Ef
-.Pp
-The
-.Nm
-utility
-is a daemon that automatically mounts file systems
-whenever a file or directory
-within that file system is accessed.
-File systems are automatically unmounted when they
-appear to be quiescent.
-.Pp
-The
-.Nm
-utility
-operates by attaching itself as an
-.Tn NFS
-server to each of the specified
-.Ar directories .
-Lookups within the specified directories
-are handled by
-.Nm ,
-which uses the map defined by
-.Ar mapname
-to determine how to resolve the lookup.
-Generally, this will be a host name, some file system information
-and some mount options for the given file system.
-.Pp
-In the first form depicted above,
-.Nm
-will print a short help string.
-In the second form, if no options are
-specified, or if the
-.Fl F
-is used,
-.Nm
-will read configuration parameters from the file
-.Ar conf_file
-which defaults to
-.Pa /etc/amd.conf .
-The last form is described below.
-.Sh OPTIONS
-.Bl -tag -width indent
-.It Fl a Ar temporary-directory
-Specify an alternative location for the real mount points.
-The default is
-.Pa /.amd_mnt .
-.It Fl c Ar duration
-Specify a
-.Ar duration ,
-in seconds, that a looked up name remains
-cached when not in use.
-The default is 5 minutes.
-.It Fl d Ar domain
-Specify the local domain name.
-If this option is not
-given the domain name is determined from the hostname.
-.It Fl k Ar kernel-arch
-Specifies the kernel architecture.
-This is used solely
-to set the ${karch} selector.
-.It Fl l Ar logfile
-Specify a logfile in which to record mount and unmount events.
-If
-.Ar logfile
-is the string
-.Dq Li syslog ,
-then the log messages will be sent to the system log daemon by
-.Xr syslog 3 .
-The default syslog facility used is
-.Dv LOG_DAEMON .
-If you
-wish to change it, append its name to the log file name, delimited by a
-single colon.
-For example, if
-.Ar logfile
-is the string
-.Dq Li syslog:local7
-then
-.Nm
-will log messages via
-.Xr syslog 3
-using the
-.Dv LOG_LOCAL7
-facility (if it exists on the system).
-.It Fl n
-Normalize hostnames.
-The name referred to by ${rhost} is normalized relative to the
-host database before being used.
-The effect is to translate
-aliases into
-.Dq official
-names.
-.It Fl o Ar op_sys_ver
-Override the compiled-in version number of the operating system.
-Useful
-when the built in version is not desired for backward compatibility reasons.
-For example, if the build in version is
-.Dq Li 2.5.1 ,
-you can override it to
-.Dq Li 5.5.1 ,
-and use older maps that were written with the latter in mind.
-.It Fl p
-Print PID.
-Outputs the process ID of
-.Nm
-to standard output where it can be saved into a file.
-.It Fl r
-Restart existing mounts.
-The
-.Nm
-utility
-will scan the mount file table to determine which file systems
-are currently mounted.
-Whenever one of these would have
-been auto-mounted,
-.Nm
-.Em inherits
-it.
-.It Fl t Ar timeout.retransmit
-Specify the NFS
-.Ar timeout
-interval,
-in tenths of a second, between
-.Tn NFS/RPC
-retries (for UDP only).
-The default
-is 0.8 seconds.
-The second value alters the retransmit counter, which
-defaults to 11 retransmissions.
-Both of these values are used by the kernel
-to communicate with amd.
-Useful defaults are supplied if either or both
-values are missing.
-.Pp
-The
-.Xr amd 8
-utility
-relies on the kernel RPC retransmit mechanism to trigger mount retries.
-The values of these parameters change the overall retry interval.
-Too long
-an interval gives poor interactive response; too short an interval causes
-excessive retries.
-.It Fl v
-Version.
-Displays version and configuration information on standard error.
-.It Fl w Ar interval
-Specify an
-.Ar interval ,
-in seconds, between attempts to dismount
-file systems that have exceeded their cached times.
-The default is 2 minutes.
-.TP
-.It Fl x Ar options
-Specify run-time logging options. The options are a comma separated
-list chosen from:
-.Li fatal, error, user, warn, info, map, stats, defaults, all .
-Note that "fatal" and "error" are mandatory and cannot be turned off.
-.TP
-.It Fl y Ar domain
-Specify an alternative
-.Tn NIS
-domain from which to fetch the
-.Tn NIS
-maps.
-The default is the system domain name. This option is ignored if NIS
-support is not available.
-.It Fl A Ar arch
-Specifies the OS architecture.
-This is used solely to set the ${arch}
-selector.
-.It Fl C Ar cluster-name
-Specify an alternative HP-UX cluster name to use.
-.It Fl D Ar option
-Select from a variety of debug options.
-Prefixing an
-option with the string
-.Dq Li no
-reverses the effect of that option.
-Options are cumulative.
-The most useful option is
-.Dq Li all .
-.Pp
-Since
-.Fl D
-is only used for debugging other options are not documented here:
-the current supported set of options is listed by the
-.Fl v
-option
-and a fuller description is available in the program source.
-.It Fl F Ar conf_file
-Specify an
-.Nm
-configuration file to use.
-See
-.Xr amd.conf 5
-for description of this file's format.
-This configuration file is used to
-specify any options in lieu of typing many of them on the command line.
-The
-.Xr amd.conf 5
-file includes directives for every command line option amd has, and many
-more that are only available via the configuration file facility.
-The
-configuration file specified by this option is processed after all other
-options had been processed, regardless of the actual location of this option
-on the command line.
-.It Fl H
-Print help and usage string.
-.It Fl O Ar op_sys_name
-Override the compiled-in name of the operating system.
-Useful when the
-built in name is not desired for backward compatibility reasons.
-For
-example, if the build in name is
-.Dq Li sunos5 ,
-you can override it to
-.Dq Li sos5
-and use older maps which were written with the latter in mind.
-.It Fl S
-Do not lock the running executable pages of
-.Nm
-into memory.
-To improve
-.Nm Ns 's
-performance, systems that support the
-.Xr plock 3
-call, could lock the
-.Nm
-process into memory.
-This way there is less chance
-the operating system will schedule, page out, and swap the
-.Nm
-process as
-needed.
-This tends to improve
-.Nm Ns 's
-performance, at the cost of reserving the
-memory used by the
-.Nm
-process (making it unavailable for other processes).
-If this behavior is not desired, use the
-.Fl S
-option.
-.It Fl T Ar tag
-Specify a tag to use with
-.Xr amd.conf 5 .
-All map entries tagged with
-.Ar tag
-will be processed.
-Map entries that are not tagged are always processed.
-Map entries that are tagged with a tag other than
-.Ar tag
-will not be processed.
-.El
-.Sh FILES
-.Bl -tag -width ".Pa /etc/amd.conf"
-.It Pa /.amd_mnt
-directory under which file systems are dynamically mounted
-.It Pa /etc/amd.conf
-default configuration file
-.El
-.Sh CAVEATS
-Some care may be required when creating a mount map.
-.Pp
-Symbolic links on an
-.Tn NFS
-file system can be incredibly inefficient.
-In most implementations of
-.Tn NFS ,
-their interpolations are not cached
-by the kernel and each time a symbolic link is encountered during a
-.Em lookuppn
-translation it costs an
-.Tn RPC
-call to the
-.Tn NFS
-server.
-It would appear that a large improvement in real-time
-performance could be gained by adding a cache somewhere.
-Replacing symlinks with a suitable incarnation of the auto-mounter
-results in a large real-time speedup, but also causes a large
-number of process context switches.
-.Pp
-A weird imagination is most useful to gain full advantage of all
-the features.
-.Sh SEE ALSO
-.Xr domainname 1 ,
-.Xr hostname 1 ,
-.Xr syslog 3 ,
-.Xr amd.conf 5 ,
-.Xr mtab 5 ,
-.Xr amq 8 ,
-.Xr automount 8 ,
-.Xr mount 8 ,
-.Xr umount 8
-.Pp
-.Dq am-utils
-.Xr info 1
-entry.
-.Rs
-.%A Erez Zadok
-.%B "Linux NFS and Automounter Administration"
-.%O ISBN 0-7821-2739-8
-.%I Sybex
-.%D 2001
-.Re
-.Pp
-.Pa http://www.am-utils.org/
-.Rs
-.%T Amd \- The 4.4 BSD Automounter
-.Re
-.Sh HISTORY
-The
-.Nm
-utility first appeared in
-.Bx 4.4 .
-.Sh AUTHORS
-.An Jan-Simon Pendry Aq jsp@doc.ic.ac.uk ,
-Department of Computing, Imperial College, London, UK.
-.Pp
-.An Erez Zadok Aq ezk@cs.sunysb.edu ,
-Computer Science Department, Stony Brook
-University, Stony Brook, New York, USA.
-.Pp
-Other authors and contributors to am-utils are listed in the
-.Pa AUTHORS
-file distributed with am-utils.
diff --git a/contrib/amd/amd/amd.c b/contrib/amd/amd/amd.c
deleted file mode 100644
index 5efe0d81be99..000000000000
--- a/contrib/amd/amd/amd.c
+++ /dev/null
@@ -1,584 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * $Id: amd.c,v 1.8.2.6 2004/01/06 03:15:16 ezk Exp $
- * File: am-utils/amd/amd.c
- *
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * Automounter
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-struct amu_global_options gopt; /* where global options are stored */
-
-char pid_fsname[SIZEOF_PID_FSNAME]; /* "kiska.southseas.nz:(pid%d)" */
-char *hostdomain = "unknown.domain";
-#define SIZEOF_HOSTD (2 * MAXHOSTNAMELEN + 1) /* Host+domain */
-char hostd[SIZEOF_HOSTD]; /* Host+domain */
-char *endian = ARCH_ENDIAN; /* Big or Little endian */
-char *cpu = HOST_CPU; /* CPU type */
-char *PrimNetName; /* name of primary network */
-char *PrimNetNum; /* number of primary network */
-
-int immediate_abort; /* Should close-down unmounts be retried */
-int orig_umask = 022;
-int select_intr_valid;
-
-jmp_buf select_intr;
-struct amd_stats amd_stats; /* Server statistics */
-struct in_addr myipaddr; /* (An) IP address of this host */
-time_t do_mapc_reload = 0; /* mapc_reload() call required? */
-
-#ifdef HAVE_FS_AUTOFS
-int amd_use_autofs = 0;
-#endif /* HAVE_FS_AUTOFS */
-
-#ifdef HAVE_SIGACTION
-sigset_t masked_sigs;
-#endif /* HAVE_SIGACTION */
-
-
-/*
- * Signal handler:
- * SIGINT - tells amd to do a full shutdown, including unmounting all
- * filesystem.
- * SIGTERM - tells amd to shutdown now. Just unmounts the automount nodes.
- */
-static RETSIGTYPE
-sigterm(int sig)
-{
-#ifdef REINSTALL_SIGNAL_HANDLER
- signal(sig, sigterm);
-#endif /* REINSTALL_SIGNAL_HANDLER */
-
- switch (sig) {
- case SIGINT:
- immediate_abort = 15;
- break;
-
- case SIGTERM:
- immediate_abort = -1;
- /* fall through... */
-
- default:
- plog(XLOG_WARNING, "WARNING: automounter going down on signal %d", sig);
- break;
- }
- if (select_intr_valid)
- longjmp(select_intr, sig);
-}
-
-
-/*
- * Hook for cache reload.
- * When a SIGHUP arrives it schedules a call to mapc_reload
- */
-static RETSIGTYPE
-sighup(int sig)
-{
-#ifdef REINSTALL_SIGNAL_HANDLER
- signal(sig, sighup);
-#endif /* REINSTALL_SIGNAL_HANDLER */
-
- if (sig != SIGHUP)
- dlog("spurious call to sighup");
- /*
- * Force a reload by zero'ing the timer
- */
- if (amd_state == Run)
- do_mapc_reload = 0;
-}
-
-
-static RETSIGTYPE
-parent_exit(int sig)
-{
- /*
- * This signal handler is called during Amd initialization. The parent
- * forks a child to do all the hard automounting work, and waits for a
- * SIGQUIT signal from the child. When the parent gets the signal it's
- * supposed to call this handler and exit(3), thus completing the
- * daemonizing process. Alas, on some systems, especially Linux 2.4/2.6
- * with Glibc, exit(3) doesn't always terminate the parent process.
- * Worse, the parent process now refuses to accept any more SIGQUIT
- * signals -- they are blocked. What's really annoying is that this
- * doesn't happen all the time, suggesting a race condition somewhere.
- * (This happens even if I change the logic to use another signal.) I
- * traced this to something which exit(3) does in addition to exiting the
- * process, probably some atexit() stuff or other side-effects related to
- * signal handling. Either way, since at this stage the parent process
- * just needs to terminate, I'm simply calling _exit(2). Note also that
- * the OpenGroup doesn't list exit(3) as a recommended "Base Interface"
- * but they do list _exit(2) as one. This fix seems to work reliably all
- * the time. -Erez (2/27/2005)
- */
- _exit(0);
-}
-
-
-static int
-daemon_mode(void)
-{
- int bgpid;
-
-#ifdef HAVE_SIGACTION
- struct sigaction sa, osa;
-
- memset(&sa, 0, sizeof(sa));
- sa.sa_handler = parent_exit;
- sa.sa_flags = 0;
- sigemptyset(&(sa.sa_mask));
- sigaddset(&(sa.sa_mask), SIGQUIT);
- sigaction(SIGQUIT, &sa, &osa);
-#else /* not HAVE_SIGACTION */
- signal(SIGQUIT, parent_exit);
-#endif /* not HAVE_SIGACTION */
-
- bgpid = background();
-
- if (bgpid != 0) {
- /*
- * Now wait for the automount points to
- * complete.
- */
- for (;;)
- pause();
- /* should never reach here */
- }
-#ifdef HAVE_SIGACTION
- sigaction(SIGQUIT, &osa, NULL);
-#else /* not HAVE_SIGACTION */
- signal(SIGQUIT, SIG_DFL);
-#endif /* not HAVE_SIGACTION */
-
- /*
- * Record our pid to make it easier to kill the correct amd.
- */
- if (gopt.flags & CFM_PRINT_PID) {
- if (STREQ(gopt.pid_file, "/dev/stdout")) {
- printf("%ld\n", (long) am_mypid);
- /* flush stdout, just in case */
- fflush(stdout);
- } else {
- FILE *f;
- mode_t prev_umask = umask(0022); /* set secure temporary umask */
-
- f = fopen(gopt.pid_file, "w");
- if (f) {
- fprintf(f, "%ld\n", (long) am_mypid);
- (void) fclose(f);
- } else {
- fprintf(stderr, "cannot open %s (errno=%d)\n", gopt.pid_file, errno);
- }
- umask(prev_umask); /* restore umask */
- }
- }
-
- /*
- * Pretend we are in the foreground again
- */
- foreground = 1;
-
- /*
- * Dissociate from the controlling terminal
- */
- amu_release_controlling_tty();
-
- return getppid();
-}
-
-
-/*
- * Initialize global options structure.
- */
-static void
-init_global_options(void)
-{
-#if defined(HAVE_SYS_UTSNAME_H) && defined(HAVE_UNAME)
- static struct utsname un;
-#endif /* defined(HAVE_SYS_UTSNAME_H) && defined(HAVE_UNAME) */
- int i;
-
- memset(&gopt, 0, sizeof(struct amu_global_options));
-
- /* name of current architecture */
- gopt.arch = HOST_ARCH;
-
- /* automounter temp dir */
- gopt.auto_dir = "/.amd_mnt";
-
- /* toplevel attribute cache timeout */
- gopt.auto_attrcache = 0;
-
- /* cluster name */
- gopt.cluster = NULL;
-
- /* executable map timeout */
- gopt.exec_map_timeout = AMFS_EXEC_MAP_TIMEOUT;
-
- /*
- * kernel architecture: this you must get from uname() if possible.
- */
-#if defined(HAVE_SYS_UTSNAME_H) && defined(HAVE_UNAME)
- if (uname(&un) >= 0)
- gopt.karch = un.machine;
- else
-#endif /* defined(HAVE_SYS_UTSNAME_H) && defined(HAVE_UNAME) */
- gopt.karch = HOST_ARCH;
-
- /* amd log file */
- gopt.logfile = NULL;
-
- /* operating system name */
- gopt.op_sys = HOST_OS_NAME;
-
- /* OS version */
- gopt.op_sys_ver = HOST_OS_VERSION;
-
- /* full OS name and version */
- gopt.op_sys_full = HOST_OS;
-
- /* OS version */
- gopt.op_sys_vendor = HOST_VENDOR;
-
- /* pid file */
- gopt.pid_file = "/dev/stdout";
-
- /* local domain */
- gopt.sub_domain = NULL;
-
- /* reset NFS (and toplvl) retransmit counter and retry interval */
- for (i=0; i<AMU_TYPE_MAX; ++i) {
- gopt.amfs_auto_retrans[i] = -1; /* -1 means "never set before" */
- gopt.amfs_auto_timeo[i] = -1; /* -1 means "never set before" */
- }
-
- /* cache duration */
- gopt.am_timeo = AM_TTL;
-
- /* dismount interval */
- gopt.am_timeo_w = AM_TTL_W;
-
- /* map reload intervl */
- gopt.map_reload_interval = ONE_HOUR;
-
- /*
- * various CFM_* flags that are on by default.
- */
- gopt.flags = CFM_DEFAULT_FLAGS;
-
-#ifdef HAVE_MAP_HESIOD
- /* Hesiod rhs zone */
- gopt.hesiod_base = "automount";
-#endif /* HAVE_MAP_HESIOD */
-
-#ifdef HAVE_MAP_LDAP
- /* LDAP base */
- gopt.ldap_base = NULL;
-
- /* LDAP host ports */
- gopt.ldap_hostports = NULL;
-
- /* LDAP cache */
- gopt.ldap_cache_seconds = 0;
- gopt.ldap_cache_maxmem = 131072;
-
- /* LDAP protocol version */
- gopt.ldap_proto_version = 2;
-#endif /* HAVE_MAP_LDAP */
-
-#ifdef HAVE_MAP_NIS
- /* YP domain name */
- gopt.nis_domain = NULL;
-#endif /* HAVE_MAP_NIS */
-}
-
-
-/*
- * Lock process text and data segment in memory (after forking the daemon)
- */
-static void
-do_memory_locking(void)
-{
-#if defined(HAVE_PLOCK) || defined(HAVE_MLOCKALL)
- int locked_ok = 0;
-#else /* not HAVE_PLOCK and not HAVE_MLOCKALL */
- plog(XLOG_WARNING, "Process memory locking not supported by the OS");
-#endif /* not HAVE_PLOCK and not HAVE_MLOCKALL */
-#ifdef HAVE_PLOCK
-# ifdef _AIX
- /*
- * On AIX you must lower the stack size using ulimit() before calling
- * plock. Otherwise plock will reserve a lot of memory space based on
- * your maximum stack size limit. Since it is not easily possible to
- * tell what should the limit be, I print a warning before calling
- * plock(). See the manual pages for ulimit(1,3,4) on your AIX system.
- */
- plog(XLOG_WARNING, "AIX: may need to lower stack size using ulimit(3) before calling plock");
-# endif /* _AIX */
- if (!locked_ok && plock(PROCLOCK) != 0)
- plog(XLOG_WARNING, "Couldn't lock process pages in memory using plock(): %m");
- else
- locked_ok = 1;
-#endif /* HAVE_PLOCK */
-#ifdef HAVE_MLOCKALL
- if (!locked_ok && mlockall(MCL_CURRENT|MCL_FUTURE) != 0)
- plog(XLOG_WARNING, "Couldn't lock process pages in memory using mlockall(): %m");
- else
- locked_ok = 1;
-#endif /* HAVE_MLOCKALL */
-#if defined(HAVE_PLOCK) || defined(HAVE_MLOCKALL)
- if (locked_ok)
- plog(XLOG_INFO, "Locked process pages in memory");
-#endif /* HAVE_PLOCK || HAVE_MLOCKALL */
-
-#if defined(HAVE_MADVISE) && defined(MADV_PROTECT)
- madvise(NULL, 0, MADV_PROTECT); /* may be redundant of the above worked out */
-#endif /* defined(HAVE_MADVISE) && defined(MADV_PROTECT) */
-}
-
-
-int
-main(int argc, char *argv[])
-{
- char *domdot, *verstr, *vertmp;
- int ppid = 0;
- int error;
- char *progname = NULL; /* "amd" */
- char hostname[MAXHOSTNAMELEN + 1] = "localhost"; /* Hostname */
-
- /*
- * Make sure some built-in assumptions are true before we start
- */
- assert(sizeof(nfscookie) >= sizeof(u_int));
- assert(sizeof(int) >= 4);
-
- /*
- * Set processing status.
- */
- amd_state = Start;
-
- /*
- * Determine program name
- */
- if (argv[0]) {
- progname = strrchr(argv[0], '/');
- if (progname && progname[1])
- progname++;
- else
- progname = argv[0];
- }
- if (!progname)
- progname = "amd";
- am_set_progname(progname);
-
- plog(XLOG_WARNING, "built-in amd in FreeBSD is deprecated and will be removed before FreeBSD 13");
-
- /*
- * Initialize process id. This is kept
- * cached since it is used for generating
- * and using file handles.
- */
- am_set_mypid();
-
- /*
- * Get local machine name
- */
- if (gethostname(hostname, sizeof(hostname)) < 0) {
- plog(XLOG_FATAL, "gethostname: %m");
- going_down(1);
- return 1;
- }
- hostname[sizeof(hostname) - 1] = '\0';
-
- /*
- * Check it makes sense
- */
- if (!*hostname) {
- plog(XLOG_FATAL, "host name is not set");
- going_down(1);
- return 1;
- }
-
- /*
- * Initialize global options structure.
- */
- init_global_options();
-
- /*
- * Partially initialize hostd[]. This
- * is completed in get_args().
- */
- if ((domdot = strchr(hostname, '.'))) {
- /*
- * Hostname already contains domainname.
- * Split out hostname and domainname
- * components
- */
- *domdot++ = '\0';
- hostdomain = domdot;
- }
- xstrlcpy(hostd, hostname, sizeof(hostd));
- am_set_hostname(hostname);
-
- /*
- * Setup signal handlers
- */
- /* SIGINT: trap interrupts for shutdowns */
- setup_sighandler(SIGINT, sigterm);
- /* SIGTERM: trap terminate so we can shutdown cleanly (some chance) */
- setup_sighandler(SIGTERM, sigterm);
- /* SIGHUP: hangups tell us to reload the cache */
- setup_sighandler(SIGHUP, sighup);
- /*
- * SIGCHLD: trap Death-of-a-child. These allow us to pick up the exit
- * status of backgrounded mounts. See "sched.c".
- */
- setup_sighandler(SIGCHLD, sigchld);
-#ifdef HAVE_SIGACTION
- /* construct global "masked_sigs" used in nfs_start.c */
- sigemptyset(&masked_sigs);
- sigaddset(&masked_sigs, SIGINT);
- sigaddset(&masked_sigs, SIGTERM);
- sigaddset(&masked_sigs, SIGHUP);
- sigaddset(&masked_sigs, SIGCHLD);
-#endif /* HAVE_SIGACTION */
-
- /*
- * Fix-up any umask problems. Most systems default
- * to 002 which is not too convenient for our purposes
- */
- orig_umask = umask(0);
-
- /*
- * Figure out primary network name
- */
- getwire(&PrimNetName, &PrimNetNum);
-
- /*
- * Determine command-line arguments.
- * (Also initialize amd.conf parameters, maps, and more.)
- */
- get_args(argc, argv);
-
- /*
- * Log version information.
- */
- vertmp = get_version_string();
- verstr = strtok(vertmp, "\n");
- plog(XLOG_INFO, "AM-UTILS VERSION INFORMATION:");
- while (verstr) {
- plog(XLOG_INFO, "%s", verstr);
- verstr = strtok(NULL, "\n");
- }
- XFREE(vertmp);
-
- /*
- * Get our own IP address so that we can mount the automounter. We pass
- * localhost_address which could be used as the default localhost
- * name/address in amu_get_myaddress().
- */
- amu_get_myaddress(&myipaddr, gopt.localhost_address);
- plog(XLOG_INFO, "My ip addr is %s", inet_ntoa(myipaddr));
-
- /* avoid hanging on other NFS servers if started elsewhere */
- if (chdir("/") < 0)
- plog(XLOG_INFO, "cannot chdir to /: %m");
-
- /*
- * Now check we are root.
- */
- if (geteuid() != 0) {
- plog(XLOG_FATAL, "Must be root to mount filesystems (euid = %ld)", (long) geteuid());
- going_down(1);
- return 1;
- }
-
-#ifdef HAVE_MAP_NIS
- /*
- * If the domain was specified then bind it here
- * to circumvent any default bindings that may
- * be done in the C library.
- */
- if (gopt.nis_domain && yp_bind(gopt.nis_domain)) {
- plog(XLOG_FATAL, "Can't bind to NIS domain \"%s\"", gopt.nis_domain);
- going_down(1);
- return 1;
- }
-#endif /* HAVE_MAP_NIS */
-
- if (amuDebug(D_DAEMON))
- ppid = daemon_mode();
-
- /*
- * Lock process text and data segment in memory.
- */
- if (gopt.flags & CFM_PROCESS_LOCK) {
- do_memory_locking();
- }
-
- do_mapc_reload = clocktime(NULL) + gopt.map_reload_interval;
-
- /*
- * Register automounter with system.
- */
- error = mount_automounter(ppid);
- if (error && ppid)
- kill(ppid, SIGALRM);
-
-#ifdef HAVE_FS_AUTOFS
- /*
- * XXX this should be part of going_down(), but I can't move it there
- * because it would be calling non-library code from the library... ugh
- */
- if (amd_use_autofs)
- destroy_autofs_service();
-#endif /* HAVE_FS_AUTOFS */
-
- going_down(error);
-
- abort();
- return 1; /* should never get here */
-}
diff --git a/contrib/amd/amd/amd.h b/contrib/amd/amd/amd.h
deleted file mode 100644
index d8061a87990b..000000000000
--- a/contrib/amd/amd/amd.h
+++ /dev/null
@@ -1,923 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amd.h
- *
- */
-
-#ifndef _AMD_H
-#define _AMD_H
-
-
-/*
- * MACROS:
- */
-
-/*
- * Define a default debug mtab path for systems
- * that support mtab on file.
- */
-#ifdef MOUNT_TABLE_ON_FILE
-# define DEBUG_MNTTAB_FILE "/tmp/mtab"
-#endif /* MOUNT_TABLE_ON_FILE */
-
-/* Max line length that info services can handle */
-#define INFO_MAX_LINE_LEN 1500
-
-/* options for amd.conf */
-#define CFM_BROWSABLE_DIRS 0x00000001
-#define CFM_MOUNT_TYPE_AUTOFS 0x00000002 /* use kernel autofs support */
-#define CFM_SELECTORS_IN_DEFAULTS 0x00000004
-#define CFM_NORMALIZE_HOSTNAMES 0x00000008
-#define CFM_PROCESS_LOCK 0x00000010
-#define CFM_PRINT_PID 0x00000020
-#define CFM_RESTART_EXISTING_MOUNTS 0x00000040
-#define CFM_SHOW_STATFS_ENTRIES 0x00000080
-#define CFM_FULLY_QUALIFIED_HOSTS 0x00000100
-#define CFM_BROWSABLE_DIRS_FULL 0x00000200 /* allow '/' in readdir() */
-#define CFM_UNMOUNT_ON_EXIT 0x00000400 /* when amd finishing */
-#define CFM_USE_TCPWRAPPERS 0x00000800
-#define CFM_AUTOFS_USE_LOFS 0x00001000
-#define CFM_NFS_INSECURE_PORT 0x00002000
-#define CFM_DOMAIN_STRIP 0x00004000
-#define CFM_NORMALIZE_SLASHES 0x00008000 /* normalize slashes? */
-#define CFM_FORCED_UNMOUNTS 0x00010000 /* forced unmounts? */
-#define CFM_TRUNCATE_LOG 0x00020000 /* truncate log file? */
-#define CFM_SUN_MAP_SYNTAX 0x00040000 /* Sun map syntax? */
-#define CFM_NFS_ANY_INTERFACE 0x00080000 /* all interfaces are acceptable */
-
-/* defaults global flags: plock, tcpwrappers, and autofs/lofs */
-#define CFM_DEFAULT_FLAGS (CFM_PROCESS_LOCK|CFM_USE_TCPWRAPPERS|CFM_AUTOFS_USE_LOFS|CFM_DOMAIN_STRIP|CFM_NORMALIZE_SLASHES)
-
-/*
- * macro definitions for automounter vfs/vnode operations.
- */
-#define VLOOK_CREATE 0x1
-#define VLOOK_DELETE 0x2
-#define VLOOK_LOOKUP 0x3
-
-/*
- * macro definitions for automounter vfs capabilities
- */
-#define FS_DIRECTORY 0x0001 /* This looks like a dir, not a link */
-#define FS_MBACKGROUND 0x0002 /* Should background this mount */
-#define FS_NOTIMEOUT 0x0004 /* Don't bother with timeouts */
-#define FS_MKMNT 0x0008 /* Need to make the mount point */
-#define FS_UBACKGROUND 0x0010 /* Unmount in background */
-#define FS_BACKGROUND (FS_MBACKGROUND|FS_UBACKGROUND)
-#define FS_DISCARD 0x0020 /* Discard immediately on last reference */
-#define FS_AMQINFO 0x0040 /* Amq is interested in this fs type */
-#define FS_AUTOFS 0x0080 /* This filesystem can be an autofs f/s */
-#define FS_DIRECT 0x0100 /* Direct mount */
-#define FS_ON_AUTOFS 0x0200 /* This filesystem can be mounted directly
- onto an autofs mountpoint */
-
-/*
- * macros for struct am_node (map of auto-mount points).
- */
-#define AMF_NOTIMEOUT 0x0001 /* This node never times out */
-#define AMF_ROOT 0x0002 /* This is a root node */
-#define AMF_AUTOFS 0x0004 /* This node is part of an autofs filesystem */
-#define AMF_REMOUNT 0x0008 /* This node needs to be remounted */
-#define AMF_SOFTLOOKUP 0x0010 /* This node returns EIO if server is down */
-
-/*
- * macros for struct mntfs (list of mounted filesystems)
- */
-#define MFF_MOUNTED 0x0001 /* Node is mounted */
-#define MFF_MOUNTING 0x0002 /* Mount is in progress */
-#define MFF_UNMOUNTING 0x0004 /* Unmount is in progress */
-#define MFF_RESTART 0x0008 /* Restarted node */
-#define MFF_MKMNT 0x0010 /* Delete this node's am_mount */
-#define MFF_ERROR 0x0020 /* This node failed to mount */
-#define MFF_LOGDOWN 0x0040 /* Logged that this mount is down */
-#define MFF_RSTKEEP 0x0080 /* Don't timeout this filesystem - restarted */
-#define MFF_WANTTIMO 0x0100 /* Need a timeout call when not busy */
-#define MFF_NFSLINK 0x0200 /* nfsl type, and deemed a link */
-#define MFF_IS_AUTOFS 0x0400 /* this filesystem is of type autofs */
-#define MFF_NFS_SCALEDOWN 0x0800 /* the mount failed, retry with v2/UDP */
-#define MFF_ON_AUTOFS 0x1000 /* autofs has a lofs/link to this f/s */
-#define MFF_WEBNFS 0x2000 /* use public filehandle */
-
-/*
- * macros for struct fserver.
- */
-#define FSF_VALID 0x0001 /* Valid information available */
-#define FSF_DOWN 0x0002 /* This fileserver is thought to be down */
-#define FSF_ERROR 0x0004 /* Permanent error has occurred */
-#define FSF_WANT 0x0008 /* Want a wakeup call */
-#define FSF_PINGING 0x0010 /* Already doing pings */
-#define FSF_WEBNFS 0x0020 /* Don't try to contact portmapper */
-#define FSF_PING_UNINIT 0x0040 /* ping values have not been initilized */
-#define FSF_FORCE_UNMOUNT 0x0080 /* force umount of this fserver */
-#define FSRV_ERROR(fs) ((fs) && (((fs)->fs_flags & FSF_ERROR) == FSF_ERROR))
-#define FSRV_ISDOWN(fs) ((fs) && (((fs)->fs_flags & (FSF_DOWN|FSF_VALID)) == (FSF_DOWN|FSF_VALID)))
-#define FSRV_ISUP(fs) (!(fs) || (((fs)->fs_flags & (FSF_DOWN|FSF_VALID)) == (FSF_VALID)))
-
-/* some systems (SunOS 4.x) neglect to define the mount null message */
-#ifndef MOUNTPROC_NULL
-# define MOUNTPROC_NULL ((u_long)(0))
-#endif /* not MOUNTPROC_NULL */
-
-/*
- * Error to return if remote host is not available.
- * Try, in order, "host down", "host unreachable", "invalid argument".
- */
-#ifdef EHOSTDOWN
-# define AM_ERRNO_HOST_DOWN EHOSTDOWN
-#else /* not EHOSTDOWN */
-# ifdef EHOSTUNREACH
-# define AM_ERRNO_HOST_DOWN EHOSTUNREACH
-# else /* not EHOSTUNREACH */
-# define AM_ERRNO_HOST_DOWN EINVAL
-# endif /* not EHOSTUNREACH */
-#endif /* not EHOSTDOWN */
-
-/* Hash table size */
-#define NKVHASH (1 << 2) /* Power of two */
-
-/* Max entries to return in one call */
-#define MAX_READDIR_ENTRIES 16
-
-/*
- * default amfs_auto retrans - 1/10th seconds
- */
-#define AMFS_AUTO_RETRANS(x) ((ALLOWED_MOUNT_TIME*10+5*gopt.amfs_auto_timeo[(x)])/gopt.amfs_auto_timeo[(x)] * 2)
-
-/*
- * The following values can be tuned...
- */
-#define AM_TTL (300) /* Default cache period (5 min) */
-#define AM_TTL_W (120) /* Default unmount interval (2 min) */
-#define AM_PINGER 30 /* NFS ping interval for live systems */
-#define AMFS_AUTO_TIMEO 8 /* Default amfs_auto timeout - .8s */
-#define AMFS_EXEC_MAP_TIMEOUT 10 /* default 10sec exec map timeout */
-
-/* interval between forced retries of a mount */
-#define RETRY_INTERVAL 2
-
-#ifndef ROOT_MAP
-# define ROOT_MAP "\"root\""
-#endif /* not ROOT_MAP */
-
-#define ereturn(x) do { *error_return = x; return 0; } while (0)
-
-#define NEVER (time_t) 0
-
-#if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP)
-# define AMD_SERVICE_NAME "amd" /* for tcpwrappers */
-#endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */
-
-/*
- * TYPEDEFS:
- */
-
-typedef struct cf_map cf_map_t;
-typedef struct kv kv;
-typedef struct am_node am_node;
-typedef struct mntfs mntfs;
-typedef struct am_loc am_loc;
-typedef struct am_opts am_opts;
-typedef struct am_ops am_ops;
-typedef struct am_stats am_stats;
-typedef struct fserver fserver;
-
-typedef voidp wchan_t;
-typedef voidp opaque_t;
-
-/*
- * Cache map operations
- */
-typedef void add_fn(mnt_map *, char *, char *);
-typedef int init_fn(mnt_map *, char *, time_t *);
-typedef int mtime_fn(mnt_map *, char *, time_t *);
-typedef int isup_fn(mnt_map *, char *);
-typedef int reload_fn(mnt_map *, char *, add_fn *);
-typedef int search_fn(mnt_map *, char *, char *, char **, time_t *);
-typedef int task_fun(opaque_t);
-typedef void cb_fun(int, int, opaque_t);
-typedef void fwd_fun(voidp, int, struct sockaddr_in *,
- struct sockaddr_in *, opaque_t, int);
-typedef int key_fun(char *, opaque_t);
-typedef void callout_fun(opaque_t);
-
-/*
- * automounter vfs/vnode operations.
- */
-typedef char *(*vfs_match) (am_opts *);
-typedef int (*vfs_init) (mntfs *);
-typedef int (*vmount_fs) (am_node *, mntfs *);
-typedef int (*vumount_fs) (am_node *, mntfs *);
-typedef am_node *(*vlookup_child) (am_node *, char *, int *, int);
-typedef am_node *(*vmount_child) (am_node *, int *);
-typedef int (*vreaddir) (am_node *, voidp, voidp, voidp, u_int);
-typedef am_node *(*vreadlink) (am_node *, int *);
-typedef void (*vmounted) (mntfs *);
-typedef void (*vumounted) (mntfs *);
-typedef fserver *(*vffserver) (mntfs *);
-typedef wchan_t (*vget_wchan) (mntfs *);
-
-/*
- * NFS progran dispatcher
- */
-typedef void (*dispatcher_t)(struct svc_req *rqstp, SVCXPRT *transp);
-
-
-/*
- * STRUCTURES:
- */
-
-/* global amd options that are manipulated by conf.c */
-struct amu_global_options {
- char *arch; /* name of current architecture */
- char *auto_dir; /* automounter temp dir */
- int auto_attrcache; /* attribute cache timeout for auto dirs */
- char *cluster; /* cluster name */
- char *karch; /* kernel architecture */
- char *logfile; /* amd log file */
- char *op_sys; /* operating system name ${os} */
- char *op_sys_ver; /* OS version ${osver} */
- char *op_sys_full; /* full OS name ${full_os} */
- char *op_sys_vendor; /* name of OS vendor ${vendor} */
- char *pid_file; /* PID file */
- char *sub_domain; /* local domain */
- char *localhost_address; /* localhost address (NULL means use 127.0.0.1) */
- char *map_defaults; /* global map /default options */
- char *map_options; /* global map options */
- int map_reload_interval; /* map reload interval */
- char *map_type; /* global map type */
- char *search_path; /* search path for maps */
- char *mount_type; /* mount type for map */
- char *debug_mtab_file; /* path for the mtab file during debug mode */
- u_int flags; /* various CFM_* flags */
-
-#define AMU_TYPE_NONE -1 /* for amfs_auto_{timeo,retrans,toplvl} */
-#define AMU_TYPE_UDP 0 /* for amfs_auto_{timeo,retrans,toplvl} */
-#define AMU_TYPE_TCP 1 /* for amfs_auto_{timeo,retrans,toplvl} */
- /*
- * Note: toplvl is only UDP, but we want to separate it from regular
- * NFS mounts which Amd makes, because the toplvl mount is a localhost
- * mount for which different timeo/retrans parameters may be desired.
- */
-#define AMU_TYPE_TOPLVL 2 /* for amfs_auto_{timeo,retrans,toplvl} */
-#define AMU_TYPE_MAX 3 /* for amfs_auto_{timeo,retrans,toplvl} */
- int amfs_auto_retrans[AMU_TYPE_MAX]; /* NFS retransmit counter */
- int amfs_auto_timeo[AMU_TYPE_MAX]; /* NFS retry interval */
-
- int am_timeo; /* cache duration */
- int am_timeo_w; /* dismount interval */
- u_long portmap_program; /* amd RPC program number */
- u_short preferred_amq_port; /* preferred amq service RPC port number (0 means "any") */
-#ifdef HAVE_MAP_HESIOD
- char *hesiod_base; /* Hesiod rhs */
-#endif /* HAVE_MAP_HESIOD */
-#ifdef HAVE_MAP_LDAP
- char *ldap_base; /* LDAP base */
- char *ldap_hostports; /* LDAP host ports */
- long ldap_cache_seconds; /* LDAP internal cache - keep seconds */
- long ldap_cache_maxmem; /* LDAP internal cache - max memory (bytes) */
- long ldap_proto_version; /* LDAP protocol version */
-#endif /* HAVE_MAP_LDAP */
-#ifdef HAVE_MAP_NIS
- char *nis_domain; /* YP domain name */
-#endif /* HAVE_MAP_NIS */
- char *nfs_proto; /* NFS protocol (NULL, udp, tcp) */
- int nfs_vers; /* NFS version (0, 2, 3, 4) */
- int nfs_vers_ping; /* NFS rpc ping version (0, 2, 3, 4) */
- u_int exec_map_timeout; /* timeout (seconds) for executable maps */
-};
-
-/* if you add anything here, update conf.c:reset_cf_map() */
-struct cf_map {
- char *cfm_dir; /* /home, /u, /src */
- char *cfm_name; /* amd.home, /etc/amd.home ... */
- char *cfm_type; /* file, hesiod, ndbm, nis ... */
- char *cfm_defaults; /* map /defaults options in amd.conf */
- char *cfm_opts; /* -cache:=all, etc. */
- char *cfm_search_path; /* /etc/local:/etc/amdmaps:/misc/yp */
- char *cfm_tag; /* optional map tag for amd -T */
- u_int cfm_flags; /* browsable_dirs? mount_type? */
- struct cf_map *cfm_next; /* pointer to next in list (if any) */
-};
-
-/*
- * Key-value pair
- */
-struct kv {
- kv *next;
- char *key;
-#ifdef HAVE_REGEXEC
- regex_t re; /* store the regexp from regcomp() */
-#endif /* HAVE_REGEXEC */
- char *val;
-};
-
-struct mnt_map {
- qelem hdr;
- int refc; /* Reference count */
- short flags; /* Allocation flags */
- short alloc; /* Allocation mode */
- time_t modify; /* Modify time of map */
- u_int reloads; /* Number of times map was reloaded */
- u_int nentries; /* Number of entries in the map */
- char *map_name; /* Name of this map */
- char *wildcard; /* Wildcard value */
- reload_fn *reload; /* Function to be used for reloads */
- isup_fn *isup; /* Is service up or not? (1=up, 0=down) */
- search_fn *search; /* Function to be used for searching */
- mtime_fn *mtime; /* Modify time function */
- kv *kvhash[NKVHASH]; /* Cached data */
- cf_map_t *cfm; /* pointer to per-map amd.conf opts, if any */
- void *map_data; /* Map data black box */
-};
-
-/*
- * Options
- */
-struct am_opts {
- char *fs_glob; /* Smashed copy of global options */
- char *fs_local; /* Expanded copy of local options */
- char *fs_mtab; /* Mount table entry */
- /* Other options ... */
- char *opt_dev;
- char *opt_delay;
- char *opt_dir;
- char *opt_fs;
- char *opt_group;
- char *opt_mount;
- char *opt_opts;
- char *opt_remopts;
- char *opt_pref;
- char *opt_cache;
- char *opt_rfs;
- char *opt_rhost;
- char *opt_sublink;
- char *opt_type;
- char *opt_mount_type; /* "nfs" or "autofs" */
- char *opt_unmount;
- char *opt_umount; /* an "alias" for opt_unmount (type:=program) */
- char *opt_user;
- char *opt_maptype; /* map type: file, nis, hesiod, etc. */
- char *opt_cachedir; /* cache directory */
- char *opt_addopts; /* options to add to opt_opts */
-};
-
-struct am_ops {
- char *fs_type; /* type of filesystems e.g. "nfsx" */
- vfs_match fs_match; /* fxn: match */
- vfs_init fs_init; /* fxn: initialization */
- vmount_fs mount_fs; /* fxn: mount my own vnode */
- vumount_fs umount_fs; /* fxn: unmount my own vnode */
- vlookup_child lookup_child; /* fxn: lookup path-name */
- vmount_child mount_child; /* fxn: mount path-name */
- vreaddir readdir; /* fxn: read directory */
- vreadlink readlink; /* fxn: read link */
- vmounted mounted; /* fxn: after-mount extra actions */
- vumounted umounted; /* fxn: after-umount extra actions */
- vffserver ffserver; /* fxn: find a file server */
- vget_wchan get_wchan; /* fxn: get the waiting channel */
- int nfs_fs_flags; /* filesystem flags FS_* for nfs mounts */
-#ifdef HAVE_FS_AUTOFS
- int autofs_fs_flags;/* filesystem flags FS_* for autofs mounts */
-#endif /* HAVE_FS_AUTOFS */
-};
-
-/*
- * List of mounted filesystems
- */
-struct mntfs {
- qelem mf_q; /* List of mounted filesystems */
- am_ops *mf_ops; /* Operations on this mountpoint */
- am_opts *mf_fo; /* File opts */
- char *mf_mount; /* "/a/kiska/home/kiska" */
- char *mf_info; /* Mount info */
- char *mf_auto; /* Mount info */
- char *mf_mopts; /* FS mount opts */
- char *mf_remopts; /* Remote FS mount opts */
- char *mf_loopdev; /* loop device name for /dev/loop mounts */
- fserver *mf_server; /* File server */
- int mf_fsflags; /* Flags FS_* copied from mf_ops->*_fs_flags */
- int mf_flags; /* Flags MFF_* */
- int mf_error; /* Error code from background mount */
- int mf_refc; /* Number of references to this node */
- int mf_cid; /* Callout id */
- void (*mf_prfree) (opaque_t); /* Free private space */
- opaque_t mf_private; /* Private - per-fs data */
-};
-
-/*
- * Locations: bindings between keys and mntfs
- */
-struct am_loc {
- am_opts *al_fo;
- mntfs *al_mnt;
- int al_refc;
-};
-
-
-/*
- * List of fileservers
- */
-struct fserver {
- qelem fs_q; /* List of fileservers */
- int fs_refc; /* Number of references to this server */
- char *fs_host; /* Normalized hostname of server */
- struct sockaddr_in *fs_ip; /* Network address of server */
- int fs_cid; /* Callout id */
- int fs_pinger; /* Ping (keepalive) interval */
- int fs_flags; /* Flags */
- char *fs_type; /* File server type */
- u_long fs_version; /* NFS version of server (2, 3, etc.)*/
- char *fs_proto; /* NFS protocol of server (tcp, udp, etc.) */
- opaque_t fs_private; /* Private data */
- void (*fs_prfree) (opaque_t); /* Free private data */
-};
-
-/*
- * Per-mountpoint statistics
- */
-struct am_stats {
- time_t s_mtime; /* Mount time */
- u_short s_uid; /* Uid of mounter */
- int s_getattr; /* Count of getattrs */
- int s_lookup; /* Count of lookups */
- int s_readdir; /* Count of readdirs */
- int s_readlink; /* Count of readlinks */
- int s_statfs; /* Count of statfs */
- int s_fsinfo; /* Count of fsinfo */
- int s_pathconf; /* Count of pathconf */
-};
-
-/*
- * System statistics
- */
-struct amd_stats {
- int d_drops; /* Dropped requests */
- int d_stale; /* Stale NFS handles */
- int d_mok; /* Successful mounts */
- int d_merr; /* Failed mounts */
- int d_uerr; /* Failed unmounts */
-};
-extern struct amd_stats amd_stats;
-
-/*
- * Map of auto-mount points.
- */
-struct am_node {
- int am_mapno; /* Map number */
- am_loc *am_al; /* Mounted filesystem */
- am_loc **am_alarray; /* Filesystem sources to try to mount */
- char *am_name; /* "kiska": name of this node */
- char *am_path; /* "/home/kiska": path of this node's mount point */
- char *am_link; /* "/a/kiska/home/kiska/this/that": link to sub-dir */
- am_node *am_parent; /* Parent of this node */
- am_node *am_ysib; /* Younger sibling of this node */
- am_node *am_osib; /* Older sibling of this node */
- am_node *am_child; /* First child of this node */
- nfsattrstat am_attr; /* File attributes */
-#define am_fattr am_attr.ns_u.ns_attr_u
- int am_flags; /* Boolean flags AMF_* */
- int am_error; /* Specific mount error */
- time_t am_ttl; /* Time to live */
- int am_timeo_w; /* Dismount wait interval */
- int am_timeo; /* Cache timeout interval */
- u_int am_gen; /* Generation number */
- char *am_pref; /* Mount info prefix */
- am_stats am_stats; /* Statistics gathering */
- SVCXPRT *am_transp; /* Info for quick reply */
- dev_t am_dev; /* Device number */
- dev_t am_rdev; /* Remote/real device number */
-#ifdef HAVE_FS_AUTOFS
- autofs_fh_t *am_autofs_fh;
- time_t am_autofs_ttl; /* Time to expire autofs nodes */
-#endif /* HAVE_FS_AUTOFS */
- int am_fd[2]; /* parent child pipe fd's for sync umount */
-};
-
-/*
- * EXTERNALS:
- */
-
-/*
- * Amq server global functions
- */
-extern amq_mount_info_list *amqproc_getmntfs_1_svc(voidp argp, struct svc_req *rqstp);
-extern amq_mount_stats *amqproc_stats_1_svc(voidp argp, struct svc_req *rqstp);
-extern amq_mount_tree_list *amqproc_export_1_svc(voidp argp, struct svc_req *rqstp);
-extern amq_mount_tree_p *amqproc_mnttree_1_svc(voidp argp, struct svc_req *rqstp);
-extern amq_string *amqproc_getvers_1_svc(voidp argp, struct svc_req *rqstp);
-extern amq_string *amqproc_pawd_1_svc(voidp argp, struct svc_req *rqstp);
-extern int *amqproc_getpid_1_svc(voidp argp, struct svc_req *rqstp);
-extern int *amqproc_mount_1_svc(voidp argp, struct svc_req *rqstp);
-extern int *amqproc_setopt_1_svc(voidp argp, struct svc_req *rqstp);
-extern voidp amqproc_null_1_svc(voidp argp, struct svc_req *rqstp);
-extern int *amqproc_umnt_1_svc(voidp argp, struct svc_req *rqstp);
-extern int *amqproc_sync_umnt_1_svc_parent(voidp argp, struct svc_req *rqstp);
-extern amq_sync_umnt *amqproc_sync_umnt_1_svc_child(voidp argp, struct svc_req *rqstp);
-extern amq_sync_umnt *amqproc_sync_umnt_1_svc_async(voidp argp, struct svc_req *rqstp);
-extern amq_map_info_list *amqproc_getmapinfo_1_svc(voidp argp, struct svc_req *rqstp);
-
-/* other external definitions */
-extern am_nfs_handle_t *get_root_nfs_fh(char *dir, am_nfs_handle_t *nfh);
-extern am_node *find_ap(char *);
-extern am_node *get_ap_child(am_node *, char *);
-extern bool_t xdr_amq_mount_info_qelem(XDR *xdrs, qelem *qhead);
-extern bool_t xdr_amq_map_info_qelem(XDR *xdrs, qelem *qhead);
-extern fserver *find_nfs_srvr(mntfs *mf);
-extern int mount_nfs_fh(am_nfs_handle_t *fhp, char *mntdir, char *fs_name, mntfs *mf);
-extern int process_all_regular_maps(void);
-extern cf_map_t *find_cf_map(const char *name);
-extern int set_conf_kv(const char *section, const char *k, const char *v);
-extern int mount_node(opaque_t arg);
-extern int unmount_mp(am_node *mp);
-extern int conf_parse(void); /* "yyparse" renamed */
-extern FILE *conf_in; /* "yyin" renamed */
-
-extern void amfs_mkcacheref(mntfs *mf);
-extern int amfs_mount(am_node *mp, mntfs *mf, char *opts);
-extern void assign_error_mntfs(am_node *mp);
-extern am_node *next_nonerror_node(am_node *xp);
-extern void flush_srvr_nfs_cache(fserver *fs);
-extern void am_mounted(am_node *);
-extern void mf_mounted(mntfs *mf, bool_t call_free_opts);
-extern void am_unmounted(am_node *);
-extern am_node *get_exported_ap(int index);
-extern am_node *get_first_exported_ap(int *index);
-extern am_node *get_next_exported_ap(int *index);
-extern am_node *path_to_exported_ap(char *path);
-extern am_node *exported_ap_alloc(void);
-extern am_node *find_mf(mntfs *);
-extern am_node *next_map(int *);
-extern am_ops *ops_match(am_opts *, char *, char *, char *, char *, char *);
-extern am_ops *ops_search(char *);
-extern fserver *dup_srvr(fserver *);
-extern void srvrlog(fserver *, char *);
-extern int get_mountd_port(fserver *, u_short *, wchan_t);
-extern void flush_nfs_fhandle_cache(fserver *);
-
-extern mntfs *dup_mntfs(mntfs *);
-extern am_loc *dup_loc(am_loc *);
-extern mntfs *find_mntfs(am_ops *, am_opts *, char *, char *, char *, char *, char *);
-extern mntfs *locate_mntfs(am_ops *, am_opts *, char *, char *, char *, char *, char *);
-extern am_loc *new_loc(void);
-extern mntfs *new_mntfs(void);
-extern mntfs *realloc_mntfs(mntfs *, am_ops *, am_opts *, char *, char *, char *, char *, char *);
-extern void flush_mntfs(void);
-extern void free_mntfs(voidp);
-extern void free_loc(voidp);
-
-
-extern void amq_program_1(struct svc_req *rqstp, SVCXPRT *transp);
-extern int background(void);
-extern void deslashify(char *);
-extern void do_task_notify(void);
-extern int eval_fs_opts(am_opts *, char *, char *, char *, char *, char *);
-extern int file_read_line(char *, int, FILE *);
-extern void forcibly_timeout_mp(am_node *);
-extern void free_map(am_node *);
-extern void free_opts(am_opts *);
-extern am_opts *copy_opts(am_opts *);
-extern void free_srvr(fserver *);
-extern int fwd_init(void);
-extern int fwd_packet(int, char *, int, struct sockaddr_in *, struct sockaddr_in *, opaque_t, fwd_fun *);
-extern void fwd_reply(void);
-extern void get_args(int argc, char *argv[]);
-extern wchan_t get_mntfs_wchan(mntfs *mf);
-extern void host_normalize(char **);
-extern void init_map(am_node *, char *);
-extern void ins_que(qelem *, qelem *);
-extern void insert_am(am_node *, am_node *);
-extern int make_nfs_auth(void);
-extern void make_root_node(void);
-extern void map_flush_srvr(fserver *);
-extern void mapc_add_kv(mnt_map *, char *, char *);
-extern mnt_map *mapc_find(char *, char *, const char *, const char *);
-extern void mapc_free(opaque_t);
-extern int mapc_keyiter(mnt_map *, key_fun *, opaque_t);
-extern void mapc_reload(void);
-extern int mapc_search(mnt_map *, char *, char **);
-extern void mapc_showtypes(char *buf, size_t l);
-extern int mapc_type_exists(const char *type);
-extern void mk_fattr(nfsfattr *, nfsftype);
-extern int mount_auto_node(char *, opaque_t);
-extern int mount_automounter(int);
-extern int mount_exported(void);
-extern void mp_to_fh(am_node *, am_nfs_fh *);
-extern void mp_to_fh3(am_node *mp, am_nfs_fh3 *fhp);
-extern void new_ttl(am_node *);
-extern void nfs_quick_reply(am_node *mp, int error);
-extern void normalize_slash(char *);
-extern void notify_child(am_node *, au_etype, int, int);
-extern void ops_showamfstypes(char *buf, size_t l);
-extern void ops_showfstypes(char *outbuf, size_t l);
-extern void rem_que(qelem *);
-extern void reschedule_timeout_mp(void);
-extern void restart(void);
-extern void restart_automounter_nodes(void);
-extern int root_keyiter(key_fun *, opaque_t);
-extern void root_newmap(const char *, const char *, const char *, const cf_map_t *);
-extern void run_task(task_fun *, opaque_t, cb_fun *, opaque_t);
-extern void sched_task(cb_fun *, opaque_t, wchan_t);
-extern int softclock(void);
-extern int timeout(u_int, void (*fn)(opaque_t), opaque_t);
-extern void timeout_mp(opaque_t);
-extern void untimeout(int);
-extern void umount_exported(void);
-extern int valid_key(char *);
-extern void wakeup(wchan_t);
-extern void wakeup_srvr(fserver *);
-extern void wakeup_task(int, int, wchan_t);
-#define SIZEOF_PID_FSNAME (16 + MAXHOSTNAMELEN)
-extern char pid_fsname[SIZEOF_PID_FSNAME]; /* "kiska.southseas.nz:(pid%d)" */
-#define SIZEOF_HOSTD (2 * MAXHOSTNAMELEN + 1)
-extern char hostd[SIZEOF_HOSTD]; /* Host+domain */
-#define SIZEOF_OPTS 256 /* used for char opts[] and preopts[] */
-
-/*
- * Global variables.
- */
-extern SVCXPRT *current_transp; /* For nfs_quick_reply() */
-extern dispatcher_t nfs_dispatcher;
-extern char *conf_tag;
-#define SIZEOF_UID_STR 12
-#define SIZEOF_GID_STR 12
-extern char *opt_gid, gid_str[SIZEOF_GID_STR];
-extern char *opt_uid, uid_str[SIZEOF_UID_STR];
-extern int NumChildren;
-extern int fwd_sock;
-extern int select_intr_valid;
-extern int immediate_abort; /* Should close-down unmounts be retried */
-extern int usage;
-extern int use_conf_file; /* use amd configuration file */
-extern int task_notify_todo; /* Task notifier needs running */
-extern jmp_buf select_intr;
-extern qelem mfhead;
-extern struct amu_global_options gopt; /* where global options are stored */
-extern time_t do_mapc_reload; /* Flush & reload mount map cache */
-extern time_t next_softclock; /* Time to call softclock() */
-
-#ifdef HAVE_SIGACTION
-extern sigset_t masked_sigs;
-#endif /* HAVE_SIGACTION */
-
-#if defined(HAVE_AMU_FS_LINK) || defined(HAVE_AMU_FS_LINKX)
-extern char *amfs_link_match(am_opts *fo);
-#endif /* defined(HAVE_AMU_FS_LINK) || defined(HAVE_AMU_FS_LINKX) */
-
-#ifdef HAVE_FS_AUTOFS
-extern int amd_use_autofs;
-
-extern int autofs_get_fh(am_node *mp);
-extern void autofs_release_fh(am_node *mp);
-extern void autofs_get_mp(am_node *mp);
-extern void autofs_release_mp(am_node *mp);
-extern void autofs_add_fdset(fd_set *readfds);
-extern int autofs_handle_fdset(fd_set *readfds, int nsel);
-extern void autofs_mounted(am_node *mp);
-extern void autofs_mount_succeeded(am_node *mp);
-extern void autofs_mount_failed(am_node *mp);
-extern int autofs_umount_succeeded(am_node *mp);
-extern int autofs_umount_failed(am_node *mp);
-extern int autofs_mount_fs(am_node *mp, mntfs *mf);
-extern int autofs_umount_fs(am_node *mp, mntfs *mf);
-extern void autofs_get_opts(char *opts, size_t l, autofs_fh_t *fh);
-extern int autofs_compute_mount_flags(mntent_t *);
-extern void autofs_timeout_mp(am_node *);
-extern int create_autofs_service(void);
-extern int destroy_autofs_service(void);
-#endif /* HAVE_FS_AUTOFS */
-
-/**************************************************************************/
-/*** Generic file-system types, implemented as part of the native O/S. ***/
-/**************************************************************************/
-
-/*
- * Loopback File System
- * Many systems can't support this, and in any case most of the
- * functionality is available with Symlink FS.
- */
-#ifdef HAVE_FS_LOFS
-extern am_ops lofs_ops;
-extern int mount_lofs(char *mntdir, char *fs_name, char *opts, int on_autofs);
-#endif /* HAVE_FS_LOFS */
-
-/*
- * CD-ROM File System (CD-ROM)
- * (HSFS: High Sierra F/S on some machines)
- * Many systems can't support this, and in any case most of the
- * functionality is available with program FS.
- */
-#ifdef HAVE_FS_CDFS
-extern am_ops cdfs_ops;
-#endif /* HAVE_FS_CDFS */
-
-/*
- * PC File System (MS-DOS)
- * Many systems can't support this, and in any case most of the
- * functionality is available with program FS.
- */
-#ifdef HAVE_FS_PCFS
-extern am_ops pcfs_ops;
-#endif /* HAVE_FS_PCFS */
-
-/*
- * UDF File System
- * Many systems can't support this, and in any case most of the
- * functionality is available with program FS.
- */
-#ifdef HAVE_FS_UDF
-extern am_ops udf_ops;
-#endif /* HAVE_FS_UDF */
-
-#ifdef HAVE_FS_LUSTRE
-extern am_ops lustre_ops;
-#endif /* HAVE_FS_LUSTRE */
-
-/*
- * Caching File System (Solaris)
- */
-#ifdef HAVE_FS_CACHEFS
-extern am_ops cachefs_ops;
-#endif /* HAVE_FS_CACHEFS */
-
-/*
- * In memory /tmp filesystem (Linux, NetBSD)
- */
-#ifdef HAVE_FS_TMPFS
-extern am_ops tmpfs_ops;
-#endif /* HAVE_FS_TMPFS */
-/*
- * Network File System
- * Good, slow, NFS V.2.
- */
-#ifdef HAVE_FS_NFS
-extern am_ops nfs_ops; /* NFS */
-extern fserver *find_nfs_srvr (mntfs *);
-extern qelem nfs_srvr_list;
-#endif /* HAVE_FS_NFS */
-
-/*
- * Un*x File System
- * Normal local disk file system.
- */
-#ifdef HAVE_FS_UFS
-extern am_ops ufs_ops; /* Un*x file system */
-#endif /* HAVE_FS_UFS */
-
-/* Unix file system (irix) */
-#ifdef HAVE_FS_XFS
-extern am_ops xfs_ops; /* Un*x file system */
-#endif /* HAVE_FS_XFS */
-
-/* Unix file system (ext*) */
-#ifdef HAVE_FS_EXT
-extern am_ops ext2_ops; /* Un*x file system */
-extern am_ops ext3_ops; /* Un*x file system */
-extern am_ops ext4_ops; /* Un*x file system */
-#endif /* HAVE_FS_EXT */
-
-/* Unix file system (irix) */
-#ifdef HAVE_FS_EFS
-extern am_ops efs_ops; /* Un*x file system */
-#endif /* HAVE_FS_EFS */
-
-/**************************************************************************/
-/*** Automounter file-system types, implemented by amd. ***/
-/**************************************************************************/
-
-/*
- * Root AMD File System
- */
-extern am_ops amfs_root_ops; /* Root file system */
-
-/*
- * Generic amfs helper methods
- */
-extern am_node *amfs_generic_lookup_child(am_node *mp, char *fname, int *error_return, int op);
-extern am_node *amfs_generic_mount_child(am_node *ap, int *error_return);
-extern int amfs_generic_readdir(am_node *mp, voidp cookie, voidp dp, voidp ep, u_int count);
-extern int amfs_generic_umount(am_node *mp, mntfs *mf);
-extern void amfs_generic_mounted(mntfs *mf);
-extern char *amfs_generic_match(am_opts *fo);
-extern fserver *amfs_generic_find_srvr(mntfs *);
-
-/*
- * Automount File System
- */
-#ifdef HAVE_AMU_FS_AUTO
-extern am_ops amfs_auto_ops; /* Automount file system (this!) */
-#endif /* HAVE_AMU_FS_AUTO */
-
-/*
- * Toplvl Automount File System
- */
-#ifdef HAVE_AMU_FS_TOPLVL
-extern am_ops amfs_toplvl_ops; /* Toplvl Automount file system */
-extern int amfs_toplvl_mount(am_node *mp, mntfs *mf);
-extern int amfs_toplvl_umount(am_node *mp, mntfs *mf);
-#endif /* HAVE_AMU_FS_TOPLVL */
-
-/*
- * Direct Automount File System
- */
-#ifdef HAVE_AMU_FS_DIRECT
-extern am_ops amfs_direct_ops; /* Direct Automount file system (this too) */
-#endif /* HAVE_AMU_FS_DIRECT */
-
-/*
- * Error File System
- */
-#ifdef HAVE_AMU_FS_ERROR
-extern am_ops amfs_error_ops; /* Error file system */
-extern am_node *amfs_error_lookup_child(am_node *mp, char *fname, int *error_return, int op);
-extern am_node *amfs_error_mount_child(am_node *ap, int *error_return);
-extern int amfs_error_readdir(am_node *mp, voidp cookie, voidp dp, voidp ep, u_int count);
-
-#endif /* HAVE_AMU_FS_ERROR */
-
-/*
- * NFS mounts with local existence check.
- */
-#ifdef HAVE_AMU_FS_NFSL
-extern am_ops amfs_nfsl_ops; /* NFSL */
-#endif /* HAVE_AMU_FS_NFSL */
-
-/*
- * Multi-nfs mounts.
- */
-#ifdef HAVE_AMU_FS_NFSX
-extern am_ops amfs_nfsx_ops; /* NFSX */
-#endif /* HAVE_AMU_FS_NFSX */
-
-/*
- * NFS host - a whole tree.
- */
-#ifdef HAVE_AMU_FS_HOST
-extern am_ops amfs_host_ops; /* NFS host */
-#endif /* HAVE_AMU_FS_HOST */
-
-/*
- * Program File System
- * This is useful for things like RVD.
- */
-#ifdef HAVE_AMU_FS_PROGRAM
-extern am_ops amfs_program_ops; /* Program File System */
-#endif /* HAVE_AMU_FS_PROGRAM */
-
-/*
- * Symbolic-link file system.
- * A "filesystem" which is just a symbol link.
- */
-#ifdef HAVE_AMU_FS_LINK
-extern am_ops amfs_link_ops; /* Symlink FS */
-#endif /* HAVE_AMU_FS_LINK */
-
-/*
- * Symbolic-link file system, which also checks that the target of
- * the symlink exists.
- * A "filesystem" which is just a symbol link.
- */
-#ifdef HAVE_AMU_FS_LINKX
-extern am_ops amfs_linkx_ops; /* Symlink FS with existence check */
-#endif /* HAVE_AMU_FS_LINKX */
-
-/*
- * Union file system
- */
-#ifdef HAVE_AMU_FS_UNION
-extern am_ops amfs_union_ops; /* Union FS */
-#endif /* HAVE_AMU_FS_UNION */
-
-#endif /* not _AMD_H */
diff --git a/contrib/amd/amd/amfs_auto.c b/contrib/amd/amd/amfs_auto.c
deleted file mode 100644
index 34fdb00f501c..000000000000
--- a/contrib/amd/amd/amfs_auto.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_auto.c
- *
- */
-
-/*
- * Automount file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/****************************************************************************
- *** MACROS ***
- ****************************************************************************/
-
-
-/****************************************************************************
- *** STRUCTURES ***
- ****************************************************************************/
-
-
-/****************************************************************************
- *** FORWARD DEFINITIONS ***
- ****************************************************************************/
-static int amfs_auto_mount(am_node *mp, mntfs *mf);
-
-
-/****************************************************************************
- *** OPS STRUCTURES ***
- ****************************************************************************/
-am_ops amfs_auto_ops =
-{
- "auto",
- amfs_generic_match,
- 0, /* amfs_auto_init */
- amfs_auto_mount,
- amfs_generic_umount,
- amfs_generic_lookup_child,
- amfs_generic_mount_child,
- amfs_generic_readdir,
- 0, /* amfs_auto_readlink */
- amfs_generic_mounted,
- 0, /* amfs_auto_umounted */
- amfs_generic_find_srvr,
- 0, /* amfs_auto_get_wchan */
- FS_AMQINFO | FS_DIRECTORY,
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_AUTO_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/****************************************************************************
- *** FUNCTIONS ***
- ****************************************************************************/
-/*
- * Mount a sub-mount
- */
-static int
-amfs_auto_mount(am_node *mp, mntfs *mf)
-{
- if (mp->am_parent == NULL)
- return EINVAL;
- /*
- * Pseudo-directories are used to provide some structure
- * to the automounted directories instead
- * of putting them all in the top-level automount directory.
- *
- * Here, just increment the parent's link count.
- */
- mp->am_parent->am_fattr.na_nlink++;
-
- /*
- * Info field of . means use parent's info field.
- * Historical - not documented.
- */
- if (mf->mf_info[0] == '.' && mf->mf_info[1] == '\0')
- mf->mf_info = strealloc(mf->mf_info, mp->am_parent->am_al->al_mnt->mf_info);
-
- /*
- * Compute prefix:
- *
- * If there is an option prefix then use that else
- * If the parent had a prefix then use that with name
- * of this node appended else
- * Use the name of this node.
- *
- * That means if you want no prefix you must say so
- * in the map.
- */
- if (mf->mf_fo->opt_pref) {
- /* allow pref:=null to set a real null prefix */
- if (STREQ(mf->mf_fo->opt_pref, "null")) {
- mp->am_pref = xstrdup("");
- } else {
- /*
- * the prefix specified as an option
- */
- mp->am_pref = xstrdup(mf->mf_fo->opt_pref);
- }
- } else {
- /*
- * else the parent's prefix
- * followed by the name
- * followed by /
- */
- char *ppref = mp->am_parent->am_pref;
- if (ppref == 0)
- ppref = "";
- mp->am_pref = str3cat((char *) NULL, ppref, mp->am_name, "/");
- }
-
-#ifdef HAVE_FS_AUTOFS
- if (mf->mf_flags & MFF_IS_AUTOFS) {
- char opts[SIZEOF_OPTS];
- int error;
-
- autofs_get_opts(opts, sizeof(opts), mp->am_autofs_fh);
-
- /* now do the mount */
- error = amfs_mount(mp, mf, opts);
- if (error) {
- errno = error;
- plog(XLOG_FATAL, "amfs_auto_mount: amfs_mount failed: %m");
- return error;
- }
- }
-#endif /* HAVE_FS_AUTOFS */
-
- /*
- * Attach a map cache
- */
- amfs_mkcacheref(mf);
-
- return 0;
-}
diff --git a/contrib/amd/amd/amfs_direct.c b/contrib/amd/amd/amfs_direct.c
deleted file mode 100644
index b911c2a1e2ce..000000000000
--- a/contrib/amd/amd/amfs_direct.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_direct.c
- *
- */
-
-/*
- * Direct file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/****************************************************************************
- *** FORWARD DEFINITIONS ***
- ****************************************************************************/
-static am_node *amfs_direct_readlink(am_node *mp, int *error_return);
-
-/****************************************************************************
- *** OPS STRUCTURES ***
- ****************************************************************************/
-am_ops amfs_direct_ops =
-{
- "direct",
- amfs_generic_match,
- 0, /* amfs_direct_init */
- amfs_toplvl_mount,
- amfs_toplvl_umount,
- amfs_generic_lookup_child,
- amfs_generic_mount_child,
- amfs_error_readdir,
- amfs_direct_readlink,
- amfs_generic_mounted,
- 0, /* amfs_direct_umounted */
- amfs_generic_find_srvr,
- 0, /* amfs_direct_get_wchan */
- FS_DIRECT | FS_MKMNT | FS_NOTIMEOUT | FS_BACKGROUND | FS_AMQINFO,
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_DIRECT_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/****************************************************************************
- *** FUNCTIONS ***
- ****************************************************************************/
-
-static am_node *
-amfs_direct_readlink(am_node *mp, int *error_return)
-{
- am_node *xp;
- int rc = 0;
-
- xp = next_nonerror_node(mp->am_child);
- if (!xp) {
- if (!mp->am_al->al_mnt->mf_private)
- amfs_mkcacheref(mp->am_al->al_mnt);
- xp = amfs_generic_lookup_child(mp, mp->am_path + 1, &rc, VLOOK_CREATE);
- if (xp && rc < 0)
- xp = amfs_generic_mount_child(xp, &rc);
- }
- if (xp) {
- new_ttl(xp); /* (7/12/89) from Rein Tollevik */
- return xp;
- }
- if (amd_state == Finishing)
- rc = ENOENT;
- *error_return = rc;
- return 0;
-}
diff --git a/contrib/amd/amd/amfs_error.c b/contrib/amd/amd/amfs_error.c
deleted file mode 100644
index 58a623102c1e..000000000000
--- a/contrib/amd/amd/amfs_error.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_error.c
- *
- */
-
-/*
- * Error file system.
- * This is used as a last resort catchall if
- * nothing else worked. EFS just returns lots
- * of error codes, except for unmount which
- * always works of course.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-static char *amfs_error_match(am_opts *fo);
-static int amfs_error_mount(am_node *am, mntfs *mf);
-static int amfs_error_umount(am_node *am, mntfs *mf);
-
-
-/*
- * Ops structure
- */
-am_ops amfs_error_ops =
-{
- "error",
- amfs_error_match,
- 0, /* amfs_error_init */
- amfs_error_mount,
- amfs_error_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* amfs_error_readlink */
- 0, /* amfs_error_mounted */
- 0, /* amfs_error_umounted */
- amfs_generic_find_srvr,
- 0, /* amfs_error_get_wchan */
- FS_DISCARD, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_ERROR_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-
-/*
- * EFS file system always matches
- */
-static char *
-amfs_error_match(am_opts *fo)
-{
- return xstrdup("(error-hook)");
-}
-
-
-static int
-amfs_error_mount(am_node *am, mntfs *mf)
-{
- return ENOENT;
-}
-
-
-static int
-amfs_error_umount(am_node *am, mntfs *mf)
-{
- /*
- * Always succeed
- */
- return 0;
-}
-
-
-/*
- * EFS interface to RPC lookup() routine.
- * Should never get here in the automounter.
- * If we do then just give an error.
- */
-am_node *
-amfs_error_lookup_child(am_node *mp, char *fname, int *error_return, int op)
-{
- *error_return = ESTALE;
- return 0;
-}
-
-
-/*
- * EFS interface to RPC lookup() routine.
- * Should never get here in the automounter.
- * If we do then just give an error.
- */
-am_node *
-amfs_error_mount_child(am_node *ap, int *error_return)
-{
- *error_return = ESTALE;
- return 0;
-}
-
-
-/*
- * EFS interface to RPC readdir() routine.
- * Should never get here in the automounter.
- * If we do then just give an error.
- */
-int
-amfs_error_readdir(am_node *mp, voidp cookie, voidp dp, voidp ep, u_int count)
-{
- return ESTALE;
-}
diff --git a/contrib/amd/amd/amfs_generic.c b/contrib/amd/amd/amfs_generic.c
deleted file mode 100644
index 25d734bbde00..000000000000
--- a/contrib/amd/amd/amfs_generic.c
+++ /dev/null
@@ -1,1255 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_generic.c
- *
- */
-
-/*
- * generic functions used by amfs filesystems, ripped out of amfs_auto.c.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-
-/****************************************************************************
- *** MACROS ***
- ****************************************************************************/
-#define IN_PROGRESS(cp) ((cp)->mp->am_al->al_mnt->mf_flags & MFF_MOUNTING)
-
-
-/****************************************************************************
- *** STRUCTURES ***
- ****************************************************************************/
-/*
- * Mounting a file system may take a significant period of time. The
- * problem is that if this is done in the main process thread then the
- * entire automounter could be blocked, possibly hanging lots of processes
- * on the system. Instead we use a continuation scheme to allow mounts to
- * be attempted in a sub-process. When the sub-process exits we pick up the
- * exit status (by convention a UN*X error number) and continue in a
- * notifier. The notifier gets handed a data structure and can then
- * determine whether the mount was successful or not. If not, it updates
- * the data structure and tries again until there are no more ways to try
- * the mount, or some other permanent error occurs. In the mean time no RPC
- * reply is sent, even after the mount is successful. We rely on the RPC
- * retry mechanism to resend the lookup request which can then be handled.
- */
-struct continuation {
- am_node *mp; /* Node we are trying to mount */
- int retry; /* Try again? */
- time_t start; /* Time we started this mount */
- int callout; /* Callout identifier */
- am_loc **al; /* Current location */
-};
-
-
-/****************************************************************************
- *** FORWARD DEFINITIONS ***
- ****************************************************************************/
-static am_node *amfs_lookup_node(am_node *mp, char *fname, int *error_return);
-static am_loc *amfs_lookup_one_location(am_node *new_mp, mntfs *mf, char *ivec,
- char *def_opts, char *pfname);
-static am_loc **amfs_lookup_loc(am_node *new_mp, int *error_return);
-static void amfs_cont(int rc, int term, opaque_t arg);
-static void amfs_retry(int rc, int term, opaque_t arg);
-static void free_continuation(struct continuation *cp);
-static int amfs_bgmount(struct continuation *cp);
-static char *amfs_parse_defaults(am_node *mp, mntfs *mf, char *def_opts);
-
-
-/****************************************************************************
- *** FUNCTIONS ***
- ****************************************************************************/
-static am_node *
-amfs_lookup_node(am_node *mp, char *fname, int *error_return)
-{
- am_node *new_mp;
- int error = 0; /* Error so far */
- int in_progress = 0; /* # of (un)mount in progress */
- mntfs *mf;
- char *expanded_fname = NULL;
-
- dlog("in amfs_lookup_node");
-
- /*
- * If the server is shutting down
- * then don't return information
- * about the mount point.
- */
- if (amd_state == Finishing) {
- if (mp->am_al == NULL || mp->am_al->al_mnt == NULL || mp->am_al->al_mnt->mf_fsflags & FS_DIRECT) {
- dlog("%s mount ignored - going down", fname);
- } else {
- dlog("%s/%s mount ignored - going down", mp->am_path, fname);
- }
- ereturn(ENOENT);
- }
-
- /*
- * Handle special case of "." and ".."
- */
- if (fname[0] == '.') {
- if (fname[1] == '\0')
- return mp; /* "." is the current node */
- if (fname[1] == '.' && fname[2] == '\0') {
- if (mp->am_parent) {
- dlog(".. in %s gives %s", mp->am_path, mp->am_parent->am_path);
- return mp->am_parent; /* ".." is the parent node */
- }
- ereturn(ESTALE);
- }
- }
-
- /*
- * Check for valid key name.
- * If it is invalid then pretend it doesn't exist.
- */
- if (!valid_key(fname)) {
- plog(XLOG_WARNING, "Key \"%s\" contains a disallowed character", fname);
- ereturn(ENOENT);
- }
-
- /*
- * Expand key name.
- * expanded_fname is now a private copy.
- */
- expanded_fname = expand_selectors(fname);
-
- /*
- * Search children of this node
- */
- for (new_mp = mp->am_child; new_mp; new_mp = new_mp->am_osib) {
- if (FSTREQ(new_mp->am_name, expanded_fname)) {
- if (new_mp->am_error) {
- error = new_mp->am_error;
- continue;
- }
-
- /*
- * If the error code is undefined then it must be
- * in progress.
- */
- mf = new_mp->am_al->al_mnt;
- if (mf->mf_error < 0)
- goto in_progrss;
-
- /*
- * If there was a previous error with this node
- * then return that error code.
- */
- if (mf->mf_flags & MFF_ERROR) {
- error = mf->mf_error;
- continue;
- }
- if (!(mf->mf_flags & MFF_MOUNTED) || (mf->mf_flags & MFF_UNMOUNTING)) {
- in_progrss:
- /*
- * If the fs is not mounted or it is unmounting then there
- * is a background (un)mount in progress. In this case
- * we just drop the RPC request (return nil) and
- * wait for a retry, by which time the (un)mount may
- * have completed.
- */
- dlog("ignoring mount of %s in %s -- %smounting in progress, flags %x",
- expanded_fname, mf->mf_mount,
- (mf->mf_flags & MFF_UNMOUNTING) ? "un" : "", mf->mf_flags);
- in_progress++;
- if (mf->mf_flags & MFF_UNMOUNTING) {
- dlog("will remount later");
- new_mp->am_flags |= AMF_REMOUNT;
- }
- continue;
- }
-
- /*
- * Otherwise we have a hit: return the current mount point.
- */
- dlog("matched %s in %s", expanded_fname, new_mp->am_path);
- XFREE(expanded_fname);
- return new_mp;
- }
- }
-
- if (in_progress) {
- dlog("Waiting while %d mount(s) in progress", in_progress);
- XFREE(expanded_fname);
- ereturn(-1);
- }
-
- /*
- * If an error occurred then return it.
- */
- if (error) {
- dlog("Returning error: %s", strerror(error));
- XFREE(expanded_fname);
- ereturn(error);
- }
-
- /*
- * If the server is going down then just return,
- * don't try to mount any more file systems
- */
- if ((int) amd_state >= (int) Finishing) {
- dlog("not found - server going down anyway");
- ereturn(ENOENT);
- }
-
- /*
- * Allocate a new map
- */
- new_mp = get_ap_child(mp, expanded_fname);
- XFREE(expanded_fname);
- if (new_mp == NULL)
- ereturn(ENOSPC);
-
- *error_return = -1;
- return new_mp;
-}
-
-
-
-static am_loc *
-amfs_lookup_one_location(am_node *new_mp, mntfs *mf, char *ivec,
- char *def_opts, char *pfname)
-{
- am_ops *p;
- am_opts *fs_opts;
- am_loc *new_al;
- mntfs *new_mf;
- char *mp_dir = NULL;
-#ifdef HAVE_FS_AUTOFS
- int on_autofs = 1;
-#endif /* HAVE_FS_AUTOFS */
-
- /* match the operators */
- /*
- * although we alloc the fs_opts here, the pointer is 'owned' by the am_loc and will
- * be free'd on destruction of the am_loc. If we don't allocate a loc, then we need
- * to free this.
- */
- fs_opts = CALLOC(am_opts);
- p = ops_match(fs_opts, ivec, def_opts, new_mp->am_path,
- pfname, mf->mf_info);
-#ifdef HAVE_FS_AUTOFS
- /* XXX: this should be factored out into an autofs-specific function */
- if (new_mp->am_flags & AMF_AUTOFS) {
- /* ignore user-provided fs if we're using autofs */
- if (fs_opts->opt_sublink && fs_opts->opt_sublink[0]) {
- /*
- * For sublinks we need to use a hack with autofs:
- * mount the filesystem on the original opt_fs (which is NOT an
- * autofs mountpoint) and symlink (or lofs-mount) to it from
- * the autofs mountpoint.
- */
- on_autofs = 0;
- mp_dir = fs_opts->opt_fs;
- } else {
- if (p->autofs_fs_flags & FS_ON_AUTOFS) {
- mp_dir = new_mp->am_path;
- } else {
- mp_dir = fs_opts->opt_fs;
- on_autofs = 0;
- }
- }
- } else
-#endif /* HAVE_FS_AUTOFS */
- mp_dir = fs_opts->opt_fs;
-
- /*
- * Find or allocate a filesystem for this node.
- * we search for a matching backend share, since
- * we will construct our own al_loc to handle
- * any customisations for this usage.
- */
- new_mf = find_mntfs(p, fs_opts,
- mp_dir,
- fs_opts->fs_mtab,
- def_opts,
- fs_opts->opt_opts,
- fs_opts->opt_remopts);
-
-
- /*
- * See whether this is a real filesystem
- */
- p = new_mf->mf_ops;
- if (p == &amfs_error_ops) {
- plog(XLOG_MAP, "Map entry %s for %s did not match", ivec, new_mp->am_path);
- free_mntfs(new_mf);
- free_opts(fs_opts);
- XFREE(fs_opts);
- return NULL;
- }
-
- dlog("Got a hit with %s", p->fs_type);
- new_al = new_loc();
- free_mntfs(new_al->al_mnt);
- new_al->al_mnt = new_mf;
- new_al->al_fo = fs_opts; /* now the loc is in charge of free'ing this mem */
-
-#ifdef HAVE_FS_AUTOFS
- if (new_mp->am_flags & AMF_AUTOFS && on_autofs) {
- new_mf->mf_flags |= MFF_ON_AUTOFS;
- new_mf->mf_fsflags = new_mf->mf_ops->autofs_fs_flags;
- }
- /*
- * A new filesystem is an autofs filesystems if:
- * 1. it claims it can be one (has the FS_AUTOFS flag)
- * 2. autofs is enabled system-wide
- * 3. either has an autofs parent,
- * or it is explicitly requested to be autofs.
- */
- if (new_mf->mf_ops->autofs_fs_flags & FS_AUTOFS &&
- amd_use_autofs &&
- ((mf->mf_flags & MFF_IS_AUTOFS) ||
- (new_mf->mf_fo && new_mf->mf_fo->opt_mount_type &&
- STREQ(new_mf->mf_fo->opt_mount_type, "autofs"))))
- new_mf->mf_flags |= MFF_IS_AUTOFS;
-#endif /* HAVE_FS_AUTOFS */
-
- return new_al;
-}
-
-
-static am_loc **
-amfs_lookup_loc(am_node *new_mp, int *error_return)
-{
- am_node *mp;
- char *info; /* Mount info - where to get the file system */
- char **ivecs, **cur_ivec; /* Split version of info */
- int num_ivecs;
- char *orig_def_opts; /* Original Automount options */
- char *def_opts; /* Automount options */
- int error = 0; /* Error so far */
- char path_name[MAXPATHLEN]; /* General path name buffer */
- char *pfname; /* Path for database lookup */
- mntfs* mf; /* The mntfs for the map of our parent */
- am_loc **al_array; /* the generated list of locations */
- int count;
-
- dlog("in amfs_lookup_loc");
-
- mp = new_mp->am_parent;
-
- /*
- * If we get here then this is a reference to an,
- * as yet, unknown name so we need to search the mount
- * map for it.
- */
- if (mp->am_pref) {
- if (strlen(mp->am_pref) + strlen(new_mp->am_name) >= sizeof(path_name))
- ereturn(ENAMETOOLONG);
- xsnprintf(path_name, sizeof(path_name), "%s%s", mp->am_pref, new_mp->am_name);
- pfname = path_name;
- } else {
- pfname = new_mp->am_name;
- }
-
- mf = mp->am_al->al_mnt;
-
- dlog("will search map info in %s to find %s", mf->mf_info, pfname);
- /*
- * Consult the oracle for some mount information.
- * info is malloc'ed and belongs to this routine.
- * It ends up being free'd in free_continuation().
- *
- * Note that this may return -1 indicating that information
- * is not yet available.
- */
- error = mapc_search((mnt_map *) mf->mf_private, pfname, &info);
- if (error) {
- if (error > 0)
- plog(XLOG_MAP, "No map entry for %s", pfname);
- else
- plog(XLOG_MAP, "Waiting on map entry for %s", pfname);
- ereturn(error);
- }
- dlog("mount info is %s", info);
-
- /*
- * Split info into an argument vector.
- * The vector is malloc'ed and belongs to
- * this routine. It is free'd further down.
- *
- * Note: the vector pointers point into info, so don't free it!
- */
- ivecs = strsplit(info, ' ', '\"');
-
- if (mf->mf_auto)
- def_opts = mf->mf_auto;
- else
- def_opts = "";
-
- orig_def_opts = amfs_parse_defaults(mp, mf, xstrdup(def_opts));
- def_opts = xstrdup(orig_def_opts);
-
- /* first build our defaults */
- num_ivecs = 0;
- for (cur_ivec = ivecs; *cur_ivec; cur_ivec++) {
- if (**cur_ivec == '-') {
- /*
- * Pick up new defaults
- */
- char *new_def_opts = str3cat(NULL, def_opts, ";", *cur_ivec + 1);
- XFREE(def_opts);
- def_opts = new_def_opts;
- dlog("Setting def_opts to \"%s\"", def_opts);
- continue;
- } else
- num_ivecs++;
- }
-
- al_array = calloc(num_ivecs + 1, sizeof(am_loc *));
-
- /* construct the array of struct locations for this key */
- for (count = 0, cur_ivec = ivecs; *cur_ivec; cur_ivec++) {
- am_loc *new_al;
-
- if (**cur_ivec == '-') {
- XFREE(def_opts);
- if ((*cur_ivec)[1] == '\0') {
- /*
- * If we have a single dash '-' than we need to reset the
- * default options.
- */
- def_opts = xstrdup(orig_def_opts);
- dlog("Resetting the default options, a single dash '-' was found.");
- } else {
- /* append options to /default options */
- def_opts = str3cat((char *) NULL, orig_def_opts, ";", *cur_ivec + 1);
- dlog("Resetting def_opts to \"%s\"", def_opts);
- }
- continue;
- }
-
- /*
- * If a loc has already been found, and we find
- * a cut then don't try any more locations.
- *
- * XXX: we do not know when the "/" was added as an equivalent for "||".
- * It's undocumented, it might go away at any time. Caveat emptor.
- */
- if (STREQ(*cur_ivec, "/") || STREQ(*cur_ivec, "||")) {
- if (count > 0) {
- dlog("Cut: not trying any more locations for %s", pfname);
- break;
- }
- continue;
- }
-
- new_al = amfs_lookup_one_location(new_mp, mf, *cur_ivec, def_opts, pfname);
- if (new_al == NULL)
- continue;
- al_array[count++] = new_al;
- }
-
- /* We're done with ivecs */
- XFREE(ivecs);
- XFREE(info);
- XFREE(orig_def_opts);
- XFREE(def_opts);
- if (count == 0) { /* no match */
- XFREE(al_array);
- ereturn(ENOENT);
- }
-
- return al_array;
-}
-
-
-/*
- * The continuation function. This is called by
- * the task notifier when a background mount attempt
- * completes.
- */
-static void
-amfs_cont(int rc, int term, opaque_t arg)
-{
- struct continuation *cp = (struct continuation *) arg;
- am_node *mp = cp->mp;
- mntfs *mf = mp->am_al->al_mnt;
-
- dlog("amfs_cont: '%s'", mp->am_path);
-
- /*
- * Definitely not trying to mount at the moment
- */
- mf->mf_flags &= ~MFF_MOUNTING;
-
- /*
- * While we are mounting - try to avoid race conditions
- */
- new_ttl(mp);
-
- /*
- * Wakeup anything waiting for this mount
- */
- wakeup(get_mntfs_wchan(mf));
-
- /*
- * Check for termination signal or exit status...
- */
- if (rc || term) {
-#ifdef HAVE_FS_AUTOFS
- if (mf->mf_flags & MFF_IS_AUTOFS &&
- !(mf->mf_flags & MFF_MOUNTED))
- autofs_release_fh(mp);
-#endif /* HAVE_FS_AUTOFS */
-
- if (term) {
- /*
- * Not sure what to do for an error code.
- */
- mf->mf_error = EIO; /* XXX ? */
- mf->mf_flags |= MFF_ERROR;
- plog(XLOG_ERROR, "mount for %s got signal %d", mp->am_path, term);
- } else {
- /*
- * Check for exit status...
- */
-#ifdef __linux__
- /*
- * HACK ALERT!
- *
- * On Linux (and maybe not only) it's possible to run
- * an amd which "knows" how to mount certain combinations
- * of nfs_proto/nfs_version which the kernel doesn't grok.
- * So if we got an EINVAL and we have a server that's not
- * using NFSv2/UDP, try again with NFSv2/UDP.
- *
- * Too bad that there is no way to dynamically determine
- * what combinations the _client_ supports, as opposed to
- * what the _server_ supports...
- */
- if (rc == EINVAL &&
- mf->mf_server &&
- (mf->mf_server->fs_version != 2 ||
- !STREQ(mf->mf_server->fs_proto, "udp")))
- mf->mf_flags |= MFF_NFS_SCALEDOWN;
- else
-#endif /* __linux__ */
- {
- mf->mf_error = rc;
- mf->mf_flags |= MFF_ERROR;
- errno = rc; /* XXX */
- if (!STREQ(mp->am_al->al_mnt->mf_ops->fs_type, "linkx"))
- plog(XLOG_ERROR, "%s: mount (amfs_cont): %m", mp->am_path);
- }
- }
-
- if (!(mf->mf_flags & MFF_NFS_SCALEDOWN)) {
- /*
- * If we get here then that attempt didn't work, so
- * move the info vector pointer along by one and
- * call the background mount routine again
- */
- amd_stats.d_merr++;
- cp->al++;
- }
- amfs_bgmount(cp);
- if (mp->am_error > 0)
- assign_error_mntfs(mp);
- } else {
- /*
- * The mount worked.
- */
- dlog("Mounting %s returned success", cp->mp->am_path);
- am_mounted(cp->mp);
- free_continuation(cp);
- }
-
- reschedule_timeout_mp();
-}
-
-
-/*
- * Retry a mount
- */
-static void
-amfs_retry(int rc, int term, opaque_t arg)
-{
- struct continuation *cp = (struct continuation *) arg;
- am_node *mp = cp->mp;
- int error = 0;
-
- dlog("Commencing retry for mount of %s", mp->am_path);
-
- new_ttl(mp);
-
- if ((cp->start + ALLOWED_MOUNT_TIME) < clocktime(NULL)) {
- /*
- * The entire mount has timed out. Set the error code and skip past all
- * the mntfs's so that amfs_bgmount will not have any more
- * ways to try the mount, thus causing an error.
- */
- plog(XLOG_INFO, "mount of \"%s\" has timed out", mp->am_path);
- error = ETIMEDOUT;
- while (*cp->al)
- cp->al++;
- /* explicitly forbid further retries after timeout */
- cp->retry = FALSE;
- }
- if (error || !IN_PROGRESS(cp))
- error = amfs_bgmount(cp);
- else
- /* Normally it's amfs_bgmount() which frees the continuation. However, if
- * the mount is already in progress and we're in amfs_retry() for another
- * node we don't try mounting the filesystem once again. Still, we have
- * to free the continuation as we won't get called again and thus would
- * leak the continuation structure and our am_loc references.
- */
- free_continuation(cp);
-
- reschedule_timeout_mp();
-}
-
-
-/*
- * Discard an old continuation
- */
-static void
-free_continuation(struct continuation *cp)
-{
- am_loc **alp;
-
- dlog("free_continuation");
- if (cp->callout)
- untimeout(cp->callout);
- /*
- * we must free the mntfs's in the list.
- * so free all of them if there was an error,
- */
- for (alp = cp->mp->am_alarray; *alp; alp++) {
- free_loc(*alp);
- }
- XFREE(cp->mp->am_alarray);
- cp->mp->am_alarray = 0;
- XFREE(cp);
-}
-
-
-/*
- * Pick a file system to try mounting and
- * do that in the background if necessary
- *
-For each location:
- discard previous mount location if required
- fetch next mount location
- if the filesystem failed to be mounted then
- this_error = error from filesystem
- goto failed
- if the filesystem is mounting or unmounting then
- goto retry;
- if the fileserver is down then
- this_error = EIO
- continue;
- if the filesystem is already mounted
- break
- fi
-
- this_error = initialize mount point
-
- if no error on this mount and mount is delayed then
- this_error = -1
- fi
- if this_error < 0 then
- retry = true
- fi
- if no error on this mount then
- if mount in background then
- run mount in background
- return -1
- else
- this_error = mount in foreground
- fi
- fi
- if an error occurred on this mount then
- update stats
- save error in mount point
- fi
-endfor
- */
-static int
-amfs_bgmount(struct continuation *cp)
-{
- am_node *mp = cp->mp;
- am_loc *loc;
- mntfs *mf;
- int this_error = -1; /* Per-mount error */
- int hard_error = -1; /* Cumulative per-node error */
-
- if (mp->am_al)
- free_loc(mp->am_al);
-
- /*
- * Try to mount each location.
- * At the end:
- * hard_error == 0 indicates something was mounted.
- * hard_error > 0 indicates everything failed with a hard error
- * hard_error < 0 indicates nothing could be mounted now
- */
- for (mp->am_al = *cp->al; *cp->al; cp->al++, mp->am_al = *cp->al) {
- am_ops *p;
-
- loc = dup_loc(mp->am_al);
- mf = loc->al_mnt;
- p = mf->mf_ops;
-
- if (hard_error < 0)
- hard_error = this_error;
- this_error = 0;
-
- if (mf->mf_error > 0) {
- this_error = mf->mf_error;
- goto failed;
- }
-
- if (mf->mf_flags & (MFF_MOUNTING | MFF_UNMOUNTING)) {
- /*
- * Still mounting - retry later
- */
- dlog("mount of \"%s\" already pending", mf->mf_info);
- goto retry;
- }
-
- if (FSRV_ISDOWN(mf->mf_server)) {
- /*
- * Would just mount from the same place
- * as a hung mount - so give up
- */
- dlog("%s is already hung - giving up", mf->mf_server->fs_host);
- this_error = EIO;
- goto failed;
- }
-
- XFREE(mp->am_link);
- mp->am_link = NULL;
-
- if (loc->al_fo && loc->al_fo->opt_sublink && loc->al_fo->opt_sublink[0])
- mp->am_link = xstrdup(loc->al_fo->opt_sublink);
-
- /*
- * Will usually need to play around with the mount nodes
- * file attribute structure. This must be done here.
- * Try and get things initialized, even if the fileserver
- * is not known to be up. In the common case this will
- * progress things faster.
- */
-
- /*
- * Fill in attribute fields.
- */
- if (mf->mf_fsflags & FS_DIRECTORY)
- mk_fattr(&mp->am_fattr, NFDIR);
- else
- mk_fattr(&mp->am_fattr, NFLNK);
-
- if (mf->mf_flags & MFF_MOUNTED) {
- dlog("duplicate mount of \"%s\" ...", mf->mf_info);
- /*
- * Skip initial processing of the mountpoint if already mounted.
- * This could happen if we have multiple sublinks into the same f/s,
- * or if we are restarting an already-mounted filesystem.
- */
- goto already_mounted;
- }
-
- if (mf->mf_fo && mf->mf_fo->fs_mtab) {
- plog(XLOG_MAP, "Trying mount of %s on %s fstype %s mount_type %s",
- mf->mf_fo->fs_mtab, mf->mf_mount, p->fs_type,
- mp->am_flags & AMF_AUTOFS ? "autofs" : "non-autofs");
- }
-
- if (p->fs_init && !(mf->mf_flags & MFF_RESTART))
- this_error = p->fs_init(mf);
-
- if (this_error > 0)
- goto failed;
- if (this_error < 0)
- goto retry;
-
- if (loc->al_fo && loc->al_fo->opt_delay) {
- /*
- * If there is a delay timer on the location
- * then don't try to mount if the timer
- * has not expired.
- */
- int i = atoi(loc->al_fo->opt_delay);
- time_t now = clocktime(NULL);
- if (i > 0 && now < (cp->start + i)) {
- dlog("Mount of %s delayed by %lds", mf->mf_mount, (long) (i - now + cp->start));
- goto retry;
- }
- }
-
- /*
- * If the directory is not yet made and it needs to be made, then make it!
- */
- if (!(mf->mf_flags & MFF_MKMNT) && mf->mf_fsflags & FS_MKMNT) {
- plog(XLOG_INFO, "creating mountpoint directory '%s'", mf->mf_mount);
- this_error = mkdirs(mf->mf_mount, 0555);
- if (this_error) {
- plog(XLOG_ERROR, "mkdirs failed: %s", strerror(this_error));
- goto failed;
- }
- mf->mf_flags |= MFF_MKMNT;
- }
-
-#ifdef HAVE_FS_AUTOFS
- if (mf->mf_flags & MFF_IS_AUTOFS)
- if ((this_error = autofs_get_fh(mp)))
- goto failed;
-#endif /* HAVE_FS_AUTOFS */
-
- already_mounted:
- mf->mf_flags |= MFF_MOUNTING;
- if (mf->mf_fsflags & FS_MBACKGROUND) {
- dlog("backgrounding mount of \"%s\"", mf->mf_mount);
- if (cp->callout) {
- untimeout(cp->callout);
- cp->callout = 0;
- }
-
- /* actually run the task, backgrounding as necessary */
- run_task(mount_node, (opaque_t) mp, amfs_cont, (opaque_t) cp);
- return -1;
- } else {
- dlog("foreground mount of \"%s\" ...", mf->mf_mount);
- this_error = mount_node((opaque_t) mp);
- }
-
- mf->mf_flags &= ~MFF_MOUNTING;
- if (this_error > 0)
- goto failed;
- if (this_error == 0) {
- am_mounted(mp);
- break; /* Success */
- }
-
- retry:
- if (!cp->retry)
- continue;
- dlog("will retry ...\n");
-
- /*
- * Arrange that amfs_bgmount is called
- * after anything else happens.
- */
- dlog("Arranging to retry mount of %s", mp->am_path);
- sched_task(amfs_retry, (opaque_t) cp, get_mntfs_wchan(mf));
- if (cp->callout)
- untimeout(cp->callout);
- cp->callout = timeout(RETRY_INTERVAL, wakeup,
- (opaque_t) get_mntfs_wchan(mf));
-
- mp->am_ttl = clocktime(NULL) + RETRY_INTERVAL;
-
- /*
- * Not done yet - so don't return anything
- */
- return -1;
-
- failed:
- if (!FSRV_ISDOWN(mf->mf_server)) {
- /* mark the mount as failed unless the server is down */
- amd_stats.d_merr++;
- mf->mf_error = this_error;
- mf->mf_flags |= MFF_ERROR;
-#ifdef HAVE_FS_AUTOFS
- if (mp->am_autofs_fh)
- autofs_release_fh(mp);
-#endif /* HAVE_FS_AUTOFS */
- if (mf->mf_flags & MFF_MKMNT) {
- rmdirs(mf->mf_mount);
- mf->mf_flags &= ~MFF_MKMNT;
- }
- }
- /*
- * Wakeup anything waiting for this mount
- */
- wakeup(get_mntfs_wchan(mf));
- free_loc(loc);
- /* continue */
- }
-
- /*
- * If we get here, then either the mount succeeded or
- * there is no more mount information available.
- */
- if (this_error) {
- if (mp->am_al)
- free_loc(mp->am_al);
- mp->am_al = loc = new_loc();
- mf = loc->al_mnt;
-
-#ifdef HAVE_FS_AUTOFS
- if (mp->am_flags & AMF_AUTOFS)
- autofs_mount_failed(mp);
- else
-#endif /* HAVE_FS_AUTOFS */
- nfs_quick_reply(mp, this_error);
-
- if (hard_error <= 0)
- hard_error = this_error;
- if (hard_error < 0)
- hard_error = ETIMEDOUT;
-
- /*
- * Set a small(ish) timeout on an error node if
- * the error was not a time out.
- */
- switch (hard_error) {
- case ETIMEDOUT:
- case EWOULDBLOCK:
- case EIO:
- mp->am_timeo = 17;
- break;
- default:
- mp->am_timeo = 5;
- break;
- }
- new_ttl(mp);
- } else {
- mf = loc->al_mnt;
- /*
- * Wakeup anything waiting for this mount
- */
- wakeup(get_mntfs_wchan(mf));
- hard_error = 0;
- }
-
- /*
- * Make sure that the error value in the mntfs has a
- * reasonable value.
- */
- if (mf->mf_error < 0) {
- mf->mf_error = hard_error;
- if (hard_error)
- mf->mf_flags |= MFF_ERROR;
- }
-
- /*
- * In any case we don't need the continuation any more
- */
- free_continuation(cp);
-
- return hard_error;
-}
-
-
-static char *
-amfs_parse_defaults(am_node *mp, mntfs *mf, char *def_opts)
-{
- char *dflts;
- char *dfl;
- char **rvec = NULL;
- struct mnt_map *mm = (mnt_map *) mf->mf_private;
-
- dlog("determining /defaults entry value");
-
- /*
- * Find out if amd.conf overrode any map-specific /defaults.
- */
- if (mm->cfm && mm->cfm->cfm_defaults) {
- dlog("map %s map_defaults override: %s", mf->mf_mount, mm->cfm->cfm_defaults);
- dflts = xstrdup(mm->cfm->cfm_defaults);
- } else if (mapc_search(mm, "/defaults", &dflts) == 0) {
- dlog("/defaults gave %s", dflts);
- } else {
- return def_opts; /* if nothing found */
- }
-
- /* trim leading '-' in case thee's one */
- if (*dflts == '-')
- dfl = dflts + 1;
- else
- dfl = dflts;
-
- /*
- * Chop the defaults up
- */
- rvec = strsplit(dfl, ' ', '\"');
-
- if (gopt.flags & CFM_SELECTORS_IN_DEFAULTS) {
- /*
- * Pick whichever first entry matched the list of selectors.
- * Strip the selectors from the string, and assign to dfl the
- * rest of the string.
- */
- if (rvec) {
- am_opts ap;
- am_ops *pt;
- char **sp = rvec;
- while (*sp) { /* loop until you find something, if any */
- memset((char *) &ap, 0, sizeof(am_opts));
- /*
- * This next routine cause many spurious "expansion of ... is"
- * messages, which are ignored, b/c all we need out of this
- * routine is to match selectors. These spurious messages may
- * be wrong, esp. if they try to expand ${key} b/c it will
- * get expanded to "/defaults"
- */
- pt = ops_match(&ap, *sp, "", mp->am_path, "/defaults",
- mp->am_parent->am_al->al_mnt->mf_info);
- free_opts(&ap); /* don't leak */
- if (pt == &amfs_error_ops) {
- plog(XLOG_MAP, "did not match defaults for \"%s\"", *sp);
- } else {
- dfl = strip_selectors(*sp, "/defaults");
- plog(XLOG_MAP, "matched default selectors \"%s\"", dfl);
- break;
- }
- ++sp;
- }
- }
- } else { /* not selectors_in_defaults */
- /*
- * Extract first value
- */
- dfl = rvec[0];
- }
-
- /*
- * If there were any values at all...
- */
- if (dfl) {
- /*
- * Log error if there were other values
- */
- if (!(gopt.flags & CFM_SELECTORS_IN_DEFAULTS) && rvec[1]) {
- dlog("/defaults chopped into %s", dfl);
- plog(XLOG_USER, "More than a single value for /defaults in %s", mf->mf_info);
- }
-
- /*
- * Prepend to existing defaults if they exist,
- * otherwise just use these defaults.
- */
- if (*def_opts && *dfl) {
- size_t l = strlen(def_opts) + strlen(dfl) + 2;
- char *nopts = (char *) xmalloc(l);
- xsnprintf(nopts, l, "%s;%s", dfl, def_opts);
- XFREE(def_opts);
- def_opts = nopts;
- } else if (*dfl) {
- def_opts = strealloc(def_opts, dfl);
- }
- }
-
- XFREE(dflts);
-
- /* don't need info vector any more */
- if (rvec)
- XFREE(rvec);
-
- return def_opts;
-}
-
-
-am_node *
-amfs_generic_mount_child(am_node *new_mp, int *error_return)
-{
- int error;
- struct continuation *cp; /* Continuation structure if need to mount */
-
- dlog("in amfs_generic_mount_child");
-
- *error_return = error = 0; /* Error so far */
-
- /* we have an errorfs attached to the am_node, free it */
- if (new_mp->am_al)
- free_loc(new_mp->am_al);
- new_mp->am_al = NULL;
-
- /*
- * Construct a continuation
- */
- cp = ALLOC(struct continuation);
- cp->callout = 0;
- cp->mp = new_mp;
- cp->retry = TRUE;
- cp->start = clocktime(NULL);
- cp->al = new_mp->am_alarray;
-
- /*
- * Try and mount the file system. If this succeeds immediately (possible
- * for a ufs file system) then return the attributes, otherwise just
- * return an error.
- */
- error = amfs_bgmount(cp);
- reschedule_timeout_mp();
- if (!error)
- return new_mp;
-
- /*
- * Code for quick reply. If current_transp is set, then it's the
- * transp that's been passed down from nfs_dispatcher() or from
- * autofs_program_[123]().
- * If new_mp->am_transp is not already set, set it by copying in
- * current_transp. Once am_transp is set, nfs_quick_reply() and
- * autofs_mount_succeeded() can use it to send a reply to the
- * client that requested this mount.
- */
- if (current_transp && !new_mp->am_transp) {
- dlog("Saving RPC transport for %s", new_mp->am_path);
- new_mp->am_transp = (SVCXPRT *) xmalloc(sizeof(SVCXPRT));
- *(new_mp->am_transp) = *current_transp;
- }
- if (error && new_mp->am_al && new_mp->am_al->al_mnt &&
- (new_mp->am_al->al_mnt->mf_ops == &amfs_error_ops))
- new_mp->am_error = error;
-
- if (new_mp->am_error > 0)
- assign_error_mntfs(new_mp);
-
- ereturn(error);
-}
-
-
-/*
- * Automount interface to RPC lookup routine
- * Find the corresponding entry and return
- * the file handle for it.
- */
-am_node *
-amfs_generic_lookup_child(am_node *mp, char *fname, int *error_return, int op)
-{
- am_node *new_mp;
- am_loc **al_array;
- int mp_error;
-
- dlog("in amfs_generic_lookup_child");
-
- *error_return = 0;
- new_mp = amfs_lookup_node(mp, fname, error_return);
-
- /* return if we got an error */
- if (!new_mp || *error_return > 0)
- return new_mp;
-
- /* also return if it's already mounted and known to be up */
- if (*error_return == 0 && FSRV_ISUP(new_mp->am_al->al_mnt->mf_server))
- return new_mp;
-
- switch (op) {
- case VLOOK_DELETE:
- /*
- * If doing a delete then don't create again!
- */
- ereturn(ENOENT);
- case VLOOK_LOOKUP:
- return new_mp;
- }
-
- /* save error_return */
- mp_error = *error_return;
-
- al_array = amfs_lookup_loc(new_mp, error_return);
- if (!al_array) {
- new_mp->am_error = new_mp->am_al->al_mnt->mf_error = *error_return;
- free_map(new_mp);
- return NULL;
- }
-
- /* store the array inside the am_node */
- new_mp->am_alarray = al_array;
-
- /*
- * Note: while it might seem like a good idea to prioritize
- * the list of mntfs's we got here, it probably isn't.
- * It would ignore the ordering of entries specified by the user,
- * which is counterintuitive and confusing.
- */
- return new_mp;
-}
-
-
-void
-amfs_generic_mounted(mntfs *mf)
-{
- amfs_mkcacheref(mf);
-}
-
-
-/*
- * Unmount an automount sub-node
- */
-int
-amfs_generic_umount(am_node *mp, mntfs *mf)
-{
- int error = 0;
-
-#ifdef HAVE_FS_AUTOFS
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
- if (mf->mf_flags & MFF_IS_AUTOFS)
- error = UMOUNT_FS(mp->am_path, mnttab_file_name, unmount_flags);
-#endif /* HAVE_FS_AUTOFS */
-
- return error;
-}
-
-
-char *
-amfs_generic_match(am_opts *fo)
-{
- char *p;
-
- if (!fo->opt_rfs) {
- plog(XLOG_USER, "amfs_generic_match: no mount point named (rfs:=)");
- return 0;
- }
- if (!fo->opt_fs) {
- plog(XLOG_USER, "amfs_generic_match: no map named (fs:=)");
- return 0;
- }
-
- /*
- * Swap round fs:= and rfs:= options
- * ... historical (jsp)
- */
- p = fo->opt_rfs;
- fo->opt_rfs = fo->opt_fs;
- fo->opt_fs = p;
-
- /*
- * mtab entry turns out to be the name of the mount map
- */
- return xstrdup(fo->opt_rfs ? fo->opt_rfs : ".");
-}
diff --git a/contrib/amd/amd/amfs_host.c b/contrib/amd/amd/amfs_host.c
deleted file mode 100644
index a3468ecd4b65..000000000000
--- a/contrib/amd/amd/amfs_host.c
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_host.c
- *
- */
-
-/*
- * NFS host file system.
- * Mounts all exported filesystems from a given host.
- * This has now degenerated into a mess but will not
- * be rewritten. Amd 6 will support the abstractions
- * needed to make this work correctly.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-static char *amfs_host_match(am_opts *fo);
-static int amfs_host_init(mntfs *mf);
-static int amfs_host_mount(am_node *am, mntfs *mf);
-static int amfs_host_umount(am_node *am, mntfs *mf);
-static void amfs_host_umounted(mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops amfs_host_ops =
-{
- "host",
- amfs_host_match,
- amfs_host_init,
- amfs_host_mount,
- amfs_host_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* amfs_host_readlink */
- 0, /* amfs_host_mounted */
- amfs_host_umounted,
- find_nfs_srvr,
- 0, /* amfs_host_get_wchan */
- FS_MKMNT | FS_BACKGROUND | FS_AMQINFO,
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_HOST_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * Determine the mount point:
- *
- * The next change we put in to better handle PCs. This is a bit
- * disgusting, so you'd better sit down. We change the make_mntpt function
- * to look for exported file systems without a leading '/'. If they don't
- * have a leading '/', we add one. If the export is 'a:' through 'z:'
- * (without a leading slash), we change it to 'a%' (or b% or z%). This
- * allows the entire PC disk to be mounted.
- */
-static void
-make_mntpt(char *mntpt, size_t l, const exports ex, const char *mf_mount)
-{
- if (ex->ex_dir[0] == '/') {
- if (ex->ex_dir[1] == 0)
- xstrlcpy(mntpt, mf_mount, l);
- else
- xsnprintf(mntpt, l, "%s%s", mf_mount, ex->ex_dir);
- } else if (ex->ex_dir[0] >= 'a' &&
- ex->ex_dir[0] <= 'z' &&
- ex->ex_dir[1] == ':' &&
- ex->ex_dir[2] == '/' &&
- ex->ex_dir[3] == 0)
- xsnprintf(mntpt, l, "%s/%c%%", mf_mount, ex->ex_dir[0]);
- else
- xsnprintf(mntpt, l, "%s/%s", mf_mount, ex->ex_dir);
-}
-
-
-/*
- * Execute needs the same as NFS plus a helper command
- */
-static char *
-amfs_host_match(am_opts *fo)
-{
- extern am_ops nfs_ops;
-
- /*
- * Make sure rfs is specified to keep nfs_match happy...
- */
- if (!fo->opt_rfs)
- fo->opt_rfs = "/";
-
- return (*nfs_ops.fs_match) (fo);
-}
-
-
-static int
-amfs_host_init(mntfs *mf)
-{
- u_short mountd_port;
-
- if (strchr(mf->mf_info, ':') == 0)
- return ENOENT;
-
- /*
- * This is primarily to schedule a wakeup so that as soon
- * as our fileserver is ready, we can continue setting up
- * the host filesystem. If we don't do this, the standard
- * amfs_auto code will set up a fileserver structure, but it will
- * have to wait for another nfs request from the client to come
- * in before finishing. Our way is faster since we don't have
- * to wait for the client to resend its request (which could
- * take a second or two).
- */
- /*
- * First, we find the fileserver for this mntfs and then call
- * get_mountd_port with our mntfs passed as the wait channel.
- * get_mountd_port will check some things and then schedule
- * it so that when the fileserver is ready, a wakeup is done
- * on this mntfs. amfs_cont() is already sleeping on this mntfs
- * so as soon as that wakeup happens amfs_cont() is called and
- * this mount is retried.
- */
- if (mf->mf_server)
- /*
- * We don't really care if there's an error returned.
- * Since this is just to help speed things along, the
- * error will get handled properly elsewhere.
- */
- get_mountd_port(mf->mf_server, &mountd_port, get_mntfs_wchan(mf));
-
- return 0;
-}
-
-
-static int
-do_mount(am_nfs_handle_t *fhp, char *mntdir, char *fs_name, mntfs *mf)
-{
- struct stat stb;
-
- dlog("amfs_host: mounting fs %s on %s\n", fs_name, mntdir);
-
- (void) mkdirs(mntdir, 0555);
- if (stat(mntdir, &stb) < 0 || (stb.st_mode & S_IFMT) != S_IFDIR) {
- plog(XLOG_ERROR, "No mount point for %s - skipping", mntdir);
- return ENOENT;
- }
-
- return mount_nfs_fh(fhp, mntdir, fs_name, mf);
-}
-
-
-static int
-sortfun(const voidp x, const voidp y)
-{
- exports *a = (exports *) x;
- exports *b = (exports *) y;
-
- return strcmp((*a)->ex_dir, (*b)->ex_dir);
-}
-
-
-/*
- * Get filehandle
- */
-static int
-fetch_fhandle(CLIENT *client, char *dir, am_nfs_handle_t *fhp, u_long nfs_version)
-{
- struct timeval tv;
- enum clnt_stat clnt_stat;
- struct fhstatus res;
-#ifdef HAVE_FS_NFS3
- struct am_mountres3 res3;
-#endif /* HAVE_FS_NFS3 */
-
- /*
- * Pick a number, any number...
- */
- tv.tv_sec = 20;
- tv.tv_usec = 0;
-
- dlog("Fetching fhandle for %s", dir);
-
- /*
- * Call the mount daemon on the remote host to
- * get the filehandle. Use NFS version specific call.
- */
-
- plog(XLOG_INFO, "fetch_fhandle: NFS version %d", (int) nfs_version);
-#ifdef HAVE_FS_NFS3
- if (nfs_version == NFS_VERSION3
-#ifdef HAVE_FS_NFS4
-#ifndef NO_FALLBACK
- || nfs_version == NFS_VERSION4
-#endif /* NO_FALLBACK */
-#endif /* HAVE_FS_NFS4 */
- ) {
-
- memset((char *) &res3, 0, sizeof(res3));
- clnt_stat = clnt_call(client,
- MOUNTPROC_MNT,
- (XDRPROC_T_TYPE) xdr_dirpath,
- (SVC_IN_ARG_TYPE) &dir,
- (XDRPROC_T_TYPE) xdr_am_mountres3,
- (SVC_IN_ARG_TYPE) &res3,
- tv);
- if (clnt_stat != RPC_SUCCESS) {
- plog(XLOG_ERROR, "mountd rpc failed: %s", clnt_sperrno(clnt_stat));
- return EIO;
- }
- /* Check the status of the filehandle */
- if ((errno = res3.fhs_status)) {
- dlog("fhandle fetch for mount version 3 failed: %m");
- return errno;
- }
- memset((voidp) &fhp->v3, 0, sizeof(am_nfs_fh3));
- fhp->v3.am_fh3_length = res3.mountres3_u.mountinfo.fhandle.fhandle3_len;
- memmove(fhp->v3.am_fh3_data,
- res3.mountres3_u.mountinfo.fhandle.fhandle3_val,
- fhp->v3.am_fh3_length);
- } else { /* not NFS_VERSION3 mount */
-#endif /* HAVE_FS_NFS3 */
- clnt_stat = clnt_call(client,
- MOUNTPROC_MNT,
- (XDRPROC_T_TYPE) xdr_dirpath,
- (SVC_IN_ARG_TYPE) &dir,
- (XDRPROC_T_TYPE) xdr_fhstatus,
- (SVC_IN_ARG_TYPE) &res,
- tv);
- if (clnt_stat != RPC_SUCCESS) {
- plog(XLOG_ERROR, "mountd rpc failed: %s", clnt_sperrno(clnt_stat));
- return EIO;
- }
- /* Check status of filehandle */
- if (res.fhs_status) {
- errno = res.fhs_status;
- dlog("fhandle fetch for mount version 1 failed: %m");
- return errno;
- }
- memmove(&fhp->v2, &res.fhs_fh, NFS_FHSIZE);
-#ifdef HAVE_FS_NFS3
- } /* end of "if (nfs_version == NFS_VERSION3)" statement */
-#endif /* HAVE_FS_NFS3 */
-
- /* all is well */
- return 0;
-}
-
-
-/*
- * Scan mount table to see if something already mounted
- */
-static int
-already_mounted(mntlist *mlist, char *dir)
-{
- mntlist *ml;
-
- for (ml = mlist; ml; ml = ml->mnext)
- if (STREQ(ml->mnt->mnt_dir, dir))
- return 1;
- return 0;
-}
-
-
-static int
-amfs_host_mount(am_node *am, mntfs *mf)
-{
- struct timeval tv2;
- CLIENT *client;
- enum clnt_stat clnt_stat;
- int n_export;
- int j, k;
- exports exlist = 0, ex;
- exports *ep = NULL;
- am_nfs_handle_t *fp = NULL;
- char *host;
- int error = 0;
- struct sockaddr_in sin;
- int sock = RPC_ANYSOCK;
- int ok = FALSE;
- mntlist *mlist;
- char fs_name[MAXPATHLEN], *rfs_dir;
- char mntpt[MAXPATHLEN];
- struct timeval tv;
- u_long mnt_version;
-
- /*
- * WebNFS servers don't necessarily run mountd.
- */
- if (mf->mf_flags & MFF_WEBNFS) {
- plog(XLOG_ERROR, "amfs_host_mount: cannot support WebNFS");
- return EIO;
- }
-
- /*
- * Read the mount list
- */
- mlist = read_mtab(mf->mf_mount, mnttab_file_name);
-
-#ifdef MOUNT_TABLE_ON_FILE
- /*
- * Unlock the mount list
- */
- unlock_mntlist();
-#endif /* MOUNT_TABLE_ON_FILE */
-
- /*
- * Take a copy of the server hostname, address, and nfs version
- * to mount version conversion.
- */
- host = mf->mf_server->fs_host;
- sin = *mf->mf_server->fs_ip;
- plog(XLOG_INFO, "amfs_host_mount: NFS version %d", (int) mf->mf_server->fs_version);
-#ifdef HAVE_FS_NFS3
- if (mf->mf_server->fs_version == NFS_VERSION3)
- mnt_version = AM_MOUNTVERS3;
- else
-#endif /* HAVE_FS_NFS3 */
- mnt_version = MOUNTVERS;
-
- /*
- * The original 10 second per try timeout is WAY too large, especially
- * if we're only waiting 10 or 20 seconds max for the response.
- * That would mean we'd try only once in 10 seconds, and we could
- * lose the transmit or receive packet, and never try again.
- * A 2-second per try timeout here is much more reasonable.
- * 09/28/92 Mike Mitchell, mcm@unx.sas.com
- */
- tv.tv_sec = 2;
- tv.tv_usec = 0;
-
- /*
- * Create a client attached to mountd
- */
- client = get_mount_client(host, &sin, &tv, &sock, mnt_version);
- if (client == NULL) {
-#ifdef HAVE_CLNT_SPCREATEERROR
- plog(XLOG_ERROR, "get_mount_client failed for %s: %s",
- host, clnt_spcreateerror(""));
-#else /* not HAVE_CLNT_SPCREATEERROR */
- plog(XLOG_ERROR, "get_mount_client failed for %s", host);
-#endif /* not HAVE_CLNT_SPCREATEERROR */
- error = EIO;
- goto out;
- }
- if (!nfs_auth) {
- error = make_nfs_auth();
- if (error)
- goto out;
- }
- client->cl_auth = nfs_auth;
-
- dlog("Fetching export list from %s", host);
-
- /*
- * Fetch the export list
- */
- tv2.tv_sec = 10;
- tv2.tv_usec = 0;
- clnt_stat = clnt_call(client,
- MOUNTPROC_EXPORT,
- (XDRPROC_T_TYPE) xdr_void,
- 0,
- (XDRPROC_T_TYPE) xdr_exports,
- (SVC_IN_ARG_TYPE) & exlist,
- tv2);
- if (clnt_stat != RPC_SUCCESS) {
- const char *msg = clnt_sperrno(clnt_stat);
- plog(XLOG_ERROR, "host_mount rpc failed: %s", msg);
- /* clnt_perror(client, "rpc"); */
- error = EIO;
- goto out;
- }
-
- /*
- * Figure out how many exports were returned
- */
- for (n_export = 0, ex = exlist; ex; ex = ex->ex_next) {
- n_export++;
- }
-
- /*
- * Allocate an array of pointers into the list
- * so that they can be sorted. If the filesystem
- * is already mounted then ignore it.
- */
- ep = (exports *) xmalloc(n_export * sizeof(exports));
- for (j = 0, ex = exlist; ex; ex = ex->ex_next) {
- make_mntpt(mntpt, sizeof(mntpt), ex, mf->mf_mount);
- if (already_mounted(mlist, mntpt))
- /* we have at least one mounted f/s, so don't fail the mount */
- ok = TRUE;
- else
- ep[j++] = ex;
- }
- n_export = j;
-
- /*
- * Sort into order.
- * This way the mounts are done in order down the tree,
- * instead of any random order returned by the mount
- * daemon (the protocol doesn't specify...).
- */
- qsort(ep, n_export, sizeof(exports), sortfun);
-
- /*
- * Allocate an array of filehandles
- */
- fp = (am_nfs_handle_t *) xmalloc(n_export * sizeof(am_nfs_handle_t));
-
- /*
- * Try to obtain filehandles for each directory.
- * If a fetch fails then just zero out the array
- * reference but discard the error.
- */
- for (j = k = 0; j < n_export; j++) {
- /* Check and avoid a duplicated export entry */
- if (j > k && ep[k] && STREQ(ep[j]->ex_dir, ep[k]->ex_dir)) {
- dlog("avoiding dup fhandle requested for %s", ep[j]->ex_dir);
- ep[j] = NULL;
- } else {
- k = j;
- error = fetch_fhandle(client, ep[j]->ex_dir, &fp[j],
- mf->mf_server->fs_version);
- if (error)
- ep[j] = NULL;
- }
- }
-
- /*
- * Mount each filesystem for which we have a filehandle.
- * If any of the mounts succeed then mark "ok" and return
- * error code 0 at the end. If they all fail then return
- * the last error code.
- */
- xstrlcpy(fs_name, mf->mf_info, sizeof(fs_name));
- if ((rfs_dir = strchr(fs_name, ':')) == (char *) NULL) {
- plog(XLOG_FATAL, "amfs_host_mount: mf_info has no colon");
- error = EINVAL;
- goto out;
- }
- ++rfs_dir;
- for (j = 0; j < n_export; j++) {
- ex = ep[j];
- if (ex) {
- /*
- * Note: the sizeof space left in rfs_dir is what's left in fs_name
- * after strchr() above returned a pointer _inside_ fs_name. The
- * calculation below also takes into account that rfs_dir was
- * incremented by the ++ above.
- */
- xstrlcpy(rfs_dir, ex->ex_dir, sizeof(fs_name) - (rfs_dir - fs_name));
- make_mntpt(mntpt, sizeof(mntpt), ex, mf->mf_mount);
- if (do_mount(&fp[j], mntpt, fs_name, mf) == 0)
- ok = TRUE;
- }
- }
-
- /*
- * Clean up and exit
- */
-out:
- discard_mntlist(mlist);
- XFREE(ep);
- XFREE(fp);
- if (sock != RPC_ANYSOCK)
- (void) amu_close(sock);
- if (client)
- clnt_destroy(client);
- if (exlist)
- xdr_pri_free((XDRPROC_T_TYPE) xdr_exports, (caddr_t) &exlist);
- if (ok)
- return 0;
- return error;
-}
-
-
-/*
- * Return true if pref is a directory prefix of dir.
- *
- * XXX TODO:
- * Does not work if pref is "/".
- */
-static int
-directory_prefix(char *pref, char *dir)
-{
- int len = strlen(pref);
-
- if (!NSTREQ(pref, dir, len))
- return FALSE;
- if (dir[len] == '/' || dir[len] == '\0')
- return TRUE;
- return FALSE;
-}
-
-
-/*
- * Unmount a mount tree
- */
-static int
-amfs_host_umount(am_node *am, mntfs *mf)
-{
- mntlist *ml, *mprev;
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
- int xerror = 0;
-
- /*
- * Read the mount list
- */
- mntlist *mlist = read_mtab(mf->mf_mount, mnttab_file_name);
-
-#ifdef MOUNT_TABLE_ON_FILE
- /*
- * Unlock the mount list
- */
- unlock_mntlist();
-#endif /* MOUNT_TABLE_ON_FILE */
-
- /*
- * Reverse list...
- */
- ml = mlist;
- mprev = NULL;
- while (ml) {
- mntlist *ml2 = ml->mnext;
- ml->mnext = mprev;
- mprev = ml;
- ml = ml2;
- }
- mlist = mprev;
-
- /*
- * Unmount all filesystems...
- */
- for (ml = mlist; ml && !xerror; ml = ml->mnext) {
- char *dir = ml->mnt->mnt_dir;
- if (directory_prefix(mf->mf_mount, dir)) {
- int error;
- dlog("amfs_host: unmounts %s", dir);
- /*
- * Unmount "dir"
- */
- error = UMOUNT_FS(dir, mnttab_file_name, unmount_flags);
- /*
- * Keep track of errors
- */
- if (error) {
- /*
- * If we have not already set xerror and error is not ENOENT,
- * then set xerror equal to error and log it.
- * 'xerror' is the return value for this function.
- *
- * We do not want to pass ENOENT as an error because if the
- * directory does not exists our work is done anyway.
- */
- if (!xerror && error != ENOENT)
- xerror = error;
- if (error != EBUSY) {
- errno = error;
- plog(XLOG_ERROR, "Tree unmount of %s failed: %m", ml->mnt->mnt_dir);
- }
- } else {
- (void) rmdirs(dir);
- }
- }
- }
-
- /*
- * Throw away mount list
- */
- discard_mntlist(mlist);
-
- /*
- * Try to remount, except when we are shutting down.
- */
- if (xerror && amd_state != Finishing) {
- xerror = amfs_host_mount(am, mf);
- if (!xerror) {
- /*
- * Don't log this - it's usually too verbose
- plog(XLOG_INFO, "Remounted host %s", mf->mf_info);
- */
- xerror = EBUSY;
- }
- }
- return xerror;
-}
-
-
-/*
- * Tell mountd we're done.
- * This is not quite right, because we may still
- * have other filesystems mounted, but the existing
- * mountd protocol is badly broken anyway.
- */
-static void
-amfs_host_umounted(mntfs *mf)
-{
- char *host;
- CLIENT *client;
- enum clnt_stat clnt_stat;
- struct sockaddr_in sin;
- int sock = RPC_ANYSOCK;
- struct timeval tv;
- u_long mnt_version;
-
- if (mf->mf_error || mf->mf_refc > 1 || !mf->mf_server)
- return;
-
- /*
- * WebNFS servers shouldn't ever get here.
- */
- if (mf->mf_flags & MFF_WEBNFS) {
- plog(XLOG_ERROR, "amfs_host_umounted: cannot support WebNFS");
- return;
- }
-
- /*
- * Take a copy of the server hostname, address, and NFS version
- * to mount version conversion.
- */
- host = mf->mf_server->fs_host;
- sin = *mf->mf_server->fs_ip;
- plog(XLOG_INFO, "amfs_host_umounted: NFS version %d", (int) mf->mf_server->fs_version);
-#ifdef HAVE_FS_NFS3
- if (mf->mf_server->fs_version == NFS_VERSION3)
- mnt_version = AM_MOUNTVERS3;
- else
-#endif /* HAVE_FS_NFS3 */
- mnt_version = MOUNTVERS;
-
- /*
- * Create a client attached to mountd
- */
- tv.tv_sec = 10;
- tv.tv_usec = 0;
- client = get_mount_client(host, &sin, &tv, &sock, mnt_version);
- if (client == NULL) {
-#ifdef HAVE_CLNT_SPCREATEERROR
- plog(XLOG_ERROR, "get_mount_client failed for %s: %s",
- host, clnt_spcreateerror(""));
-#else /* not HAVE_CLNT_SPCREATEERROR */
- plog(XLOG_ERROR, "get_mount_client failed for %s", host);
-#endif /* not HAVE_CLNT_SPCREATEERROR */
- goto out;
- }
-
- if (!nfs_auth) {
- if (make_nfs_auth())
- goto out;
- }
- client->cl_auth = nfs_auth;
-
- dlog("Unmounting all from %s", host);
-
- clnt_stat = clnt_call(client,
- MOUNTPROC_UMNTALL,
- (XDRPROC_T_TYPE) xdr_void,
- 0,
- (XDRPROC_T_TYPE) xdr_void,
- 0,
- tv);
- if (clnt_stat != RPC_SUCCESS && clnt_stat != RPC_SYSTEMERROR) {
- /* RPC_SYSTEMERROR seems to be returned for no good reason ... */
- const char *msg = clnt_sperrno(clnt_stat);
- plog(XLOG_ERROR, "unmount all from %s rpc failed: %s", host, msg);
- goto out;
- }
-
-out:
- if (sock != RPC_ANYSOCK)
- (void) amu_close(sock);
- if (client)
- clnt_destroy(client);
-}
diff --git a/contrib/amd/amd/amfs_link.c b/contrib/amd/amd/amfs_link.c
deleted file mode 100644
index 0751dd7047a0..000000000000
--- a/contrib/amd/amd/amfs_link.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_link.c
- *
- */
-
-/*
- * Symbol-link file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward declarations */
-static int amfs_link_mount(am_node *mp, mntfs *mf);
-static int amfs_link_umount(am_node *mp, mntfs *mf);
-
-/*
- * Ops structures
- */
-am_ops amfs_link_ops =
-{
- "link",
- amfs_link_match,
- 0, /* amfs_link_init */
- amfs_link_mount,
- amfs_link_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* amfs_link_readlink */
- 0, /* amfs_link_mounted */
- 0, /* amfs_link_umounted */
- amfs_generic_find_srvr,
- 0, /* nfs_fs_flags */
- 0, /* amfs_link_get_wchan */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_LINK_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * SFS needs a link.
- */
-char *
-amfs_link_match(am_opts *fo)
-{
-
- if (!fo->opt_fs) {
- plog(XLOG_USER, "link: no fs specified");
- return 0;
- }
-
- /*
- * If the link target points to another mount point, then we could
- * end up with an unpleasant situation, where the link f/s simply
- * "assumes" the mntfs of that mount point.
- *
- * For example, if the link points to /usr, and /usr is a real ufs
- * filesystem, then the link f/s will use the inherited ufs mntfs,
- * and the end result will be that it will become unmountable.
- *
- * To prevent this, we use a hack: we prepend a dot ('.') to opt_fs if
- * its original value was an absolute path, so that it will never match
- * any other mntfs.
- *
- * XXX: a less hacky solution should be used...
- */
- if (fo->opt_fs[0] == '/') {
- char *link_hack = str3cat(NULL, ".", fo->opt_fs, "");
- if (fo->opt_sublink == NULL || fo->opt_sublink[0] == '\0')
- fo->opt_sublink = xstrdup(fo->opt_fs);
- XFREE(fo->opt_fs);
- fo->opt_fs = link_hack;
- }
-
- return xstrdup(fo->opt_fs);
-}
-
-
-static int
-amfs_link_mount(am_node *mp, mntfs *mf)
-{
- return 0;
-}
-
-
-static int
-amfs_link_umount(am_node *mp, mntfs *mf)
-{
- return 0;
-}
diff --git a/contrib/amd/amd/amfs_linkx.c b/contrib/amd/amd/amfs_linkx.c
deleted file mode 100644
index be95fe5e1a27..000000000000
--- a/contrib/amd/amd/amfs_linkx.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_linkx.c
- *
- */
-
-/*
- * Symbol-link file system, with test that the target of the link exists.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward declarations */
-static int amfs_linkx_mount(am_node *mp, mntfs *mf);
-static int amfs_linkx_umount(am_node *mp, mntfs *mf);
-
-/*
- * linkx operations
- */
-struct am_ops amfs_linkx_ops =
-{
- "linkx",
- amfs_link_match,
- 0, /* amfs_linkx_init */
- amfs_linkx_mount,
- amfs_linkx_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* amfs_linkx_readlink */
- 0, /* amfs_linkx_mounted */
- 0, /* amfs_linkx_umounted */
- amfs_generic_find_srvr,
- 0, /* amfs_linkx_get_wchan */
- FS_MBACKGROUND,
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_LINKX_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-static int
-amfs_linkx_mount(am_node *mp, mntfs *mf)
-{
- /*
- * Check for existence of target.
- */
- struct stat stb;
- char *ln;
-
- if (mp->am_link)
- ln = mp->am_link;
- else /* should never occur */
- ln = mf->mf_mount;
-
- /*
- * Use lstat, not stat, since we don't
- * want to know if the ultimate target of
- * a symlink chain exists, just the first.
- */
- if (lstat(ln, &stb) < 0)
- return errno;
-
- return 0;
-}
-
-
-static int
-amfs_linkx_umount(am_node *mp, mntfs *mf)
-{
- return 0;
-}
diff --git a/contrib/amd/amd/amfs_nfsl.c b/contrib/amd/amd/amfs_nfsl.c
deleted file mode 100644
index c70a3eeb97c4..000000000000
--- a/contrib/amd/amd/amfs_nfsl.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_nfsl.c
- *
- */
-
-/*
- * NFSL: Network file system with local existence check. If the local
- * path denoted by $rfs exists, it behaves as type:=link.
- *
- * Example:
- * pkg type:=nfsl;rhost:=jonny;rfs:=/n/johnny/src/pkg;fs:=${rfs}
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-
-/* forward declarations */
-static char *amfs_nfsl_match(am_opts *fo);
-static int amfs_nfsl_init(mntfs *mf);
-static int amfs_nfsl_mount(am_node *mp, mntfs *mf);
-static int amfs_nfsl_umount(am_node *mp, mntfs *mf);
-static void amfs_nfsl_umounted(mntfs *mf);
-static fserver *amfs_nfsl_ffserver(mntfs *mf);
-
-/*
- * NFS-Link operations
- */
-am_ops amfs_nfsl_ops =
-{
- "nfsl",
- amfs_nfsl_match,
- amfs_nfsl_init,
- amfs_nfsl_mount,
- amfs_nfsl_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* amfs_nfsl_readlink */
- 0, /* amfs_nfsl_mounted */
- amfs_nfsl_umounted,
- amfs_nfsl_ffserver,
- 0, /* amfs_nfsl_get_wchan */
- FS_MKMNT | FS_BACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_NFSL_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * Check that f/s has all needed fields.
- * Returns: matched string if found, NULL otherwise.
- */
-static char *
-amfs_nfsl_match(am_opts *fo)
-{
- char *cp;
- char *ho = fo->opt_rhost;
- char *retval;
- struct stat stb;
-
- if (fo->opt_sublink && fo->opt_sublink[0])
- cp = fo->opt_sublink;
- else
- cp = fo->opt_fs;
-
- if (!cp || !ho) {
- plog(XLOG_USER, "amfs_nfsl: host $fs and $rhost must be specified");
- return NULL;
- }
-
- /*
- * If this host is not the same as $rhost, or if link does not exist,
- * call nfs_ops.fs_match().
- * If link value exists (or same host), call amfs_link_ops.fs_match().
- */
- if (!STRCEQ(ho, am_get_hostname()) && !STRCEQ(ho, hostd)) {
- plog(XLOG_INFO, "amfs_nfsl: \"%s\" is not the local host \"%s\", "
- "or \"%s\" using type:=nfs", ho, am_get_hostname(), hostd);
- retval = nfs_ops.fs_match(fo);
- } else if (lstat(cp, &stb) < 0) {
- plog(XLOG_INFO, "amfs_nfsl: \"%s\" does not exist, using type:=nfs", cp);
- retval = nfs_ops.fs_match(fo);
- } else {
- plog(XLOG_INFO, "amfs_nfsl: \"%s\" exists, using type:=link", cp);
- retval = amfs_link_ops.fs_match(fo);
- }
- return retval;
-}
-
-
-/*
- * Initialize.
- * Returns: 0 if OK, non-zero (errno) if failed.
- */
-static int
-amfs_nfsl_init(mntfs *mf)
-{
- int ret = 0;
- if (mf->mf_flags & MFF_NFSLINK) {
- if (amfs_link_ops.fs_init)
- ret = amfs_link_ops.fs_init(mf);
- } else {
- if (nfs_ops.fs_init)
- ret = nfs_ops.fs_init(mf);
- }
- return ret;
-}
-
-
-/*
- * Mount vfs.
- * Returns: 0 if OK, non-zero (errno) if failed.
- */
-static int
-amfs_nfsl_mount(am_node *mp, mntfs *mf)
-{
- int ret = 0;
- if (mf->mf_flags & MFF_NFSLINK) {
- if (amfs_link_ops.mount_fs)
- ret = amfs_link_ops.mount_fs(mp, mf);
- } else {
- if (nfs_ops.mount_fs)
- ret = nfs_ops.mount_fs(mp, mf);
- }
- return ret;
-}
-
-
-/*
- * Unmount VFS.
- * Returns: 0 if OK, non-zero (errno) if failed.
- */
-static int
-amfs_nfsl_umount(am_node *mp, mntfs *mf)
-{
- int ret = 0;
- if (mf->mf_flags & MFF_NFSLINK) {
- if (amfs_link_ops.umount_fs)
- ret = amfs_link_ops.umount_fs(mp, mf);
- } else {
- if (nfs_ops.umount_fs)
- ret = nfs_ops.umount_fs(mp, mf);
- }
- return ret;
-}
-
-
-/*
- * Async unmount callback function.
- * After the base umount() succeeds, we may want to take extra actions,
- * such as informing remote mount daemons that we've unmounted them.
- * See amfs_auto_umounted(), host_umounted(), nfs_umounted().
- */
-static void
-amfs_nfsl_umounted(mntfs *mf)
-{
- if (mf->mf_flags & MFF_NFSLINK) {
- if (amfs_link_ops.umounted)
- amfs_link_ops.umounted(mf);
- } else {
- if (nfs_ops.umounted)
- nfs_ops.umounted(mf);
- }
-}
-
-
-/*
- * Find a file server.
- * Returns: fserver of found server, or NULL if not found.
- */
-static fserver *
-amfs_nfsl_ffserver(mntfs *mf)
-{
- char *cp, *ho;
- struct stat stb;
-
- if (mf->mf_fo == NULL) {
- plog(XLOG_ERROR, "%s: NULL mf_fo", __func__);
- return NULL;
- }
- ho = mf->mf_fo->opt_rhost;
-
- if (mf->mf_fo->opt_sublink && mf->mf_fo->opt_sublink[0])
- cp = mf->mf_fo->opt_sublink;
- else
- cp = mf->mf_fo->opt_fs;
-
- /*
- * If this host is not the same as $rhost, or if link does not exist,
- * call amfs_link_ops.ffserver().
- * If link value exists (or same host), then call ops_nfs.ffserver().
- */
- if ((!STRCEQ(ho, am_get_hostname()) &&
- !STRCEQ(ho, hostd)) || lstat(cp, &stb) < 0) {
- return nfs_ops.ffserver(mf);
- } else {
- mf->mf_flags |= MFF_NFSLINK;
- /* remove the FS_MKMNT flag, we don't want amd touching the mountpoint */
- mf->mf_fsflags &= ~FS_MKMNT;
- return amfs_link_ops.ffserver(mf);
- }
-}
diff --git a/contrib/amd/amd/amfs_nfsx.c b/contrib/amd/amd/amfs_nfsx.c
deleted file mode 100644
index db1b9fafd119..000000000000
--- a/contrib/amd/amd/amfs_nfsx.c
+++ /dev/null
@@ -1,507 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_nfsx.c
- *
- */
-
-/*
- * NFS hierarchical mounts
- *
- * TODO: Re-implement.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/*
- * The rfs field contains a list of mounts to be done from
- * the remote host.
- */
-typedef struct amfs_nfsx_mnt {
- mntfs *n_mnt;
- int n_error;
-} amfs_nfsx_mnt;
-
-struct amfs_nfsx {
- int nx_c; /* Number of elements in nx_v */
- amfs_nfsx_mnt *nx_v; /* Underlying mounts */
- amfs_nfsx_mnt *nx_try;
- am_node *nx_mp;
-};
-
-/* forward definitions */
-static char *amfs_nfsx_match(am_opts *fo);
-static int amfs_nfsx_mount(am_node *am, mntfs *mf);
-static int amfs_nfsx_umount(am_node *am, mntfs *mf);
-static int amfs_nfsx_init(mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops amfs_nfsx_ops =
-{
- "nfsx",
- amfs_nfsx_match,
- amfs_nfsx_init,
- amfs_nfsx_mount,
- amfs_nfsx_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* amfs_nfsx_readlink */
- 0, /* amfs_nfsx_mounted */
- 0, /* amfs_nfsx_umounted */
- find_nfs_srvr, /* XXX */
- 0, /* amfs_nfsx_get_wchan */
- /* FS_UBACKGROUND| */ FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_NFSX_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-static char *
-amfs_nfsx_match(am_opts *fo)
-{
- char *xmtab;
- char *ptr;
- int len;
-
- if (!fo->opt_rfs) {
- plog(XLOG_USER, "amfs_nfsx: no remote filesystem specified");
- return FALSE;
- }
-
- if (!fo->opt_rhost) {
- plog(XLOG_USER, "amfs_nfsx: no remote host specified");
- return FALSE;
- }
-
- /* set default sublink */
- if (fo->opt_sublink == NULL || fo->opt_sublink[0] == '\0') {
- ptr = strchr(fo->opt_rfs, ',');
- if (ptr && ptr > (fo->opt_rfs + 1))
- fo->opt_sublink = strnsave(fo->opt_rfs + 1, ptr - fo->opt_rfs - 1);
- }
-
- /*
- * Remove trailing ",..." from ${fs}
- * After deslashifying, overwrite the end of ${fs} with "/"
- * to make sure it is unique.
- */
- if ((ptr = strchr(fo->opt_fs, ',')))
- *ptr = '\0';
- deslashify(fo->opt_fs);
-
- /*
- * Bump string length to allow trailing /
- */
- len = strlen(fo->opt_fs);
- fo->opt_fs = xrealloc(fo->opt_fs, len + 1 + 1);
- ptr = fo->opt_fs + len;
-
- /*
- * Make unique...
- */
- *ptr++ = '/';
- *ptr = '\0';
-
- /*
- * Determine magic cookie to put in mtab
- */
- xmtab = str3cat((char *) NULL, fo->opt_rhost, ":", fo->opt_rfs);
- dlog("NFSX: mounting remote server \"%s\", remote fs \"%s\" on \"%s\"",
- fo->opt_rhost, fo->opt_rfs, fo->opt_fs);
-
- return xmtab;
-}
-
-
-static void
-amfs_nfsx_prfree(opaque_t vp)
-{
- struct amfs_nfsx *nx = (struct amfs_nfsx *) vp;
- int i;
-
- for (i = 0; i < nx->nx_c; i++) {
- mntfs *m = nx->nx_v[i].n_mnt;
- if (m)
- free_mntfs(m);
- }
-
- XFREE(nx->nx_v);
- XFREE(nx);
-}
-
-
-static int
-amfs_nfsx_init(mntfs *mf)
-{
- /*
- * mf_info has the form:
- * host:/prefix/path,sub,sub,sub
- */
- int i;
- int glob_error;
- struct amfs_nfsx *nx;
- int asked_for_wakeup = 0;
-
- nx = (struct amfs_nfsx *) mf->mf_private;
-
- if (nx == 0) {
- char **ivec;
- char *info = NULL;
- char *host;
- char *pref;
- int error = 0;
-
- info = xstrdup(mf->mf_info);
- if (info == NULL)
- return errno;
-
- host = strchr(info, ':');
- if (!host) {
- error = EINVAL;
- goto errexit;
- }
- pref = host + 1;
- host = info;
-
- /*
- * Split the prefix off from the suffices
- */
- ivec = strsplit(pref, ',', '\'');
-
- /*
- * Count array size
- */
- for (i = 0; ivec[i]; i++)
- /* nothing */;
-
- nx = ALLOC(struct amfs_nfsx);
- mf->mf_private = (opaque_t) nx;
- mf->mf_prfree = amfs_nfsx_prfree;
-
- nx->nx_c = i - 1; /* i-1 because we don't want the prefix */
- nx->nx_v = (amfs_nfsx_mnt *) xmalloc(nx->nx_c * sizeof(amfs_nfsx_mnt));
- nx->nx_mp = NULL;
- {
- char *mp = NULL;
- char *xinfo = NULL;
- char *fs = mf->mf_fo->opt_fs;
- char *rfs = NULL;
- for (i = 0; i < nx->nx_c; i++) {
- char *path = ivec[i + 1];
- rfs = str3cat(rfs, pref, "/", path);
- /*
- * Determine the mount point.
- * If this is the root, then don't remove
- * the trailing slash to avoid mntfs name clashes.
- */
- mp = str3cat(mp, fs, "/", rfs);
- normalize_slash(mp);
- deslashify(mp);
- /*
- * Determine the mount info
- */
- xinfo = str3cat(xinfo, host, *path == '/' ? "" : "/", path);
- normalize_slash(xinfo);
- if (pref[1] != '\0')
- deslashify(xinfo);
- dlog("amfs_nfsx: init mount for %s on %s", xinfo, mp);
- nx->nx_v[i].n_error = -1;
- nx->nx_v[i].n_mnt = find_mntfs(&nfs_ops, mf->mf_fo, mp, xinfo, "", mf->mf_mopts, mf->mf_remopts);
- /* propagate the on_autofs flag */
- nx->nx_v[i].n_mnt->mf_flags |= mf->mf_flags & MFF_ON_AUTOFS;
- }
- XFREE(rfs);
- XFREE(mp);
- XFREE(xinfo);
- }
-
- XFREE(ivec);
- errexit:
- XFREE(info);
- if (error)
- return error;
- }
-
- /*
- * Iterate through the mntfs's and call
- * the underlying init routine on each
- */
- glob_error = 0;
-
- for (i = 0; i < nx->nx_c; i++) {
- amfs_nfsx_mnt *n = &nx->nx_v[i];
- mntfs *m = n->n_mnt;
- int error = 0;
- if (m->mf_ops->fs_init && !(mf->mf_flags & MFF_RESTART))
- error = m->mf_ops->fs_init(m);
- /*
- * if you just "return error" here, you will have made a failure
- * in any submounts to fail the whole group. There was old unused code
- * here before.
- */
- if (error > 0)
- n->n_error = error;
-
- else if (error < 0) {
- glob_error = -1;
- if (!asked_for_wakeup) {
- asked_for_wakeup = 1;
- sched_task(wakeup_task, (opaque_t) mf, get_mntfs_wchan(m));
- }
- }
- }
-
- return glob_error;
-}
-
-
-static void
-amfs_nfsx_cont(int rc, int term, opaque_t arg)
-{
- mntfs *mf = (mntfs *) arg;
- struct amfs_nfsx *nx = (struct amfs_nfsx *) mf->mf_private;
- am_node *mp = nx->nx_mp;
- amfs_nfsx_mnt *n = nx->nx_try;
-
- n->n_mnt->mf_flags &= ~(MFF_ERROR | MFF_MOUNTING);
- mf->mf_flags &= ~MFF_ERROR;
-
- /*
- * Wakeup anything waiting for this mount
- */
- wakeup(get_mntfs_wchan(n->n_mnt));
-
- if (rc || term) {
- if (term) {
- /*
- * Not sure what to do for an error code.
- */
- plog(XLOG_ERROR, "mount for %s got signal %d", n->n_mnt->mf_mount, term);
- n->n_error = EIO;
- } else {
- /*
- * Check for exit status
- */
- errno = rc; /* XXX */
- plog(XLOG_ERROR, "%s: mount (amfs_nfsx_cont): %m", n->n_mnt->mf_mount);
- n->n_error = rc;
- }
- free_mntfs(n->n_mnt);
- n->n_mnt = new_mntfs();
- n->n_mnt->mf_error = n->n_error;
- n->n_mnt->mf_flags |= MFF_ERROR;
- } else {
- /*
- * The mount worked.
- */
- mf_mounted(n->n_mnt, FALSE); /* FALSE => don't free the n_mnt->am_opts */
- n->n_error = 0;
- }
-
- /*
- * Do the remaining bits
- */
- if (amfs_nfsx_mount(mp, mf) >= 0)
- wakeup(get_mntfs_wchan(mf));
-}
-
-
-static int
-try_amfs_nfsx_mount(opaque_t mv)
-{
- mntfs *mf = (mntfs *) mv;
- struct amfs_nfsx *nx = (struct amfs_nfsx *) mf->mf_private;
- am_node *mp = nx->nx_mp;
- int error;
-
- error = mf->mf_ops->mount_fs(mp, mf);
-
- return error;
-}
-
-
-static int
-amfs_nfsx_remount(am_node *am, mntfs *mf, int fg)
-{
- struct amfs_nfsx *nx = (struct amfs_nfsx *) mf->mf_private;
- amfs_nfsx_mnt *n;
- int glob_error = -1;
-
- /* Save the am_node pointer for later use */
- nx->nx_mp = am;
-
- /*
- * Iterate through the mntfs's and mount each filesystem
- * which is not yet mounted.
- */
- for (n = nx->nx_v; n < nx->nx_v + nx->nx_c; n++) {
- mntfs *m = n->n_mnt;
-
- if (m->mf_flags & MFF_MOUNTING)
- break;
-
- if (m->mf_flags & MFF_MOUNTED) {
- mf_mounted(m, FALSE); /* FALSE => don't free the m->am_opts */
- n->n_error = glob_error = 0;
- continue;
- }
-
- if (n->n_error < 0) {
- /* Create the mountpoint, if and as required */
- if (!(m->mf_flags & MFF_MKMNT) && m->mf_fsflags & FS_MKMNT) {
- if (!mkdirs(m->mf_mount, 0555))
- m->mf_flags |= MFF_MKMNT;
- }
-
- dlog("calling underlying mount on %s", m->mf_mount);
- if (!fg && foreground && (m->mf_fsflags & FS_MBACKGROUND)) {
- m->mf_flags |= MFF_MOUNTING;
- dlog("backgrounding mount of \"%s\"", m->mf_info);
- nx->nx_try = n;
- run_task(try_amfs_nfsx_mount, (opaque_t) m, amfs_nfsx_cont, (opaque_t) mf);
- n->n_error = -1;
- return -1;
- } else {
- dlog("foreground mount of \"%s\" ...", mf->mf_info);
- n->n_error = m->mf_ops->mount_fs(am, m);
- }
-
- if (n->n_error > 0)
- dlog("underlying fmount of %s failed: %s", m->mf_mount, strerror(n->n_error));
-
- if (n->n_error == 0) {
- glob_error = 0;
- } else if (glob_error < 0) {
- glob_error = n->n_error;
- }
- }
- }
-
- return glob_error < 0 ? 0 : glob_error;
-}
-
-
-static int
-amfs_nfsx_mount(am_node *am, mntfs *mf)
-{
- return amfs_nfsx_remount(am, mf, FALSE);
-}
-
-
-/*
- * Unmount an NFS hierarchy.
- * Note that this is called in the foreground
- * and so may hang under extremely rare conditions.
- */
-static int
-amfs_nfsx_umount(am_node *am, mntfs *mf)
-{
- struct amfs_nfsx *nx = (struct amfs_nfsx *) mf->mf_private;
- amfs_nfsx_mnt *n;
- int glob_error = 0;
-
- /*
- * Iterate in reverse through the mntfs's and unmount each filesystem
- * which is mounted.
- */
- for (n = nx->nx_v + nx->nx_c - 1; n >= nx->nx_v; --n) {
- mntfs *m = n->n_mnt;
- /*
- * If this node has not been messed with
- * and there has been no error so far
- * then try and unmount.
- * If an error had occurred then zero
- * the error code so that the remount
- * only tries to unmount those nodes
- * which had been successfully unmounted.
- */
- if (n->n_error == 0) {
- dlog("calling underlying fumount on %s", m->mf_mount);
- n->n_error = m->mf_ops->umount_fs(am, m);
- if (n->n_error) {
- glob_error = n->n_error;
- n->n_error = 0;
- } else {
- /*
- * Make sure remount gets this node
- */
- n->n_error = -1;
- }
- }
- }
-
- /*
- * If any unmounts failed then remount the
- * whole lot...
- */
- if (glob_error) {
- glob_error = amfs_nfsx_remount(am, mf, TRUE);
- if (glob_error) {
- errno = glob_error; /* XXX */
- plog(XLOG_USER, "amfs_nfsx: remount of %s failed: %m", mf->mf_mount);
- }
- glob_error = EBUSY;
- } else {
- /*
- * Remove all the mount points
- */
- for (n = nx->nx_v; n < nx->nx_v + nx->nx_c; n++) {
- mntfs *m = n->n_mnt;
- dlog("calling underlying umounted on %s", m->mf_mount);
- if (m->mf_ops->umounted)
- m->mf_ops->umounted(m);
-
- if (n->n_error < 0) {
- if (m->mf_fsflags & FS_MKMNT) {
- (void) rmdirs(m->mf_mount);
- m->mf_flags &= ~MFF_MKMNT;
- }
- }
- free_mntfs(m);
- n->n_mnt = NULL;
- n->n_error = -1;
- }
- }
-
- return glob_error;
-}
diff --git a/contrib/amd/amd/amfs_program.c b/contrib/amd/amd/amfs_program.c
deleted file mode 100644
index 6bf003fb2cf7..000000000000
--- a/contrib/amd/amd/amfs_program.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_program.c
- *
- */
-
-/*
- * Program file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward definitions */
-static char *amfs_program_match(am_opts *fo);
-static int amfs_program_mount(am_node *am, mntfs *mf);
-static int amfs_program_umount(am_node *am, mntfs *mf);
-static int amfs_program_init(mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops amfs_program_ops =
-{
- "program",
- amfs_program_match,
- amfs_program_init,
- amfs_program_mount,
- amfs_program_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* amfs_program_readlink */
- 0, /* amfs_program_mounted */
- 0, /* amfs_program_umounted */
- amfs_generic_find_srvr,
- 0, /* amfs_program_get_wchan */
- FS_MKMNT | FS_BACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_PROGRAM_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * Execute needs a mount and unmount command.
- */
-static char *
-amfs_program_match(am_opts *fo)
-{
- char *prog;
-
- if (fo->opt_unmount && fo->opt_umount) {
- plog(XLOG_ERROR, "program: cannot specify both unmount and umount options");
- return 0;
- }
- if (!fo->opt_mount) {
- plog(XLOG_ERROR, "program: must specify mount command");
- return 0;
- }
- if (!fo->opt_unmount && !fo->opt_umount) {
- fo->opt_unmount = str3cat(NULL, UNMOUNT_PROGRAM, " umount ", fo->opt_fs);
- plog(XLOG_INFO, "program: un/umount not specified; using default \"%s\"",
- fo->opt_unmount);
- }
- prog = strchr(fo->opt_mount, ' ');
-
- return xstrdup(prog ? prog + 1 : fo->opt_mount);
-}
-
-
-static int
-amfs_program_init(mntfs *mf)
-{
- /* check if already saved value */
- if (mf->mf_private != NULL)
- return 0;
-
- if (mf->mf_fo == NULL)
- return 0;
-
- /* save unmount (or umount) command */
- if (mf->mf_fo->opt_unmount != NULL)
- mf->mf_private = (opaque_t) xstrdup(mf->mf_fo->opt_unmount);
- else
- mf->mf_private = (opaque_t) xstrdup(mf->mf_fo->opt_umount);
- mf->mf_prfree = (void (*)(opaque_t)) free;
-
- return 0;
-}
-
-
-static int
-amfs_program_exec(char *info)
-{
- char **xivec;
- int error;
-
- /*
- * Split copy of command info string
- */
- info = xstrdup(info);
- xivec = strsplit(info, ' ', '\'');
-
- /*
- * Put stdout to stderr
- */
- (void) fclose(stdout);
- if (!logfp)
- logfp = stderr; /* initialize before possible first use */
- if (dup(fileno(logfp)) == -1)
- goto out;
- if (fileno(logfp) != fileno(stderr)) {
- (void) fclose(stderr);
- if (dup(fileno(logfp)) == -1)
- goto out;
- }
-
- /*
- * Try the exec
- */
- if (amuDebug(D_FULL)) {
- char **cp = xivec;
- plog(XLOG_DEBUG, "executing (un)mount command...");
- while (*cp) {
- plog(XLOG_DEBUG, "arg[%ld] = '%s'", (long) (cp - xivec), *cp);
- cp++;
- }
- }
-
- if (xivec[0] == 0 || xivec[1] == 0) {
- errno = EINVAL;
- plog(XLOG_USER, "1st/2nd args missing to (un)mount program");
- } else {
- (void) execv(xivec[0], xivec + 1);
- error = errno;
- plog(XLOG_ERROR, "exec failed: %m");
- errno = error;
- }
-
-out:
- /*
- * Save error number
- */
- error = errno;
-
- /*
- * Free allocate memory
- */
- XFREE(info);
- XFREE(xivec);
-
- /*
- * Return error
- */
- return error;
-}
-
-
-static int
-amfs_program_mount(am_node *am, mntfs *mf)
-{
- return amfs_program_exec(mf->mf_fo->opt_mount);
-}
-
-
-static int
-amfs_program_umount(am_node *am, mntfs *mf)
-{
- return amfs_program_exec((char *) mf->mf_private);
-}
diff --git a/contrib/amd/amd/amfs_root.c b/contrib/amd/amd/amfs_root.c
deleted file mode 100644
index f06c43ce0bac..000000000000
--- a/contrib/amd/amd/amfs_root.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_root.c
- *
- */
-
-/*
- * Root file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/****************************************************************************
- *** FORWARD DEFINITIONS ***
- ****************************************************************************/
-static int amfs_root_mount(am_node *mp, mntfs *mf);
-
-/****************************************************************************
- *** OPS STRUCTURES ***
- ****************************************************************************/
-am_ops amfs_root_ops =
-{
- "root",
- 0, /* amfs_root_match */
- 0, /* amfs_root_init */
- amfs_root_mount,
- amfs_generic_umount,
- amfs_generic_lookup_child,
- amfs_generic_mount_child,
- amfs_generic_readdir,
- 0, /* amfs_root_readlink */
- 0, /* amfs_root_mounted */
- 0, /* amfs_root_umounted */
- amfs_generic_find_srvr,
- 0, /* amfs_root_get_wchan */
- FS_NOTIMEOUT | FS_AMQINFO | FS_DIRECTORY, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_ROOT_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/****************************************************************************
- *** FUNCTIONS ***
- ****************************************************************************/
-
-/*
- * Mount the root...
- */
-static int
-amfs_root_mount(am_node *mp, mntfs *mf)
-{
- mf->mf_mount = strealloc(mf->mf_mount, pid_fsname);
- mf->mf_private = (opaque_t) mapc_find(mf->mf_info, "", NULL, NULL);
- mf->mf_prfree = mapc_free;
-
- return 0;
-}
diff --git a/contrib/amd/amd/amfs_toplvl.c b/contrib/amd/amd/amfs_toplvl.c
deleted file mode 100644
index 1b143157b4c7..000000000000
--- a/contrib/amd/amd/amfs_toplvl.c
+++ /dev/null
@@ -1,319 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_toplvl.c
- *
- */
-
-/*
- * Top-level file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/****************************************************************************
- *** FORWARD DEFINITIONS ***
- ****************************************************************************/
-static int amfs_toplvl_init(mntfs *mf);
-
-/****************************************************************************
- *** OPS STRUCTURES ***
- ****************************************************************************/
-am_ops amfs_toplvl_ops =
-{
- "toplvl",
- amfs_generic_match,
- amfs_toplvl_init, /* amfs_toplvl_init */
- amfs_toplvl_mount,
- amfs_toplvl_umount,
- amfs_generic_lookup_child,
- amfs_generic_mount_child,
- amfs_generic_readdir,
- 0, /* amfs_toplvl_readlink */
- amfs_generic_mounted,
- 0, /* amfs_toplvl_umounted */
- amfs_generic_find_srvr,
- 0, /* amfs_toplvl_get_wchan */
- FS_MKMNT | FS_NOTIMEOUT | FS_BACKGROUND |
- FS_AMQINFO | FS_DIRECTORY, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_TOPLVL_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/****************************************************************************
- *** FUNCTIONS ***
- ****************************************************************************/
-
-static void
-set_auto_attrcache_timeout(char *preopts, char *opts, size_t l)
-{
-
-#ifdef MNTTAB_OPT_NOAC
- /*
- * Don't cache attributes - they are changing under the kernel's feet.
- * For example, IRIX5.2 will dispense with nfs lookup calls and hand stale
- * filehandles to getattr unless we disable attribute caching on the
- * automount points.
- */
- if (gopt.auto_attrcache == 0) {
- xsnprintf(preopts, l, ",%s", MNTTAB_OPT_NOAC);
- xstrlcat(opts, preopts, l);
- }
-#endif /* MNTTAB_OPT_NOAC */
-
- /*
- * XXX: note that setting these to 0 in the past resulted in an error on
- * some systems, which is why it's better to use "noac" if possible. For
- * now, we're setting everything possible, but if this will cause trouble,
- * then we'll have to condition the remainder of this on OPT_NOAC.
- */
-#ifdef MNTTAB_OPT_ACTIMEO
- xsnprintf(preopts, l, ",%s=%d", MNTTAB_OPT_ACTIMEO, gopt.auto_attrcache);
- xstrlcat(opts, preopts, l);
-#else /* MNTTAB_OPT_ACTIMEO */
-# ifdef MNTTAB_OPT_ACDIRMIN
- xsnprintf(preopts, l, ",%s=%d", MNTTAB_OPT_ACTDIRMIN, gopt.auto_attrcache);
- xstrlcat(opts, preopts, l);
-# endif /* MNTTAB_OPT_ACDIRMIN */
-# ifdef MNTTAB_OPT_ACDIRMAX
- xsnprintf(preopts, l, ",%s=%d", MNTTAB_OPT_ACTDIRMAX, gopt.auto_attrcache);
- xstrlcat(opts, preopts, l);
-# endif /* MNTTAB_OPT_ACDIRMAX */
-# ifdef MNTTAB_OPT_ACREGMIN
- xsnprintf(preopts, l, ",%s=%d", MNTTAB_OPT_ACTREGMIN, gopt.auto_attrcache);
- xstrlcat(opts, preopts, l);
-# endif /* MNTTAB_OPT_ACREGMIN */
-# ifdef MNTTAB_OPT_ACREGMAX
- xsnprintf(preopts, l, ",%s=%d", MNTTAB_OPT_ACTREGMAX, gopt.auto_attrcache);
- xstrlcat(opts, preopts, l);
-# endif /* MNTTAB_OPT_ACREGMAX */
-#endif /* MNTTAB_OPT_ACTIMEO */
-}
-
-
-/*
- * Initialize a top-level mount. In our case, if the user asked for
- * forced_unmounts, and the OS supports it, then we try forced/lazy unmounts
- * on any previous toplvl mounts. This is useful if a previous Amd died and
- * left behind toplvl mount points (this Amd will clean them up).
- *
- * WARNING: Don't use forced/lazy unmounts if you have another valid Amd
- * running, because this code WILL force those valid toplvl mount points to
- * be detached as well!
- */
-static int
-amfs_toplvl_init(mntfs *mf)
-{
- int error = 0;
-
-#if (defined(MNT2_GEN_OPT_FORCE) || defined(MNT2_GEN_OPT_DETACH)) && (defined(HAVE_UVMOUNT) || defined(HAVE_UMOUNT2))
- if (gopt.flags & CFM_FORCED_UNMOUNTS) {
- plog(XLOG_INFO, "amfs_toplvl_init: trying forced/lazy unmount of %s",
- mf->mf_mount);
- error = umount2_fs(mf->mf_mount, AMU_UMOUNT_FORCE | AMU_UMOUNT_DETACH);
- if (error)
- plog(XLOG_INFO, "amfs_toplvl_init: forced/lazy unmount failed: %m");
- else
- dlog("amfs_toplvl_init: forced/lazy unmount succeeded");
- }
-#endif /* (MNT2_GEN_OPT_FORCE || MNT2_GEN_OPT_DETACH) && (HAVE_UVMOUNT || HAVE_UMOUNT2) */
- return error;
-}
-
-
-/*
- * Mount the top-level
- */
-int
-amfs_toplvl_mount(am_node *mp, mntfs *mf)
-{
- struct stat stb;
- char opts[SIZEOF_OPTS], preopts[SIZEOF_OPTS], toplvl_opts[40];
- int error;
-
- /*
- * Mounting the automounter.
- * Make sure the mount directory exists, construct
- * the mount options and call the mount_amfs_toplvl routine.
- */
-
- if (stat(mp->am_path, &stb) < 0) {
- return errno;
- } else if ((stb.st_mode & S_IFMT) != S_IFDIR) {
- plog(XLOG_WARNING, "%s is not a directory", mp->am_path);
- return ENOTDIR;
- }
-
- /*
- * Construct some mount options:
- *
- * Tack on magic map=<mapname> option in mtab to emulate
- * SunOS automounter behavior.
- */
-
-#ifdef HAVE_FS_AUTOFS
- if (mf->mf_flags & MFF_IS_AUTOFS) {
- autofs_get_opts(opts, sizeof(opts), mp->am_autofs_fh);
- } else
-#endif /* HAVE_FS_AUTOFS */
- {
- preopts[0] = '\0';
-#ifdef MNTTAB_OPT_INTR
- xstrlcat(preopts, MNTTAB_OPT_INTR, sizeof(preopts));
- xstrlcat(preopts, ",", sizeof(preopts));
-#endif /* MNTTAB_OPT_INTR */
-#ifdef MNTTAB_OPT_IGNORE
- xstrlcat(preopts, MNTTAB_OPT_IGNORE, sizeof(preopts));
- xstrlcat(preopts, ",", sizeof(preopts));
-#endif /* MNTTAB_OPT_IGNORE */
- /* write most of the initial options + preopts */
- xsnprintf(opts, sizeof(opts), "%s%s,%s=%d,%s,map=%s",
- preopts,
- MNTTAB_OPT_RW,
- MNTTAB_OPT_PORT, nfs_port,
- mf->mf_ops->fs_type, mf->mf_info);
-
- /* process toplvl timeo/retrans options, if any */
- if (gopt.amfs_auto_timeo[AMU_TYPE_TOPLVL] > 0) {
- xsnprintf(toplvl_opts, sizeof(toplvl_opts), ",%s=%d",
- MNTTAB_OPT_TIMEO, gopt.amfs_auto_timeo[AMU_TYPE_TOPLVL]);
- xstrlcat(opts, toplvl_opts, sizeof(opts));
- }
- if (gopt.amfs_auto_retrans[AMU_TYPE_TOPLVL] > 0) {
- xsnprintf(toplvl_opts, sizeof(toplvl_opts), ",%s=%d",
- MNTTAB_OPT_RETRANS, gopt.amfs_auto_retrans[AMU_TYPE_TOPLVL]);
- xstrlcat(opts, toplvl_opts, sizeof(opts));
- }
-
-#ifdef MNTTAB_OPT_NOLOCK
- xstrlcat(opts, ",", sizeof(opts));
- xstrlcat(opts, MNTTAB_OPT_NOLOCK, sizeof(opts));
-#endif /* MNTTAB_OPT_NOLOCK */
-
-#ifdef MNTTAB_OPT_NOAC
- if (gopt.auto_attrcache == 0) {
- xstrlcat(opts, ",", sizeof(opts));
- xstrlcat(opts, MNTTAB_OPT_NOAC, sizeof(opts));
- } else
-#endif /* MNTTAB_OPT_NOAC */
- set_auto_attrcache_timeout(preopts, opts, sizeof(preopts));
- }
-
- /* now do the mount */
- error = amfs_mount(mp, mf, opts);
- if (error) {
- errno = error;
- plog(XLOG_FATAL, "amfs_toplvl_mount: amfs_mount failed: %m");
- return error;
- }
- return 0;
-}
-
-
-/*
- * Unmount a top-level automount node
- */
-int
-amfs_toplvl_umount(am_node *mp, mntfs *mf)
-{
- struct stat stb;
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
- int error;
- int count = 0; /* how many times did we try to unmount? */
-
-again:
- /*
- * The lstat is needed if this mount is type=direct.
- * When that happens, the kernel cache gets confused
- * between the underlying type (dir) and the mounted
- * type (link) and so needs to be re-synced before
- * the unmount. This is all because the unmount system
- * call follows links and so can't actually unmount
- * a link (stupid!). It was noted that doing an ls -ld
- * of the mount point to see why things were not working
- * actually fixed the problem - so simulate an ls -ld here.
- */
- if (lstat(mp->am_path, &stb) < 0) {
- error = errno;
- dlog("lstat(%s): %m", mp->am_path);
- goto out;
- }
- if ((stb.st_mode & S_IFMT) != S_IFDIR) {
- plog(XLOG_ERROR, "amfs_toplvl_umount: %s is not a directory, aborting.", mp->am_path);
- error = ENOTDIR;
- goto out;
- }
-
- error = UMOUNT_FS(mp->am_path, mnttab_file_name, unmount_flags);
- if (error == EBUSY) {
-#ifdef HAVE_FS_AUTOFS
- /*
- * autofs mounts are "in place", so it is possible
- * that we can't just unmount our mount points and go away.
- * If that's the case, just give up.
- */
- if (mf->mf_flags & MFF_IS_AUTOFS)
- return error;
-#endif /* HAVE_FS_AUTOFS */
- plog(XLOG_WARNING, "amfs_toplvl_unmount retrying %s in 1s", mp->am_path);
- count++;
- sleep(1);
- /*
- * If user wants forced/lazy unmount semantics, then set those flags,
- * but only after we've tried normal lstat/umount a few times --
- * otherwise forced unmounts may hang this very same Amd (by preventing
- * it from achieving a clean unmount).
- */
- if (gopt.flags & CFM_FORCED_UNMOUNTS) {
- if (count == 5) { /* after 5 seconds, try MNT_FORCE */
- dlog("enabling forced unmounts for toplvl node %s", mp->am_path);
- unmount_flags |= AMU_UMOUNT_FORCE;
- }
- if (count == 10) { /* after 10 seconds, try MNT_DETACH */
- dlog("enabling detached unmounts for toplvl node %s", mp->am_path);
- unmount_flags |= AMU_UMOUNT_DETACH;
- }
- }
- goto again;
- }
-out:
- return error;
-}
diff --git a/contrib/amd/amd/amfs_union.c b/contrib/amd/amd/amfs_union.c
deleted file mode 100644
index 9f37a1b04dd1..000000000000
--- a/contrib/amd/amd/amfs_union.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amfs_union.c
- *
- */
-
-/*
- * Union automounter file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/****************************************************************************
- *** FORWARD DEFINITIONS ***
- ****************************************************************************/
-static int create_amfs_union_node(char *dir, opaque_t arg);
-static void amfs_union_mounted(mntfs *mf);
-
-
-/****************************************************************************
- *** OPS STRUCTURES ***
- ****************************************************************************/
-am_ops amfs_union_ops =
-{
- "union",
- amfs_generic_match,
- 0, /* amfs_union_init */
- amfs_toplvl_mount,
- amfs_toplvl_umount,
- amfs_generic_lookup_child,
- amfs_generic_mount_child,
- amfs_generic_readdir,
- 0, /* amfs_union_readlink */
- amfs_union_mounted,
- 0, /* amfs_union_umounted */
- amfs_generic_find_srvr,
- 0, /* amfs_union_get_wchan */
- FS_MKMNT | FS_NOTIMEOUT | FS_BACKGROUND | FS_AMQINFO | FS_DIRECTORY,
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_UNION_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * Create a reference to a union'ed entry
- * XXX: this function may not be used anywhere...
- */
-static int
-create_amfs_union_node(char *dir, opaque_t arg)
-{
- if (!STREQ(dir, "/defaults")) {
- int error = 0;
- am_node *am;
- am = amfs_generic_lookup_child(arg, dir, &error, VLOOK_CREATE);
- if (am && error < 0)
- (void)amfs_generic_mount_child(am, &error);
- if (error > 0) {
- errno = error; /* XXX */
- plog(XLOG_ERROR, "unionfs: could not mount %s: %m", dir);
- }
- return error;
- }
- return 0;
-}
-
-
-static void
-amfs_union_mounted(mntfs *mf)
-{
- int index;
- am_node *mp;
-
- amfs_mkcacheref(mf);
-
- /*
- * Having made the union mount point,
- * populate all the entries...
- */
- for (mp = get_first_exported_ap(&index);
- mp;
- mp = get_next_exported_ap(&index)) {
- if (mp->am_al->al_mnt == mf) {
- /* return value from create_amfs_union_node is ignored by mapc_keyiter */
- (void) mapc_keyiter((mnt_map *) mp->am_al->al_mnt->mf_private,
- create_amfs_union_node,
- mp);
- break;
- }
- }
-}
diff --git a/contrib/amd/amd/amq_subr.c b/contrib/amd/amd/amq_subr.c
deleted file mode 100644
index ba85c68b7425..000000000000
--- a/contrib/amd/amd/amq_subr.c
+++ /dev/null
@@ -1,596 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amq_subr.c
- *
- */
-/*
- * Auxiliary routines for amq tool
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward definitions */
-bool_t xdr_amq_mount_tree_node(XDR *xdrs, amq_mount_tree *objp);
-bool_t xdr_amq_mount_subtree(XDR *xdrs, amq_mount_tree *objp);
-
-
-voidp
-amqproc_null_1_svc(voidp argp, struct svc_req *rqstp)
-{
- static char res;
-
- return (voidp) &res;
-}
-
-
-/*
- * Return a sub-tree of mounts
- */
-amq_mount_tree_p *
-amqproc_mnttree_1_svc(voidp argp, struct svc_req *rqstp)
-{
- static am_node *mp;
-
- mp = find_ap(*(char **) argp);
- return (amq_mount_tree_p *) ((void *)&mp);
-}
-
-
-/*
- * Unmount a single node
- */
-int *
-amqproc_umnt_1_svc(voidp argp, struct svc_req *rqstp)
-{
- static int res = AMQ_UMNT_OK;
- am_node *mp = find_ap(*(char **) argp);
-
- if (mp)
- forcibly_timeout_mp(mp);
-
- return &res;
-}
-
-
-/*
- * Synchronously unmount a single node - parent side.
- */
-int *
-amqproc_sync_umnt_1_svc_parent(voidp argp, struct svc_req *rqstp)
-{
- amqproc_umnt_1_svc(argp, rqstp);
- return NULL;
-}
-
-
-/*
- * Synchronously unmount a single node - child side.
- */
-amq_sync_umnt *
-amqproc_sync_umnt_1_svc_child(voidp argp, struct svc_req *rqstp)
-{
- static amq_sync_umnt rv;
- amq_sync_umnt buf;
- ssize_t n;
-
- am_node *mp = find_ap(*(char **) argp);
-
- memset(&rv, 0, sizeof(rv));
- rv.au_etype = AMQ_UMNT_READ;
- if (mp && mp->am_fd[0] >= 0) {
- n = read(mp->am_fd[0], &buf, sizeof(buf));
- if (n == sizeof(buf))
- rv = buf;
- }
- return &rv;
-}
-
-
-/*
- * Synchronously unmount a single node - use if we can't fork (asynchronous).
- */
-amq_sync_umnt *
-amqproc_sync_umnt_1_svc_async(voidp argp, struct svc_req *rqstp)
-{
- static amq_sync_umnt rv;
-
- memset(&rv, 0, sizeof(rv));
- rv.au_etype = AMQ_UMNT_FORK;
- rv.au_errno = errno;
-
- amqproc_umnt_1_svc(argp, rqstp);
-
- return &rv;
-}
-
-
-/*
- * Return global statistics
- */
-amq_mount_stats *
-amqproc_stats_1_svc(voidp argp, struct svc_req *rqstp)
-{
- return (amq_mount_stats *) ((void *)&amd_stats);
-}
-
-
-/*
- * Return the entire tree of mount nodes
- */
-amq_mount_tree_list *
-amqproc_export_1_svc(voidp argp, struct svc_req *rqstp)
-{
- static amq_mount_tree_list aml;
- static am_node *mp;
-
- mp = get_exported_ap(0);
- aml.amq_mount_tree_list_val = (amq_mount_tree_p *) ((void *) &mp);
- aml.amq_mount_tree_list_len = 1; /* XXX */
-
- return &aml;
-}
-
-
-int *
-amqproc_setopt_1_svc(voidp argp, struct svc_req *rqstp)
-{
- static int rc;
- amq_setopt *opt = (amq_setopt *) argp;
-
- rc = 0;
-
- switch (opt->as_opt) {
-
- case AMOPT_DEBUG:
- if (debug_option(opt->as_str))
- rc = EINVAL;
- break;
-
- case AMOPT_LOGFILE:
- if (gopt.logfile && opt->as_str
- && STREQ(gopt.logfile, opt->as_str)) {
- if (switch_to_logfile(opt->as_str, orig_umask, 0))
- rc = EINVAL;
- } else {
- rc = EACCES;
- }
- break;
-
- case AMOPT_XLOG:
- if (switch_option(opt->as_str))
- rc = EINVAL;
- break;
-
- case AMOPT_FLUSHMAPC:
- if (amd_state == Run) {
- plog(XLOG_INFO, "amq says flush cache");
- do_mapc_reload = 0;
- flush_nfs_fhandle_cache((fserver *) NULL);
- flush_srvr_nfs_cache((fserver *) NULL);
- }
- break;
- }
-
- return &rc;
-}
-
-
-amq_mount_info_list *
-amqproc_getmntfs_1_svc(voidp argp, struct svc_req *rqstp)
-{
- return (amq_mount_info_list *) ((void *)&mfhead); /* XXX */
-}
-
-extern qelem map_list_head;
-amq_map_info_list *
-amqproc_getmapinfo_1_svc(voidp argp, struct svc_req *rqstp)
-{
- return (amq_map_info_list *) ((void *)&map_list_head); /* XXX */
-}
-
-amq_string *
-amqproc_getvers_1_svc(voidp argp, struct svc_req *rqstp)
-{
- static amq_string res;
-
- res = get_version_string();
- return &res;
-}
-
-
-/* get PID of remote amd */
-int *
-amqproc_getpid_1_svc(voidp argp, struct svc_req *rqstp)
-{
- static int res;
-
- res = getpid();
- return &res;
-}
-
-
-/*
- * Process PAWD string of remote pawd tool.
- *
- * We repeat the resolution of the string until the resolved string resolves
- * to itself. This ensures that we follow path resolutions through all
- * possible Amd mount points until we reach some sort of convergence. To
- * prevent possible infinite loops, we break out of this loop if the strings
- * do not converge after MAX_PAWD_TRIES times.
- */
-amq_string *
-amqproc_pawd_1_svc(voidp argp, struct svc_req *rqstp)
-{
- static amq_string res;
-#define MAX_PAWD_TRIES 10
- int index, len, maxagain = MAX_PAWD_TRIES;
- am_node *mp;
- char *mountpoint;
- char *dir = *(char **) argp;
- static char tmp_buf[MAXPATHLEN];
- char prev_buf[MAXPATHLEN];
-
- tmp_buf[0] = prev_buf[0] = '\0'; /* default is empty string: no match */
- do {
- for (mp = get_first_exported_ap(&index);
- mp;
- mp = get_next_exported_ap(&index)) {
- if (STREQ(mp->am_al->al_mnt->mf_ops->fs_type, "toplvl"))
- continue;
- if (STREQ(mp->am_al->al_mnt->mf_ops->fs_type, "auto"))
- continue;
- mountpoint = (mp->am_link ? mp->am_link : mp->am_al->al_mnt->mf_mount);
- len = strlen(mountpoint);
- if (len == 0)
- continue;
- if (!NSTREQ(mountpoint, dir, len))
- continue;
- if (dir[len] != '\0' && dir[len] != '/')
- continue;
- xstrlcpy(tmp_buf, mp->am_path, sizeof(tmp_buf));
- xstrlcat(tmp_buf, &dir[len], sizeof(tmp_buf));
- break;
- } /* end of "for" loop */
- /* once tmp_buf and prev_buf are equal, break out of "do" loop */
- if (STREQ(tmp_buf, prev_buf))
- break;
- else
- xstrlcpy(prev_buf, tmp_buf, sizeof(prev_buf));
- } while (--maxagain);
- /* check if we couldn't resolve the string after MAX_PAWD_TRIES times */
- if (maxagain <= 0)
- plog(XLOG_WARNING, "path \"%s\" did not resolve after %d tries",
- tmp_buf, MAX_PAWD_TRIES);
-
- res = tmp_buf;
- return &res;
-}
-
-
-/*
- * XDR routines.
- */
-
-
-bool_t
-xdr_amq_setopt(XDR *xdrs, amq_setopt *objp)
-{
- if (!xdr_enum(xdrs, (enum_t *) ((voidp) &objp->as_opt))) {
- return (FALSE);
- }
- if (!xdr_string(xdrs, &objp->as_str, AMQ_STRLEN)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-/*
- * More XDR routines - Should be used for OUTPUT ONLY.
- */
-bool_t
-xdr_amq_mount_tree_node(XDR *xdrs, amq_mount_tree *objp)
-{
- am_node *mp = (am_node *) objp;
- long mtime;
-
- if (!xdr_amq_string(xdrs, &mp->am_al->al_mnt->mf_info)) {
- return (FALSE);
- }
- if (!xdr_amq_string(xdrs, &mp->am_path)) {
- return (FALSE);
- }
- if (!xdr_amq_string(xdrs, mp->am_link ? &mp->am_link : &mp->am_al->al_mnt->mf_mount)) {
- return (FALSE);
- }
- if (!xdr_amq_string(xdrs, &mp->am_al->al_mnt->mf_ops->fs_type)) {
- return (FALSE);
- }
- mtime = mp->am_stats.s_mtime;
- if (!xdr_long(xdrs, &mtime)) {
- return (FALSE);
- }
- if (!xdr_u_short(xdrs, &mp->am_stats.s_uid)) {
- return (FALSE);
- }
- if (!xdr_int(xdrs, &mp->am_stats.s_getattr)) {
- return (FALSE);
- }
- if (!xdr_int(xdrs, &mp->am_stats.s_lookup)) {
- return (FALSE);
- }
- if (!xdr_int(xdrs, &mp->am_stats.s_readdir)) {
- return (FALSE);
- }
- if (!xdr_int(xdrs, &mp->am_stats.s_readlink)) {
- return (FALSE);
- }
- if (!xdr_int(xdrs, &mp->am_stats.s_statfs)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_mount_subtree(XDR *xdrs, amq_mount_tree *objp)
-{
- am_node *mp = (am_node *) objp;
-
- if (!xdr_amq_mount_tree_node(xdrs, objp)) {
- return (FALSE);
- }
- if (!xdr_pointer(xdrs,
- (char **) ((voidp) &mp->am_osib),
- sizeof(amq_mount_tree),
- (XDRPROC_T_TYPE) xdr_amq_mount_subtree)) {
- return (FALSE);
- }
- if (!xdr_pointer(xdrs,
- (char **) ((voidp) &mp->am_child),
- sizeof(amq_mount_tree),
- (XDRPROC_T_TYPE) xdr_amq_mount_subtree)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_mount_tree(XDR *xdrs, amq_mount_tree *objp)
-{
- am_node *mp = (am_node *) objp;
- am_node *mnil = NULL;
-
- if (!xdr_amq_mount_tree_node(xdrs, objp)) {
- return (FALSE);
- }
- if (!xdr_pointer(xdrs,
- (char **) ((voidp) &mnil),
- sizeof(amq_mount_tree),
- (XDRPROC_T_TYPE) xdr_amq_mount_subtree)) {
- return (FALSE);
- }
- if (!xdr_pointer(xdrs,
- (char **) ((voidp) &mp->am_child),
- sizeof(amq_mount_tree),
- (XDRPROC_T_TYPE) xdr_amq_mount_subtree)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_mount_tree_p(XDR *xdrs, amq_mount_tree_p *objp)
-{
- if (!xdr_pointer(xdrs, (char **) objp, sizeof(amq_mount_tree), (XDRPROC_T_TYPE) xdr_amq_mount_tree)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_mount_stats(XDR *xdrs, amq_mount_stats *objp)
-{
- if (!xdr_int(xdrs, &objp->as_drops)) {
- return (FALSE);
- }
- if (!xdr_int(xdrs, &objp->as_stale)) {
- return (FALSE);
- }
- if (!xdr_int(xdrs, &objp->as_mok)) {
- return (FALSE);
- }
- if (!xdr_int(xdrs, &objp->as_merr)) {
- return (FALSE);
- }
- if (!xdr_int(xdrs, &objp->as_uerr)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-
-bool_t
-xdr_amq_mount_tree_list(XDR *xdrs, amq_mount_tree_list *objp)
-{
- if (!xdr_array(xdrs,
- (char **) ((voidp) &objp->amq_mount_tree_list_val),
- (u_int *) &objp->amq_mount_tree_list_len,
- ~0,
- sizeof(amq_mount_tree_p),
- (XDRPROC_T_TYPE) xdr_amq_mount_tree_p)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_mount_info_qelem(XDR *xdrs, qelem *qhead)
-{
- mntfs *mf;
- u_int len = 0;
-
- /*
- * Compute length of list
- */
- for (mf = AM_LAST(mntfs, qhead); mf != HEAD(mntfs, qhead); mf = PREV(mntfs, mf)) {
- if (!(mf->mf_fsflags & FS_AMQINFO))
- continue;
- len++;
- }
- xdr_u_int(xdrs, &len);
-
- /*
- * Send individual data items
- */
- for (mf = AM_LAST(mntfs, qhead); mf != HEAD(mntfs, qhead); mf = PREV(mntfs, mf)) {
- int up;
- if (!(mf->mf_fsflags & FS_AMQINFO))
- continue;
-
- if (!xdr_amq_string(xdrs, &mf->mf_ops->fs_type)) {
- return (FALSE);
- }
- if (!xdr_amq_string(xdrs, &mf->mf_mount)) {
- return (FALSE);
- }
- if (!xdr_amq_string(xdrs, &mf->mf_info)) {
- return (FALSE);
- }
- if (!xdr_amq_string(xdrs, &mf->mf_server->fs_host)) {
- return (FALSE);
- }
- if (!xdr_int(xdrs, &mf->mf_error)) {
- return (FALSE);
- }
- if (!xdr_int(xdrs, &mf->mf_refc)) {
- return (FALSE);
- }
- if (FSRV_ERROR(mf->mf_server) || FSRV_ISDOWN(mf->mf_server))
- up = 0;
- else if (FSRV_ISUP(mf->mf_server))
- up = 1;
- else
- up = -1;
- if (!xdr_int(xdrs, &up)) {
- return (FALSE);
- }
- }
- return (TRUE);
-}
-
-bool_t
-xdr_amq_map_info_qelem(XDR *xdrs, qelem *qhead)
-{
- mnt_map *m;
- u_int len = 0;
- int x;
- char *n;
-
- /*
- * Compute length of list
- */
- ITER(m, mnt_map, qhead) {
- len++;
- }
-
- if (!xdr_u_int(xdrs, &len))
- return (FALSE);
-
- /*
- * Send individual data items
- */
- ITER(m, mnt_map, qhead) {
- if (!xdr_amq_string(xdrs, &m->map_name)) {
- return (FALSE);
- }
-
- n = m->wildcard ? m->wildcard : "";
- if (!xdr_amq_string(xdrs, &n)) {
- return (FALSE);
- }
-
- if (!xdr_long(xdrs, (long *) &m->modify)) {
- return (FALSE);
- }
-
- x = m->flags;
- if (!xdr_int(xdrs, &x)) {
- return (FALSE);
- }
-
- x = m->nentries;
- if (!xdr_int(xdrs, &x)) {
- return (FALSE);
- }
-
- x = m->reloads;
- if (!xdr_int(xdrs, &x)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &m->refc)) {
- return (FALSE);
- }
-
- if (m->isup)
- x = (*m->isup)(m, m->map_name);
- else
- x = -1;
- if (!xdr_int(xdrs, &x)) {
- return (FALSE);
- }
- }
- return (TRUE);
-}
-
-bool_t
-xdr_pri_free(XDRPROC_T_TYPE xdr_args, caddr_t args_ptr)
-{
- XDR xdr;
-
- xdr.x_op = XDR_FREE;
- return ((*xdr_args) (&xdr, (caddr_t *) args_ptr));
-}
diff --git a/contrib/amd/amd/amq_svc.c b/contrib/amd/amd/amq_svc.c
deleted file mode 100644
index 1f2b3d6ff8d9..000000000000
--- a/contrib/amd/amd/amq_svc.c
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/amq_svc.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* typedefs */
-typedef char *(*amqsvcproc_t)(voidp, struct svc_req *);
-
-#if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP)
-# ifdef NEED_LIBWRAP_SEVERITY_VARIABLES
-/*
- * Some systems that define libwrap already define these two variables
- * in libwrap, while others don't: so I need to know precisely iff
- * to define these two severity variables.
- */
-int allow_severity=0, deny_severity=0, rfc931_timeout=0;
-# endif /* NEED_LIBWRAP_SEVERITY_VARIABLES */
-
-/*
- * check if remote amq is authorized to access this amd.
- * Returns: 1=allowed, 0=denied.
- */
-static int
-amqsvc_is_client_allowed(const struct sockaddr_in *addr)
-{
- struct request_info req;
-
- request_init(&req, RQ_DAEMON, AMD_SERVICE_NAME, RQ_CLIENT_SIN, addr, 0);
- sock_methods(&req);
-
- if (hosts_access(&req))
- return 1;
-
- return 0;
-}
-#endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */
-
-
-/*
- * Prepare the parent and child:
- * 1) Setup IPC pipe.
- * 2) Set signal masks.
- * 3) Fork by calling background() so that NumChildren is updated.
- */
-static int
-amq_fork(opaque_t argp)
-{
-#ifdef HAVE_SIGACTION
- sigset_t new, mask;
-#else /* not HAVE_SIGACTION */
- int mask;
-#endif /* not HAVE_SIGACTION */
- am_node *mp;
- pid_t pid;
-
- mp = find_ap(*(char **) argp);
- if (mp == NULL) {
- errno = 0;
- return -1;
- }
-
- if (pipe(mp->am_fd) == -1) {
- mp->am_fd[0] = -1;
- mp->am_fd[1] = -1;
- return -1;
- }
-
-#ifdef HAVE_SIGACTION
- sigemptyset(&new); /* initialize signal set we wish to block */
- sigaddset(&new, SIGHUP);
- sigaddset(&new, SIGINT);
- sigaddset(&new, SIGQUIT);
- sigaddset(&new, SIGCHLD);
- sigprocmask(SIG_BLOCK, &new, &mask);
-#else /* not HAVE_SIGACTION */
- mask =
- sigmask(SIGHUP) |
- sigmask(SIGINT) |
- sigmask(SIGQUIT) |
- sigmask(SIGCHLD);
- mask = sigblock(mask);
-#endif /* not HAVE_SIGACTION */
-
- switch ((pid = background())) {
- case -1: /* error */
- dlog("amq_fork failed");
- return -1;
-
- case 0: /* child */
- close(mp->am_fd[1]); /* close output end of pipe */
- mp->am_fd[1] = -1;
- return 0;
-
- default: /* parent */
- close(mp->am_fd[0]); /* close input end of pipe */
- mp->am_fd[0] = -1;
-
-#ifdef HAVE_SIGACTION
- sigprocmask(SIG_SETMASK, &mask, NULL);
-#else /* not HAVE_SIGACTION */
- sigsetmask(mask);
-#endif /* not HAVE_SIGACTION */
- return pid;
- }
-}
-
-
-void
-amq_program_1(struct svc_req *rqstp, SVCXPRT *transp)
-{
- union {
- amq_string amqproc_mnttree_1_arg;
- amq_string amqproc_umnt_1_arg;
- amq_setopt amqproc_setopt_1_arg;
- } argument;
- char *result;
- xdrproc_t xdr_argument, xdr_result;
- amqsvcproc_t local;
- amqsvcproc_t child;
- amqsvcproc_t parent;
- pid_t pid;
-
-#if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP)
- if (gopt.flags & CFM_USE_TCPWRAPPERS) {
- struct sockaddr_in *remote_addr = svc_getcaller(rqstp->rq_xprt);
- char *remote_hostname = inet_ntoa(remote_addr->sin_addr);
-
- if (!amqsvc_is_client_allowed(remote_addr)) {
- plog(XLOG_WARNING, "Amd denied remote amq service to %s", remote_hostname);
- svcerr_auth(transp, AUTH_FAILED);
- return;
- } else {
- dlog("Amd allowed remote amq service to %s", remote_hostname);
- }
- }
-#endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */
-
- local = NULL;
- child = NULL;
- parent = NULL;
-
- switch (rqstp->rq_proc) {
-
- case AMQPROC_NULL:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_void;
- local = (amqsvcproc_t) amqproc_null_1_svc;
- break;
-
- case AMQPROC_MNTTREE:
- xdr_argument = (xdrproc_t) xdr_amq_string;
- xdr_result = (xdrproc_t) xdr_amq_mount_tree_p;
- local = (amqsvcproc_t) amqproc_mnttree_1_svc;
- break;
-
- case AMQPROC_UMNT:
- xdr_argument = (xdrproc_t) xdr_amq_string;
- xdr_result = (xdrproc_t) xdr_void;
- local = (amqsvcproc_t) amqproc_umnt_1_svc;
- break;
-
- case AMQPROC_STATS:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_amq_mount_stats;
- local = (amqsvcproc_t) amqproc_stats_1_svc;
- break;
-
- case AMQPROC_EXPORT:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_amq_mount_tree_list;
- local = (amqsvcproc_t) amqproc_export_1_svc;
- break;
-
- case AMQPROC_SETOPT:
- xdr_argument = (xdrproc_t) xdr_amq_setopt;
- xdr_result = (xdrproc_t) xdr_int;
- local = (amqsvcproc_t) amqproc_setopt_1_svc;
- break;
-
- case AMQPROC_GETMNTFS:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_amq_mount_info_qelem;
- local = (amqsvcproc_t) amqproc_getmntfs_1_svc;
- break;
-
- case AMQPROC_GETVERS:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_amq_string;
- local = (amqsvcproc_t) amqproc_getvers_1_svc;
- break;
-
- case AMQPROC_GETPID:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_int;
- local = (amqsvcproc_t) amqproc_getpid_1_svc;
- break;
-
- case AMQPROC_PAWD:
- xdr_argument = (xdrproc_t) xdr_amq_string;
- xdr_result = (xdrproc_t) xdr_amq_string;
- local = (amqsvcproc_t) amqproc_pawd_1_svc;
- break;
-
- case AMQPROC_SYNC_UMNT:
- xdr_argument = (xdrproc_t) xdr_amq_string;
- xdr_result = (xdrproc_t) xdr_amq_sync_umnt;
- parent = (amqsvcproc_t) amqproc_sync_umnt_1_svc_parent;
- child = (amqsvcproc_t) amqproc_sync_umnt_1_svc_child;
- /* used if fork fails */
- local = (amqsvcproc_t) amqproc_sync_umnt_1_svc_async;
- break;
-
- case AMQPROC_GETMAPINFO:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_amq_map_info_qelem;
- local = (amqsvcproc_t) amqproc_getmapinfo_1_svc;
- break;
-
- default:
- svcerr_noproc(transp);
- return;
- }
-
- memset((char *) &argument, 0, sizeof(argument));
- if (!svc_getargs(transp,
- (XDRPROC_T_TYPE) xdr_argument,
- (SVC_IN_ARG_TYPE) & argument)) {
- svcerr_decode(transp);
- return;
- }
-
- pid = -1;
- result = NULL;
-
- if (child) {
- switch ((pid = amq_fork(&argument))) {
- case -1: /* error */
- break;
-
- case 0: /* child */
- result = (*child) (&argument, rqstp);
- local = NULL;
- break;
-
- default: /* parent */
- result = (*parent) (&argument, rqstp);
- local = NULL;
- break;
- }
- }
-
- if (local)
- result = (*local) (&argument, rqstp);
-
- if (result != NULL && !svc_sendreply(transp,
- (XDRPROC_T_TYPE) xdr_result,
- result)) {
- svcerr_systemerr(transp);
- }
-
- if (!svc_freeargs(transp,
- (XDRPROC_T_TYPE) xdr_argument,
- (SVC_IN_ARG_TYPE) & argument)) {
- plog(XLOG_FATAL, "unable to free rpc arguments in amqprog_1");
- going_down(1);
- }
-
- if (pid == 0)
- exit(0); /* the child is done! */
-}
diff --git a/contrib/amd/amd/autil.c b/contrib/amd/amd/autil.c
deleted file mode 100644
index cd9514d44ef4..000000000000
--- a/contrib/amd/amd/autil.c
+++ /dev/null
@@ -1,800 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/autil.c
- *
- */
-
-/*
- * utilities specified to amd, taken out of the older amd/util.c.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-int NumChildren = 0; /* number of children of primary amd */
-static char invalid_keys[] = "\"'!;@ \t\n";
-
-/****************************************************************************
- *** MACROS ***
- ****************************************************************************/
-
-#ifdef HAVE_TRANSPORT_TYPE_TLI
-# define PARENT_USLEEP_TIME 100000 /* 0.1 seconds */
-#endif /* HAVE_TRANSPORT_TYPE_TLI */
-
-
-/****************************************************************************
- *** FORWARD DEFINITIONS ***
- ****************************************************************************/
-static void domain_strip(char *otherdom, char *localdom);
-static int dofork(void);
-
-
-/****************************************************************************
- *** FUNCTIONS ***
- ****************************************************************************/
-
-/*
- * Copy s into p, reallocating p if necessary
- */
-char *
-strealloc(char *p, char *s)
-{
- size_t len = strlen(s) + 1;
-
- p = (char *) xrealloc((voidp) p, len);
-
- xstrlcpy(p, s, len);
-#ifdef DEBUG_MEM
-# if defined(HAVE_MALLINFO) && defined(HAVE_MALLOC_VERIFY)
- malloc_verify();
-# endif /* not defined(HAVE_MALLINFO) && defined(HAVE_MALLOC_VERIFY) */
-#endif /* DEBUG_MEM */
- return p;
-}
-
-
-/*
- * Strip off the trailing part of a domain
- * to produce a short-form domain relative
- * to the local host domain.
- * Note that this has no effect if the domain
- * names do not have the same number of
- * components. If that restriction proves
- * to be a problem then the loop needs recoding
- * to skip from right to left and do partial
- * matches along the way -- ie more expensive.
- */
-static void
-domain_strip(char *otherdom, char *localdom)
-{
- char *p1, *p2;
-
- if ((p1 = strchr(otherdom, '.')) &&
- (p2 = strchr(localdom, '.')) &&
- STREQ(p1 + 1, p2 + 1))
- *p1 = '\0';
-}
-
-
-/*
- * Normalize a host name: replace cnames with real names, and decide if to
- * strip domain name or not.
- */
-void
-host_normalize(char **chp)
-{
- /*
- * Normalize hosts is used to resolve host name aliases
- * and replace them with the standard-form name.
- * Invoked with "-n" command line option.
- */
- if (gopt.flags & CFM_NORMALIZE_HOSTNAMES) {
- struct hostent *hp;
- hp = gethostbyname(*chp);
- if (hp && hp->h_addrtype == AF_INET) {
- dlog("Hostname %s normalized to %s", *chp, hp->h_name);
- *chp = strealloc(*chp, (char *) hp->h_name);
- }
- }
- if (gopt.flags & CFM_DOMAIN_STRIP) {
- domain_strip(*chp, hostd);
- }
-}
-
-
-/*
- * Keys are not allowed to contain " ' ! or ; to avoid
- * problems with macro expansions.
- */
-int
-valid_key(char *key)
-{
- while (*key)
- if (strchr(invalid_keys, *key++))
- return FALSE;
- return TRUE;
-}
-
-
-void
-forcibly_timeout_mp(am_node *mp)
-{
- mntfs *mf = mp->am_al->al_mnt;
- /*
- * Arrange to timeout this node
- */
- if (mf && ((mp->am_flags & AMF_ROOT) ||
- (mf->mf_flags & (MFF_MOUNTING | MFF_UNMOUNTING)))) {
- /*
- * We aren't going to schedule a timeout, so we need to notify the
- * child here unless we are already unmounting, in which case that
- * process is responsible for notifying the child.
- */
- if (mf->mf_flags & MFF_UNMOUNTING)
- plog(XLOG_WARNING, "node %s is currently being unmounted, ignoring timeout request", mp->am_path);
- else {
- plog(XLOG_WARNING, "ignoring timeout request for active node %s", mp->am_path);
- notify_child(mp, AMQ_UMNT_FAILED, EBUSY, 0);
- }
- } else {
- plog(XLOG_INFO, "\"%s\" forcibly timed out", mp->am_path);
- mp->am_flags &= ~AMF_NOTIMEOUT;
- mp->am_ttl = clocktime(NULL);
- /*
- * Force mtime update of parent dir, to prevent DNLC/dcache from caching
- * the old entry, which could result in ESTALE errors, bad symlinks, and
- * more.
- */
- clocktime(&mp->am_parent->am_fattr.na_mtime);
- reschedule_timeout_mp();
- }
-}
-
-
-void
-mf_mounted(mntfs *mf, bool_t call_free_opts)
-{
- int quoted;
- int wasmounted = mf->mf_flags & MFF_MOUNTED;
-
- if (!wasmounted) {
- /*
- * If this is a freshly mounted
- * filesystem then update the
- * mntfs structure...
- */
- mf->mf_flags |= MFF_MOUNTED;
- mf->mf_error = 0;
-
- /*
- * Do mounted callback
- */
- if (mf->mf_ops->mounted)
- mf->mf_ops->mounted(mf);
-
- /*
- * We used to free the mf_mo (options) here, however they're now stored
- * and managed with the mntfs and do not need to be free'd here (this ensures
- * that we use the same options to monitor/unmount the system as we used
- * to mount it).
- */
- }
-
- if (mf->mf_flags & MFF_RESTART) {
- mf->mf_flags &= ~MFF_RESTART;
- dlog("Restarted filesystem %s, flags 0x%x", mf->mf_mount, mf->mf_flags);
- }
-
- /*
- * Log message
- */
- quoted = strchr(mf->mf_info, ' ') != 0;
- plog(XLOG_INFO, "%s%s%s %s fstype %s on %s",
- quoted ? "\"" : "",
- mf->mf_info,
- quoted ? "\"" : "",
- wasmounted ? "referenced" : "mounted",
- mf->mf_ops->fs_type, mf->mf_mount);
-}
-
-
-void
-am_mounted(am_node *mp)
-{
- int notimeout = 0; /* assume normal timeouts initially */
- mntfs *mf = mp->am_al->al_mnt;
-
- /*
- * This is the parent mntfs which does the mf->mf_fo (am_opts type), and
- * we're passing TRUE here to tell mf_mounted to actually free the
- * am_opts. See a related comment in mf_mounted().
- */
- mf_mounted(mf, TRUE);
-
-#ifdef HAVE_FS_AUTOFS
- if (mf->mf_flags & MFF_IS_AUTOFS)
- autofs_mounted(mp);
-#endif /* HAVE_FS_AUTOFS */
-
- /*
- * Patch up path for direct mounts
- */
- if (mp->am_parent && mp->am_parent->am_al->al_mnt->mf_fsflags & FS_DIRECT)
- mp->am_path = str3cat(mp->am_path, mp->am_parent->am_path, "/", ".");
-
- /*
- * Check whether this mount should be cached permanently or not,
- * and handle user-requested timeouts.
- */
- /* first check if file system was set to never timeout */
- if (mf->mf_fsflags & FS_NOTIMEOUT)
- notimeout = 1;
- /* next, alter that decision by map flags */
-
- if (mf->mf_mopts) {
- mntent_t mnt;
- mnt.mnt_opts = mf->mf_mopts;
-
- /* umount option: user wants to unmount this entry */
- if (amu_hasmntopt(&mnt, "unmount") || amu_hasmntopt(&mnt, "umount"))
- notimeout = 0;
- /* noumount option: user does NOT want to unmount this entry */
- if (amu_hasmntopt(&mnt, "nounmount") || amu_hasmntopt(&mnt, "noumount"))
- notimeout = 1;
- /* utimeout=N option: user wants to unmount this option AND set timeout */
- if ((mp->am_timeo = hasmntval(&mnt, "utimeout")) == 0)
- mp->am_timeo = gopt.am_timeo; /* otherwise use default timeout */
- else
- notimeout = 0;
- /* special case: don't try to unmount "/" (it can never succeed) */
- if (mf->mf_mount[0] == '/' && mf->mf_mount[1] == '\0')
- notimeout = 1;
- }
- /* finally set actual flags */
- if (notimeout) {
- mp->am_flags |= AMF_NOTIMEOUT;
- plog(XLOG_INFO, "%s set to never timeout", mp->am_path);
- } else {
- mp->am_flags &= ~AMF_NOTIMEOUT;
- plog(XLOG_INFO, "%s set to timeout in %d seconds", mp->am_path, mp->am_timeo);
- }
-
- /*
- * If this node is a symlink then
- * compute the length of the returned string.
- */
- if (mp->am_fattr.na_type == NFLNK)
- mp->am_fattr.na_size = strlen(mp->am_link ? mp->am_link : mf->mf_mount);
-
- /*
- * Record mount time, and update am_stats at the same time.
- */
- mp->am_stats.s_mtime = clocktime(&mp->am_fattr.na_mtime);
- new_ttl(mp);
-
- /*
- * Update mtime of parent node (copying "struct nfstime" in '=' below)
- */
- if (mp->am_parent && mp->am_parent->am_al->al_mnt)
- mp->am_parent->am_fattr.na_mtime = mp->am_fattr.na_mtime;
-
- /*
- * This is ugly, but essentially unavoidable
- * Sublinks must be treated separately as type==link
- * when the base type is different.
- */
- if (mp->am_link && mf->mf_ops != &amfs_link_ops)
- amfs_link_ops.mount_fs(mp, mf);
-
- /*
- * Now, if we can, do a reply to our client here
- * to speed things up.
- */
-#ifdef HAVE_FS_AUTOFS
- if (mp->am_flags & AMF_AUTOFS)
- autofs_mount_succeeded(mp);
- else
-#endif /* HAVE_FS_AUTOFS */
- nfs_quick_reply(mp, 0);
-
- /*
- * Update stats
- */
- amd_stats.d_mok++;
-}
-
-
-/*
- * Replace mount point with a reference to an error filesystem.
- * The mount point (struct mntfs) is NOT discarded,
- * the caller must do it if it wants to _before_ calling this function.
- */
-void
-assign_error_mntfs(am_node *mp)
-{
- int error;
- dlog("assign_error_mntfs");
-
- if (mp->am_al == NULL) {
- plog(XLOG_ERROR, "%s: Can't assign error", __func__);
- return;
- }
- /*
- * Save the old error code
- */
- error = mp->am_error;
- if (error <= 0)
- error = mp->am_al->al_mnt->mf_error;
- /*
- * Allocate a new error reference
- */
- free_loc(mp->am_al);
- mp->am_al = new_loc();
- /*
- * Put back the error code
- */
- mp->am_al->al_mnt->mf_error = error;
- mp->am_al->al_mnt->mf_flags |= MFF_ERROR;
- /*
- * Zero the error in the mount point
- */
- mp->am_error = 0;
-}
-
-
-/*
- * Build a new map cache for this node, or re-use
- * an existing cache for the same map.
- */
-void
-amfs_mkcacheref(mntfs *mf)
-{
- char *cache;
-
- if (mf->mf_fo && mf->mf_fo->opt_cache)
- cache = mf->mf_fo->opt_cache;
- else
- cache = "none";
- mf->mf_private = (opaque_t) mapc_find(mf->mf_info,
- cache,
- (mf->mf_fo ? mf->mf_fo->opt_maptype : NULL),
- mf->mf_mount);
- mf->mf_prfree = mapc_free;
-}
-
-
-/*
- * Locate next node in sibling list which is mounted
- * and is not an error node.
- */
-am_node *
-next_nonerror_node(am_node *xp)
-{
- mntfs *mf;
-
- /*
- * Bug report (7/12/89) from Rein Tollevik <rein@ifi.uio.no>
- * Fixes a race condition when mounting direct automounts.
- * Also fixes a problem when doing a readdir on a directory
- * containing hung automounts.
- */
- while (xp &&
- (!(mf = xp->am_al->al_mnt) || /* No mounted filesystem */
- mf->mf_error != 0 || /* There was a mntfs error */
- xp->am_error != 0 || /* There was a mount error */
- !(mf->mf_flags & MFF_MOUNTED) || /* The fs is not mounted */
- (mf->mf_server->fs_flags & FSF_DOWN)) /* The fs may be down */
- )
- xp = xp->am_osib;
-
- return xp;
-}
-
-
-/*
- * Mount an automounter directory.
- * The automounter is connected into the system
- * as a user-level NFS server. amfs_mount constructs
- * the necessary NFS parameters to be given to the
- * kernel so that it will talk back to us.
- *
- * NOTE: automounter mounts in themselves are using NFS Version 2 (UDP).
- *
- * NEW: on certain systems, mounting can be done using the
- * kernel-level automount (autofs) support. In that case,
- * we don't need NFS at all here.
- */
-int
-amfs_mount(am_node *mp, mntfs *mf, char *opts)
-{
- char fs_hostname[MAXHOSTNAMELEN + MAXPATHLEN + 1];
- int retry, error = 0, genflags;
- int on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
- char *dir = mf->mf_mount;
- mntent_t mnt;
- MTYPE_TYPE type;
- int forced_unmount = 0; /* are we using forced unmounts? */
- u_long nfs_version = get_nfs_dispatcher_version(nfs_dispatcher);
-
- memset(&mnt, 0, sizeof(mnt));
- mnt.mnt_dir = dir;
- mnt.mnt_fsname = pid_fsname;
- mnt.mnt_opts = opts;
-
-#ifdef HAVE_FS_AUTOFS
- if (mf->mf_flags & MFF_IS_AUTOFS) {
- type = MOUNT_TYPE_AUTOFS;
- /*
- * Make sure that amd's top-level autofs mounts are hidden by default
- * from df.
- * XXX: It works ok on Linux, might not work on other systems.
- */
- mnt.mnt_type = "autofs";
- } else
-#endif /* HAVE_FS_AUTOFS */
- {
- type = MOUNT_TYPE_NFS;
- /*
- * Make sure that amd's top-level NFS mounts are hidden by default
- * from df.
- * If they don't appear to support the either the "ignore" mnttab
- * option entry, or the "auto" one, set the mount type to "nfs".
- */
- mnt.mnt_type = HIDE_MOUNT_TYPE;
- }
-
- retry = hasmntval(&mnt, MNTTAB_OPT_RETRY);
- if (retry <= 0)
- retry = 2; /* XXX: default to 2 retries */
-
- /*
- * SET MOUNT ARGS
- */
-
- /*
- * Make a ``hostname'' string for the kernel
- */
- xsnprintf(fs_hostname, sizeof(fs_hostname), "pid%ld@%s:%s",
- get_server_pid(), am_get_hostname(), dir);
- /*
- * Most kernels have a name length restriction (64 bytes)...
- */
- if (strlen(fs_hostname) >= MAXHOSTNAMELEN)
- xstrlcpy(fs_hostname + MAXHOSTNAMELEN - 3, "..",
- sizeof(fs_hostname) - MAXHOSTNAMELEN + 3);
-#ifdef HOSTNAMESZ
- /*
- * ... and some of these restrictions are 32 bytes (HOSTNAMESZ)
- * If you need to get the definition for HOSTNAMESZ found, you may
- * add the proper header file to the conf/nfs_prot/nfs_prot_*.h file.
- */
- if (strlen(fs_hostname) >= HOSTNAMESZ)
- xstrlcpy(fs_hostname + HOSTNAMESZ - 3, "..",
- sizeof(fs_hostname) - HOSTNAMESZ + 3);
-#endif /* HOSTNAMESZ */
-
- /*
- * Finally we can compute the mount genflags set above,
- * and add any automounter specific flags.
- */
- genflags = compute_mount_flags(&mnt);
-#ifdef HAVE_FS_AUTOFS
- if (on_autofs)
- genflags |= autofs_compute_mount_flags(&mnt);
-#endif /* HAVE_FS_AUTOFS */
- genflags |= compute_automounter_mount_flags(&mnt);
-
-again:
- if (!(mf->mf_flags & MFF_IS_AUTOFS)) {
- nfs_args_t nfs_args;
- am_nfs_handle_t *fhp, anh;
-#ifndef HAVE_TRANSPORT_TYPE_TLI
- u_short port;
- struct sockaddr_in sin;
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
- /*
- * get fhandle of remote path for automount point
- */
- fhp = get_root_nfs_fh(dir, &anh);
- if (!fhp) {
- plog(XLOG_FATAL, "Can't find root file handle for %s", dir);
- return EINVAL;
- }
-
-#ifndef HAVE_TRANSPORT_TYPE_TLI
- /*
- * Create sockaddr to point to the local machine.
- */
- memset(&sin, 0, sizeof(sin));
- /* as per POSIX, sin_len need not be set (used internally by kernel) */
- sin.sin_family = AF_INET;
- sin.sin_addr = myipaddr;
- port = hasmntval(&mnt, MNTTAB_OPT_PORT);
- if (port) {
- sin.sin_port = htons(port);
- } else {
- plog(XLOG_ERROR, "no port number specified for %s", dir);
- return EINVAL;
- }
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
- /* setup the many fields and flags within nfs_args */
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- compute_nfs_args(&nfs_args,
- &mnt,
- genflags,
- nfsncp,
- NULL, /* remote host IP addr is set below */
- nfs_version,
- "udp",
- fhp,
- fs_hostname,
- pid_fsname);
- /*
- * IMPORTANT: set the correct IP address AFTERWARDS. It cannot
- * be done using the normal mechanism of compute_nfs_args(), because
- * that one will allocate a new address and use NFS_SA_DREF() to copy
- * parts to it, while assuming that the ip_addr passed is always
- * a "struct sockaddr_in". That assumption is incorrect on TLI systems,
- * because they define a special macro HOST_SELF which is DIFFERENT
- * than localhost (127.0.0.1)!
- */
- nfs_args.addr = &nfsxprt->xp_ltaddr;
-#else /* not HAVE_TRANSPORT_TYPE_TLI */
- compute_nfs_args(&nfs_args,
- &mnt,
- genflags,
- NULL,
- &sin,
- nfs_version,
- "udp",
- fhp,
- fs_hostname,
- pid_fsname);
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
- /*************************************************************************
- * NOTE: while compute_nfs_args() works ok for regular NFS mounts *
- * the toplvl one is not quite regular, and so some options must be *
- * corrected by hand more carefully, *after* compute_nfs_args() runs. *
- *************************************************************************/
- compute_automounter_nfs_args(&nfs_args, &mnt);
-
- if (amuDebug(D_TRACE)) {
- print_nfs_args(&nfs_args, 0);
- plog(XLOG_DEBUG, "Generic mount flags 0x%x", genflags);
- }
-
- /* This is it! Here we try to mount amd on its mount points */
- error = mount_fs(&mnt, genflags, (caddr_t) &nfs_args,
- retry, type, 0, NULL, mnttab_file_name, on_autofs);
-
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- free_knetconfig(nfs_args.knconf);
- /*
- * local automounter mounts do not allocate a special address, so
- * no need to XFREE(nfs_args.addr) under TLI.
- */
-#endif /* HAVE_TRANSPORT_TYPE_TLI */
-
-#ifdef HAVE_FS_AUTOFS
- } else {
- /* This is it! Here we try to mount amd on its mount points */
- error = mount_fs(&mnt, genflags, (caddr_t) mp->am_autofs_fh,
- retry, type, 0, NULL, mnttab_file_name, on_autofs);
-#endif /* HAVE_FS_AUTOFS */
- }
- if (error == 0 || forced_unmount)
- return error;
-
- /*
- * If user wants forced/lazy unmount semantics, then try it iff the
- * current mount failed with EIO or ESTALE.
- */
- if (gopt.flags & CFM_FORCED_UNMOUNTS) {
- switch (errno) {
- case ESTALE:
- case EIO:
- forced_unmount = errno;
- plog(XLOG_WARNING, "Mount %s failed (%m); force unmount.", mp->am_path);
- if ((error = UMOUNT_FS(mp->am_path, mnttab_file_name,
- AMU_UMOUNT_FORCE | AMU_UMOUNT_DETACH)) < 0) {
- plog(XLOG_WARNING, "Forced umount %s failed: %m.", mp->am_path);
- errno = forced_unmount;
- } else
- goto again;
- default:
- break;
- }
- }
-
- return error;
-}
-
-
-void
-am_unmounted(am_node *mp)
-{
- mntfs *mf = mp->am_al->al_mnt;
-
- if (!foreground) { /* firewall - should never happen */
- /*
- * This is a coding error. Make sure we hear about it!
- */
- plog(XLOG_FATAL, "am_unmounted: illegal use in background (%s)",
- mp->am_name);
- notify_child(mp, AMQ_UMNT_OK, 0, 0); /* XXX - be safe? */
- return;
- }
-
- /*
- * Do unmounted callback
- */
- if (mf->mf_ops->umounted)
- mf->mf_ops->umounted(mf);
-
- /*
- * This is ugly, but essentially unavoidable.
- * Sublinks must be treated separately as type==link
- * when the base type is different.
- */
- if (mp->am_link && mf->mf_ops != &amfs_link_ops)
- amfs_link_ops.umount_fs(mp, mf);
-
-#ifdef HAVE_FS_AUTOFS
- if (mf->mf_flags & MFF_IS_AUTOFS)
- autofs_release_fh(mp);
- if (mp->am_flags & AMF_AUTOFS)
- autofs_umount_succeeded(mp);
-#endif /* HAVE_FS_AUTOFS */
-
- /*
- * Clean up any directories that were made
- *
- * If we remove the mount point of a pending mount, any queued access
- * to it will fail. So don't do it in that case.
- * Also don't do it if the refcount is > 1.
- */
- if (mf->mf_flags & MFF_MKMNT &&
- mf->mf_refc == 1 &&
- !(mp->am_flags & AMF_REMOUNT)) {
- plog(XLOG_INFO, "removing mountpoint directory '%s'", mf->mf_mount);
- rmdirs(mf->mf_mount);
- mf->mf_flags &= ~MFF_MKMNT;
- }
-
- /*
- * If this is a pseudo-directory then adjust the link count
- * in the parent
- */
- if (mp->am_parent && mp->am_fattr.na_type == NFDIR)
- --mp->am_parent->am_fattr.na_nlink;
-
- /*
- * Update mtime of parent node
- */
- if (mp->am_parent && mp->am_parent->am_al->al_mnt)
- clocktime(&mp->am_parent->am_fattr.na_mtime);
-
- if (mp->am_parent && (mp->am_flags & AMF_REMOUNT)) {
- char *fname = xstrdup(mp->am_name);
- am_node *mp_parent = mp->am_parent;
- mntfs *mf_parent = mp_parent->am_al->al_mnt;
- am_node fake_mp;
- int error = 0;
-
- /*
- * We need to use notify_child() after free_map(), so save enough
- * to do that in fake_mp.
- */
- fake_mp.am_fd[1] = mp->am_fd[1];
- mp->am_fd[1] = -1;
-
- free_map(mp);
- plog(XLOG_INFO, "am_unmounted: remounting %s", fname);
- mp = mf_parent->mf_ops->lookup_child(mp_parent, fname, &error, VLOOK_CREATE);
- if (mp && error < 0)
- (void)mf_parent->mf_ops->mount_child(mp, &error);
- if (error > 0) {
- errno = error;
- plog(XLOG_ERROR, "am_unmounted: could not remount %s: %m", fname);
- notify_child(&fake_mp, AMQ_UMNT_OK, 0, 0);
- } else {
- notify_child(&fake_mp, AMQ_UMNT_FAILED, EBUSY, 0);
- }
- XFREE(fname);
- } else {
- /*
- * We have a race here.
- * If this node has a pending mount and amd is going down (unmounting
- * everything in the process), then we could potentially free it here
- * while a struct continuation still has a reference to it. So when
- * amfs_cont is called, it blows up.
- * We avoid the race by refusing to free any nodes that have
- * pending mounts (defined as having a non-NULL am_alarray).
- */
- notify_child(mp, AMQ_UMNT_OK, 0, 0); /* do this regardless */
- if (!mp->am_alarray)
- free_map(mp);
- }
-}
-
-
-/*
- * Fork the automounter
- *
- * TODO: Need a better strategy for handling errors
- */
-static int
-dofork(void)
-{
- int pid;
-
-top:
- pid = fork();
-
- if (pid < 0) { /* fork error, retry in 1 second */
- sleep(1);
- goto top;
- }
- if (pid == 0) { /* child process (foreground==false) */
- am_set_mypid();
- foreground = 0;
- } else { /* parent process, has one more child */
- NumChildren++;
- }
-
- return pid;
-}
-
-
-int
-background(void)
-{
- int pid = dofork();
-
- if (pid == 0) {
- dlog("backgrounded");
- foreground = 0;
- } else
- dlog("forked process %d", pid);
- return pid;
-}
diff --git a/contrib/amd/amd/clock.c b/contrib/amd/amd/clock.c
deleted file mode 100644
index 4c6aa5413763..000000000000
--- a/contrib/amd/amd/clock.c
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/clock.c
- *
- */
-
-/*
- * Callouts.
- *
- * Modeled on kernel object of the same name.
- * See usual references.
- *
- * Use of a heap-based mechanism was rejected:
- * 1. more complex implementation needed.
- * 2. not obvious that a list is too slow for Amd.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-void reschedule_timeouts(time_t now, time_t then);
-
-typedef struct callout callout;
-struct callout {
- callout *c_next; /* List of callouts */
- callout_fun *c_fn; /* Function to call */
- opaque_t c_arg; /* Argument to pass to call */
- time_t c_time; /* Time of call */
- int c_id; /* Unique identifier */
-};
-
-static callout callouts; /* List of pending callouts */
-static callout *free_callouts; /* Cache of free callouts */
-static int nfree_callouts; /* Number on free list */
-static int callout_id; /* Next free callout identifier */
-
-time_t next_softclock; /* Time of next call to softclock() */
-
-
-/*
- * Number of callout slots we keep on the free list
- */
-#define CALLOUT_FREE_SLOP 10
-
-/*
- * Global assumption: valid id's are non-zero.
- */
-#define CID_ALLOC() (++callout_id)
-#define CID_UNDEF (0)
-
-
-static callout *
-alloc_callout(void)
-{
- callout *cp = free_callouts;
-
- if (cp) {
- --nfree_callouts;
- free_callouts = free_callouts->c_next;
- return cp;
- }
- return ALLOC(struct callout);
-}
-
-
-static void
-free_callout(callout *cp)
-{
- if (nfree_callouts > CALLOUT_FREE_SLOP) {
- XFREE(cp);
- } else {
- cp->c_next = free_callouts;
- free_callouts = cp;
- nfree_callouts++;
- }
-}
-
-
-/*
- * Schedule a callout.
- *
- * (*fn)(fn_arg) will be called at clocktime(NULL) + secs
- */
-int
-timeout(u_int secs, callout_fun *fn, opaque_t fn_arg)
-{
- callout *cp, *cp2;
- time_t t = clocktime(NULL) + secs;
-
- /*
- * Allocate and fill in a new callout structure
- */
- callout *cpnew = alloc_callout();
- cpnew->c_arg = fn_arg;
- cpnew->c_fn = fn;
- cpnew->c_time = t;
- cpnew->c_id = CID_ALLOC();
-
- if (t < next_softclock)
- next_softclock = t;
-
- /*
- * Find the correct place in the list
- */
- for (cp = &callouts; (cp2 = cp->c_next); cp = cp2)
- if (cp2->c_time >= t)
- break;
-
- /*
- * And link it in
- */
- cp->c_next = cpnew;
- cpnew->c_next = cp2;
-
- /*
- * Return callout identifier
- */
- return cpnew->c_id;
-}
-
-
-/*
- * De-schedule a callout
- */
-void
-untimeout(int id)
-{
- callout *cp, *cp2;
- for (cp = &callouts; (cp2 = cp->c_next); cp = cp2) {
- if (cp2->c_id == id) {
- cp->c_next = cp2->c_next;
- free_callout(cp2);
- break;
- }
- }
-}
-
-
-/*
- * Reschedule after clock changed
- */
-void
-reschedule_timeouts(time_t now, time_t then)
-{
- callout *cp;
-
- for (cp = callouts.c_next; cp; cp = cp->c_next) {
- if (cp->c_time >= now && cp->c_time <= then) {
- plog(XLOG_WARNING, "job %d rescheduled to run immediately", cp->c_id);
- dlog("rescheduling job %d back %ld seconds",
- cp->c_id, (long) (cp->c_time - now));
- next_softclock = cp->c_time = now;
- }
- }
-}
-
-
-/*
- * Clock handler
- */
-int
-softclock(void)
-{
- time_t now;
- callout *cp;
-
- do {
- if (task_notify_todo)
- do_task_notify();
-
- now = clocktime(NULL);
-
- /*
- * While there are more callouts waiting...
- */
- while ((cp = callouts.c_next) && cp->c_time <= now) {
- /*
- * Extract first from list, save fn & fn_arg and
- * unlink callout from list and free.
- * Finally call function.
- *
- * The free is done first because
- * it is quite common that the
- * function will call timeout()
- * and try to allocate a callout
- */
- callout_fun *fn = cp->c_fn;
- opaque_t fn_arg = cp->c_arg;
-
- callouts.c_next = cp->c_next;
- free_callout(cp);
- (*fn) (fn_arg);
- }
-
- } while (task_notify_todo);
-
- /*
- * Return number of seconds to next event,
- * or 0 if there is no event.
- */
- if ((cp = callouts.c_next))
- return cp->c_time - now;
- return 0;
-}
diff --git a/contrib/amd/amd/conf.c b/contrib/amd/amd/conf.c
deleted file mode 100644
index 57e1b9ddbd02..000000000000
--- a/contrib/amd/amd/conf.c
+++ /dev/null
@@ -1,1473 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/conf.c
- *
- */
-
-/*
- * Functions to handle the configuration file.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-
-/*
- * MACROS:
- */
-/* Turn on to show some info about maps being configured */
-/* #define DEBUG_CONF */
-
-/*
- * TYPEDEFS:
- */
-typedef int (*OptFuncPtr)(const char *);
-
-/*
- * STRUCTURES:
- */
-struct _func_map {
- char *name;
- OptFuncPtr func;
-};
-
-/*
- * FORWARD DECLARATIONS:
- */
-static int gopt_arch(const char *val);
-static int gopt_auto_attrcache(const char *val);
-static int gopt_auto_dir(const char *val);
-static int gopt_auto_nfs_version(const char *val);
-static int gopt_autofs_use_lofs(const char *val);
-static int gopt_browsable_dirs(const char *val);
-static int gopt_cache_duration(const char *val);
-static int gopt_cluster(const char *val);
-static int gopt_debug_mtab_file(const char *val);
-static int gopt_debug_options(const char *val);
-static int gopt_dismount_interval(const char *val);
-static int gopt_domain_strip(const char *val);
-static int gopt_exec_map_timeout(const char *val);
-static int gopt_forced_unmounts(const char *val);
-static int gopt_full_os(const char *val);
-static int gopt_fully_qualified_hosts(const char *val);
-static int gopt_hesiod_base(const char *val);
-static int gopt_karch(const char *val);
-static int gopt_ldap_base(const char *val);
-static int gopt_ldap_cache_maxmem(const char *val);
-static int gopt_ldap_cache_seconds(const char *val);
-static int gopt_ldap_hostports(const char *val);
-static int gopt_ldap_proto_version(const char *val);
-static int gopt_local_domain(const char *val);
-static int gopt_localhost_address(const char *val);
-static int gopt_log_file(const char *val);
-static int gopt_log_options(const char *val);
-static int gopt_map_defaults(const char *val);
-static int gopt_map_options(const char *val);
-static int gopt_map_reload_interval(const char *val);
-static int gopt_map_type(const char *val);
-static int gopt_mount_type(const char *val);
-static int gopt_pid_file(const char *val);
-static int gopt_portmap_program(const char *val);
-static int gopt_preferred_amq_port(const char *val);
-static int gopt_nfs_allow_any_interface(const char *val);
-static int gopt_nfs_allow_insecure_port(const char *val);
-static int gopt_nfs_proto(const char *val);
-static int gopt_nfs_retransmit_counter(const char *val);
-static int gopt_nfs_retransmit_counter_udp(const char *val);
-static int gopt_nfs_retransmit_counter_tcp(const char *val);
-static int gopt_nfs_retransmit_counter_toplvl(const char *val);
-static int gopt_nfs_retry_interval(const char *val);
-static int gopt_nfs_retry_interval_udp(const char *val);
-static int gopt_nfs_retry_interval_tcp(const char *val);
-static int gopt_nfs_retry_interval_toplvl(const char *val);
-static int gopt_nfs_vers(const char *val);
-static int gopt_nfs_vers_ping(const char *val);
-static int gopt_nis_domain(const char *val);
-static int gopt_normalize_hostnames(const char *val);
-static int gopt_normalize_slashes(const char *val);
-static int gopt_os(const char *val);
-static int gopt_osver(const char *val);
-static int gopt_plock(const char *val);
-static int gopt_print_pid(const char *val);
-static int gopt_print_version(const char *val);
-static int gopt_restart_mounts(const char *val);
-static int gopt_search_path(const char *val);
-static int gopt_selectors_in_defaults(const char *val);
-static int gopt_show_statfs_entries(const char *val);
-static int gopt_sun_map_syntax(const char *val);
-static int gopt_truncate_log(const char *val);
-static int gopt_unmount_on_exit(const char *val);
-static int gopt_use_tcpwrappers(const char *val);
-static int gopt_vendor(const char *val);
-static int process_global_option(const char *key, const char *val);
-static int process_one_regular_map(const cf_map_t *cfm);
-static int process_regular_option(const char *section, const char *key, const char *val, cf_map_t *cfm);
-static int ropt_browsable_dirs(const char *val, cf_map_t *cfm);
-static int ropt_map_name(const char *val, cf_map_t *cfm);
-static int ropt_map_defaults(const char *val, cf_map_t *cfm);
-static int ropt_map_options(const char *val, cf_map_t *cfm);
-static int ropt_map_type(const char *val, cf_map_t *cfm);
-static int ropt_mount_type(const char *val, cf_map_t *cfm);
-static int ropt_search_path(const char *val, cf_map_t *cfm);
-static int ropt_sun_map_syntax(const char *val, cf_map_t *cfm);
-static int ropt_tag(const char *val, cf_map_t *cfm);
-static void init_cf_map(cf_map_t *cfm);
-
-
-/*
- * STATIC VARIABLES:
- */
-static cf_map_t *head_map, *cur_map;
-
-static struct _func_map glob_functable[] = {
- {"arch", gopt_arch},
- {"auto_attrcache", gopt_auto_attrcache},
- {"auto_dir", gopt_auto_dir},
- {"auto_nfs_version", gopt_auto_nfs_version},
- {"autofs_use_lofs", gopt_autofs_use_lofs},
- {"browsable_dirs", gopt_browsable_dirs},
- {"cache_duration", gopt_cache_duration},
- {"cluster", gopt_cluster},
- {"debug_mtab_file", gopt_debug_mtab_file},
- {"debug_options", gopt_debug_options},
- {"dismount_interval", gopt_dismount_interval},
- {"domain_strip", gopt_domain_strip},
- {"exec_map_timeout", gopt_exec_map_timeout},
- {"forced_unmounts", gopt_forced_unmounts},
- {"fully_qualified_hosts", gopt_fully_qualified_hosts},
- {"full_os", gopt_full_os},
- {"hesiod_base", gopt_hesiod_base},
- {"karch", gopt_karch},
- {"ldap_base", gopt_ldap_base},
- {"ldap_cache_maxmem", gopt_ldap_cache_maxmem},
- {"ldap_cache_seconds", gopt_ldap_cache_seconds},
- {"ldap_hostports", gopt_ldap_hostports},
- {"ldap_proto_version", gopt_ldap_proto_version},
- {"local_domain", gopt_local_domain},
- {"localhost_address", gopt_localhost_address},
- {"log_file", gopt_log_file},
- {"log_options", gopt_log_options},
- {"map_defaults", gopt_map_defaults},
- {"map_options", gopt_map_options},
- {"map_reload_interval", gopt_map_reload_interval},
- {"map_type", gopt_map_type},
- {"mount_type", gopt_mount_type},
- {"pid_file", gopt_pid_file},
- {"portmap_program", gopt_portmap_program},
- {"preferred_amq_port", gopt_preferred_amq_port},
- {"nfs_allow_any_interface", gopt_nfs_allow_any_interface},
- {"nfs_allow_insecure_port", gopt_nfs_allow_insecure_port},
- {"nfs_proto", gopt_nfs_proto},
- {"nfs_retransmit_counter", gopt_nfs_retransmit_counter},
- {"nfs_retransmit_counter_udp", gopt_nfs_retransmit_counter_udp},
- {"nfs_retransmit_counter_tcp", gopt_nfs_retransmit_counter_tcp},
- {"nfs_retransmit_counter_toplvl", gopt_nfs_retransmit_counter_toplvl},
- {"nfs_retry_interval", gopt_nfs_retry_interval},
- {"nfs_retry_interval_udp", gopt_nfs_retry_interval_udp},
- {"nfs_retry_interval_tcp", gopt_nfs_retry_interval_tcp},
- {"nfs_retry_interval_toplvl", gopt_nfs_retry_interval_toplvl},
- {"nfs_vers", gopt_nfs_vers},
- {"nfs_vers_ping", gopt_nfs_vers_ping},
- {"nis_domain", gopt_nis_domain},
- {"normalize_hostnames", gopt_normalize_hostnames},
- {"normalize_slashes", gopt_normalize_slashes},
- {"os", gopt_os},
- {"osver", gopt_osver},
- {"plock", gopt_plock},
- {"print_pid", gopt_print_pid},
- {"print_version", gopt_print_version},
- {"restart_mounts", gopt_restart_mounts},
- {"search_path", gopt_search_path},
- {"selectors_on_default", gopt_selectors_in_defaults},
- {"selectors_in_defaults", gopt_selectors_in_defaults},
- {"show_statfs_entries", gopt_show_statfs_entries},
- {"sun_map_syntax", gopt_sun_map_syntax},
- {"truncate_log", gopt_truncate_log},
- {"unmount_on_exit", gopt_unmount_on_exit},
- {"use_tcpwrappers", gopt_use_tcpwrappers},
- {"vendor", gopt_vendor},
- {NULL, NULL}
-};
-
-
-/*
- * Initialize a map from [global] defaults.
- */
-static void
-init_cf_map(cf_map_t *cfm)
-{
- if (!cfm)
- return;
-
- /*
- * Initialize a regular map's flags and other variables from the
- * global ones, so that they are applied to all maps. Of course, each map
- * can then override the flags individually.
- *
- * NOTES:
- * (1): Will only work for maps that appear after [global].
- * (2): I'm assigning pointers directly from the global map.
- */
-
- /* initialize map_type from [global] */
- cfm->cfm_type = gopt.map_type;
-
- /* initialize map_defaults from [global] */
- cfm->cfm_defaults = gopt.map_defaults;
-
- /* initialize map_opts from [global] */
- cfm->cfm_opts = gopt.map_options;
-
- /* initialize search_path from [global] */
- cfm->cfm_search_path = gopt.search_path;
-
- /*
- * Initialize flags that are common both to [global] and a local map
- * (that is, they could be inherited from the global section).
- */
- cfm->cfm_flags = gopt.flags & (CFM_BROWSABLE_DIRS |
- CFM_BROWSABLE_DIRS_FULL |
- CFM_MOUNT_TYPE_AUTOFS |
- CFM_SELECTORS_IN_DEFAULTS |
- CFM_SUN_MAP_SYNTAX );
-}
-
-
-/*
- * Process configuration file options (called from YACC parser).
- * Return 0 if OK, 1 otherwise.
- */
-int
-set_conf_kv(const char *section, const char *key, const char *val)
-{
- int ret;
-
-#ifdef DEBUG_CONF
- fprintf(stderr, "set_conf_kv: section=%s, key=%s, val=%s\n",
- section, key, val);
-#endif /* DEBUG_CONF */
-
- /*
- * If global section, process kv pairs one at a time.
- */
- if (STREQ(section, "global")) {
- /*
- * Check if a regular map was configured before "global",
- * and warn about it.
- */
- if (cur_map && cur_map->cfm_dir) {
- static short printed_this_error;
- if (!printed_this_error) {
- fprintf(stderr, "found regular map \"%s\" before global one.\n",
- cur_map->cfm_dir);
- printed_this_error = 1;
- }
- }
-
- /* process the global option first */
- ret = process_global_option(key, val);
-
- /* return status from the processing of the global option */
- return ret;
- }
-
- /*
- * Otherwise we found a non-global option: store it after some testing.
- */
-
- /* initialize (static) global list head and current map pointer */
- if (!head_map && !cur_map) {
- cur_map = CALLOC(cf_map_t);
- if (!cur_map) {
- perror("calloc");
- exit(1);
- }
- /* initialize first head map from global defaults */
- init_cf_map(cur_map);
- head_map = cur_map;
- }
-
- /* check if we found a new map, then allocate and initialize it */
- if (cur_map->cfm_dir && !STREQ(cur_map->cfm_dir, section)) {
- /* allocate new map struct */
- cf_map_t *tmp_map = CALLOC(cf_map_t);
- if (!tmp_map) {
- perror("calloc");
- exit(1);
- }
- /* initialize it from global defaults */
- init_cf_map(tmp_map);
- /* append it to end of linked list */
- cur_map->cfm_next = tmp_map;
- cur_map = tmp_map;
- }
-
- /* now process a single entry of a regular map */
- return process_regular_option(section, key, val, cur_map);
-}
-
-
-/*
- * Process global section of configuration file options.
- * Return 0 upon success, 1 otherwise.
- */
-static int
-process_global_option(const char *key, const char *val)
-{
- struct _func_map *gfp;
-
- /* ensure that val is valid */
- if (!val || val[0] == '\0')
- return 1;
-
- /*
- * search for global function.
- */
- for (gfp = glob_functable; gfp->name; gfp++)
- if (FSTREQ(gfp->name, key))
- return (gfp->func)(val);
-
- fprintf(stderr, "conf: unknown global key: \"%s\"\n", key);
- return 1; /* failed to match any command */
-}
-
-
-static int
-gopt_arch(const char *val)
-{
- gopt.arch = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_auto_attrcache(const char *val)
-{
- gopt.auto_attrcache = atoi(val);
- if (gopt.auto_attrcache < 0) {
- fprintf(stderr, "conf: bad attrcache value: \"%s\"\n", val);
- return 1;
- }
- return 0;
-}
-
-
-static int
-gopt_auto_dir(const char *val)
-{
- gopt.auto_dir = xstrdup(val);
- return 0;
-}
-
-static int
-gopt_auto_nfs_version(const char *val)
-{
- if (strcmp(val, "2") == 0)
- nfs_dispatcher = nfs_program_2;
- else if (strcmp(val, "3") == 0)
- nfs_dispatcher = nfs_program_3;
- else {
- fprintf(stderr, "conf: bad auto nfs version : \"%s\"\n", val);
- return 1;
- }
- return 0;
-}
-
-static int
-gopt_autofs_use_lofs(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_AUTOFS_USE_LOFS;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_AUTOFS_USE_LOFS;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to autofs_use_lofs \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_browsable_dirs(const char *val)
-{
- if (STREQ(val, "full")) {
- gopt.flags |= CFM_BROWSABLE_DIRS_FULL;
- return 0;
- } else if (STREQ(val, "yes")) {
- gopt.flags |= CFM_BROWSABLE_DIRS;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_BROWSABLE_DIRS;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to browsable_dirs \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_cache_duration(const char *val)
-{
- gopt.am_timeo = atoi(val);
- if (gopt.am_timeo <= 0)
- gopt.am_timeo = AM_TTL;
- return 0;
-}
-
-
-static int
-gopt_cluster(const char *val)
-{
- gopt.cluster = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_debug_mtab_file(const char *val)
-{
- gopt.debug_mtab_file = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_debug_options(const char *val)
-{
-#ifdef DEBUG
- usage += debug_option((char *)val);
- return 0;
-#else /* not DEBUG */
- fprintf(stderr, "%s: not compiled with DEBUG option -- sorry.\n",
- am_get_progname());
- return 1;
-#endif /* not DEBUG */
-}
-
-
-static int
-gopt_dismount_interval(const char *val)
-{
- gopt.am_timeo_w = atoi(val);
- if (gopt.am_timeo_w <= 0)
- gopt.am_timeo_w = AM_TTL_W;
- return 0;
-}
-
-
-static int
-gopt_domain_strip(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_DOMAIN_STRIP;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_DOMAIN_STRIP;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to domain_strip \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_exec_map_timeout(const char *val)
-{
- gopt.exec_map_timeout = atoi(val);
- if (gopt.exec_map_timeout <= 0)
- gopt.exec_map_timeout = AMFS_EXEC_MAP_TIMEOUT; /* default exec map timeout */
- return 0;
-}
-
-
-static int
-gopt_forced_unmounts(const char *val)
-{
- if (STREQ(val, "yes")) {
-#if !defined(MNT2_GEN_OPT_DETACH) && !defined(MNT2_GEN_OPT_FORCE)
- fprintf(stderr, "conf: forced_unmounts unsupported on this system.\n");
- return 1;
-#else /* defined(MNT2_GEN_OPT_DETACH) || defined(MNT2_GEN_OPT_FORCE) */
-# ifdef __linux__
- /*
- * HACK ALERT: Linux has had MNT_FORCE since 2.2, but it hasn't gotten
- * stable until 2.4. And it had MNT_DETACH since 2.4, but it hasn't
- * gotten stable since 2.6. So alert users if they're trying to use a
- * feature that may not work well on their older kernel.
- */
- {
- struct utsname un;
- if (uname(&un) >= 0) {
-# ifdef MNT2_GEN_OPT_FORCE
- if (strcmp(un.release, "2.4.0") < 0)
- fprintf(stderr, "warning: forced-unmounts (MNT_FORCE) may not work well before 2.4.0\n");
-# endif /* MNT2_GEN_OPT_FORCE */
-# ifdef MNT2_GEN_OPT_DETACH
- if (strcmp(un.release, "2.6.0") < 0)
- fprintf(stderr, "warning: lazy-unmounts (MNT_DETACH) may not work well before 2.6.0\n");
-# endif /* MNT2_GEN_OPT_DETACH */
- }
- }
-# endif /* __linux__ */
- gopt.flags |= CFM_FORCED_UNMOUNTS;
- return 0;
-#endif /* defined(MNT2_GEN_OPT_DETACH) || defined(MNT2_GEN_OPT_FORCE) */
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_FORCED_UNMOUNTS;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to unmount_on_exit \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_full_os(const char *val)
-{
- gopt.op_sys_full = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_fully_qualified_hosts(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_FULLY_QUALIFIED_HOSTS;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_FULLY_QUALIFIED_HOSTS;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to fully_qualified_hosts \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_hesiod_base(const char *val)
-{
-#ifdef HAVE_MAP_HESIOD
- gopt.hesiod_base = xstrdup(val);
- return 0;
-#else /* not HAVE_MAP_HESIOD */
- fprintf(stderr, "conf: hesiod_base option ignored. No Hesiod support available.\n");
- return 1;
-#endif /* not HAVE_MAP_HESIOD */
-}
-
-
-static int
-gopt_karch(const char *val)
-{
- gopt.karch = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_pid_file(const char *val)
-{
- gopt.pid_file = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_local_domain(const char *val)
-{
- gopt.sub_domain = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_localhost_address(const char *val)
-{
- gopt.localhost_address = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_ldap_base(const char *val)
-{
-#ifdef HAVE_MAP_LDAP
- gopt.ldap_base = xstrdup(val);
- return 0;
-#else /* not HAVE_MAP_LDAP */
- fprintf(stderr, "conf: ldap_base option ignored. No LDAP support available.\n");
- return 1;
-#endif /* not HAVE_MAP_LDAP */
-}
-
-
-static int
-gopt_ldap_cache_seconds(const char *val)
-{
-#ifdef HAVE_MAP_LDAP
- char *end;
-
- gopt.ldap_cache_seconds = strtol((char *)val, &end, 10);
- if (end == val) {
- fprintf(stderr, "conf: bad LDAP cache (seconds) option: %s\n",val);
- return 1;
- }
- return 0;
-#else /* not HAVE_MAP_LDAP */
- fprintf(stderr, "conf: ldap_cache_seconds option ignored. No LDAP support available.\n");
- return 1;
-#endif /* not HAVE_MAP_LDAP */
-}
-
-
-static int
-gopt_ldap_cache_maxmem(const char *val)
-{
-#ifdef HAVE_MAP_LDAP
- char *end;
-
- gopt.ldap_cache_maxmem = strtol((char *)val, &end, 10);
- if (end == val) {
- fprintf(stderr, "conf: bad LDAP cache (maxmem) option: %s\n",val);
- return 1;
- }
- return 0;
-#else /* not HAVE_MAP_LDAP */
- fprintf(stderr, "conf: ldap_cache_maxmem option ignored. No LDAP support available.\n");
- return 1;
-#endif /* not HAVE_MAP_LDAP */
-}
-
-
-static int
-gopt_ldap_hostports(const char *val)
-{
-#ifdef HAVE_MAP_LDAP
- gopt.ldap_hostports = xstrdup(val);
- return 0;
-#else /* not HAVE_MAP_LDAP */
- fprintf(stderr, "conf: ldap_hostports option ignored. No LDAP support available.\n");
- return 1;
-#endif /* not HAVE_MAP_LDAP */
-
-}
-
-
-static int
-gopt_ldap_proto_version(const char *val)
-{
-#ifdef HAVE_MAP_LDAP
- char *end;
-
- gopt.ldap_proto_version = strtol((char *)val, &end, 10);
- if (end == val) {
- fprintf(stderr, "conf: bad ldap_proto_version option: %s\n",val);
- return 1;
- }
-
- if (gopt.ldap_proto_version < 0 || gopt.ldap_proto_version > LDAP_VERSION_MAX) {
- fprintf(stderr, "conf: bad ldap_proto_version option value: %s\n",val);
- return 1;
- }
- switch (gopt.ldap_proto_version) {
- /* XXX: what about LDAP_VERSION1? */
- case LDAP_VERSION2:
-#ifdef LDAP_VERSION3
- case LDAP_VERSION3:
-#endif /* LDAP_VERSION3 */
-#ifdef LDAP_VERSION4
- case LDAP_VERSION4:
-#endif /* LDAP_VERSION4 */
- break;
- default:
- fprintf(stderr, "conf: unsupported ldap_proto_version option value: %s\n",val);
- return 1;
- }
- return 0;
-#else /* not HAVE_MAP_LDAP */
- fprintf(stderr, "conf: ldap_proto_version option ignored. No LDAP support available.\n");
- return 1;
-#endif /* not HAVE_MAP_LDAP */
-}
-
-
-static int
-gopt_log_file(const char *val)
-{
- gopt.logfile = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_log_options(const char *val)
-{
- usage += switch_option((char *)val);
- return 0;
-}
-
-
-static int
-gopt_map_defaults(const char *val)
-{
- gopt.map_defaults = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_map_options(const char *val)
-{
- gopt.map_options = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_map_reload_interval(const char *val)
-{
- gopt.map_reload_interval = atoi(val);
- if (gopt.map_reload_interval <= 0)
- gopt.map_reload_interval = ONE_HOUR;
- return 0;
-}
-
-
-static int
-gopt_map_type(const char *val)
-{
- /* check if map type exist */
- if (!mapc_type_exists(val)) {
- fprintf(stderr, "conf: no such map type \"%s\"\n", val);
- return 1;
- }
- gopt.map_type = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_mount_type(const char *val)
-{
- if (STREQ(val, "autofs")) {
-#ifdef HAVE_FS_AUTOFS
- gopt.flags |= CFM_MOUNT_TYPE_AUTOFS;
- amd_use_autofs++;
- return 0;
-#else /* not HAVE_FS_AUTOFS */
- fprintf(stderr, "conf: no autofs support available\n");
- return 1;
-#endif /* not HAVE_FS_AUTOFS */
- } else if (STREQ(val, "nfs")) {
- gopt.flags &= ~CFM_MOUNT_TYPE_AUTOFS;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to mount_type \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_portmap_program(const char *val)
-{
- gopt.portmap_program = atol(val);
- /*
- * allow alternate program numbers to be no more than 10 offset from
- * official amd program number (300019).
- */
- if (gopt.portmap_program < AMQ_PROGRAM ||
- gopt.portmap_program > AMQ_PROGRAM + 10) {
- gopt.portmap_program = AMQ_PROGRAM;
- set_amd_program_number(gopt.portmap_program);
- fprintf(stderr, "conf: illegal amd program number \"%s\"\n", val);
- return 1;
- }
-
- set_amd_program_number(gopt.portmap_program);
- return 0; /* all is OK */
-}
-
-
-static int
-gopt_preferred_amq_port(const char *val)
-{
- gopt.preferred_amq_port = atoi(val);
-
- /*
- * No need to check value: preferred_amq_port is an unsigned short and 0
- * is a valid number, meaning "any port".
- */
- return 0; /* all is OK */
-}
-
-
-static int
-gopt_nfs_allow_any_interface(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_NFS_ANY_INTERFACE;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_NFS_ANY_INTERFACE;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to nfs_allow_insecure_port \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_nfs_allow_insecure_port(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_NFS_INSECURE_PORT;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_NFS_INSECURE_PORT;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to nfs_allow_insecure_port \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_nfs_proto(const char *val)
-{
- if (STREQ(val, "udp") || STREQ(val, "tcp")) {
- gopt.nfs_proto = xstrdup(val);
- return 0;
- }
- fprintf(stderr, "conf: illegal nfs_proto \"%s\"\n", val);
- return 1;
-}
-
-
-static int
-gopt_nfs_retransmit_counter(const char *val)
-{
- int i;
-
- for (i=0; i<AMU_TYPE_MAX; ++i)
- gopt.amfs_auto_retrans[i] = atoi(val);
- return 0;
-}
-
-
-static int
-gopt_nfs_retransmit_counter_udp(const char *val)
-{
- gopt.amfs_auto_retrans[AMU_TYPE_UDP] = atoi(val);
- return 0;
-}
-
-
-static int
-gopt_nfs_retransmit_counter_tcp(const char *val)
-{
- gopt.amfs_auto_retrans[AMU_TYPE_TCP] = atoi(val);
- return 0;
-}
-
-
-static int
-gopt_nfs_retransmit_counter_toplvl(const char *val)
-{
- gopt.amfs_auto_retrans[AMU_TYPE_TOPLVL] = atoi(val);
- return 0;
-}
-
-
-static int
-gopt_nfs_retry_interval(const char *val)
-{
- int i;
-
- for (i=0; i<AMU_TYPE_MAX; ++i)
- gopt.amfs_auto_timeo[i] = atoi(val);
- return 0;
-}
-
-
-static int
-gopt_nfs_retry_interval_udp(const char *val)
-{
- gopt.amfs_auto_timeo[AMU_TYPE_UDP] = atoi(val);
- return 0;
-}
-
-
-static int
-gopt_nfs_retry_interval_tcp(const char *val)
-{
- gopt.amfs_auto_timeo[AMU_TYPE_TCP] = atoi(val);
- return 0;
-}
-
-
-static int
-gopt_nfs_retry_interval_toplvl(const char *val)
-{
- gopt.amfs_auto_timeo[AMU_TYPE_TOPLVL] = atoi(val);
- return 0;
-}
-
-
-static int
-gopt_nfs_vers(const char *val)
-{
- int i = atoi(val);
-
- if (i == 2 || i == 3 || i == 4) {
- gopt.nfs_vers = i;
- return 0;
- }
- fprintf(stderr, "conf: illegal nfs_vers \"%s\"\n", val);
- return 1;
-}
-
-
-static int
-gopt_nfs_vers_ping(const char *val)
-{
- int i = atoi(val);
-
- if (i == 2 || i == 3 || i == 4) {
- gopt.nfs_vers_ping = i;
- return 0;
- }
- fprintf(stderr, "conf: illegal nfs_vers_ping \"%s\"\n", val);
- return 1;
-}
-
-static int
-gopt_nis_domain(const char *val)
-{
-#ifdef HAVE_MAP_NIS
- gopt.nis_domain = xstrdup(val);
- return 0;
-#else /* not HAVE_MAP_NIS */
- fprintf(stderr, "conf: nis_domain option ignored. No NIS support available.\n");
- return 1;
-#endif /* not HAVE_MAP_NIS */
-}
-
-
-static int
-gopt_normalize_hostnames(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_NORMALIZE_HOSTNAMES;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_NORMALIZE_HOSTNAMES;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to normalize_hostnames \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_normalize_slashes(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_NORMALIZE_SLASHES;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_NORMALIZE_SLASHES;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to normalize_slashes \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_os(const char *val)
-{
- gopt.op_sys = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_osver(const char *val)
-{
- gopt.op_sys_ver = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_plock(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_PROCESS_LOCK;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_PROCESS_LOCK;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to plock \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_print_pid(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_PRINT_PID;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_PRINT_PID;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to print_pid \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_print_version(const char *val)
-{
- if (STREQ(val, "yes")) {
- char *vers = get_version_string();
- fputs(vers, stderr);
- XFREE(vers);
- return 0;
- } else if (STREQ(val, "no")) {
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to print_version \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_restart_mounts(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_RESTART_EXISTING_MOUNTS;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_RESTART_EXISTING_MOUNTS;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to restart_mounts \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_search_path(const char *val)
-{
- gopt.search_path = xstrdup(val);
- return 0;
-}
-
-
-static int
-gopt_selectors_in_defaults(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_SELECTORS_IN_DEFAULTS;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_SELECTORS_IN_DEFAULTS;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to enable_default_selectors \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_show_statfs_entries(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_SHOW_STATFS_ENTRIES;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_SHOW_STATFS_ENTRIES;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to show_statfs_entries \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_sun_map_syntax(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_SUN_MAP_SYNTAX;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_SUN_MAP_SYNTAX;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to sun_map_syntax \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_truncate_log(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_TRUNCATE_LOG;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_TRUNCATE_LOG;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to truncate_log \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_unmount_on_exit(const char *val)
-{
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_UNMOUNT_ON_EXIT;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_UNMOUNT_ON_EXIT;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to unmount_on_exit \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_use_tcpwrappers(const char *val)
-{
-#if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP)
- if (STREQ(val, "yes")) {
- gopt.flags |= CFM_USE_TCPWRAPPERS;
- return 0;
- } else if (STREQ(val, "no")) {
- gopt.flags &= ~CFM_USE_TCPWRAPPERS;
- return 0;
- }
-#else /* not defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */
- fprintf(stderr, "conf: no tcpd/libwrap support available\n");
- return 1;
-#endif /* not defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */
-
- fprintf(stderr, "conf: unknown value to use_tcpwrappers \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-gopt_vendor(const char *val)
-{
- gopt.op_sys_vendor = xstrdup(val);
- return 0;
-}
-
-
-/*
- * Collect one entry for a regular map
- */
-static int
-process_regular_option(const char *section, const char *key, const char *val, cf_map_t *cfm)
-{
- /* ensure that val is valid */
- if (!section || section[0] == '\0' ||
- !key || key[0] == '\0' ||
- !val || val[0] == '\0' ||
- !cfm) {
- fprintf(stderr, "conf: process_regular_option: null entries\n");
- return 1;
- }
-
- /* check if initializing a new map */
- if (!cfm->cfm_dir)
- cfm->cfm_dir = xstrdup(section);
-
- /* check for each possible field */
- if (STREQ(key, "browsable_dirs"))
- return ropt_browsable_dirs(val, cfm);
-
- if (STREQ(key, "map_name"))
- return ropt_map_name(val, cfm);
-
- if (STREQ(key, "map_defaults"))
- return ropt_map_defaults(val, cfm);
-
- if (STREQ(key, "map_options"))
- return ropt_map_options(val, cfm);
-
- if (STREQ(key, "map_type"))
- return ropt_map_type(val, cfm);
-
- if (STREQ(key, "mount_type"))
- return ropt_mount_type(val, cfm);
-
- if (STREQ(key, "search_path"))
- return ropt_search_path(val, cfm);
-
- if (STREQ(key, "sun_map_syntax"))
- return ropt_sun_map_syntax(val, cfm);
-
- if (STREQ(key, "tag"))
- return ropt_tag(val, cfm);
-
- fprintf(stderr, "conf: unknown regular key \"%s\" for section \"%s\"\n",
- key, section);
- return 1; /* failed to match any command */
-}
-
-
-static int
-ropt_browsable_dirs(const char *val, cf_map_t *cfm)
-{
- if (STREQ(val, "full")) {
- cfm->cfm_flags |= CFM_BROWSABLE_DIRS_FULL;
- return 0;
- } else if (STREQ(val, "yes")) {
- cfm->cfm_flags |= CFM_BROWSABLE_DIRS;
- return 0;
- } else if (STREQ(val, "no")) {
- cfm->cfm_flags &= ~CFM_BROWSABLE_DIRS;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to browsable_dirs \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-ropt_map_name(const char *val, cf_map_t *cfm)
-{
- cfm->cfm_name = xstrdup(val);
- return 0;
-}
-
-
-static int
-ropt_map_defaults(const char *val, cf_map_t *cfm)
-{
- cfm->cfm_defaults = xstrdup(val);
- return 0;
-}
-
-
-static int
-ropt_map_options(const char *val, cf_map_t *cfm)
-{
- cfm->cfm_opts = xstrdup(val);
- return 0;
-}
-
-
-static int
-ropt_map_type(const char *val, cf_map_t *cfm)
-{
- /* check if map type exist */
- if (!mapc_type_exists(val)) {
- fprintf(stderr, "conf: no such map type \"%s\"\n", val);
- return 1;
- }
- cfm->cfm_type = xstrdup(val);
- return 0;
-}
-
-
-static int
-ropt_mount_type(const char *val, cf_map_t *cfm)
-{
- if (STREQ(val, "autofs")) {
-#ifdef HAVE_FS_AUTOFS
- cfm->cfm_flags |= CFM_MOUNT_TYPE_AUTOFS;
- amd_use_autofs++;
- return 0;
-#else /* not HAVE_FS_AUTOFS */
- fprintf(stderr, "conf: no autofs support available\n");
- return 1;
-#endif /* not HAVE_FS_AUTOFS */
- } else if (STREQ(val, "nfs")) {
- cfm->cfm_flags &= ~CFM_MOUNT_TYPE_AUTOFS;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to mount_type \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-ropt_search_path(const char *val, cf_map_t *cfm)
-{
- cfm->cfm_search_path = xstrdup(val);
- return 0;
-}
-
-
-static int
-ropt_sun_map_syntax(const char *val, cf_map_t *cfm)
-{
- if (STREQ(val, "yes")) {
- cfm->cfm_flags |= CFM_SUN_MAP_SYNTAX;
- return 0;
-
- } else if (STREQ(val, "no")) {
- cfm->cfm_flags &= ~CFM_SUN_MAP_SYNTAX;
- return 0;
- }
-
- fprintf(stderr, "conf: unknown value to sun_map_syntax \"%s\"\n", val);
- return 1; /* unknown value */
-}
-
-
-static int
-ropt_tag(const char *val, cf_map_t *cfm)
-{
- cfm->cfm_tag = xstrdup(val);
- return 0;
-}
-
-
-/*
- * Process one collected map.
- */
-static int
-process_one_regular_map(const cf_map_t *cfm)
-{
- if (!cfm->cfm_name) {
- fprintf(stderr, "conf: map_name must be defined for map \"%s\"\n", cfm->cfm_dir);
- return 1;
- }
- /*
- * If map has no tag defined, process the map.
- * If no conf_tag was set in amd -T, process all untagged entries.
- * If a tag is defined, then process it only if it matches the map tag.
- */
- if (!cfm->cfm_tag ||
- (conf_tag && STREQ(cfm->cfm_tag, conf_tag))) {
-#ifdef DEBUG_CONF
- fprintf(stderr, "processing map %s (flags=0x%x)...\n",
- cfm->cfm_dir, cfm->cfm_flags);
-#endif /* DEBUG_CONF */
- root_newmap(cfm->cfm_dir,
- cfm->cfm_opts ? cfm->cfm_opts : "",
- cfm->cfm_name,
- cfm);
- } else {
- fprintf(stderr, "skipping map %s...\n", cfm->cfm_dir);
- }
-
- return 0;
-}
-
-
-/*
- * Process all regular maps in conf file (if any)
- */
-int
-process_all_regular_maps(void)
-{
- cf_map_t *tmp_map = head_map;
-
- /*
- * If the amd.conf file only has a [global] section (pretty useless
- * IMHO), there's nothing to process
- */
- if (!tmp_map)
- return 0;
-
- while (tmp_map) {
- if (process_one_regular_map(tmp_map) != 0)
- return 1;
- tmp_map = tmp_map->cfm_next;
- }
- return 0;
-}
-
-
-/*
- * Find a cf_map_t for a given map name.
- * Return NULL if not found.
- */
-cf_map_t *
-find_cf_map(const char *name)
-{
-
- cf_map_t *tmp_map = head_map;
-
- if (!tmp_map || !name)
- return NULL;
-
- while (tmp_map) {
- if (STREQ(tmp_map->cfm_dir, name)) {
- return tmp_map;
- }
- tmp_map = tmp_map->cfm_next;
- }
- return NULL;
-}
diff --git a/contrib/amd/amd/conf_parse.y b/contrib/amd/amd/conf_parse.y
deleted file mode 100644
index 26c1b7ac7903..000000000000
--- a/contrib/amd/amd/conf_parse.y
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/conf_parse.y
- *
- */
-
-%{
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-extern char *yytext;
-extern int ayylineno;
-extern int yylex(void);
-
-static int yyerror(const char *s);
-static int retval;
-static char *header_section = NULL; /* start with no header section */
-
-#define YYDEBUG 1
-
-#define PARSE_DEBUG 0
-
-#if PARSE_DEBUG
-# define dprintf(f,s) fprintf(stderr, (f), ayylineno, (s))
-# define amu_return(v)
-#else /* not PARSE_DEBUG */
-# define dprintf(f,s)
-# define amu_return(v) return((v))
-#endif /* not PARSE_DEBUG */
-
-%}
-
-%union {
-char *strtype;
-}
-
-%token LEFT_BRACKET RIGHT_BRACKET EQUAL
-%token NEWLINE
-%token <strtype> NONWS_STRING
-%token <strtype> NONWSEQ_STRING
-%token <strtype> QUOTED_NONWSEQ_STRING
-
-%start file
-%%
-
-/****************************************************************************/
-file : { yydebug = PARSE_DEBUG; } newlines map_sections
- | { yydebug = PARSE_DEBUG; } map_sections
- ;
-
-newlines : NEWLINE
- | NEWLINE newlines
- ;
-
-map_sections : map_section
- | map_section map_sections
- ;
-
-map_section : sec_header kv_pairs
- ;
-
-sec_header : LEFT_BRACKET NONWS_STRING RIGHT_BRACKET NEWLINE
- {
- if (yydebug)
- fprintf(stderr, "sec_header1 = \"%s\"\n", $2);
- header_section = $2;
- }
- ;
-
-kv_pairs : kv_pair
- | kv_pair kv_pairs
- ;
-
-kv_pair : NONWS_STRING EQUAL NONWS_STRING NEWLINE
- {
- if (yydebug)
- fprintf(stderr,"parse1: key=\"%s\", val=\"%s\"\n", $1, $3);
- retval = set_conf_kv(header_section, $1, $3);
- if (retval != 0) {
- yyerror("syntax error");
- YYABORT;
- }
- }
- | NONWS_STRING EQUAL NONWSEQ_STRING NEWLINE
- {
- if (yydebug)
- fprintf(stderr,"parse2: key=\"%s\", val=\"%s\"\n", $1, $3);
- retval = set_conf_kv(header_section, $1, $3);
- if (retval != 0) {
- yyerror("syntax error");
- YYABORT;
- }
- }
- | NONWS_STRING EQUAL QUOTED_NONWSEQ_STRING NEWLINE
- {
- if (yydebug)
- fprintf(stderr,"parse3: key=\"%s\", val=\"%s\"\n", $1, $3);
- retval = set_conf_kv(header_section, $1, $3);
- if (retval != 0) {
- yyerror("syntax error");
- YYABORT;
- }
- }
- | NEWLINE
- ;
-
-/****************************************************************************/
-%%
-
-static int
-yyerror(const char *s)
-{
- fprintf(stderr, "AMDCONF: %s on line %d (section %s)\n",
- s, ayylineno,
- (header_section ? header_section : "null"));
- exit(1);
- return 1; /* to full compilers that insist on a return statement */
-}
diff --git a/contrib/amd/amd/conf_tok.l b/contrib/amd/amd/conf_tok.l
deleted file mode 100644
index fea2d8bf43f5..000000000000
--- a/contrib/amd/amd/conf_tok.l
+++ /dev/null
@@ -1,189 +0,0 @@
-%{
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/conf_tok.l
- *
- */
-
-/*
- * Lexical analyzer for AMD configuration parser.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-/*
- * Some systems include a definition for the macro ECHO in <sys/ioctl.h>,
- * and their (bad) version of lex defines it too at the very beginning of
- * the generated lex.yy.c file (before it can be easily undefined),
- * resulting in a conflict. So undefine it here before needed.
- * Luckily, it does not appear that this macro is actually used in the rest
- * of the generated lex.yy.c file.
- */
-#ifdef ECHO
-# undef ECHO
-#endif /* ECHO */
-#include <am_defs.h>
-#include <amd.h>
-#include <conf_parse.h>
-/* and once again undefine this, just in case */
-#ifdef ECHO
-# undef ECHO
-#endif /* ECHO */
-
-/*
- * There are some things that need to be defined only if using GNU flex.
- * These must not be defined if using standard lex
- */
-#ifdef FLEX_SCANNER
-# ifndef ECHO
-# define ECHO __IGNORE(fwrite( yytext, yyleng, 1, yyout ))
-# endif /* not ECHO */
-#endif /* FLEX_SCANNER */
-
-int ayylineno = 0;
-
-int yylex(void);
-/*
- * some systems such as DU-4.x have a different GNU flex in /usr/bin
- * which automatically generates yywrap macros and symbols. So I must
- * distinguish between them and when yywrap is actually needed.
- */
-#if !defined(yywrap) || defined(yylex)
-int yywrap(void);
-#endif /* not yywrap or yylex */
-
-#define TOK_DEBUG 0
-
-#if TOK_DEBUG
-# define dprintf(f,s) fprintf(stderr, (f), ayylineno, (s))
-# define amu_return(v)
-#else /* not TOK_DEBUG */
-# define dprintf(f,s)
-# define amu_return(v) return((v))
-#endif /* not TOK_DEBUG */
-
-/* no need to use yywrap() */
-#define YY_SKIP_YYWRAP
-
-%}
-
-/* This option causes Solaris lex to fail. Use flex. See BUGS file */
-/* no need to use yyunput() */
-%option nounput
-%option noinput
-
-/* allocate more output slots so lex scanners don't run out of mem */
-%o 1024
-
-DIGIT [0-9]
-ALPHA [A-Za-z]
-ALPHANUM [A-Za-z0-9]
-SYMBOL [A-Za-z0-9_-]
-PATH [A-Za-z0-9_-/]
-NONWSCHAR [^ \t\n\[\]=]
-NONWSEQCHAR [^ \t\n\[\]]
-NONNL [^\n]
-NONQUOTE [^\"]
-
-%%
-
-\n {
- ayylineno++;
- amu_return(NEWLINE);
- }
-
-\[ {
- dprintf("%8d: Left bracket \"%s\"\n", yytext);
- conf_lval.strtype = xstrdup(yytext);
- amu_return(LEFT_BRACKET);
- }
-
-\] {
- dprintf("%8d: Right bracket \"%s\"\n", yytext);
- conf_lval.strtype = xstrdup(yytext);
- amu_return(RIGHT_BRACKET);
- }
-
-= {
- dprintf("%8d: Equal \"%s\"\n", yytext);
- conf_lval.strtype = xstrdup(yytext);
- amu_return(EQUAL);
- }
-
-[ \t]* {
- dprintf("%8d: Whitespace \"%s\"\n", yytext);
- }
-"#"[^\n]*\n {
- /* a comment line includes the terminating \n */
- ayylineno++;
- yytext[strlen((char *)yytext)-1] = '\0';
- dprintf("%8d: Comment \"%s\"\n", yytext);
- }
-
-{NONWSCHAR}{NONWSCHAR}* {
- dprintf("%8d: Non-WS string \"%s\"\n", yytext);
- conf_lval.strtype = xstrdup(yytext);
- amu_return(NONWS_STRING);
- }
-
-\"{NONQUOTE}{NONQUOTE}*\" {
- dprintf("%8d: QUOTED-Non-WS-EQ string \"%s\"\n", yytext);
- /* must strip quotes */
- yytext[strlen((char *)yytext)-1] = '\0';
- conf_lval.strtype = xstrdup(&yytext[1]);
- amu_return(QUOTED_NONWSEQ_STRING);
- }
-
-{NONWSEQCHAR}{NONWSEQCHAR}* {
- dprintf("%8d: Non-WS-EQ string \"%s\"\n", yytext);
- conf_lval.strtype = xstrdup(yytext);
- amu_return(NONWSEQ_STRING);
- }
-
-%%
-
-/*
- * some systems such as DU-4.x have a different GNU flex in /usr/bin
- * which automatically generates yywrap macros and symbols. So I must
- * distinguish between them and when yywrap is actually needed.
- */
-#if !defined(yywrap) || defined(yylex)
-int yywrap(void)
-{
- return 1;
-}
-#endif /* not yywrap or yylex */
diff --git a/contrib/amd/amd/get_args.c b/contrib/amd/amd/get_args.c
deleted file mode 100644
index 724eff7cdbb1..000000000000
--- a/contrib/amd/amd/get_args.c
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/get_args.c
- *
- */
-
-/*
- * Argument decode
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* include auto-generated version file */
-#include <build_version.h>
-
-char *amu_conf_file = "/etc/amd.conf"; /* default amd configuration file */
-char *conf_tag = NULL; /* default conf file tags to use */
-int usage = 0;
-int use_conf_file = 0; /* default don't use amd.conf file */
-char *mnttab_file_name = NULL; /* symbol must be available always */
-
-
-/*
- * Return the version string (dynamic buffer)
- */
-char *
-get_version_string(void)
-{
- char *vers = NULL;
- char tmpbuf[1024];
- char *wire_buf;
- int wire_buf_len = 0;
- size_t len; /* max allocated length (to avoid buf overflow) */
-
- /*
- * First get dynamic string listing all known networks.
- * This could be a long list, if host has lots of interfaces.
- */
- wire_buf = print_wires();
- if (wire_buf)
- wire_buf_len = strlen(wire_buf);
-
- len = 2048 + wire_buf_len;
- vers = xmalloc(len);
- xsnprintf(vers, len, "%s\n%s\n%s\n%s\n",
- "Copyright (c) 1997-2014 Erez Zadok",
- "Copyright (c) 1990 Jan-Simon Pendry",
- "Copyright (c) 1990 Imperial College of Science, Technology & Medicine",
- "Copyright (c) 1990 The Regents of the University of California.");
- xsnprintf(tmpbuf, sizeof(tmpbuf), "%s version %s (build %d).\n",
- PACKAGE_NAME, PACKAGE_VERSION, AMU_BUILD_VERSION);
- xstrlcat(vers, tmpbuf, len);
- xsnprintf(tmpbuf, sizeof(tmpbuf), "Report bugs to %s.\n", PACKAGE_BUGREPORT);
- xstrlcat(vers, tmpbuf, len);
-#if 0
- /*
- * XXX This block (between from the #if 0 to #endif was in the
- * XXX original was in the original merge however in the interest
- * XXX of reproduceable builds and the fact that this is redundant
- * XXX information, it is effectively removed.
- */
- xsnprintf(tmpbuf, sizeof(tmpbuf), "Configured by %s@%s on date %s.\n",
- USER_NAME, HOST_NAME, CONFIG_DATE);
- xstrlcat(vers, tmpbuf, len);
- xsnprintf(tmpbuf, sizeof(tmpbuf), "Built by %s@%s on date %s.\n",
- BUILD_USER, BUILD_HOST, BUILD_DATE);
- xstrlcat(vers, tmpbuf, len);
-#endif
- xsnprintf(tmpbuf, sizeof(tmpbuf), "cpu=%s (%s-endian), arch=%s, karch=%s.\n",
- cpu, endian, gopt.arch, gopt.karch);
- xstrlcat(vers, tmpbuf, len);
- xsnprintf(tmpbuf, sizeof(tmpbuf), "full_os=%s, os=%s, osver=%s, vendor=%s, distro=%s.\n",
- gopt.op_sys_full, gopt.op_sys, gopt.op_sys_ver, gopt.op_sys_vendor, DISTRO_NAME);
- xstrlcat(vers, tmpbuf, len);
- xsnprintf(tmpbuf, sizeof(tmpbuf), "domain=%s, host=%s, hostd=%s.\n",
- hostdomain, am_get_hostname(), hostd);
- xstrlcat(vers, tmpbuf, len);
-
- xstrlcat(vers, "Map support for: ", len);
- mapc_showtypes(tmpbuf, sizeof(tmpbuf));
- xstrlcat(vers, tmpbuf, len);
- xstrlcat(vers, ".\nAMFS: ", len);
- ops_showamfstypes(tmpbuf, sizeof(tmpbuf));
- xstrlcat(vers, tmpbuf, len);
- xstrlcat(vers, ", inherit.\nFS: ", len); /* hack: "show" that we support type:=inherit */
- ops_showfstypes(tmpbuf, sizeof(tmpbuf));
- xstrlcat(vers, tmpbuf, len);
-
- /* append list of networks if available */
- if (wire_buf) {
- xstrlcat(vers, wire_buf, len);
- XFREE(wire_buf);
- }
-
- return vers;
-}
-
-
-static void
-show_usage(void)
-{
- fprintf(stderr,
- "Usage: %s [-nprvHS] [-a mount_point] [-c cache_time] [-d domain]\n\
-\t[-k kernel_arch] [-l logfile%s\n\
-\t[-t timeout.retrans] [-w wait_timeout] [-A arch] [-C cluster_name]\n\
-\t[-o op_sys_ver] [-O op_sys_name]\n\
-\t[-F conf_file] [-T conf_tag]", am_get_progname(),
-#ifdef HAVE_SYSLOG
-# ifdef LOG_DAEMON
- "|\"syslog[:facility]\"]"
-# else /* not LOG_DAEMON */
- "|\"syslog\"]"
-# endif /* not LOG_DAEMON */
-#else /* not HAVE_SYSLOG */
- "]"
-#endif /* not HAVE_SYSLOG */
- );
-
-#ifdef HAVE_MAP_NIS
- fputs(" [-y nis-domain]\n", stderr);
-#else /* not HAVE_MAP_NIS */
- fputc('\n', stderr);
-#endif /* HAVE_MAP_NIS */
-
- show_opts('x', xlog_opt);
-#ifdef DEBUG
- show_opts('D', dbg_opt);
-#endif /* DEBUG */
- fprintf(stderr, "\t[directory mapname [-map_options]] ...\n");
-}
-
-
-void
-get_args(int argc, char *argv[])
-{
- int opt_ch, i;
- FILE *fp = stdin;
- char getopt_arguments[] = "+nprvSa:c:d:k:l:o:t:w:x:y:C:D:F:T:O:HA:";
- char *getopt_args;
- int print_version = 0; /* 1 means we should print version info */
-
-#ifdef HAVE_GNU_GETOPT
- getopt_args = getopt_arguments;
-#else /* ! HAVE_GNU_GETOPT */
- getopt_args = &getopt_arguments[1];
-#endif /* HAVE_GNU_GETOPT */
-
- /* if no arguments were passed, try to use /etc/amd.conf file */
- if (argc <= 1)
- use_conf_file = 1;
-
- while ((opt_ch = getopt(argc, argv, getopt_args)) != -1)
- switch (opt_ch) {
-
- case 'a':
- if (*optarg != '/') {
- fprintf(stderr, "%s: -a option must begin with a '/'\n",
- am_get_progname());
- exit(1);
- }
- gopt.auto_dir = optarg;
- break;
-
- case 'c':
- gopt.am_timeo = atoi(optarg);
- if (gopt.am_timeo <= 0)
- gopt.am_timeo = AM_TTL;
- break;
-
- case 'd':
- gopt.sub_domain = optarg;
- break;
-
- case 'k':
- gopt.karch = optarg;
- break;
-
- case 'l':
- gopt.logfile = optarg;
- break;
-
- case 'n':
- gopt.flags |= CFM_NORMALIZE_HOSTNAMES;
- break;
-
- case 'o':
- gopt.op_sys_ver = optarg;
- break;
-
- case 'p':
- gopt.flags |= CFM_PRINT_PID;
- break;
-
- case 'r':
- gopt.flags |= CFM_RESTART_EXISTING_MOUNTS;
- break;
-
- case 't':
- /* timeo.retrans (also affects toplvl mounts) */
- {
- char *dot = strchr(optarg, '.');
- int i;
- if (dot)
- *dot = '\0';
- if (*optarg) {
- for (i=0; i<AMU_TYPE_MAX; ++i)
- gopt.amfs_auto_timeo[i] = atoi(optarg);
- }
- if (dot) {
- for (i=0; i<AMU_TYPE_MAX; ++i)
- gopt.amfs_auto_retrans[i] = atoi(dot + 1);
- *dot = '.';
- }
- }
- break;
-
- case 'v':
- /*
- * defer to print version info after every variable had been
- * initialized.
- */
- print_version++;
- break;
-
- case 'w':
- gopt.am_timeo_w = atoi(optarg);
- if (gopt.am_timeo_w <= 0)
- gopt.am_timeo_w = AM_TTL_W;
- break;
-
- case 'x':
- usage += switch_option(optarg);
- break;
-
- case 'y':
-#ifdef HAVE_MAP_NIS
- gopt.nis_domain = optarg;
-#else /* not HAVE_MAP_NIS */
- plog(XLOG_USER, "-y: option ignored. No NIS support available.");
-#endif /* not HAVE_MAP_NIS */
- break;
-
- case 'A':
- gopt.arch = optarg;
- break;
-
- case 'C':
- gopt.cluster = optarg;
- break;
-
- case 'D':
-#ifdef DEBUG
- usage += debug_option(optarg);
-#else /* not DEBUG */
- fprintf(stderr, "%s: not compiled with DEBUG option -- sorry.\n",
- am_get_progname());
-#endif /* not DEBUG */
- break;
-
- case 'F':
- amu_conf_file = optarg;
- use_conf_file = 1;
- break;
-
- case 'H':
- show_usage();
- exit(1);
- break;
-
- case 'O':
- gopt.op_sys = optarg;
- break;
-
- case 'S':
- gopt.flags &= ~CFM_PROCESS_LOCK; /* turn process locking off */
- break;
-
- case 'T':
- conf_tag = optarg;
- break;
-
- default:
- usage = 1;
- break;
- }
-
- /*
- * amd.conf file: if not command-line arguments were used, or if -F was
- * specified, then use that amd.conf file. If the file cannot be opened,
- * abort amd. If it can be found, open it, parse it, and then close it.
- */
- if (use_conf_file && amu_conf_file) {
- fp = fopen(amu_conf_file, "r");
- if (!fp) {
- char buf[128];
- xsnprintf(buf, sizeof(buf), "Amd configuration file (%s)",
- amu_conf_file);
- perror(buf);
- exit(1);
- }
- conf_in = fp;
- conf_parse();
- fclose(fp);
- if (process_all_regular_maps() != 0)
- exit(1);
- }
-
-#ifdef DEBUG
- usage += switch_option("debug");
- /* initialize debug options */
- if (!debug_flags)
- debug_flags = D_CONTROL; /* CONTROL = "daemon,amq,fork" */
-#endif /* DEBUG */
-
- /* log information regarding amd.conf file */
- if (use_conf_file && amu_conf_file)
- plog(XLOG_INFO, "using configuration file %s", amu_conf_file);
-
-#ifdef HAVE_MAP_LDAP
- /* ensure that if ldap_base is specified, that also ldap_hostports is */
- if (gopt.ldap_hostports && !gopt.ldap_base) {
- fprintf(stderr, "must specify both ldap_hostports and ldap_base\n");
- exit(1);
- }
-#endif /* HAVE_MAP_LDAP */
-
- if (usage) {
- show_usage();
- exit(1);
- }
-
- while (optind <= argc - 2) {
- char *dir = argv[optind++];
- char *map = argv[optind++];
- char *opts = "";
- if (argv[optind] && *argv[optind] == '-')
- opts = &argv[optind++][1];
-
- root_newmap(dir, opts, map, NULL);
- }
-
- if (optind == argc) {
- /*
- * Append domain name to hostname.
- * sub_domain overrides hostdomain
- * if given.
- */
- if (gopt.sub_domain)
- hostdomain = gopt.sub_domain;
- if (*hostdomain == '.')
- hostdomain++;
- xstrlcat(hostd, ".", sizeof(hostd));
- xstrlcat(hostd, hostdomain, sizeof(hostd));
-
-#ifdef MOUNT_TABLE_ON_FILE
- if (amuDebug(D_MTAB))
- if (gopt.debug_mtab_file)
- mnttab_file_name = gopt.debug_mtab_file; /* user supplied debug mtab path */
- else
- mnttab_file_name = DEBUG_MNTTAB_FILE; /* default debug mtab path */
- else
- mnttab_file_name = MNTTAB_FILE_NAME;
-#else /* not MOUNT_TABLE_ON_FILE */
- if (amuDebug(D_MTAB))
- dlog("-D mtab option ignored");
-# ifdef MNTTAB_FILE_NAME
- mnttab_file_name = MNTTAB_FILE_NAME;
-# endif /* MNTTAB_FILE_NAME */
-#endif /* not MOUNT_TABLE_ON_FILE */
-
- /*
- * If the kernel architecture was not specified
- * then use the machine architecture.
- */
- if (gopt.karch == NULL)
- gopt.karch = gopt.arch;
-
- if (gopt.cluster == NULL)
- gopt.cluster = hostdomain;
-
- /* sanity checking, normalize values just in case (toplvl too) */
- for (i=0; i<AMU_TYPE_MAX; ++i) {
- if (gopt.amfs_auto_timeo[i] == 0)
- gopt.amfs_auto_timeo[i] = AMFS_AUTO_TIMEO;
- if (gopt.amfs_auto_retrans[i] == 0)
- gopt.amfs_auto_retrans[i] = AMFS_AUTO_RETRANS(i);
- if (gopt.amfs_auto_retrans[i] == 0)
- gopt.amfs_auto_retrans[i] = 3; /* under very unusual circumstances, could be zero */
- }
- }
-
- /* finally print version string and exit, if asked for */
- if (print_version) {
- fputs(get_version_string(), stderr);
- exit(0);
- }
-
- if (switch_to_logfile(gopt.logfile, orig_umask,
- (gopt.flags & CFM_TRUNCATE_LOG)) != 0)
- plog(XLOG_USER, "Cannot switch logfile");
-
- return;
-}
diff --git a/contrib/amd/amd/info_exec.c b/contrib/amd/amd/info_exec.c
deleted file mode 100644
index 95216c90e2e9..000000000000
--- a/contrib/amd/amd/info_exec.c
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/info_exec.c
- *
- */
-
-/*
- * Get info from executable map
- *
- * Original from Erik Kline, 2004.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-#include <sun_map.h>
-
-
-/* forward declarations */
-int exec_init(mnt_map *m, char *map, time_t *tp);
-int exec_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp);
-
-
-/*
- * a timed fgets()
- */
-static char *
-fgets_timed(char *s, int size, int rdfd, int secs)
-{
- fd_set fds;
- struct timeval timeo;
- time_t start, now;
- int rval=0, i=0;
-
- if (!s || size < 0 || rdfd < 0)
- return 0;
-
- s[0] = '\0';
- if (size == 0)
- return s;
-
- start = clocktime(NULL);
- while (s[i] != '\n' && i < size-1) {
- s[i+1] = '\0'; /* places the requisite trailing '\0' */
-
- /* ready for reading */
- rval = read(rdfd, (void *)(s+i), 1);
- if (rval == 1) {
- if (s[i] == 0) {
- rval = 0;
- break;
- }
- i++;
- continue;
- } else if (rval == 0) {
- break;
- } else if (rval < 0 && errno != EAGAIN && errno != EINTR) {
- plog(XLOG_WARNING, "fgets_timed read error: %m");
- break;
- }
-
- timeo.tv_usec = 0;
- now = clocktime(NULL) - start;
- if (secs <= 0)
- timeo.tv_sec = 0;
- else if (now < secs)
- timeo.tv_sec = secs - now;
- else {
- /* timed out (now>=secs) */
- plog(XLOG_WARNING, "executable map read timed out (> %d secs)", secs);
- rval = -1;
- break;
- }
-
- FD_ZERO(&fds);
- FD_SET(rdfd, &fds);
-
- rval = select(rdfd+1, &fds, NULL, NULL, &timeo);
- if (rval < 0) {
- /* error selecting */
- plog(XLOG_WARNING, "fgets_timed select error: %m");
- if (errno == EINTR)
- continue;
- rval = -1;
- break;
- } else if (rval == 0) {
- /* timed out */
- plog(XLOG_WARNING, "executable map read timed out (> %d secs)", secs);
- rval = -1;
- break;
- }
- }
-
- if (rval > 0)
- return s;
-
- close(rdfd);
- return (rval == 0 ? s : 0);
-}
-
-
-static int
-read_line(char *buf, int size, int fd)
-{
- int done = 0;
-
- while (fgets_timed(buf, size, fd, gopt.exec_map_timeout)) {
- int len = strlen(buf);
- done += len;
- if (len > 1 && buf[len - 2] == '\\' &&
- buf[len - 1] == '\n') {
- buf += len - 2;
- size -= len - 2;
- *buf = '\n';
- buf[1] = '\0';
- } else {
- return done;
- }
- }
-
- return done;
-}
-
-
-/*
- * Try to locate a value in a query answer
- */
-static int
-exec_parse_qanswer(mnt_map *m, int fd, char *map, char *key, char **pval, time_t *tp)
-{
- char qanswer[INFO_MAX_LINE_LEN], *dc = NULL;
- int chuck = 0;
- int line_no = 0;
-
- while (read_line(qanswer, sizeof(qanswer), fd)) {
- char *cp;
- char *hash;
- int len = strlen(qanswer);
- line_no++;
-
- /*
- * Make sure we got the whole line
- */
- if (qanswer[len - 1] != '\n') {
- plog(XLOG_WARNING, "line %d in \"%s\" is too long", line_no, map);
- chuck = 1;
- } else {
- qanswer[len - 1] = '\0';
- }
-
- /*
- * Strip comments
- */
- hash = strchr(qanswer, '#');
- if (hash)
- *hash = '\0';
-
- /*
- * Find beginning of value (query answer)
- */
- for (cp = qanswer; *cp && !isascii((unsigned char)*cp) && !isspace((unsigned char)*cp); cp++)
- ;;
-
- /* Ignore blank lines */
- if (!*cp)
- goto again;
-
- /*
- * Return a copy of the data
- */
- if (m->cfm && (m->cfm->cfm_flags & CFM_SUN_MAP_SYNTAX))
- dc = sun_entry2amd(key, cp);
- else
- dc = xstrdup(cp);
- *pval = dc;
- dlog("%s returns %s", key, dc);
-
- close(fd);
- return 0;
-
- again:
- /*
- * If the last read didn't get a whole line then
- * throw away the remainder before continuing...
- */
- if (chuck) {
- while (fgets_timed(qanswer, sizeof(qanswer), fd, gopt.exec_map_timeout) &&
- !strchr(qanswer, '\n')) ;
- chuck = 0;
- }
- }
-
- return ENOENT;
-}
-
-
-static int
-set_nonblock(int fd)
-{
- int val;
-
- if (fd < 0)
- return 0;
-
- if ((val = fcntl(fd, F_GETFL, 0)) < 0) {
- plog(XLOG_WARNING, "set_nonblock fcntl F_GETFL error: %m");
- return 0;
- }
-
- val |= O_NONBLOCK;
- if (fcntl(fd, F_SETFL, val) < 0) {
- plog(XLOG_WARNING, "set_nonblock fcntl F_SETFL error: %m");
- return 0;
- }
-
- return 1;
-}
-
-
-static int
-exec_map_open(char *emap, char *key)
-{
- pid_t p1, p2;
- int pdes[2], nullfd, i;
- char *argv[3];
-
- if (!emap)
- return 0;
-
- argv[0] = emap;
- argv[1] = key;
- argv[2] = NULL;
-
- if ((nullfd = open("/dev/null", O_WRONLY|O_NOCTTY)) < 0)
- return -1;
-
- if (pipe(pdes) < 0) {
- close(nullfd);
- return -1;
- }
-
- switch ((p1 = vfork())) {
- case -1:
- /* parent: fork error */
- close(nullfd);
- close(pdes[0]);
- close(pdes[1]);
- return -1;
- case 0:
- /* child #1 */
- p2 = vfork();
- switch (p2) {
- case -1:
- /* child #1: fork error */
- exit(errno);
- case 0:
- /* child #2: init will reap our status */
- if (pdes[1] != STDOUT_FILENO) {
- dup2(pdes[1], STDOUT_FILENO);
- close(pdes[1]);
- }
-
- if (nullfd != STDERR_FILENO) {
- dup2(nullfd, STDERR_FILENO);
- close(nullfd);
- }
-
- for (i=0; i<FD_SETSIZE; i++)
- if (i != STDOUT_FILENO && i != STDERR_FILENO)
- close(i);
-
- /* make the write descriptor non-blocking */
- if (!set_nonblock(STDOUT_FILENO)) {
- close(STDOUT_FILENO);
- exit(-1);
- }
-
- execve(emap, argv, NULL);
- exit(errno); /* in case execve failed */
- }
-
- /* child #1 */
- exit(0);
- }
-
- /* parent */
- close(nullfd);
- close(pdes[1]);
-
- /* anti-zombie insurance */
- while (waitpid(p1, 0, 0) < 0)
- if (errno != EINTR)
- exit(errno);
-
- /* make the read descriptor non-blocking */
- if (!set_nonblock(pdes[0])) {
- close(pdes[0]);
- return -1;
- }
-
- return pdes[0];
-}
-
-
-/*
- * Check for various permissions on executable map without trying to
- * fork a new executable-map process.
- *
- * return: >0 (errno) if failed
- * 0 if ok
- */
-static int
-exec_check_perm(char *map)
-{
- struct stat sb;
-
- /* sanity and permission checks */
- if (!map) {
- dlog("exec_check_permission got a NULL map");
- return EINVAL;
- }
- if (stat(map, &sb)) {
- plog(XLOG_ERROR, "map \"%s\" stat failure: %m", map);
- return errno;
- }
- if (!S_ISREG(sb.st_mode)) {
- plog(XLOG_ERROR, "map \"%s\" should be regular file", map);
- return EINVAL;
- }
- if (sb.st_uid != 0) {
- plog(XLOG_ERROR, "map \"%s\" owned by uid %u (must be 0)", map, (u_int) sb.st_uid);
- return EACCES;
- }
- if (!(sb.st_mode & S_IXUSR)) {
- plog(XLOG_ERROR, "map \"%s\" should be executable", map);
- return EACCES;
- }
- if (sb.st_mode & (S_ISUID|S_ISGID)) {
- plog(XLOG_ERROR, "map \"%s\" should not be setuid/setgid", map);
- return EACCES;
- }
- if (sb.st_mode & S_IWOTH) {
- plog(XLOG_ERROR, "map \"%s\" should not be world writeable", map);
- return EACCES;
- }
-
- return 0; /* all is well */
-}
-
-
-int
-exec_init(mnt_map *m, char *map, time_t *tp)
-{
- /*
- * Basically just test that the executable map can be found
- * and has proper permissions.
- */
- return exec_check_perm(map);
-}
-
-
-int
-exec_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp)
-{
- int mapfd, ret;
-
- if ((ret = exec_check_perm(map)) != 0) {
- return ret;
- }
-
- if (!key)
- return 0;
-
- if (logfp)
- fflush(logfp);
- dlog("exec_search \"%s\", key: \"%s\"", map, key);
- mapfd = exec_map_open(map, key);
-
- if (mapfd >= 0) {
- if (tp)
- *tp = clocktime(NULL);
-
- return exec_parse_qanswer(m, mapfd, map, key, pval, tp);
- }
-
- return errno;
-}
diff --git a/contrib/amd/amd/info_file.c b/contrib/amd/amd/info_file.c
deleted file mode 100644
index 738c7bfa5776..000000000000
--- a/contrib/amd/amd/info_file.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/info_file.c
- *
- */
-
-/*
- * Get info from file
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-#include <sun_map.h>
-
-
-/* forward declarations */
-int file_init_or_mtime(mnt_map *m, char *map, time_t *tp);
-int file_reload(mnt_map *m, char *map, void (*fn) (mnt_map *, char *, char *));
-int file_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp);
-
-
-int
-file_read_line(char *buf, int size, FILE *fp)
-{
- int done = 0;
-
- do {
- while (fgets(buf, size, fp)) {
- int len = strlen(buf);
- done += len;
- if (len > 1 && buf[len - 2] == '\\' &&
- buf[len - 1] == '\n') {
- int ch;
- buf += len - 2;
- size -= len - 2;
- *buf = '\n';
- buf[1] = '\0';
- /*
- * Skip leading white space on next line
- */
- while ((ch = getc(fp)) != EOF &&
- isascii((unsigned char)ch) && isspace((unsigned char)ch)) ;
- (void) ungetc(ch, fp);
- } else {
- return done;
- }
- }
- } while (size > 0 && !feof(fp) && !ferror(fp));
-
- return done;
-}
-
-
-/*
- * Try to locate a key in a file
- */
-static int
-file_search_or_reload(mnt_map *m,
- FILE *fp,
- char *map,
- char *key,
- char **val,
- void (*fn) (mnt_map *m, char *, char *))
-{
- char key_val[INFO_MAX_LINE_LEN];
- int chuck = 0;
- int line_no = 0;
-
- while (file_read_line(key_val, sizeof(key_val), fp)) {
- char *kp;
- char *cp;
- char *hash;
- int len = strlen(key_val);
- line_no++;
-
- /*
- * Make sure we got the whole line
- */
- if (key_val[len - 1] != '\n') {
- plog(XLOG_WARNING, "line %d in \"%s\" is too long", line_no, map);
- chuck = 1;
- } else {
- key_val[len - 1] = '\0';
- }
-
- /*
- * Strip comments
- */
- hash = strchr(key_val, '#');
- if (hash)
- *hash = '\0';
-
- /*
- * Find start of key
- */
- for (kp = key_val; *kp && isascii((unsigned char)*kp) && isspace((unsigned char)*kp); kp++) ;
-
- /*
- * Ignore blank lines
- */
- if (!*kp)
- goto again;
-
- /*
- * Find end of key
- */
- for (cp = kp; *cp && (!isascii((unsigned char)*cp) || !isspace((unsigned char)*cp)); cp++) ;
-
- /*
- * Check whether key matches
- */
- if (*cp)
- *cp++ = '\0';
-
- if (fn || (*key == *kp && STREQ(key, kp))) {
- while (*cp && isascii((unsigned char)*cp) && isspace((unsigned char)*cp))
- cp++;
- if (*cp) {
- /*
- * Return a copy of the data
- */
- char *dc;
- /* if m->cfm == NULL, not using amd.conf file */
- if (m->cfm && (m->cfm->cfm_flags & CFM_SUN_MAP_SYNTAX))
- dc = sun_entry2amd(kp, cp);
- else
- dc = xstrdup(cp);
- if (fn) {
- (*fn) (m, xstrdup(kp), dc);
- } else {
- *val = dc;
- dlog("%s returns %s", key, dc);
- }
- if (!fn)
- return 0;
- } else {
- plog(XLOG_USER, "%s: line %d has no value field", map, line_no);
- }
- }
-
- again:
- /*
- * If the last read didn't get a whole line then
- * throw away the remainder before continuing...
- */
- if (chuck) {
- while (fgets(key_val, sizeof(key_val), fp) &&
- !strchr(key_val, '\n')) ;
- chuck = 0;
- }
- }
-
- return fn ? 0 : ENOENT;
-}
-
-
-static FILE *
-file_open(char *map, time_t *tp)
-{
- FILE *mapf = fopen(map, "r");
-
- if (mapf && tp) {
- struct stat stb;
- if (fstat(fileno(mapf), &stb) < 0)
- *tp = clocktime(NULL);
- else
- *tp = stb.st_mtime;
- }
- return mapf;
-}
-
-
-int
-file_init_or_mtime(mnt_map *m, char *map, time_t *tp)
-{
- FILE *mapf = file_open(map, tp);
-
- if (mapf) {
- fclose(mapf);
- return 0;
- }
- return errno;
-}
-
-
-int
-file_reload(mnt_map *m, char *map, void (*fn) (mnt_map *, char *, char *))
-{
- FILE *mapf = file_open(map, (time_t *) NULL);
-
- if (mapf) {
- int error = file_search_or_reload(m, mapf, map, NULL, NULL, fn);
- (void) fclose(mapf);
- return error;
- }
- return errno;
-}
-
-
-int
-file_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp)
-{
- time_t t;
- FILE *mapf = file_open(map, &t);
-
- if (mapf) {
- int error;
- if (*tp < t) {
- *tp = t;
- error = -1;
- } else {
- error = file_search_or_reload(m, mapf, map, key, pval, NULL);
- }
- (void) fclose(mapf);
- return error;
- }
- return errno;
-}
diff --git a/contrib/amd/amd/info_hesiod.c b/contrib/amd/amd/info_hesiod.c
deleted file mode 100644
index 0293f435a262..000000000000
--- a/contrib/amd/amd/info_hesiod.c
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/info_hesiod.c
- *
- */
-
-/*
- * Get info from Hesiod
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-#include <sun_map.h>
-
-#define HES_PREFIX "hesiod."
-#define HES_PREFLEN 7
-
-#ifdef HAVE_HESIOD_INIT
-/* bsdi3 does not define this extern in any header file */
-extern char **hesiod_resolve(void *context, const char *name, const char *type);
-extern int hesiod_init(void **context);
-static voidp hesiod_context;
-#endif /* HAVE_HESIOD_INIT */
-
-/* forward declarations */
-int amu_hesiod_init(mnt_map *m, char *map, time_t *tp);
-int hesiod_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp);
-int hesiod_isup(mnt_map *m, char *map);
-
-/*
- * No easy way to probe the server - check the map name begins with "hesiod."
- * Note: this name includes 'amu_' so as to not conflict with libhesiod's
- * hesiod_init() function.
- */
-int
-amu_hesiod_init(mnt_map *m, char *map, time_t *tp)
-{
- dlog("amu_hesiod_init(%s)", map);
- *tp = 0;
-
-#ifdef HAVE_HESIOD_INIT
- if (!hesiod_context && hesiod_init(&hesiod_context) != 0)
- return ENOENT;
-#endif /* HAVE_HESIOD_INIT */
-
- return NSTREQ(map, HES_PREFIX, HES_PREFLEN) ? 0 : ENOENT;
-}
-
-
-/*
- * Do a Hesiod nameserver call.
- * Modify time is ignored by Hesiod - XXX
- */
-int
-hesiod_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp)
-{
- char hes_key[MAXPATHLEN];
- char **rvec;
-#ifndef HAVE_HESIOD_INIT
- int error;
-#endif /* not HAVE_HESIOD_INIT */
-
- dlog("hesiod_search(m=%lx, map=%s, key=%s, pval=%lx tp=%lx)",
- (unsigned long) m, map, key, (unsigned long) pval, (unsigned long) tp);
-
- if (key[0] == '.')
- return ENOENT;
-
- xsnprintf(hes_key, sizeof(hes_key), "%s.%s", key, map + HES_PREFLEN);
-
- /*
- * Call the resolver
- */
- dlog("Hesiod base is: %s\n", gopt.hesiod_base);
- dlog("hesiod_search: hes_resolve(%s, %s)", hes_key, gopt.hesiod_base);
- if (amuDebug(D_INFO))
- _res.options |= RES_DEBUG;
-
-#ifdef HAVE_HESIOD_INIT
- /* new style hesiod */
- rvec = hesiod_resolve(hesiod_context, hes_key, gopt.hesiod_base);
-#else /* not HAVE_HESIOD_INIT */
- rvec = hes_resolve(hes_key, gopt.hesiod_base);
-#endif /* not HAVE_HESIOD_INIT */
-
- /*
- * If a reply was forthcoming then return
- * it (and free subsequent replies)
- */
- if (rvec && *rvec) {
- if (m->cfm && (m->cfm->cfm_flags & CFM_SUN_MAP_SYNTAX)) {
- *pval = sun_entry2amd(key, *rvec);
- XFREE(*rvec);
- } else
- *pval = *rvec;
- while (*++rvec)
- XFREE(*rvec);
- return 0;
- }
-
-#ifdef HAVE_HESIOD_INIT
- /* new style hesiod */
- return errno;
-#else /* not HAVE_HESIOD_INIT */
- /*
- * Otherwise reflect the hesiod error into a Un*x error
- */
- dlog("hesiod_search: Error: %d", hes_error());
- switch (hes_error()) {
- case HES_ER_NOTFOUND:
- error = ENOENT;
- break;
- case HES_ER_CONFIG:
- error = EIO;
- break;
- case HES_ER_NET:
- error = ETIMEDOUT;
- break;
- default:
- error = EINVAL;
- break;
- }
- dlog("hesiod_search: Returning: %d", error);
- return error;
-#endif /* not HAVE_HESIOD_INIT */
-}
-
-
-/*
- * Check if Hesiod is up, so we can determine if to clear the map or not.
- * Test it by querying for /defaults.
- * Returns: 0 if Hesiod is down, 1 if it is up.
- */
-int
-hesiod_isup(mnt_map *m, char *map)
-{
- int error;
- char *val;
- time_t mtime;
- static int last_status = 1; /* assume up by default */
-
- error = hesiod_search(m, map, "/defaults", &val, &mtime);
- dlog("hesiod_isup(%s): %s", map, strerror(error));
- if (error != 0 && error != ENOENT) {
- plog(XLOG_ERROR,
- "hesiod_isup: error getting `/defaults' entry in map %s: %m", map);
- last_status = 0;
- return 0; /* Hesiod is down */
- }
- if (last_status == 0) { /* if was down before */
- plog(XLOG_INFO, "hesiod_isup: Hesiod came back up for map %s", map);
- last_status = 1;
- }
- return 1; /* Hesiod is up */
-}
diff --git a/contrib/amd/amd/info_ldap.c b/contrib/amd/amd/info_ldap.c
deleted file mode 100644
index cfed6fd773d7..000000000000
--- a/contrib/amd/amd/info_ldap.c
+++ /dev/null
@@ -1,592 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/info_ldap.c
- *
- */
-
-
-/*
- * Get info from LDAP (Lightweight Directory Access Protocol)
- * LDAP Home Page: http://www.umich.edu/~rsug/ldap/
- */
-
-/*
- * WARNING: as of Linux Fedora Core 5 (which comes with openldap-2.3.9), the
- * ldap.h headers deprecate several functions used in this file, such as
- * ldap_unbind. You get compile errors about missing extern definitions.
- * Those externs are still in <ldap.h>, but surrounded by an ifdef
- * LDAP_DEPRECATED. I am turning on that ifdef here, under the assumption
- * that the functions may be deprecated, but they still work for this
- * (older?) version of the LDAP API. It gets am-utils to compile, but it is
- * not clear if it will work perfectly.
- */
-#ifndef LDAP_DEPRECATED
-# define LDAP_DEPRECATED 1
-#endif /* not LDAP_DEPRECATED */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-#include <sun_map.h>
-
-
-/*
- * MACROS:
- */
-#define AMD_LDAP_TYPE "ldap"
-/* Time to live for an LDAP cached in an mnt_map */
-#define AMD_LDAP_TTL 3600
-#define AMD_LDAP_RETRIES 5
-#define AMD_LDAP_HOST "ldap"
-#ifndef LDAP_PORT
-# define LDAP_PORT 389
-#endif /* LDAP_PORT */
-
-/* How timestamps are searched */
-#define AMD_LDAP_TSFILTER "(&(objectClass=amdmapTimestamp)(amdmapName=%s))"
-/* How maps are searched */
-#define AMD_LDAP_FILTER "(&(objectClass=amdmap)(amdmapName=%s)(amdmapKey=%s))"
-/* How timestamps are stored */
-#define AMD_LDAP_TSATTR "amdmaptimestamp"
-/* How maps are stored */
-#define AMD_LDAP_ATTR "amdmapvalue"
-
-/*
- * TYPEDEFS:
- */
-typedef struct ald_ent ALD;
-typedef struct cr_ent CR;
-typedef struct he_ent HE_ENT;
-
-/*
- * STRUCTURES:
- */
-struct ald_ent {
- LDAP *ldap;
- HE_ENT *hostent;
- CR *credentials;
- time_t timestamp;
-};
-
-struct cr_ent {
- char *who;
- char *pw;
- int method;
-};
-
-struct he_ent {
- char *host;
- int port;
- struct he_ent *next;
-};
-
-static ALD *ldap_connection;
-
-/*
- * FORWARD DECLARATIONS:
- */
-static int amu_ldap_rebind(ALD *a);
-static int get_ldap_timestamp(ALD *a, char *map, time_t *ts);
-
-int amu_ldap_init(mnt_map *m, char *map, time_t *tsu);
-int amu_ldap_search(mnt_map *m, char *map, char *key, char **pval, time_t *ts);
-int amu_ldap_mtime(mnt_map *m, char *map, time_t *ts);
-
-/*
- * FUNCTIONS:
- */
-
-static void
-he_free(HE_ENT *h)
-{
- XFREE(h->host);
- if (h->next != NULL)
- he_free(h->next);
- XFREE(h);
-}
-
-
-static HE_ENT *
-string2he(char *s_orig)
-{
- char *c, *p;
- char *s;
- HE_ENT *first = NULL, *cur = NULL;
-
- if (NULL == s_orig)
- return NULL;
- s = xstrdup(s_orig);
- for (p = strtok(s, ","); p; p = strtok(NULL, ",")) {
- if (cur != NULL) {
- cur->next = ALLOC(HE_ENT);
- cur = cur->next;
- } else
- first = cur = ALLOC(HE_ENT);
-
- cur->next = NULL;
- c = strchr(p, ':');
- if (c) { /* Host and port */
- *c++ = '\0';
- cur->host = xstrdup(p);
- cur->port = atoi(c);
- } else {
- cur->host = xstrdup(p);
- cur->port = LDAP_PORT;
- }
- plog(XLOG_USER, "Adding ldap server %s:%d",
- cur->host, cur->port);
- }
- XFREE(s);
- return first;
-}
-
-
-static void
-cr_free(CR *c)
-{
- XFREE(c->who);
- XFREE(c->pw);
- XFREE(c);
-}
-
-
-/*
- * Special ldap_unbind function to handle SIGPIPE.
- * We first ignore SIGPIPE, in case a remote LDAP server was
- * restarted, then we reinstall the handler.
- */
-static int
-amu_ldap_unbind(LDAP *ld)
-{
- int e;
-#ifdef HAVE_SIGACTION
- struct sigaction sa;
-#else /* not HAVE_SIGACTION */
- void (*handler)(int);
-#endif /* not HAVE_SIGACTION */
-
- dlog("amu_ldap_unbind()\n");
-
-#ifdef HAVE_SIGACTION
- sa.sa_handler = SIG_IGN;
- sa.sa_flags = 0;
- sigemptyset(&(sa.sa_mask));
- sigaddset(&(sa.sa_mask), SIGPIPE);
- sigaction(SIGPIPE, &sa, &sa); /* set IGNORE, and get old action */
-#else /* not HAVE_SIGACTION */
- handler = signal(SIGPIPE, SIG_IGN);
-#endif /* not HAVE_SIGACTION */
-
- e = ldap_unbind(ld);
-
-#ifdef HAVE_SIGACTION
- sigemptyset(&(sa.sa_mask));
- sigaddset(&(sa.sa_mask), SIGPIPE);
- sigaction(SIGPIPE, &sa, NULL);
-#else /* not HAVE_SIGACTION */
- (void) signal(SIGPIPE, handler);
-#endif /* not HAVE_SIGACTION */
-
- return e;
-}
-
-
-static void
-ald_free(ALD *a)
-{
- he_free(a->hostent);
- cr_free(a->credentials);
- if (a->ldap != NULL)
- amu_ldap_unbind(a->ldap);
- XFREE(a);
-}
-
-
-int
-amu_ldap_init(mnt_map *m, char *map, time_t *ts)
-{
- ALD *aldh;
- CR *creds;
-
- dlog("-> amu_ldap_init: map <%s>\n", map);
-
- /*
- * XXX: by checking that map_type must be defined, aren't we
- * excluding the possibility of automatic searches through all
- * map types?
- */
- if (!gopt.map_type || !STREQ(gopt.map_type, AMD_LDAP_TYPE)) {
- dlog("amu_ldap_init called with map_type <%s>\n",
- (gopt.map_type ? gopt.map_type : "null"));
- return ENOENT;
- } else {
- dlog("Map %s is ldap\n", map);
- }
-
-#ifndef LDAP_CONNECTION_PER_MAP
- if (ldap_connection != NULL) {
- m->map_data = (void *) ldap_connection;
- return 0;
- }
-#endif
-
- aldh = ALLOC(ALD);
- creds = ALLOC(CR);
- aldh->ldap = NULL;
- aldh->hostent = string2he(gopt.ldap_hostports);
- if (aldh->hostent == NULL) {
- plog(XLOG_USER, "Unable to parse hostport %s for ldap map %s",
- gopt.ldap_hostports ? gopt.ldap_hostports : "(null)", map);
- XFREE(creds);
- XFREE(aldh);
- return (ENOENT);
- }
- creds->who = "";
- creds->pw = "";
- creds->method = LDAP_AUTH_SIMPLE;
- aldh->credentials = creds;
- aldh->timestamp = 0;
- aldh->ldap = NULL;
- dlog("Trying for %s:%d\n", aldh->hostent->host, aldh->hostent->port);
- if (amu_ldap_rebind(aldh)) {
- ald_free(aldh);
- return (ENOENT);
- }
- dlog("Bound to %s:%d\n", aldh->hostent->host, aldh->hostent->port);
- if (get_ldap_timestamp(aldh, map, ts)) {
- ald_free(aldh);
- return (ENOENT);
- }
- dlog("Got timestamp for map %s: %ld\n", map, (u_long) *ts);
- ldap_connection = aldh;
- m->map_data = (void *) ldap_connection;
-
- return (0);
-}
-
-
-static int
-amu_ldap_rebind(ALD *a)
-{
- LDAP *ld;
- HE_ENT *h;
- CR *c = a->credentials;
- time_t now = clocktime(NULL);
- int try;
-
- dlog("-> amu_ldap_rebind\n");
-
- if (a->ldap != NULL) {
- if ((a->timestamp - now) > AMD_LDAP_TTL) {
- dlog("Re-establishing ldap connection\n");
- amu_ldap_unbind(a->ldap);
- a->timestamp = now;
- a->ldap = NULL;
- } else {
- /* Assume all is OK. If it wasn't we'll be back! */
- dlog("amu_ldap_rebind: timestamp OK\n");
- return (0);
- }
- }
-
- for (try=0; try<10; try++) { /* XXX: try up to 10 times (makes sense?) */
- for (h = a->hostent; h != NULL; h = h->next) {
- if ((ld = ldap_open(h->host, h->port)) == NULL) {
- plog(XLOG_WARNING, "Unable to ldap_open to %s:%d\n", h->host, h->port);
- continue;
- }
-#if LDAP_VERSION_MAX > LDAP_VERSION2
- /* handle LDAPv3 and heigher, if available and amd.conf-igured */
- if (gopt.ldap_proto_version > LDAP_VERSION2) {
- if (!ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &gopt.ldap_proto_version)) {
- dlog("amu_ldap_rebind: LDAP protocol version set to %ld\n",
- gopt.ldap_proto_version);
- } else {
- plog(XLOG_WARNING, "Unable to set ldap protocol version to %ld for "
- "%s:%d\n", gopt.ldap_proto_version, h->host, h->port);
- continue;
- }
- }
-#endif /* LDAP_VERSION_MAX > LDAP_VERSION2 */
- if (ldap_bind_s(ld, c->who, c->pw, c->method) != LDAP_SUCCESS) {
- plog(XLOG_WARNING, "Unable to ldap_bind to %s:%d as %s\n",
- h->host, h->port, c->who);
- continue;
- }
- if (gopt.ldap_cache_seconds > 0) {
-#if defined(HAVE_LDAP_ENABLE_CACHE) && defined(HAVE_EXTERN_LDAP_ENABLE_CACHE)
- ldap_enable_cache(ld, gopt.ldap_cache_seconds, gopt.ldap_cache_maxmem);
-#else /* not defined(HAVE_LDAP_ENABLE_CACHE) && defined(HAVE_EXTERN_LDAP_ENABLE_CACHE) */
- plog(XLOG_WARNING, "ldap_enable_cache(%ld) is not available on this system!\n", gopt.ldap_cache_seconds);
-#endif /* not defined(HAVE_LDAP_ENABLE_CACHE) && defined(HAVE_EXTERN_LDAP_ENABLE_CACHE) */
- }
- a->ldap = ld;
- a->timestamp = now;
- return (0);
- }
- plog(XLOG_WARNING, "Exhausted list of ldap servers, looping.\n");
- }
-
- plog(XLOG_USER, "Unable to (re)bind to any ldap hosts\n");
- return (ENOENT);
-}
-
-
-static int
-get_ldap_timestamp(ALD *a, char *map, time_t *ts)
-{
- struct timeval tv;
- char **vals, *end;
- char filter[MAXPATHLEN];
- int i, err = 0, nentries = 0;
- LDAPMessage *res = NULL, *entry;
-
- dlog("-> get_ldap_timestamp: map <%s>\n", map);
-
- tv.tv_sec = 3;
- tv.tv_usec = 0;
- xsnprintf(filter, sizeof(filter), AMD_LDAP_TSFILTER, map);
- dlog("Getting timestamp for map %s\n", map);
- dlog("Filter is: %s\n", filter);
- dlog("Base is: %s\n", gopt.ldap_base);
- for (i = 0; i < AMD_LDAP_RETRIES; i++) {
- err = ldap_search_st(a->ldap,
- gopt.ldap_base,
- LDAP_SCOPE_SUBTREE,
- filter,
- 0,
- 0,
- &tv,
- &res);
- if (err == LDAP_SUCCESS)
- break;
- if (res) {
- ldap_msgfree(res);
- res = NULL;
- }
- plog(XLOG_USER, "Timestamp LDAP search attempt %d failed: %s\n",
- i + 1, ldap_err2string(err));
- if (err != LDAP_TIMEOUT) {
- dlog("get_ldap_timestamp: unbinding...\n");
- amu_ldap_unbind(a->ldap);
- a->ldap = NULL;
- if (amu_ldap_rebind(a))
- return (ENOENT);
- }
- dlog("Timestamp search failed, trying again...\n");
- }
-
- if (err != LDAP_SUCCESS) {
- *ts = 0;
- plog(XLOG_USER, "LDAP timestamp search failed: %s\n",
- ldap_err2string(err));
- if (res)
- ldap_msgfree(res);
- return (ENOENT);
- }
-
- nentries = ldap_count_entries(a->ldap, res);
- if (nentries == 0) {
- plog(XLOG_USER, "No timestamp entry for map %s\n", map);
- *ts = 0;
- ldap_msgfree(res);
- return (ENOENT);
- }
-
- entry = ldap_first_entry(a->ldap, res);
- vals = ldap_get_values(a->ldap, entry, AMD_LDAP_TSATTR);
- if (ldap_count_values(vals) == 0) {
- plog(XLOG_USER, "Missing timestamp value for map %s\n", map);
- *ts = 0;
- ldap_value_free(vals);
- ldap_msgfree(res);
- return (ENOENT);
- }
- dlog("TS value is:%s:\n", vals[0]);
-
- if (vals[0]) {
- *ts = (time_t) strtol(vals[0], &end, 10);
- if (end == vals[0]) {
- plog(XLOG_USER, "Unable to decode ldap timestamp %s for map %s\n",
- vals[0], map);
- err = ENOENT;
- }
- if (!*ts > 0) {
- plog(XLOG_USER, "Nonpositive timestamp %ld for map %s\n",
- (u_long) *ts, map);
- err = ENOENT;
- }
- } else {
- plog(XLOG_USER, "Empty timestamp value for map %s\n", map);
- *ts = 0;
- err = ENOENT;
- }
-
- ldap_value_free(vals);
- ldap_msgfree(res);
- dlog("The timestamp for %s is %ld (err=%d)\n", map, (u_long) *ts, err);
- return (err);
-}
-
-
-int
-amu_ldap_search(mnt_map *m, char *map, char *key, char **pval, time_t *ts)
-{
- char **vals, filter[MAXPATHLEN], filter2[2 * MAXPATHLEN];
- char *f1, *f2;
- struct timeval tv;
- int i, err = 0, nvals = 0, nentries = 0;
- LDAPMessage *entry, *res = NULL;
- ALD *a = (ALD *) (m->map_data);
-
- dlog("-> amu_ldap_search: map <%s>, key <%s>\n", map, key);
-
- tv.tv_sec = 2;
- tv.tv_usec = 0;
- if (a == NULL) {
- plog(XLOG_USER, "LDAP panic: no map data\n");
- return (EIO);
- }
- if (amu_ldap_rebind(a)) /* Check that's the handle is still valid */
- return (ENOENT);
-
- xsnprintf(filter, sizeof(filter), AMD_LDAP_FILTER, map, key);
- /* "*" is special to ldap_search(); run through the filter escaping it. */
- f1 = filter; f2 = filter2;
- while (*f1) {
- if (*f1 == '*') {
- *f2++ = '\\'; *f2++ = '2'; *f2++ = 'a';
- f1++;
- } else {
- *f2++ = *f1++;
- }
- }
- *f2 = '\0';
- dlog("Search with filter: <%s>\n", filter2);
- for (i = 0; i < AMD_LDAP_RETRIES; i++) {
- err = ldap_search_st(a->ldap,
- gopt.ldap_base,
- LDAP_SCOPE_SUBTREE,
- filter2,
- 0,
- 0,
- &tv,
- &res);
- if (err == LDAP_SUCCESS)
- break;
- if (res) {
- ldap_msgfree(res);
- res = NULL;
- }
- plog(XLOG_USER, "LDAP search attempt %d failed: %s\n",
- i + 1, ldap_err2string(err));
- if (err != LDAP_TIMEOUT) {
- dlog("amu_ldap_search: unbinding...\n");
- amu_ldap_unbind(a->ldap);
- a->ldap = NULL;
- if (amu_ldap_rebind(a))
- return (ENOENT);
- }
- }
-
- switch (err) {
- case LDAP_SUCCESS:
- break;
- case LDAP_NO_SUCH_OBJECT:
- dlog("No object\n");
- if (res)
- ldap_msgfree(res);
- return (ENOENT);
- default:
- plog(XLOG_USER, "LDAP search failed: %s\n",
- ldap_err2string(err));
- if (res)
- ldap_msgfree(res);
- return (EIO);
- }
-
- nentries = ldap_count_entries(a->ldap, res);
- dlog("Search found %d entries\n", nentries);
- if (nentries == 0) {
- ldap_msgfree(res);
- return (ENOENT);
- }
- entry = ldap_first_entry(a->ldap, res);
- vals = ldap_get_values(a->ldap, entry, AMD_LDAP_ATTR);
- nvals = ldap_count_values(vals);
- if (nvals == 0) {
- plog(XLOG_USER, "Missing value for %s in map %s\n", key, map);
- ldap_value_free(vals);
- ldap_msgfree(res);
- return (EIO);
- }
- dlog("Map %s, %s => %s\n", map, key, vals[0]);
- if (vals[0]) {
- if (m->cfm && (m->cfm->cfm_flags & CFM_SUN_MAP_SYNTAX))
- *pval = sun_entry2amd(key, vals[0]);
- else
- *pval = xstrdup(vals[0]);
- err = 0;
- } else {
- plog(XLOG_USER, "Empty value for %s in map %s\n", key, map);
- err = ENOENT;
- }
- ldap_msgfree(res);
- ldap_value_free(vals);
-
- return (err);
-}
-
-
-int
-amu_ldap_mtime(mnt_map *m, char *map, time_t *ts)
-{
- ALD *aldh = (ALD *) (m->map_data);
-
- if (aldh == NULL) {
- dlog("LDAP panic: unable to find map data\n");
- return (ENOENT);
- }
- if (amu_ldap_rebind(aldh)) {
- return (ENOENT);
- }
- if (get_ldap_timestamp(aldh, map, ts)) {
- return (ENOENT);
- }
- return (0);
-}
diff --git a/contrib/amd/amd/info_ndbm.c b/contrib/amd/amd/info_ndbm.c
deleted file mode 100644
index 5f2f52b5330e..000000000000
--- a/contrib/amd/amd/info_ndbm.c
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/info_ndbm.c
- *
- */
-
-/*
- * Get info from NDBM map
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-#include <sun_map.h>
-
-/* forward declarations */
-int ndbm_init(mnt_map *m, char *map, time_t *tp);
-int ndbm_mtime(mnt_map *m, char *map, time_t *tp);
-int ndbm_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp);
-
-
-static int
-search_ndbm(mnt_map *m, DBM *db, char *key, char **val)
-{
- datum k, v;
-
- k.dptr = key;
- k.dsize = strlen(key) + 1;
- v = dbm_fetch(db, k);
- if (v.dptr) {
- if (m->cfm && (m->cfm->cfm_flags & CFM_SUN_MAP_SYNTAX))
- *val = sun_entry2amd(key, v.dptr);
- else
- *val = xstrdup(v.dptr);
- return 0;
- }
- return ENOENT;
-}
-
-
-int
-ndbm_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp)
-{
- DBM *db;
-
- db = dbm_open(map, O_RDONLY, 0);
- if (db) {
- struct stat stb;
- int error;
-#ifdef DBM_SUFFIX
- char dbfilename[256];
-
- xstrlcpy(dbfilename, map, sizeof(dbfilename));
- xstrlcat(dbfilename, DBM_SUFFIX, sizeof(dbfilename));
- error = stat(dbfilename, &stb);
-#else /* not DBM_SUFFIX */
- error = fstat(dbm_pagfno(db), &stb);
-#endif /* not DBM_SUFFIX */
- if (!error && *tp < stb.st_mtime) {
- *tp = stb.st_mtime;
- error = -1;
- } else {
- error = search_ndbm(m, db, key, pval);
- }
- (void) dbm_close(db);
- return error;
- }
- return errno;
-}
-
-
-int
-ndbm_init(mnt_map *m, char *map, time_t *tp)
-{
- DBM *db;
-
- db = dbm_open(map, O_RDONLY, 0);
- if (db) {
- struct stat stb;
- int error;
-#ifdef DBM_SUFFIX
- char dbfilename[256];
-
- xstrlcpy(dbfilename, map, sizeof(dbfilename));
- xstrlcat(dbfilename, DBM_SUFFIX, sizeof(dbfilename));
- error = stat(dbfilename, &stb);
-#else /* not DBM_SUFFIX */
- error = fstat(dbm_pagfno(db), &stb);
-#endif /* not DBM_SUFFIX */
- if (error < 0)
- *tp = clocktime(NULL);
- else
- *tp = stb.st_mtime;
- dbm_close(db);
- return 0;
- }
- return errno;
-}
-
-
-int
-ndbm_mtime(mnt_map *m, char *map, time_t *tp)
-{
- return ndbm_init(m,map, tp);
-}
diff --git a/contrib/amd/amd/info_nis.c b/contrib/amd/amd/info_nis.c
deleted file mode 100644
index 83dc4b7a84fc..000000000000
--- a/contrib/amd/amd/info_nis.c
+++ /dev/null
@@ -1,447 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/info_nis.c
- *
- */
-
-/*
- * Get info from NIS map
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-#include <sun_map.h>
-
-
-/*
- * NIS+ servers in NIS compat mode don't have yp_order()
- *
- * has_yp_order = 1 NIS server
- * = 0 NIS+ server
- * = -1 server is down
- */
-static int has_yp_order = -1;
-
-/* forward declarations */
-int nis_reload(mnt_map *m, char *map, void (*fn) (mnt_map *, char *, char *));
-int nis_search(mnt_map *m, char *map, char *key, char **val, time_t *tp);
-int nis_init(mnt_map *m, char *map, time_t *tp);
-int nis_isup(mnt_map *m, char *map);
-int nis_mtime(mnt_map *m, char *map, time_t *tp);
-
-/* typedefs */
-typedef void (*nis_callback_fxn_t)(mnt_map *, char *, char *);
-#ifndef DEFINED_YPALL_CALLBACK_FXN_T
-typedef int (*ypall_callback_fxn_t)();
-#endif /* DEFINED_YPALL_CALLBACK_FXN_T */
-
-struct nis_callback_data {
- mnt_map *ncd_m;
- char *ncd_map;
- nis_callback_fxn_t ncd_fn;
-};
-
-/* Map to the right version of yp_all */
-#ifdef HAVE_BAD_YP_ALL
-# define yp_all am_yp_all
-static int am_yp_all(char *indomain, char *inmap, struct ypall_callback *incallback);
-#endif /* HAVE_BAD_YP_ALL */
-
-
-/*
- * Figure out the nis domain name
- */
-static int
-determine_nis_domain(void)
-{
- static int nis_not_running = 0;
- char default_domain[YPMAXDOMAIN];
-
- if (nis_not_running)
- return ENOENT;
-
- if (getdomainname(default_domain, sizeof(default_domain)) < 0) {
- nis_not_running = 1;
- plog(XLOG_ERROR, "getdomainname: %m");
- return EIO;
- }
- if (!*default_domain) {
- nis_not_running = 1;
- plog(XLOG_WARNING, "NIS domain name is not set. NIS ignored.");
- return ENOENT;
- }
- gopt.nis_domain = xstrdup(default_domain);
-
- return 0;
-}
-
-
-/*
- * Callback from yp_all
- */
-static int
-callback(int status, char *key, int kl, char *val, int vl, char *data)
-{
- struct nis_callback_data *ncdp = (struct nis_callback_data *) data;
-
- if (status == YP_TRUE) {
-
- /* add to list of maps */
- char *kp = strnsave(key, kl);
- char *vp = strnsave(val, vl);
-
- (*ncdp->ncd_fn) (ncdp->ncd_m, kp, vp);
-
- /* we want more ... */
- return FALSE;
-
- } else {
-
- /* NOMORE means end of map - otherwise log error */
- if (status != YP_NOMORE) {
- /* check what went wrong */
- int e = ypprot_err(status);
-
- plog(XLOG_ERROR, "yp enumeration of %s: %s, status=%d, e=%d",
- ncdp->ncd_map, yperr_string(e), status, e);
- }
- return TRUE;
- }
-}
-
-
-int
-nis_reload(mnt_map *m, char *map, void (*fn) (mnt_map *, char *, char *))
-{
- int error;
- struct nis_callback_data data;
- struct ypall_callback cbinfo;
-
- if (!gopt.nis_domain) {
- error = determine_nis_domain();
- if (error)
- return error;
- }
- data.ncd_m = m;
- data.ncd_map = map;
- data.ncd_fn = fn;
- cbinfo.data = (voidp) &data;
- cbinfo.foreach = (ypall_callback_fxn_t) callback;
-
- plog(XLOG_INFO, "NIS map %s reloading using yp_all", map);
- /*
- * If you are using NIS and your yp_all function is "broken", you have to
- * get it fixed. The bug in yp_all() is that it does not close a TCP
- * connection to ypserv, and this ypserv runs out of open file descriptors,
- * getting into an infinite loop, thus all YP clients eventually unbind
- * and hang too.
- */
- error = yp_all(gopt.nis_domain, map, &cbinfo);
-
- if (error)
- plog(XLOG_ERROR, "error grabbing nis map of %s: %s", map, yperr_string(ypprot_err(error)));
- return error;
-}
-
-
-/*
- * Check if NIS is up, so we can determine if to clear the map or not.
- * Test it by checking the yp order.
- * Returns: 0 if NIS is down, 1 if it is up.
- */
-int
-nis_isup(mnt_map *m, char *map)
-{
- YP_ORDER_OUTORDER_TYPE order;
- int error;
- char *master;
- static int last_status = 1; /* assume up by default */
-
- switch (has_yp_order) {
- case 1:
- /*
- * NIS server with yp_order
- */
- error = yp_order(gopt.nis_domain, map, &order);
- if (error != 0) {
- plog(XLOG_ERROR,
- "nis_isup: error getting the order of map %s: %s",
- map, yperr_string(ypprot_err(error)));
- last_status = 0;
- return 0; /* NIS is down */
- }
- break;
-
- case 0:
- /*
- * NIS+ server without yp_order
- */
- error = yp_master(gopt.nis_domain, map, &master);
- if (error != 0) {
- plog(XLOG_ERROR,
- "nis_isup: error getting the master of map %s: %s",
- map, yperr_string(ypprot_err(error)));
- last_status = 0;
- return 0; /* NIS+ is down */
- }
- break;
-
- default:
- /*
- * server was down
- */
- last_status = 0;
- }
-
- if (last_status == 0) { /* reinitialize if was down before */
- time_t dummy;
- error = nis_init(m, map, &dummy);
- if (error)
- return 0; /* still down */
- plog(XLOG_INFO, "nis_isup: NIS came back up for map %s", map);
- last_status = 1;
- }
- return 1; /* NIS is up */
-}
-
-
-/*
- * Try to locate a key using NIS.
- */
-int
-nis_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp)
-{
- int outlen;
- int res;
- YP_ORDER_OUTORDER_TYPE order;
-
- /*
- * Make sure domain initialized
- */
- if (!gopt.nis_domain) {
- int error = determine_nis_domain();
- if (error)
- return error;
- }
-
-
- switch (has_yp_order) {
- case 1:
- /*
- * NIS server with yp_order
- * Check if map has changed
- */
- if (yp_order(gopt.nis_domain, map, &order))
- return EIO;
- if ((time_t) order > *tp) {
- *tp = (time_t) order;
- return -1;
- }
- break;
-
- case 0:
- /*
- * NIS+ server without yp_order
- * Check if timeout has expired to invalidate the cache
- */
- order = time(NULL);
- if ((time_t)order - *tp > gopt.am_timeo) {
- *tp = (time_t)order;
- return(-1);
- }
- break;
-
- default:
- /*
- * server was down
- */
- if (nis_isup(m, map))
- return -1;
- return EIO;
- }
-
- /*
- * Lookup key
- */
- res = yp_match(gopt.nis_domain, map, key, strlen(key), pval, &outlen);
- if (m->cfm && (m->cfm->cfm_flags & CFM_SUN_MAP_SYNTAX) && res == 0) {
- char *oldval = *pval;
- *pval = sun_entry2amd(key, oldval);
- /* We always need to free the output of the yp_match call. */
- XFREE(oldval);
- if (*pval == NULL)
- return -1; /* sun2amd parser error */
- }
-
- /*
- * Do something interesting with the return code
- */
- switch (res) {
- case 0:
- return 0;
-
- case YPERR_KEY:
- return ENOENT;
-
- default:
- plog(XLOG_ERROR, "nis_search: %s: %s", map, yperr_string(res));
- return EIO;
- }
-}
-
-
-int
-nis_init(mnt_map *m, char *map, time_t *tp)
-{
- YP_ORDER_OUTORDER_TYPE order;
- int yp_order_result;
- char *master;
-
- if (!gopt.nis_domain) {
- int error = determine_nis_domain();
- if (error)
- return error;
- }
-
- /*
- * To see if the map exists, try to find
- * a master for it.
- */
- yp_order_result = yp_order(gopt.nis_domain, map, &order);
- switch (yp_order_result) {
- case 0:
- /* NIS server found */
- has_yp_order = 1;
- *tp = (time_t) order;
- dlog("NIS master for %s@%s has order %lu", map, gopt.nis_domain, (unsigned long) order);
- break;
- case YPERR_YPERR:
- /* NIS+ server found ! */
- has_yp_order = 0;
- /* try yp_master() instead */
- if (yp_master(gopt.nis_domain, map, &master)) {
- return ENOENT;
- } else {
- dlog("NIS master for %s@%s is a NIS+ server", map, gopt.nis_domain);
- /* Use fake timestamps */
- *tp = time(NULL);
- }
- break;
- default:
- /* server is down */
- has_yp_order = -1;
- return ENOENT;
- }
- return 0;
-}
-
-
-int
-nis_mtime(mnt_map *m, char *map, time_t *tp)
-{
- return nis_init(m, map, tp);
-}
-
-
-#ifdef HAVE_BAD_YP_ALL
-/*
- * If you are using NIS and your yp_all function is "broken", use an
- * alternate code which avoids a bug in yp_all(). The bug in yp_all() is
- * that it does not close a TCP connection to ypserv, and this ypserv runs
- * out of open filedescriptors, getting into an infinite loop, thus all YP
- * clients eventually unbind and hang too.
- *
- * Systems known to be plagued with this bug:
- * earlier SunOS 4.x
- * all irix systems (at this time, up to 6.4 was checked)
- *
- * -Erez Zadok <ezk@cs.columbia.edu>
- * -James Tanis <jtt@cs.columbia.edu> */
-static int
-am_yp_all(char *indomain, char *inmap, struct ypall_callback *incallback)
-{
- int i, j;
- char *outkey, *outval;
- int outkeylen, outvallen;
- char *outkey_old;
- int outkeylen_old;
-
- plog(XLOG_INFO, "NIS map %s reloading using am_yp_all", inmap);
-
- i = yp_first(indomain, inmap, &outkey, &outkeylen, &outval, &outvallen);
- if (i) {
- plog(XLOG_ERROR, "yp_first() returned error: %s\n", yperr_string(i));
- }
- do {
- j = (incallback->foreach)(YP_TRUE,
- outkey,
- outkeylen,
- outval,
- outvallen,
- incallback->data);
- if (j != FALSE) /* terminate loop */
- break;
-
- /*
- * We have to manually free all char ** arguments to yp_first/yp_next
- * outval must be freed *before* calling yp_next again, outkey can be
- * freed as outkey_old *after* the call (this saves one call to
- * strnsave).
- */
- XFREE(outval);
- outkey_old = outkey;
- outkeylen_old = outkeylen;
- i = yp_next(indomain,
- inmap,
- outkey_old,
- outkeylen_old,
- &outkey,
- &outkeylen,
- &outval,
- &outvallen);
- XFREE(outkey_old);
- } while (!i);
- if (i) {
- dlog("yp_next() returned error: %s\n", yperr_string(i));
- }
- if (i == YPERR_NOMORE)
- return 0;
- return i;
-}
-#endif /* HAVE_BAD_YP_ALL */
diff --git a/contrib/amd/amd/info_nisplus.c b/contrib/amd/amd/info_nisplus.c
deleted file mode 100644
index 79df83614700..000000000000
--- a/contrib/amd/amd/info_nisplus.c
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/info_nisplus.c
- *
- */
-
-/*
- * Get info from NIS+ (version 3) map
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-#include <sun_map.h>
-
-#define NISPLUS_KEY "key="
-#define NISPLUS_ORGDIR ".org_dir"
-
-struct nis_callback_data {
- mnt_map *ncd_m;
- char *ncd_map;
- void (*ncd_fn)();
-};
-
-struct nisplus_search_callback_data {
- nis_name key;
- char *value;
-};
-
-
-static int
-nisplus_callback(const nis_name key, const nis_object *value, voidp opaquedata)
-{
- char *kp = strnsave(ENTRY_VAL(value, 0), ENTRY_LEN(value, 0));
- char *vp = strnsave(ENTRY_VAL(value, 1), ENTRY_LEN(value, 1));
- struct nis_callback_data *data = (struct nis_callback_data *) opaquedata;
-
- dlog("NISplus callback for <%s,%s>", kp, vp);
-
- (*data->ncd_fn) (data->ncd_m, kp, vp);
-
- /*
- * We want more ...
- */
- return FALSE;
-}
-
-
-int
-nisplus_reload(mnt_map *m, char *map, void (*fn) ())
-{
- int error = 0;
- struct nis_callback_data data;
- nis_result *result;
- char *org; /* if map does not have ".org_dir" then append it */
- nis_name map_name;
- size_t l;
-
- org = strstr(map, NISPLUS_ORGDIR);
- if (org == NULL)
- org = NISPLUS_ORGDIR;
- else
- org = "";
-
- /* make some room for the NIS map_name */
- l = strlen(map) + sizeof(NISPLUS_ORGDIR);
- map_name = xmalloc(l);
- if (map_name == NULL) {
- plog(XLOG_ERROR, "Unable to create map_name %s: %s",
- map, strerror(ENOMEM));
- return ENOMEM;
- }
- xsnprintf(map_name, l, "%s%s", map, org);
-
- data.ncd_m = m;
- data.ncd_map = map_name;
- data.ncd_fn = fn;
-
- dlog("NISplus reload for %s", map);
-
- result = nis_list(map_name,
- EXPAND_NAME | FOLLOW_LINKS | FOLLOW_PATH,
- (int (*)()) nisplus_callback,
- &data);
-
- /* free off the NIS map_name */
- XFREE(map_name);
-
- if (result->status != NIS_SUCCESS && result->status != NIS_CBRESULTS)
- error = 1;
-
- if (error)
- plog(XLOG_ERROR, "error grabbing nisplus map of %s: %s",
- map,
- nis_sperrno(result->status));
-
- nis_freeresult(result);
- return error;
-}
-
-
-static int
-nisplus_search_callback(const nis_name key, const nis_object *value, voidp opaquedata)
-{
- struct nisplus_search_callback_data *data = (struct nisplus_search_callback_data *) opaquedata;
-
- dlog("NISplus search callback for <%s>", ENTRY_VAL(value, 0));
- dlog("NISplus search callback value <%s>", ENTRY_VAL(value, 1));
-
- data->value = strnsave(ENTRY_VAL(value, 1), ENTRY_LEN(value, 1));
- return TRUE;
-}
-
-
-/*
- * Try to locate a key using NIS+.
- */
-int
-nisplus_search(mnt_map *m, char *map, char *key, char **val, time_t *tp)
-{
- nis_result *result;
- int error = 0;
- struct nisplus_search_callback_data data;
- nis_name index;
- char *org; /* if map does not have ".org_dir" then append it */
- size_t l;
-
- org = strstr(map, NISPLUS_ORGDIR);
- if (org == NULL)
- org = NISPLUS_ORGDIR;
- else
- org = "";
-
- /* make some room for the NIS index */
- l = sizeof('[') /* for opening selection criteria */
- + sizeof(NISPLUS_KEY)
- + strlen(key)
- + sizeof(']') /* for closing selection criteria */
- + sizeof(',') /* + 1 for , separator */
- + strlen(map)
- + sizeof(NISPLUS_ORGDIR);
- index = xmalloc(l);
- if (index == NULL) {
- plog(XLOG_ERROR,
- "Unable to create index %s: %s",
- map,
- strerror(ENOMEM));
- return ENOMEM;
- }
- xsnprintf(index, l, "[%s%s],%s%s", NISPLUS_KEY, key, map, org);
-
- data.key = key;
- data.value = NULL;
-
- dlog("NISplus search for %s", index);
-
- result = nis_list(index,
- EXPAND_NAME | FOLLOW_LINKS | FOLLOW_PATH,
- (int (*)()) nisplus_search_callback,
- &data);
-
- /* free off the NIS index */
- XFREE(index);
-
- if (result == NULL) {
- plog(XLOG_ERROR, "nisplus_search: %s: %s", map, strerror(ENOMEM));
- return ENOMEM;
- }
-
- /*
- * Do something interesting with the return code
- */
- switch (result->status) {
- case NIS_SUCCESS:
- case NIS_CBRESULTS:
-
- if (data.value == NULL) {
- nis_object *value = result->objects.objects_val;
- dlog("NISplus search found <nothing>");
- dlog("NISplus search for %s: %s(%d)",
- map, nis_sperrno(result->status), result->status);
-
- if (value != NULL)
- data.value = strnsave(ENTRY_VAL(value, 1), ENTRY_LEN(value, 1));
- }
-
- if (m->cfm && (m->cfm->cfm_flags & CFM_SUN_MAP_SYNTAX)) {
- *val = sun_entry2amd(key, data.value);
- XFREE(data.value); /* strnsave malloc'ed it above */
- } else
- *val = data.value;
-
- if (*val) {
- error = 0;
- dlog("NISplus search found %s", *val);
- } else {
- error = ENOENT;
- dlog("NISplus search found nothing");
- }
-
- *tp = 0;
- break;
-
- case NIS_NOSUCHNAME:
- dlog("NISplus search returned %d", result->status);
- error = ENOENT;
- break;
-
- default:
- plog(XLOG_ERROR, "nisplus_search: %s: %s", map, nis_sperrno(result->status));
- error = EIO;
- break;
- }
- nis_freeresult(result);
-
- return error;
-}
-
-
-int
-nisplus_init(mnt_map *m, char *map, time_t *tp)
-{
- nis_result *result;
- char *org; /* if map does not have ".org_dir" then append it */
- nis_name map_name;
- int error = 0;
- size_t l;
-
- org = strstr(map, NISPLUS_ORGDIR);
- if (org == NULL)
- org = NISPLUS_ORGDIR;
- else
- org = "";
-
- /* make some room for the NIS map_name */
- l = strlen(map) + sizeof(NISPLUS_ORGDIR);
- map_name = xmalloc(l);
- if (map_name == NULL) {
- plog(XLOG_ERROR,
- "Unable to create map_name %s: %s",
- map,
- strerror(ENOMEM));
- return ENOMEM;
- }
- xsnprintf(map_name, l, "%s%s", map, org);
-
- result = nis_lookup(map_name, (EXPAND_NAME | FOLLOW_LINKS | FOLLOW_PATH));
-
- /* free off the NIS map_name */
- XFREE(map_name);
-
- if (result == NULL) {
- plog(XLOG_ERROR, "NISplus init <%s>: %s", map, strerror(ENOMEM));
- return ENOMEM;
- }
-
- if (result->status != NIS_SUCCESS) {
- dlog("NISplus init <%s>: %s (%d)",
- map, nis_sperrno(result->status), result->status);
-
- error = ENOENT;
- }
-
- *tp = 0; /* no time */
- nis_freeresult(result);
- return error;
-}
-
-
-int
-nisplus_mtime(mnt_map *m, char *map, time_t *tp)
-{
- return nisplus_init(m,map, tp);
-}
diff --git a/contrib/amd/amd/info_passwd.c b/contrib/amd/amd/info_passwd.c
deleted file mode 100644
index 3c4486693c60..000000000000
--- a/contrib/amd/amd/info_passwd.c
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/info_passwd.c
- *
- */
-
-/*
- * Get info from password "file"
- *
- * This is experimental and probably doesn't do what you expect.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-#define PASSWD_MAP "/etc/passwd"
-
-/* forward declarations */
-int passwd_init(mnt_map *m, char *map, time_t *tp);
-int passwd_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp);
-
-
-/*
- * Nothing to probe - check the map name is PASSWD_MAP.
- */
-int
-passwd_init(mnt_map *m, char *map, time_t *tp)
-{
- *tp = 0;
-
- /*
- * Recognize the old format "PASSWD_MAP"
- * Uses default return string
- * "type:=nfs;rfs:=/${var0}/${var1};rhost:=${var1};sublink:=${var2};fs:=${autodir}${var3}"
- */
- if (STREQ(map, PASSWD_MAP))
- return 0;
- /*
- * Recognize the new format "PASSWD_MAP:pval-format"
- */
- if (!NSTREQ(map, PASSWD_MAP, sizeof(PASSWD_MAP) - 1))
- return ENOENT;
- if (map[sizeof(PASSWD_MAP)-1] != ':')
- return ENOENT;
-
- return 0;
-}
-
-
-/*
- * Grab the entry via the getpwname routine
- * Modify time is ignored by passwd - XXX
- */
-int
-passwd_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp)
-{
- char *dir = NULL;
- struct passwd *pw;
-
- if (STREQ(key, "/defaults")) {
- *pval = xstrdup("type:=nfs");
- return 0;
- }
- pw = getpwnam(key);
-
- if (pw) {
- /*
- * We chop the home directory up as follows:
- * /anydir/dom1/dom2/dom3/user
- *
- * and return
- * rfs:=/anydir/dom3;rhost:=dom3.dom2.dom1;sublink:=user
- * and now have
- * var0:=pw-prefix:=anydir
- * var1:=pw-rhost:=dom3.dom2.dom1
- * var2:=pw-user:=user
- * var3:=pw-home:=/anydir/dom1/dom2/dom3/user
- *
- * This allows cross-domain entries in your passwd file.
- * ... but forget about security!
- */
- char *user;
- char *p, *q;
- char val[MAXPATHLEN];
- char rhost[MAXHOSTNAMELEN];
- dir = xstrdup(pw->pw_dir);
-
- /*
- * Find user name. If no / then Invalid...
- */
- user = strrchr(dir, '/');
- if (!user)
- goto enoent;
- *user++ = '\0';
-
- /*
- * Find start of host "path". If no / then Invalid...
- */
- p = strchr(dir + 1, '/');
- if (!p)
- goto enoent;
- *p++ = '\0';
-
- /*
- * At this point, p is dom1/dom2/dom3
- * Copy, backwards, into rhost replacing
- * / with .
- */
- rhost[0] = '\0';
- do {
- q = strrchr(p, '/');
- if (q) {
- xstrlcat(rhost, q + 1, sizeof(rhost));
- xstrlcat(rhost, ".", sizeof(rhost));
- *q = '\0';
- } else {
- xstrlcat(rhost, p, sizeof(rhost));
- }
- } while (q);
-
- /*
- * Sanity check
- */
- if (*rhost == '\0' || *user == '\0' || *dir == '\0')
- goto enoent;
-
- /*
- * Make up return string
- */
- q = strchr(rhost, '.');
- if (q)
- *q = '\0';
- p = strchr(map, ':');
- if (p)
- p++;
- else
- p = "type:=nfs;rfs:=/${var0}/${var1};rhost:=${var1};sublink:=${var2};fs:=${autodir}${var3}";
- xsnprintf(val, sizeof(val), "var0:=%s;var1:=%s;var2:=%s;var3:=%s;%s",
- dir+1, rhost, user, pw->pw_dir, p);
- dlog("passwd_search: map=%s key=%s -> %s", map, key, val);
- if (q)
- *q = '.';
- *pval = xstrdup(val);
- return 0;
- }
-
-enoent:
- XFREE(dir);
-
- return ENOENT;
-}
diff --git a/contrib/amd/amd/info_sun.c b/contrib/amd/amd/info_sun.c
deleted file mode 100644
index 3f56965ff747..000000000000
--- a/contrib/amd/amd/info_sun.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/info_sun.c
- *
- */
-
-/*
- * Get info from Sun automount-style /etc/auto_master, possibly following
- * into multiple info services (via /etc/nsswitch.conf).
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-#include <sun_map.h>
-
-
-/* XXX: just a placeholder. fill in */
diff --git a/contrib/amd/amd/info_union.c b/contrib/amd/amd/info_union.c
deleted file mode 100644
index df480317bddf..000000000000
--- a/contrib/amd/amd/info_union.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/info_union.c
- *
- */
-
-/*
- * Get info from the system namespace
- *
- * NOTE: Cannot handle reads back through the automounter.
- * THIS WILL CAUSE A DEADLOCK!
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-#define UNION_PREFIX "union:"
-#define UNION_PREFLEN 6
-
-/* forward declarations */
-int union_init(mnt_map *m, char *map, time_t *tp);
-int union_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp);
-int union_reload(mnt_map *m, char *map, void (*fn) (mnt_map *, char *, char *));
-
-
-/*
- * No way to probe - check the map name begins with "union:"
- */
-int
-union_init(mnt_map *m, char *map, time_t *tp)
-{
- *tp = 0;
- return NSTREQ(map, UNION_PREFIX, UNION_PREFLEN) ? 0 : ENOENT;
-}
-
-
-int
-union_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp)
-{
- char *mapd = xstrdup(map + UNION_PREFLEN);
- char **v = strsplit(mapd, ':', '\"');
- char **p;
- size_t l;
-
- for (p = v; p[1]; p++) ;
- l = strlen(*p) + 5;
- *pval = xmalloc(l);
- xsnprintf(*pval, l, "fs:=%s", *p);
- XFREE(mapd);
- XFREE(v);
- return 0;
-}
-
-
-int
-union_reload(mnt_map *m, char *map, void (*fn) (mnt_map *, char *, char *))
-{
- static const char fseq[] = "fs:=";
- char *mapd = xstrdup(map + UNION_PREFLEN);
- char **v = strsplit(mapd, ':', '\"');
- char **dir;
-
- /*
- * Add fake /defaults entry
- */
- (*fn) (m, xstrdup("/defaults"), xstrdup("type:=link;opts:=nounmount;sublink:=${key}"));
-
- for (dir = v; *dir; dir++) {
- size_t l;
- struct dirent *dp;
-
- DIR *dirp = opendir(*dir);
- if (!dirp) {
- plog(XLOG_USER, "Cannot read directory %s: %m", *dir);
- continue;
- }
- l = strlen(*dir) + sizeof(fseq);
-
- dlog("Reading directory %s...", *dir);
- while ((dp = readdir(dirp))) {
- char *val, *dpname = &dp->d_name[0];
- if (dpname[0] == '.' &&
- (dpname[1] == '\0' ||
- (dpname[1] == '.' && dpname[2] == '\0')))
- continue;
-
- dlog("... gives %s", dp->d_name);
- val = xmalloc(l);
- xsnprintf(val, l, "%s%s", fseq, *dir);
- (*fn) (m, xstrdup(dp->d_name), val);
- }
- closedir(dirp);
- }
-
- /*
- * Add wildcard entry
- */
- {
- size_t l = strlen(*(dir-1)) + sizeof(fseq);
- char *val = xmalloc(l);
-
- xsnprintf(val, l, "%s%s", fseq, *(dir-1));
- (*fn) (m, xstrdup("*"), val);
- }
- XFREE(mapd);
- XFREE(v);
- return 0;
-}
diff --git a/contrib/amd/amd/map.c b/contrib/amd/amd/map.c
deleted file mode 100644
index 0d404cfdbd66..000000000000
--- a/contrib/amd/amd/map.c
+++ /dev/null
@@ -1,1098 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/map.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-#define smallest_t(t1, t2) (t1 != NEVER ? (t2 != NEVER ? (t1 < t2 ? t1 : t2) : t1) : t2)
-#define IGNORE_FLAGS (MFF_MOUNTING|MFF_UNMOUNTING|MFF_RESTART)
-#define new_gen() (am_gen++)
-
-/*
- * Generation Numbers.
- *
- * Generation numbers are allocated to every node created
- * by amd. When a filehandle is computed and sent to the
- * kernel, the generation number makes sure that it is safe
- * to reallocate a node slot even when the kernel has a cached
- * reference to its old incarnation.
- * No garbage collection is done, since it is assumed that
- * there is no way that 2^32 generation numbers could ever
- * be allocated by a single run of amd - there is simply
- * not enough cpu time available.
- * Famous last words... -Ion
- */
-static u_int am_gen = 2; /* Initial generation number */
-static int timeout_mp_id; /* Id from last call to timeout */
-
-static am_node *root_node; /* The root of the mount tree */
-static am_node **exported_ap = (am_node **) NULL;
-static int exported_ap_size = 0;
-static int first_free_map = 0; /* First available free slot */
-static int last_used_map = -1; /* Last unavailable used slot */
-
-
-/*
- * This is the default attributes field which
- * is copied into every new node to be created.
- * The individual filesystem fs_init() routines
- * patch the copy to represent the particular
- * details for the relevant filesystem type
- */
-static nfsfattr gen_fattr =
-{
- NFLNK, /* type */
- NFSMODE_LNK | 0777, /* mode */
- 1, /* nlink */
- 0, /* uid */
- 0, /* gid */
- 0, /* size */
- 4096, /* blocksize */
- 0, /* rdev */
- 1, /* blocks */
- 0, /* fsid */
- 0, /* fileid */
- {0, 0}, /* atime */
- {0, 0}, /* mtime */
- {0, 0}, /* ctime */
-};
-
-/* forward declarations */
-static int unmount_node(opaque_t arg);
-static void exported_ap_free(am_node *mp);
-static void remove_am(am_node *mp);
-static am_node *get_root_ap(char *dir);
-
-
-/*
- * Iterator functions for exported_ap[]
- */
-am_node *
-get_first_exported_ap(int *index)
-{
- *index = -1;
- return get_next_exported_ap(index);
-}
-
-
-am_node *
-get_next_exported_ap(int *index)
-{
- (*index)++;
- while (*index < exported_ap_size) {
- if (exported_ap[*index] != NULL)
- return exported_ap[*index];
- (*index)++;
- }
- return NULL;
-}
-
-
-/*
- * Get exported_ap by index
- */
-am_node *
-get_exported_ap(int index)
-{
- if (index < 0 || index >= exported_ap_size)
- return 0;
- return exported_ap[index];
-}
-
-
-/*
- * Get exported_ap by path
- */
-am_node *
-path_to_exported_ap(char *path)
-{
- int index;
- am_node *mp;
-
- mp = get_first_exported_ap(&index);
- while (mp != NULL) {
- if (STREQ(mp->am_path, path))
- break;
- mp = get_next_exported_ap(&index);
- }
- return mp;
-}
-
-
-/*
- * Resize exported_ap map
- */
-static int
-exported_ap_realloc_map(int nsize)
-{
- /*
- * this shouldn't happen, but...
- */
- if (nsize < 0 || nsize == exported_ap_size)
- return 0;
-
- exported_ap = (am_node **) xrealloc((voidp) exported_ap, nsize * sizeof(am_node *));
-
- if (nsize > exported_ap_size)
- memset((char *) (exported_ap + exported_ap_size), 0,
- (nsize - exported_ap_size) * sizeof(am_node *));
- exported_ap_size = nsize;
-
- return 1;
-}
-
-
-
-am_node *
-get_ap_child(am_node *mp, char *fname)
-{
- am_node *new_mp;
- mntfs *mf = mp->am_al->al_mnt;
-
- /*
- * Allocate a new map
- */
- new_mp = exported_ap_alloc();
- if (new_mp) {
- /*
- * Fill it in
- */
- init_map(new_mp, fname);
-
- /*
- * Put it in the table
- */
- insert_am(new_mp, mp);
-
- /*
- * Fill in some other fields,
- * path and mount point.
- *
- * bugfix: do not prepend old am_path if direct map
- * <wls@astro.umd.edu> William Sebok
- */
- new_mp->am_path = str3cat(new_mp->am_path,
- (mf->mf_fsflags & FS_DIRECT)
- ? ""
- : mp->am_path,
- *fname == '/' ? "" : "/", fname);
- dlog("setting path to %s", new_mp->am_path);
- }
-
- return new_mp;
-}
-
-/*
- * Allocate a new mount slot and create
- * a new node.
- * Fills in the map number of the node,
- * but leaves everything else uninitialized.
- */
-am_node *
-exported_ap_alloc(void)
-{
- am_node *mp, **mpp;
-
- /*
- * First check if there are any slots left, realloc if needed
- */
- if (first_free_map >= exported_ap_size)
- if (!exported_ap_realloc_map(exported_ap_size + NEXP_AP))
- return 0;
-
- /*
- * Grab the next free slot
- */
- mpp = exported_ap + first_free_map;
- mp = *mpp = ALLOC(struct am_node);
- memset((char *) mp, 0, sizeof(struct am_node));
-
- mp->am_mapno = first_free_map++;
-
- /*
- * Update free pointer
- */
- while (first_free_map < exported_ap_size && exported_ap[first_free_map])
- first_free_map++;
-
- if (first_free_map > last_used_map)
- last_used_map = first_free_map - 1;
-
- return mp;
-}
-
-
-/*
- * Free a mount slot
- */
-static void
-exported_ap_free(am_node *mp)
-{
- /*
- * Sanity check
- */
- if (!mp)
- return;
-
- /*
- * Zero the slot pointer to avoid double free's
- */
- exported_ap[mp->am_mapno] = NULL;
-
- /*
- * Update the free and last_used indices
- */
- if (mp->am_mapno == last_used_map)
- while (last_used_map >= 0 && exported_ap[last_used_map] == 0)
- --last_used_map;
-
- if (first_free_map > mp->am_mapno)
- first_free_map = mp->am_mapno;
-
- /*
- * Free the mount node, and zero out it's internal struct data.
- */
- memset((char *) mp, 0, sizeof(am_node));
- XFREE(mp);
-}
-
-
-/*
- * Insert mp into the correct place,
- * where p_mp is its parent node.
- * A new node gets placed as the youngest sibling
- * of any other children, and the parent's child
- * pointer is adjusted to point to the new child node.
- */
-void
-insert_am(am_node *mp, am_node *p_mp)
-{
- /*
- * If this is going in at the root then flag it
- * so that it cannot be unmounted by amq.
- */
- if (p_mp == root_node)
- mp->am_flags |= AMF_ROOT;
- /*
- * Fill in n-way links
- */
- mp->am_parent = p_mp;
- mp->am_osib = p_mp->am_child;
- if (mp->am_osib)
- mp->am_osib->am_ysib = mp;
- p_mp->am_child = mp;
-#ifdef HAVE_FS_AUTOFS
- if (p_mp->am_al->al_mnt->mf_flags & MFF_IS_AUTOFS)
- mp->am_flags |= AMF_AUTOFS;
-#endif /* HAVE_FS_AUTOFS */
-}
-
-
-/*
- * Remove am from its place in the mount tree
- */
-static void
-remove_am(am_node *mp)
-{
- /*
- * 1. Consistency check
- */
- if (mp->am_child && mp->am_parent) {
- plog(XLOG_WARNING, "children of \"%s\" still exist - deleting anyway", mp->am_path);
- }
-
- /*
- * 2. Update parent's child pointer
- */
- if (mp->am_parent && mp->am_parent->am_child == mp)
- mp->am_parent->am_child = mp->am_osib;
-
- /*
- * 3. Unlink from sibling chain
- */
- if (mp->am_ysib)
- mp->am_ysib->am_osib = mp->am_osib;
- if (mp->am_osib)
- mp->am_osib->am_ysib = mp->am_ysib;
-}
-
-
-/*
- * Compute a new time to live value for a node.
- */
-void
-new_ttl(am_node *mp)
-{
- mp->am_timeo_w = 0;
- mp->am_ttl = clocktime(&mp->am_fattr.na_atime);
- mp->am_ttl += mp->am_timeo; /* sun's -tl option */
-}
-
-
-void
-mk_fattr(nfsfattr *fattr, nfsftype vntype)
-{
- switch (vntype) {
- case NFDIR:
- fattr->na_type = NFDIR;
- fattr->na_mode = NFSMODE_DIR | 0555;
- fattr->na_nlink = 2;
- fattr->na_size = 512;
- break;
- case NFLNK:
- fattr->na_type = NFLNK;
- fattr->na_mode = NFSMODE_LNK | 0777;
- fattr->na_nlink = 1;
- fattr->na_size = 0;
- break;
- default:
- plog(XLOG_FATAL, "Unknown fattr type %d - ignored", vntype);
- break;
- }
-}
-
-
-/*
- * Initialize an allocated mount node.
- * It is assumed that the mount node was b-zero'd
- * before getting here so anything that would
- * be set to zero isn't done here.
- */
-void
-init_map(am_node *mp, char *dir)
-{
- /*
- * mp->am_mapno is initialized by exported_ap_alloc
- * other fields don't need to be set to zero.
- */
-
- mp->am_al = new_loc();
- mp->am_alarray = NULL;
- mp->am_name = xstrdup(dir);
- mp->am_path = xstrdup(dir);
- mp->am_gen = new_gen();
-#ifdef HAVE_FS_AUTOFS
- mp->am_autofs_fh = NULL;
-#endif /* HAVE_FS_AUTOFS */
-
- mp->am_timeo = gopt.am_timeo;
- mp->am_attr.ns_status = NFS_OK;
- mp->am_fattr = gen_fattr;
- mp->am_fattr.na_fsid = 42;
- mp->am_fattr.na_fileid = mp->am_gen;
- clocktime(&mp->am_fattr.na_atime);
- /* next line copies a "struct nfstime" among several fields */
- mp->am_fattr.na_mtime = mp->am_fattr.na_ctime = mp->am_fattr.na_atime;
-
- new_ttl(mp);
- mp->am_stats.s_mtime = mp->am_fattr.na_atime.nt_seconds;
- mp->am_dev = -1;
- mp->am_rdev = -1;
- mp->am_fd[0] = -1;
- mp->am_fd[1] = -1;
-}
-
-
-void
-notify_child(am_node *mp, au_etype au_etype, int au_errno, int au_signal)
-{
- amq_sync_umnt rv;
- int err;
-
- if (mp->am_fd[1] >= 0) { /* we have a child process */
- rv.au_etype = au_etype;
- rv.au_signal = au_signal;
- rv.au_errno = au_errno;
-
- err = write(mp->am_fd[1], &rv, sizeof(rv));
- /* XXX: do something else on err? */
- if (err < sizeof(rv))
- plog(XLOG_INFO, "notify_child: write returned %d instead of %d.",
- err, (int) sizeof(rv));
- close(mp->am_fd[1]);
- mp->am_fd[1] = -1;
- }
-}
-
-
-/*
- * Free a mount node.
- * The node must be already unmounted.
- */
-void
-free_map(am_node *mp)
-{
- remove_am(mp);
-
- if (mp->am_fd[1] != -1)
- plog(XLOG_FATAL, "free_map: called prior to notifying the child for %s.",
- mp->am_path);
-
- XFREE(mp->am_link);
- XFREE(mp->am_name);
- XFREE(mp->am_path);
- XFREE(mp->am_pref);
- XFREE(mp->am_transp);
-
- if (mp->am_al)
- free_loc(mp->am_al);
-
- if (mp->am_alarray) {
- am_loc **temp_al;
- for (temp_al = mp->am_alarray; *temp_al; temp_al++)
- free_loc(*temp_al);
- XFREE(mp->am_alarray);
- }
-
-#ifdef HAVE_FS_AUTOFS
- if (mp->am_autofs_fh)
- autofs_release_fh(mp);
-#endif /* HAVE_FS_AUTOFS */
-
- exported_ap_free(mp);
-}
-
-
-static am_node *
-find_ap_recursive(char *dir, am_node *mp)
-{
- if (mp) {
- am_node *mp2;
- if (STREQ(mp->am_path, dir))
- return mp;
-
- if ((mp->am_al->al_mnt->mf_flags & MFF_MOUNTED) &&
- STREQ(mp->am_al->al_mnt->mf_mount, dir))
- return mp;
-
- mp2 = find_ap_recursive(dir, mp->am_osib);
- if (mp2)
- return mp2;
- return find_ap_recursive(dir, mp->am_child);
- }
-
- return 0;
-}
-
-
-/*
- * Find the mount node corresponding to dir. dir can match either the
- * automount path or, if the node is mounted, the mount location.
- */
-am_node *
-find_ap(char *dir)
-{
- int i;
-
- for (i = last_used_map; i >= 0; --i) {
- am_node *mp = exported_ap[i];
- if (mp && (mp->am_flags & AMF_ROOT)) {
- mp = find_ap_recursive(dir, exported_ap[i]);
- if (mp) {
- return mp;
- }
- }
- }
-
- return 0;
-}
-
-
-/*
- * Get the filehandle for a particular named directory.
- * This is used during the bootstrap to tell the kernel
- * the filehandles of the initial automount points.
- */
-am_nfs_handle_t *
-get_root_nfs_fh(char *dir, am_nfs_handle_t *nfh)
-{
- am_node *mp = get_root_ap(dir);
- if (mp) {
- if (nfs_dispatcher == nfs_program_2)
- mp_to_fh(mp, &nfh->v2);
- else
- mp_to_fh3(mp, &nfh->v3);
- return nfh;
- }
-
- /*
- * Should never get here...
- */
- plog(XLOG_ERROR, "Can't find root filehandle for %s", dir);
-
- return 0;
-}
-
-
-static am_node *
-get_root_ap(char *dir)
-{
- am_node *mp = find_ap(dir);
-
- if (mp && mp->am_parent == root_node)
- return mp;
-
- return 0;
-}
-
-
-/*
- * Timeout all nodes waiting on
- * a given Fserver.
- */
-void
-map_flush_srvr(fserver *fs)
-{
- int i;
- int done = 0;
-
- for (i = last_used_map; i >= 0; --i) {
- am_node *mp = exported_ap[i];
-
- if (mp && mp->am_al->al_mnt && mp->am_al->al_mnt->mf_server == fs) {
- plog(XLOG_INFO, "Flushed %s; dependent on %s", mp->am_path, fs->fs_host);
- mp->am_ttl = clocktime(NULL);
- done = 1;
- }
- }
- if (done)
- reschedule_timeout_mp();
-}
-
-
-/*
- * Mount a top level automount node
- * by calling lookup in the parent
- * (root) node which will cause the
- * automount node to be automounted.
- */
-int
-mount_auto_node(char *dir, opaque_t arg)
-{
- int error = 0;
- am_node *mp = (am_node *) arg;
- am_node *new_mp;
-
- new_mp = mp->am_al->al_mnt->mf_ops->lookup_child(mp, dir, &error, VLOOK_CREATE);
- if (new_mp && error < 0) {
- /*
- * We can't allow the fileid of the root node to change.
- * Should be ok to force it to 1, always.
- */
- new_mp->am_gen = new_mp->am_fattr.na_fileid = 1;
-
- (void) mp->am_al->al_mnt->mf_ops->mount_child(new_mp, &error);
- }
-
- if (error > 0) {
- errno = error; /* XXX */
- plog(XLOG_ERROR, "Could not mount %s: %m", dir);
- }
- return error;
-}
-
-
-/*
- * Cause all the top-level mount nodes
- * to be automounted
- */
-int
-mount_exported(void)
-{
- /*
- * Iterate over all the nodes to be started
- */
- return root_keyiter(mount_auto_node, root_node);
-}
-
-
-/*
- * Construct top-level node
- */
-void
-make_root_node(void)
-{
- mntfs *root_mf;
- char *rootmap = ROOT_MAP;
- root_node = exported_ap_alloc();
-
- /*
- * Allocate a new map
- */
- init_map(root_node, "");
-
- /*
- * Allocate a new mounted filesystem
- */
- root_mf = find_mntfs(&amfs_root_ops, (am_opts *) NULL, "", rootmap, "", "", "");
-
- /*
- * Replace the initial null reference
- */
- free_mntfs(root_node->am_al->al_mnt);
- root_node->am_al->al_mnt = root_mf;
-
- /*
- * Initialize the root
- */
- if (root_mf->mf_ops->fs_init)
- (*root_mf->mf_ops->fs_init) (root_mf);
-
- /*
- * Mount the root
- */
- root_mf->mf_error = root_mf->mf_ops->mount_fs(root_node, root_mf);
-}
-
-
-/*
- * Cause all the nodes to be unmounted by timing
- * them out.
- */
-void
-umount_exported(void)
-{
- int i, work_done;
-
- do {
- work_done = 0;
-
- for (i = last_used_map; i >= 0; --i) {
- am_node *mp = exported_ap[i];
- mntfs *mf;
-
- if (!mp)
- continue;
-
- /*
- * Wait for children to be removed first
- */
- if (mp->am_child)
- continue;
-
- mf = mp->am_al->al_mnt;
- if (mf->mf_flags & MFF_UNMOUNTING) {
- /*
- * If this node is being unmounted then just ignore it. However,
- * this could prevent amd from finishing if the unmount gets blocked
- * since the am_node will never be free'd. am_unmounted needs
- * telling about this possibility. - XXX
- */
- continue;
- }
-
- if (!(mf->mf_fsflags & FS_DIRECTORY))
- /*
- * When shutting down this had better
- * look like a directory, otherwise it
- * can't be unmounted!
- */
- mk_fattr(&mp->am_fattr, NFDIR);
-
- if ((--immediate_abort < 0 &&
- !(mp->am_flags & AMF_ROOT) && mp->am_parent) ||
- (mf->mf_flags & MFF_RESTART)) {
-
- work_done++;
-
- /*
- * Just throw this node away without bothering to unmount it. If
- * the server is not known to be up then don't discard the mounted
- * on directory or Amd might hang...
- */
- if (mf->mf_server &&
- (mf->mf_server->fs_flags & (FSF_DOWN | FSF_VALID)) != FSF_VALID)
- mf->mf_flags &= ~MFF_MKMNT;
- if (gopt.flags & CFM_UNMOUNT_ON_EXIT || mp->am_flags & AMF_AUTOFS) {
- plog(XLOG_INFO, "on-exit attempt to unmount %s", mf->mf_mount);
- /*
- * use unmount_mp, not unmount_node, so that unmounts be
- * backgrounded as needed.
- */
- unmount_mp((opaque_t) mp);
- } else {
- am_unmounted(mp);
- }
- if (!(mf->mf_flags & (MFF_UNMOUNTING|MFF_MOUNTED)))
- exported_ap[i] = NULL;
- } else {
- /*
- * Any other node gets forcibly timed out.
- */
- mp->am_flags &= ~AMF_NOTIMEOUT;
- mp->am_al->al_mnt->mf_flags &= ~MFF_RSTKEEP;
- mp->am_ttl = 0;
- mp->am_timeo = 1;
- mp->am_timeo_w = 0;
- }
- }
- } while (work_done);
-}
-
-
-/*
- * Try to mount a file system. Can be called directly or in a sub-process by run_task.
- *
- * Warning: this function might be running in a child process context.
- * Don't expect any changes made here to survive in the parent amd process.
- */
-int
-mount_node(opaque_t arg)
-{
- am_node *mp = (am_node *) arg;
- mntfs *mf = mp->am_al->al_mnt;
- int error = 0;
-
-#ifdef HAVE_FS_AUTOFS
- if (mp->am_flags & AMF_AUTOFS)
- error = autofs_mount_fs(mp, mf);
- else
-#endif /* HAVE_FS_AUTOFS */
- if (!(mf->mf_flags & MFF_MOUNTED))
- error = mf->mf_ops->mount_fs(mp, mf);
-
- if (error > 0)
- dlog("mount_node: call to mf_ops->mount_fs(%s) failed: %s",
- mp->am_path, strerror(error));
- return error;
-}
-
-
-static int
-unmount_node(opaque_t arg)
-{
- am_node *mp = (am_node *) arg;
- mntfs *mf = mp->am_al->al_mnt;
- int error = 0;
-
- if (mf->mf_flags & MFF_ERROR) {
- /*
- * Just unlink
- */
- dlog("No-op unmount of error node %s", mf->mf_info);
- } else {
- dlog("Unmounting <%s> <%s> (%s) flags %x",
- mp->am_path, mf->mf_mount, mf->mf_info, mf->mf_flags);
-#ifdef HAVE_FS_AUTOFS
- if (mp->am_flags & AMF_AUTOFS)
- error = autofs_umount_fs(mp, mf);
- else
-#endif /* HAVE_FS_AUTOFS */
- if (mf->mf_refc == 1)
- error = mf->mf_ops->umount_fs(mp, mf);
- }
-
- /* do this again, it might have changed */
- mf = mp->am_al->al_mnt;
- if (error) {
- errno = error; /* XXX */
- dlog("%s: unmount: %m", mf->mf_mount);
- }
-
- return error;
-}
-
-
-static void
-free_map_if_success(int rc, int term, opaque_t arg)
-{
- am_node *mp = (am_node *) arg;
- mntfs *mf = mp->am_al->al_mnt;
- wchan_t wchan = get_mntfs_wchan(mf);
-
- /*
- * Not unmounting any more
- */
- mf->mf_flags &= ~MFF_UNMOUNTING;
-
- /*
- * If a timeout was deferred because the underlying filesystem
- * was busy then arrange for a timeout as soon as possible.
- */
- if (mf->mf_flags & MFF_WANTTIMO) {
- mf->mf_flags &= ~MFF_WANTTIMO;
- reschedule_timeout_mp();
- }
- if (term) {
- notify_child(mp, AMQ_UMNT_SIGNAL, 0, term);
- plog(XLOG_ERROR, "unmount for %s got signal %d", mp->am_path, term);
-#if defined(DEBUG) && defined(SIGTRAP)
- /*
- * dbx likes to put a trap on exit().
- * Pretend it succeeded for now...
- */
- if (term == SIGTRAP) {
- am_unmounted(mp);
- }
-#endif /* DEBUG */
-#ifdef HAVE_FS_AUTOFS
- if (mp->am_flags & AMF_AUTOFS)
- autofs_umount_failed(mp);
-#endif /* HAVE_FS_AUTOFS */
- amd_stats.d_uerr++;
- } else if (rc) {
- notify_child(mp, AMQ_UMNT_FAILED, rc, 0);
- if (mf->mf_ops == &amfs_program_ops || rc == EBUSY)
- plog(XLOG_STATS, "\"%s\" on %s still active", mp->am_path, mf->mf_mount);
- else
- plog(XLOG_ERROR, "%s: unmount: %s", mp->am_path, strerror(rc));
-#ifdef HAVE_FS_AUTOFS
- if (rc != ENOENT) {
- if (mf->mf_flags & MFF_IS_AUTOFS)
- autofs_get_mp(mp);
- if (mp->am_flags & AMF_AUTOFS)
- autofs_umount_failed(mp);
- }
-#endif /* HAVE_FS_AUTOFS */
- amd_stats.d_uerr++;
- } else {
- /*
- * am_unmounted() will call notify_child() appropriately.
- */
- am_unmounted(mp);
- }
-
- /*
- * Wakeup anything waiting for this unmount
- */
- wakeup(wchan);
-}
-
-
-int
-unmount_mp(am_node *mp)
-{
- int was_backgrounded = 0;
- mntfs *mf = mp->am_al->al_mnt;
-
-#ifdef notdef
- plog(XLOG_INFO, "\"%s\" on %s timed out (flags 0x%x)",
- mp->am_path, mf->mf_mount, (int) mf->mf_flags);
-#endif /* notdef */
-
-#ifndef MNT2_NFS_OPT_SYMTTL
- /*
- * This code is needed to defeat Solaris 2.4's (and newer) symlink
- * values cache. It forces the last-modified time of the symlink to be
- * current. It is not needed if the O/S has an nfs flag to turn off the
- * symlink-cache at mount time (such as Irix 5.x and 6.x). -Erez.
- *
- * Additionally, Linux currently ignores the nt_useconds field,
- * so we must update the nt_seconds field every time if clocktime(NULL)
- * didn't return a new number of seconds.
- */
- if (mp->am_parent) {
- time_t last = mp->am_parent->am_attr.ns_u.ns_attr_u.na_mtime.nt_seconds;
- clocktime(&mp->am_parent->am_attr.ns_u.ns_attr_u.na_mtime);
- /* defensive programming... can't we assert the above condition? */
- if (last == (time_t) mp->am_parent->am_attr.ns_u.ns_attr_u.na_mtime.nt_seconds)
- mp->am_parent->am_attr.ns_u.ns_attr_u.na_mtime.nt_seconds++;
- }
-#endif /* not MNT2_NFS_OPT_SYMTTL */
-
- if (mf->mf_refc == 1 && !FSRV_ISUP(mf->mf_server)) {
- /*
- * Don't try to unmount from a server that is known to be down
- */
- if (!(mf->mf_flags & MFF_LOGDOWN)) {
- /* Only log this once, otherwise gets a bit boring */
- plog(XLOG_STATS, "file server %s is down - timeout of \"%s\" ignored", mf->mf_server->fs_host, mp->am_path);
- mf->mf_flags |= MFF_LOGDOWN;
- }
- notify_child(mp, AMQ_UMNT_SERVER, 0, 0);
- return 0;
- }
-
- dlog("\"%s\" on %s timed out", mp->am_path, mf->mf_mount);
- mf->mf_flags |= MFF_UNMOUNTING;
-
-#ifdef HAVE_FS_AUTOFS
- if (mf->mf_flags & MFF_IS_AUTOFS)
- autofs_release_mp(mp);
-#endif /* HAVE_FS_AUTOFS */
-
- if ((mf->mf_fsflags & FS_UBACKGROUND) &&
- (mf->mf_flags & MFF_MOUNTED) &&
- !(mf->mf_flags & MFF_ON_AUTOFS)) {
- dlog("Trying unmount in background");
- run_task(unmount_node, (opaque_t) mp,
- free_map_if_success, (opaque_t) mp);
- was_backgrounded = 1;
- } else {
- dlog("Trying unmount in foreground");
- free_map_if_success(unmount_node((opaque_t) mp), 0, (opaque_t) mp);
- dlog("unmount attempt done");
- }
-
- return was_backgrounded;
-}
-
-
-void
-timeout_mp(opaque_t v) /* argument not used?! */
-{
- int i;
- time_t t = NEVER;
- time_t now = clocktime(NULL);
- int backoff = NumChildren / 4;
-
- dlog("Timing out automount points...");
-
- for (i = last_used_map; i >= 0; --i) {
- am_node *mp = exported_ap[i];
- mntfs *mf;
-
- /*
- * Just continue if nothing mounted
- */
- if (!mp)
- continue;
-
- /*
- * Pick up mounted filesystem
- */
- mf = mp->am_al->al_mnt;
- if (!mf)
- continue;
-
-#ifdef HAVE_FS_AUTOFS
- if (mf->mf_flags & MFF_IS_AUTOFS && mp->am_autofs_ttl != NEVER) {
- if (now >= mp->am_autofs_ttl)
- autofs_timeout_mp(mp);
- t = smallest_t(t, mp->am_autofs_ttl);
- }
-#endif /* HAVE_FS_AUTOFS */
-
- if (mp->am_flags & AMF_NOTIMEOUT)
- continue;
-
- /*
- * Don't delete last reference to a restarted filesystem.
- */
- if ((mf->mf_flags & MFF_RSTKEEP) && mf->mf_refc == 1)
- continue;
-
- /*
- * If there is action on this filesystem then ignore it
- */
- if (!(mf->mf_flags & IGNORE_FLAGS)) {
- int expired = 0;
- mf->mf_flags &= ~MFF_WANTTIMO;
- if (now >= mp->am_ttl) {
- if (!backoff) {
- expired = 1;
-
- /*
- * Move the ttl forward to avoid thrashing effects
- * on the next call to timeout!
- */
- /* sun's -tw option */
- if (mp->am_timeo_w < 4 * gopt.am_timeo_w)
- mp->am_timeo_w += gopt.am_timeo_w;
- mp->am_ttl = now + mp->am_timeo_w;
-
- } else {
- /*
- * Just backoff this unmount for
- * a couple of seconds to avoid
- * many multiple unmounts being
- * started in parallel.
- */
- mp->am_ttl = now + backoff + 1;
- }
- }
-
- /*
- * If the next ttl is smallest, use that
- */
- t = smallest_t(t, mp->am_ttl);
-
- if (!mp->am_child && mf->mf_error >= 0 && expired) {
- /*
- * If the unmount was backgrounded then
- * bump the backoff counter.
- */
- if (unmount_mp(mp)) {
- backoff = 2;
- }
- }
- } else if (mf->mf_flags & MFF_UNMOUNTING) {
- mf->mf_flags |= MFF_WANTTIMO;
- }
- }
-
- if (t == NEVER) {
- dlog("No further timeouts");
- t = now + ONE_HOUR;
- }
-
- /*
- * Sanity check to avoid runaways.
- * Absolutely should never get this but
- * if you do without this trap amd will thrash.
- */
- if (t <= now) {
- t = now + 6; /* XXX */
- plog(XLOG_ERROR, "Got a zero interval in timeout_mp()!");
- }
-
- /*
- * XXX - when shutting down, make things happen faster
- */
- if ((int) amd_state >= (int) Finishing)
- t = now + 1;
- dlog("Next mount timeout in %lds", (long) (t - now));
-
- timeout_mp_id = timeout(t - now, timeout_mp, NULL);
-}
-
-
-/*
- * Cause timeout_mp to be called soonest
- */
-void
-reschedule_timeout_mp(void)
-{
- if (timeout_mp_id)
- untimeout(timeout_mp_id);
- timeout_mp_id = timeout(0, timeout_mp, NULL);
-}
diff --git a/contrib/amd/amd/mapc.c b/contrib/amd/amd/mapc.c
deleted file mode 100644
index cd4b9b956a05..000000000000
--- a/contrib/amd/amd/mapc.c
+++ /dev/null
@@ -1,1258 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/mapc.c
- *
- */
-
-/*
- * Mount map cache
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/*
- * Make a duplicate reference to an existing map
- */
-#define mapc_dup(m) ((m)->refc++, (m))
-
-/*
- * Map cache types
- * default, none, incremental, all, regexp
- * MAPC_RE implies MAPC_ALL and must be numerically
- * greater.
- */
-#define MAPC_DFLT 0x000
-#define MAPC_NONE 0x001
-#define MAPC_INC 0x002
-#define MAPC_ROOT 0x004
-#define MAPC_ALL 0x010
-#define MAPC_CACHE_MASK 0x0ff
-#define MAPC_SYNC 0x100
-
-#ifdef HAVE_REGEXEC
-# define MAPC_RE 0x020
-# define MAPC_ISRE(m) ((m)->alloc == MAPC_RE)
-#else /* not HAVE_REGEXEC */
-# define MAPC_ISRE(m) FALSE
-#endif /* not HAVE_REGEXEC */
-
-/*
- * Lookup recursion
- */
-#define MREC_FULL 2
-#define MREC_PART 1
-#define MREC_NONE 0
-
-static struct opt_tab mapc_opt[] =
-{
- {"all", MAPC_ALL},
- {"default", MAPC_DFLT},
- {"inc", MAPC_INC},
- {"mapdefault", MAPC_DFLT},
- {"none", MAPC_NONE},
-#ifdef HAVE_REGEXEC
- {"re", MAPC_RE},
- {"regexp", MAPC_RE},
-#endif /* HAVE_REGEXEC */
- {"sync", MAPC_SYNC},
- {NULL, 0}
-};
-
-/*
- * Wildcard key
- */
-static char wildcard[] = "*";
-
-/*
- * Map type
- */
-typedef struct map_type map_type;
-struct map_type {
- char *name; /* Name of this map type */
- init_fn *init; /* Initialization */
- reload_fn *reload; /* Reload or fill */
- isup_fn *isup; /* Is service up or not? (1=up, 0=down) */
- search_fn *search; /* Search for new entry */
- mtime_fn *mtime; /* Find modify time */
- int def_alloc; /* Default allocation mode */
-};
-
-/*
- * Map for root node
- */
-static mnt_map *root_map;
-
-/*
- * List of known maps
- */
-qelem map_list_head = {&map_list_head, &map_list_head};
-
-/*
- * Configuration
- */
-
-/* forward definitions */
-static const char *get_full_path(const char *map, const char *path, const char *type);
-static int mapc_meta_search(mnt_map *, char *, char **, int);
-static void mapc_sync(mnt_map *);
-static void mapc_clear(mnt_map *);
-static void mapc_clear_kvhash(kv **);
-
-/* ROOT MAP */
-static int root_init(mnt_map *, char *, time_t *);
-
-/* ERROR MAP */
-static int error_init(mnt_map *, char *, time_t *);
-static int error_reload(mnt_map *, char *, add_fn *);
-static int error_search(mnt_map *, char *, char *, char **, time_t *);
-static int error_mtime(mnt_map *, char *, time_t *);
-
-/* PASSWD MAPS */
-#ifdef HAVE_MAP_PASSWD
-extern int passwd_init(mnt_map *, char *, time_t *);
-extern int passwd_search(mnt_map *, char *, char *, char **, time_t *);
-#endif /* HAVE_MAP_PASSWD */
-
-/* HESIOD MAPS */
-#ifdef HAVE_MAP_HESIOD
-extern int amu_hesiod_init(mnt_map *, char *map, time_t *tp);
-extern int hesiod_isup(mnt_map *, char *);
-extern int hesiod_search(mnt_map *, char *, char *, char **, time_t *);
-#endif /* HAVE_MAP_HESIOD */
-
-/* LDAP MAPS */
-#ifdef HAVE_MAP_LDAP
-extern int amu_ldap_init(mnt_map *, char *map, time_t *tp);
-extern int amu_ldap_search(mnt_map *, char *, char *, char **, time_t *);
-extern int amu_ldap_mtime(mnt_map *, char *, time_t *);
-#endif /* HAVE_MAP_LDAP */
-
-/* UNION MAPS */
-#ifdef HAVE_MAP_UNION
-extern int union_init(mnt_map *, char *, time_t *);
-extern int union_search(mnt_map *, char *, char *, char **, time_t *);
-extern int union_reload(mnt_map *, char *, add_fn *);
-#endif /* HAVE_MAP_UNION */
-
-/* Network Information Service PLUS (NIS+) */
-#ifdef HAVE_MAP_NISPLUS
-extern int nisplus_init(mnt_map *, char *, time_t *);
-extern int nisplus_reload(mnt_map *, char *, add_fn *);
-extern int nisplus_search(mnt_map *, char *, char *, char **, time_t *);
-extern int nisplus_mtime(mnt_map *, char *, time_t *);
-#endif /* HAVE_MAP_NISPLUS */
-
-/* Network Information Service (YP, Yellow Pages) */
-#ifdef HAVE_MAP_NIS
-extern int nis_init(mnt_map *, char *, time_t *);
-extern int nis_reload(mnt_map *, char *, add_fn *);
-extern int nis_isup(mnt_map *, char *);
-extern int nis_search(mnt_map *, char *, char *, char **, time_t *);
-extern int nis_mtime(mnt_map *, char *, time_t *);
-#endif /* HAVE_MAP_NIS */
-
-/* NDBM MAPS */
-#ifdef HAVE_MAP_NDBM
-extern int ndbm_init(mnt_map *, char *, time_t *);
-extern int ndbm_search(mnt_map *, char *, char *, char **, time_t *);
-extern int ndbm_mtime(mnt_map *, char *, time_t *);
-#endif /* HAVE_MAP_NDBM */
-
-/* FILE MAPS */
-#ifdef HAVE_MAP_FILE
-extern int file_init_or_mtime(mnt_map *, char *, time_t *);
-extern int file_reload(mnt_map *, char *, add_fn *);
-extern int file_search(mnt_map *, char *, char *, char **, time_t *);
-#endif /* HAVE_MAP_FILE */
-
-/* EXECUTABLE MAPS */
-#ifdef HAVE_MAP_EXEC
-extern int exec_init(mnt_map *, char *, time_t *);
-extern int exec_search(mnt_map *, char *, char *, char **, time_t *);
-#endif /* HAVE_MAP_EXEC */
-
-/* Sun-syntax MAPS */
-#ifdef HAVE_MAP_SUN
-/* XXX: fill in */
-#endif /* HAVE_MAP_SUN */
-
-/* note that the choice of MAPC_{INC,ALL} will affect browsable_dirs */
-static map_type maptypes[] =
-{
- {
- "root",
- root_init,
- error_reload,
- NULL, /* isup function */
- error_search,
- error_mtime,
- MAPC_ROOT
- },
-#ifdef HAVE_MAP_PASSWD
- {
- "passwd",
- passwd_init,
- error_reload,
- NULL, /* isup function */
- passwd_search,
- error_mtime,
- MAPC_INC
- },
-#endif /* HAVE_MAP_PASSWD */
-#ifdef HAVE_MAP_HESIOD
- {
- "hesiod",
- amu_hesiod_init,
- error_reload,
- hesiod_isup, /* is Hesiod up or not? */
- hesiod_search,
- error_mtime,
- MAPC_INC
- },
-#endif /* HAVE_MAP_HESIOD */
-#ifdef HAVE_MAP_LDAP
- {
- "ldap",
- amu_ldap_init,
- error_reload,
- NULL, /* isup function */
- amu_ldap_search,
- amu_ldap_mtime,
- MAPC_INC
- },
-#endif /* HAVE_MAP_LDAP */
-#ifdef HAVE_MAP_UNION
- {
- "union",
- union_init,
- union_reload,
- NULL, /* isup function */
- union_search,
- error_mtime,
- MAPC_ALL
- },
-#endif /* HAVE_MAP_UNION */
-#ifdef HAVE_MAP_NISPLUS
- {
- "nisplus",
- nisplus_init,
- nisplus_reload,
- NULL, /* isup function */
- nisplus_search,
- nisplus_mtime,
- MAPC_INC
- },
-#endif /* HAVE_MAP_NISPLUS */
-#ifdef HAVE_MAP_NIS
- {
- "nis",
- nis_init,
- nis_reload,
- nis_isup, /* is NIS up or not? */
- nis_search,
- nis_mtime,
- MAPC_ALL
- },
-#endif /* HAVE_MAP_NIS */
-#ifdef HAVE_MAP_NDBM
- {
- "ndbm",
- ndbm_init,
- error_reload,
- NULL, /* isup function */
- ndbm_search,
- ndbm_mtime,
- MAPC_INC
- },
-#endif /* HAVE_MAP_NDBM */
-#ifdef HAVE_MAP_FILE
- {
- "file",
- file_init_or_mtime,
- file_reload,
- NULL, /* isup function */
- file_search,
- file_init_or_mtime,
- MAPC_ALL
- },
-#endif /* HAVE_MAP_FILE */
-#ifdef HAVE_MAP_EXEC
- {
- "exec",
- exec_init,
- error_reload,
- NULL, /* isup function */
- exec_search,
- error_mtime,
- MAPC_INC
- },
-#endif /* HAVE_MAP_EXEC */
-#ifdef notyet /* probe function needs to be there or SEGV */
-#ifdef HAVE_MAP_SUN
- {
- /* XXX: fill in */
- "sun",
- NULL,
- NULL,
- NULL, /* isup function */
- NULL,
- NULL,
- 0
- },
-#endif /* HAVE_MAP_SUN */
-#endif
- {
- "error",
- error_init,
- error_reload,
- NULL, /* isup function */
- error_search,
- error_mtime,
- MAPC_NONE
- },
-};
-
-
-/*
- * Hash function
- */
-static u_int
-kvhash_of(char *key)
-{
- u_int i, j;
-
- for (i = 0; (j = *key++); i += j) ;
-
- return i % NKVHASH;
-}
-
-
-void
-mapc_showtypes(char *buf, size_t l)
-{
- map_type *mt=NULL, *lastmt;
- int linesize = 0, i;
-
- i = sizeof(maptypes) / sizeof(maptypes[0]);
- lastmt = maptypes + i;
- buf[0] = '\0';
- for (mt = maptypes; mt < lastmt; mt++) {
- xstrlcat(buf, mt->name, l);
- if (mt == (lastmt-1))
- break; /* if last one, don't do xstrlcat's that follows */
- linesize += strlen(mt->name);
- if (--i > 0) {
- xstrlcat(buf, ", ", l);
- linesize += 2;
- }
- if (linesize > 54) {
- linesize = 0;
- xstrlcat(buf, "\n\t\t ", l);
- }
- }
-}
-
-
-/*
- * Check if a map of a certain type exists.
- * Return 1 (true) if exists, 0 (false) if not.
- */
-int
-mapc_type_exists(const char *type)
-{
- map_type *mt;
-
- if (!type)
- return 0;
- for (mt = maptypes;
- mt < maptypes + sizeof(maptypes) / sizeof(maptypes[0]);
- mt++) {
- if (STREQ(type, mt->name))
- return 1;
- }
- return 0; /* not found anywhere */
-}
-
-
-/*
- * Add key and val to the map m.
- * key and val are assumed to be safe copies
- */
-void
-mapc_add_kv(mnt_map *m, char *key, char *val)
-{
- kv **h;
- kv *n;
- int hash = kvhash_of(key);
-#ifdef HAVE_REGEXEC
- regex_t re;
-#endif /* HAVE_REGEXEC */
-
- dlog("add_kv: %s -> %s", key, val);
-
- if (val != NULL && strchr(val, '\n') != NULL) {
- /*
- * If the entry value contains multiple lines we need to break
- * them up and add them recursively. This is a workaround to
- * support Sun style multi-mounts. Amd converts Sun style
- * mulit-mounts to type:=auto. The problem is that Sun packs all
- * the entries on one line. When Amd does the conversion it puts
- * each type:=auto entry on the same line separated by '\n'.
- */
- char *entry, *tok;
-
- /*
- * The first line should contain the first entry. The key for
- * this entry is the key passed into this function.
- */
- if ((tok = strtok(val, "\n")) != NULL) {
- mapc_add_kv(m, key, xstrdup(tok));
- }
-
- /*
- * For the rest of the entries we need to tokenize them by '\n'
- * and separate the keys from there entries.
- */
- while ((tok = strtok(NULL, "\n")) != NULL) {
- key = tok;
- /* find the entry */
- for (entry = key; *entry && !isspace((unsigned char)*entry); entry++);
- if (*entry) {
- *entry++ = '\0';
- }
-
- mapc_add_kv(m, xstrdup(key), xstrdup(entry));
- }
-
- XFREE(val);
- return;
- }
-
-#ifdef HAVE_REGEXEC
- if (MAPC_ISRE(m)) {
- char pattern[MAXPATHLEN];
- int retval;
-
- /*
- * Make sure the string is bound to the start and end
- */
- xsnprintf(pattern, sizeof(pattern), "^%s$", key);
- retval = regcomp(&re, pattern, REG_ICASE);
- if (retval != 0) {
- char errstr[256];
-
- /* XXX: this code was recently ported, and must be tested -Erez */
- errstr[0] = '\0';
- regerror(retval, &re, errstr, 256);
- plog(XLOG_USER, "error compiling RE \"%s\": %s", pattern, errstr);
- return;
- }
- } else
- memset(&re, 0, sizeof(re));
-#endif /* HAVE_REGEXEC */
-
- h = &m->kvhash[hash];
- n = ALLOC(struct kv);
- n->key = key;
-#ifdef HAVE_REGEXEC
- memcpy(&n->re, &re, sizeof(regex_t));
-#endif /* HAVE_REGEXEC */
- n->val = val;
- n->next = *h;
- *h = n;
- m->nentries++;
-}
-
-
-static void
-mapc_repl_kv(mnt_map *m, char *key, char *val)
-{
- kv *k;
-
- /*
- * Compute the hash table offset
- */
- k = m->kvhash[kvhash_of(key)];
-
- /*
- * Scan the linked list for the key
- */
- while (k && !FSTREQ(k->key, key))
- k = k->next;
-
- if (k) {
- XFREE(k->val);
- k->val = val;
- } else {
- mapc_add_kv(m, key, val);
- }
-}
-
-
-/*
- * Search a map for a key.
- * Calls map specific search routine.
- * While map is out of date, keep re-syncing.
- */
-static int
-search_map(mnt_map *m, char *key, char **valp)
-{
- int rc;
-
- do {
- rc = (*m->search) (m, m->map_name, key, valp, &m->modify);
- if (rc < 0) {
- plog(XLOG_MAP, "Re-synchronizing cache for map %s", m->map_name);
- mapc_sync(m);
- }
- } while (rc < 0);
-
- return rc;
-}
-
-
-/*
- * Do a wildcard lookup in the map and
- * save the result.
- */
-static void
-mapc_find_wildcard(mnt_map *m)
-{
- /*
- * Attempt to find the wildcard entry
- */
- int rc = search_map(m, wildcard, &m->wildcard);
-
- if (rc != 0)
- m->wildcard = NULL;
-}
-
-
-/*
- * Do a map reload.
- * Attempt to reload without losing current data by switching the hashes
- * round.
- * If reloading was needed and succeeded, return 1; else return 0.
- */
-static int
-mapc_reload_map(mnt_map *m)
-{
- int error, ret = 0;
- kv *maphash[NKVHASH];
- time_t t;
-
- error = (*m->mtime) (m, m->map_name, &t);
- if (error) {
- t = m->modify;
- }
-
- /*
- * skip reloading maps that have not been modified, unless
- * amq -f was used (do_mapc_reload is 0)
- */
- if (m->reloads != 0 && do_mapc_reload != 0) {
- if (t <= m->modify) {
- plog(XLOG_INFO, "reload of map %s is not needed (in sync)", m->map_name);
- dlog("map %s last load time is %d, last modify time is %d",
- m->map_name, (int) m->modify, (int) t);
- return ret;
- }
- }
-
- /* copy the old hash and zero the map */
- memcpy((voidp) maphash, (voidp) m->kvhash, sizeof(m->kvhash));
- memset((voidp) m->kvhash, 0, sizeof(m->kvhash));
-
- dlog("calling map reload on %s", m->map_name);
- m->nentries = 0;
- error = (*m->reload) (m, m->map_name, mapc_add_kv);
- if (error) {
- if (m->reloads == 0)
- plog(XLOG_FATAL, "first time load of map %s failed!", m->map_name);
- else
- plog(XLOG_ERROR, "reload of map %s failed - using old values",
- m->map_name);
- mapc_clear(m);
- memcpy((voidp) m->kvhash, (voidp) maphash, sizeof(m->kvhash));
- } else {
- if (m->reloads++ == 0)
- plog(XLOG_INFO, "first time load of map %s succeeded", m->map_name);
- else
- plog(XLOG_INFO, "reload #%d of map %s succeeded",
- m->reloads, m->map_name);
- mapc_clear_kvhash(maphash);
- if (m->wildcard) {
- XFREE(m->wildcard);
- m->wildcard = NULL;
- }
- m->modify = t;
- ret = 1;
- }
-
- dlog("calling mapc_search for wildcard");
- error = mapc_search(m, wildcard, &m->wildcard);
- if (error)
- m->wildcard = NULL;
- return ret;
-}
-
-
-/*
- * Create a new map
- */
-static mnt_map *
-mapc_create(char *map, char *opt, const char *type, const char *mntpt)
-{
- mnt_map *m = ALLOC(struct mnt_map);
- map_type *mt;
- time_t modify = 0;
- u_int alloc = 0;
-
- cmdoption(opt, mapc_opt, &alloc);
-
- /*
- * If using a configuration file, and the map_type is defined, then look
- * for it, in the maptypes array. If found, initialize the map using that
- * map_type. If not found, return error. If no map_type was defined,
- * default to cycling through all maptypes.
- */
- if (use_conf_file && type) {
- /* find what type of map this one is */
- for (mt = maptypes;
- mt < maptypes + sizeof(maptypes) / sizeof(maptypes[0]);
- mt++) {
- if (STREQ(type, mt->name)) {
- plog(XLOG_INFO, "initializing amd.conf map %s of type %s", map, type);
- if ((*mt->init) (m, map, &modify) == 0) {
- break;
- } else {
- plog(XLOG_ERROR, "failed to initialize map %s", map);
- error_init(m, map, &modify);
- break;
- }
- }
- } /* end of "for (mt =" loop */
-
- } else { /* cycle through all known maptypes */
-
- /*
- * not using amd conf file or using it by w/o specifying map type
- */
- for (mt = maptypes;
- mt < maptypes + sizeof(maptypes) / sizeof(maptypes[0]);
- mt++) {
- dlog("trying to initialize map %s of type %s ...", map, mt->name);
- if ((*mt->init) (m, map, &modify) == 0) {
- break;
- }
- }
- } /* end of "if (use_conf_file && (colpos = strchr ..." statement */
-
- /* assert: mt in maptypes */
-
- m->flags = alloc & ~MAPC_CACHE_MASK;
- m->nentries = 0;
- alloc &= MAPC_CACHE_MASK;
-
- if (alloc == MAPC_DFLT)
- alloc = mt->def_alloc;
-
- switch (alloc) {
- default:
- plog(XLOG_USER, "Ambiguous map cache type \"%s\"; using \"inc\"", opt);
- alloc = MAPC_INC;
- /* fall-through... */
- case MAPC_NONE:
- case MAPC_INC:
- case MAPC_ROOT:
- break;
-
- case MAPC_ALL:
- /*
- * If there is no support for reload and it was requested
- * then back off to incremental instead.
- */
- if (mt->reload == error_reload) {
- plog(XLOG_WARNING, "Map type \"%s\" does not support cache type \"all\"; using \"inc\"", mt->name);
- alloc = MAPC_INC;
- }
- break;
-
-#ifdef HAVE_REGEXEC
- case MAPC_RE:
- if (mt->reload == error_reload) {
- plog(XLOG_WARNING, "Map type \"%s\" does not support cache type \"re\"", mt->name);
- mt = &maptypes[sizeof(maptypes) / sizeof(maptypes[0]) - 1];
- /* assert: mt->name == "error" */
- }
- break;
-#endif /* HAVE_REGEXEC */
- }
-
- dlog("Map for %s coming from maptype %s", map, mt->name);
-
- m->alloc = alloc;
- m->reload = mt->reload;
- m->isup = mt->isup;
- m->modify = modify;
- m->search = alloc >= MAPC_ALL ? error_search : mt->search;
- m->mtime = mt->mtime;
- memset((voidp) m->kvhash, 0, sizeof(m->kvhash));
- m->map_name = xstrdup(map);
- m->refc = 1;
- m->wildcard = NULL;
- m->reloads = 0;
- /* initialize per-map information (flags, etc.) */
- m->cfm = find_cf_map(mntpt);
-
- /*
- * synchronize cache with reality
- */
- mapc_sync(m);
-
- return m;
-}
-
-
-/*
- * Free the cached data in a map hash
- */
-static void
-mapc_clear_kvhash(kv **kvhash)
-{
- int i;
-
- /*
- * For each of the hash slots, chain
- * along free'ing the data.
- */
- for (i = 0; i < NKVHASH; i++) {
- kv *k = kvhash[i];
- while (k) {
- kv *n = k->next;
- XFREE(k->key);
- XFREE(k->val);
- XFREE(k);
- k = n;
- }
- }
-}
-
-
-/*
- * Free the cached data in a map
- */
-static void
-mapc_clear(mnt_map *m)
-{
- mapc_clear_kvhash(m->kvhash);
-
- /*
- * Zero the hash slots
- */
- memset((voidp) m->kvhash, 0, sizeof(m->kvhash));
-
- /*
- * Free the wildcard if it exists
- */
- XFREE(m->wildcard);
- m->wildcard = NULL;
-
- m->nentries = 0;
-}
-
-
-/*
- * Find a map, or create one if it does not exist
- */
-mnt_map *
-mapc_find(char *map, char *opt, const char *maptype, const char *mntpt)
-{
- mnt_map *m;
-
- /*
- * Search the list of known maps to see if
- * it has already been loaded. If it is found
- * then return a duplicate reference to it.
- * Otherwise make a new map as required and
- * add it to the list of maps
- */
- ITER(m, mnt_map, &map_list_head)
- if (STREQ(m->map_name, map))
- return mapc_dup(m);
- m = mapc_create(map, opt, maptype, mntpt);
- ins_que(&m->hdr, &map_list_head);
-
- return m;
-}
-
-
-/*
- * Free a map.
- */
-void
-mapc_free(opaque_t arg)
-{
- mnt_map *m = (mnt_map *) arg;
-
- /*
- * Decrement the reference count.
- * If the reference count hits zero
- * then throw the map away.
- */
- if (m && --m->refc == 0) {
- mapc_clear(m);
- XFREE(m->map_name);
- rem_que(&m->hdr);
- XFREE(m);
- }
-}
-
-
-/*
- * Search the map for the key. Put a safe (malloc'ed) copy in *pval or
- * return an error code
- */
-static int
-mapc_meta_search(mnt_map *m, char *key, char **pval, int recurse)
-{
- int error = 0;
- kv *k = NULL;
-
- /*
- * Firewall
- */
- if (!m) {
- plog(XLOG_ERROR, "Null map request for %s", key);
- return ENOENT;
- }
-
- if (m->flags & MAPC_SYNC) {
- /*
- * Get modify time...
- */
- time_t t;
- error = (*m->mtime) (m, m->map_name, &t);
- if (error || t > m->modify) {
- plog(XLOG_INFO, "Map %s is out of date", m->map_name);
- mapc_sync(m);
- }
- }
-
- if (!MAPC_ISRE(m)) {
- /*
- * Compute the hash table offset
- */
- k = m->kvhash[kvhash_of(key)];
-
- /*
- * Scan the linked list for the key
- */
- while (k && !FSTREQ(k->key, key))
- k = k->next;
-
- }
-
-#ifdef HAVE_REGEXEC
- else if (recurse == MREC_FULL) {
- /*
- * Try for an RE match against the entire map.
- * Note that this will be done in a "random"
- * order.
- */
- int i;
-
- for (i = 0; i < NKVHASH; i++) {
- k = m->kvhash[i];
- while (k) {
- int retval;
-
- /* XXX: this code was recently ported, and must be tested -Erez */
- retval = regexec(&k->re, key, 0, NULL, 0);
- if (retval == 0) { /* succeeded */
- break;
- } else { /* failed to match, log error */
- char errstr[256];
-
- errstr[0] = '\0';
- regerror(retval, &k->re, errstr, 256);
- plog(XLOG_USER, "error matching RE \"%s\" against \"%s\": %s",
- key, k->key, errstr);
- }
- k = k->next;
- }
- if (k)
- break;
- }
- }
-#endif /* HAVE_REGEXEC */
-
- /*
- * If found then take a copy
- */
- if (k) {
- if (k->val)
- *pval = xstrdup(k->val);
- else
- error = ENOENT;
- } else if (m->alloc >= MAPC_ALL) {
- /*
- * If the entire map is cached then this
- * key does not exist.
- */
- error = ENOENT;
- } else {
- /*
- * Otherwise search the map. If we are
- * in incremental mode then add the key
- * to the cache.
- */
- error = search_map(m, key, pval);
- if (!error && m->alloc == MAPC_INC)
- mapc_add_kv(m, xstrdup(key), xstrdup(*pval));
- }
-
- /*
- * If an error, and a wildcard exists,
- * and the key is not internal then
- * return a copy of the wildcard.
- */
- if (error > 0) {
- if (recurse == MREC_FULL && !MAPC_ISRE(m)) {
- char wildname[MAXPATHLEN];
- char *subp;
- if (*key == '/')
- return error;
- /*
- * Keep chopping sub-directories from the RHS
- * and replacing with "/ *" and repeat the lookup.
- * For example:
- * "src/gnu/gcc" -> "src / gnu / *" -> "src / *"
- */
- xstrlcpy(wildname, key, sizeof(wildname));
- while (error && (subp = strrchr(wildname, '/'))) {
- /*
- * sizeof space left in subp is sizeof wildname minus what's left
- * after the strchr above returned a pointer inside wildname into
- * subp.
- */
- xstrlcpy(subp, "/*", sizeof(wildname) - (subp - wildname));
- dlog("mapc recurses on %s", wildname);
- error = mapc_meta_search(m, wildname, pval, MREC_PART);
- if (error)
- *subp = '\0';
- }
-
- if (error > 0 && m->wildcard) {
- *pval = xstrdup(m->wildcard);
- error = 0;
- }
- }
- }
- return error;
-}
-
-
-int
-mapc_search(mnt_map *m, char *key, char **pval)
-{
- return mapc_meta_search(m, key, pval, MREC_FULL);
-}
-
-
-/*
- * Get map cache in sync with physical representation
- */
-static void
-mapc_sync(mnt_map *m)
-{
- int need_mtime_update = 0;
-
- if (m->alloc == MAPC_ROOT)
- return; /* nothing to do */
-
- /* do not clear map if map service is down */
- if (m->isup) {
- if (!((*m->isup)(m, m->map_name))) {
- plog(XLOG_ERROR, "mapc_sync: map %s is down: not clearing map", m->map_name);
- return;
- }
- }
-
- if (m->alloc >= MAPC_ALL) {
- /* mapc_reload_map() always works */
- need_mtime_update = mapc_reload_map(m);
- } else {
- mapc_clear(m);
- /*
- * Attempt to find the wildcard entry
- */
- mapc_find_wildcard(m);
- need_mtime_update = 1; /* because mapc_clear always works */
- }
-
- /*
- * To be safe, update the mtime of the mnt_map's own node, so that the
- * kernel will flush all of its cached entries.
- */
- if (need_mtime_update && m->cfm) {
- am_node *mp = find_ap(m->cfm->cfm_dir);
- if (mp) {
- clocktime(&mp->am_fattr.na_mtime);
- } else {
- plog(XLOG_ERROR, "cannot find map %s to update its mtime",
- m->cfm->cfm_dir);
- }
- }
-}
-
-
-/*
- * Reload all the maps
- * Called when Amd gets hit by a SIGHUP.
- */
-void
-mapc_reload(void)
-{
- mnt_map *m;
-
- /*
- * For all the maps,
- * Throw away the existing information.
- * Do a reload
- * Find the wildcard
- */
- ITER(m, mnt_map, &map_list_head)
- mapc_sync(m);
-}
-
-
-/*
- * Root map.
- * The root map is used to bootstrap amd.
- * All the require top-level mounts are added
- * into the root map and then the map is iterated
- * and a lookup is done on all the mount points.
- * This causes the top level mounts to be automounted.
- */
-static int
-root_init(mnt_map *m, char *map, time_t *tp)
-{
- *tp = clocktime(NULL);
- return STREQ(map, ROOT_MAP) ? 0 : ENOENT;
-}
-
-
-/*
- * Add a new entry to the root map
- *
- * dir - directory (key)
- * opts - mount options
- * map - map name
- * cfm - optional amd configuration file map section structure
- */
-void
-root_newmap(const char *dir, const char *opts, const char *map, const cf_map_t *cfm)
-{
- char str[MAXPATHLEN];
-
- /*
- * First make sure we have a root map to talk about...
- */
- if (!root_map)
- root_map = mapc_find(ROOT_MAP, "mapdefault", NULL, NULL);
-
- /*
- * Then add the entry...
- */
-
- /*
- * Here I plug in the code to process other amd.conf options like
- * map_type, search_path, and flags (browsable_dirs, mount_type).
- */
-
- if (cfm) {
- if (map) {
- xsnprintf(str, sizeof(str),
- "cache:=mapdefault;type:=toplvl;mount_type:=%s;fs:=\"%s\"",
- cfm->cfm_flags & CFM_MOUNT_TYPE_AUTOFS ? "autofs" : "nfs",
- get_full_path(map, cfm->cfm_search_path, cfm->cfm_type));
- if (opts && opts[0] != '\0') {
- xstrlcat(str, ";", sizeof(str));
- xstrlcat(str, opts, sizeof(str));
- }
- if (cfm->cfm_flags & CFM_BROWSABLE_DIRS_FULL)
- xstrlcat(str, ";opts:=rw,fullybrowsable", sizeof(str));
- if (cfm->cfm_flags & CFM_BROWSABLE_DIRS)
- xstrlcat(str, ";opts:=rw,browsable", sizeof(str));
- if (cfm->cfm_type) {
- xstrlcat(str, ";maptype:=", sizeof(str));
- xstrlcat(str, cfm->cfm_type, sizeof(str));
- }
- } else {
- xstrlcpy(str, opts, sizeof(str));
- }
- } else {
- if (map)
- xsnprintf(str, sizeof(str),
- "cache:=mapdefault;type:=toplvl;fs:=\"%s\";%s",
- map, opts ? opts : "");
- else
- xstrlcpy(str, opts, sizeof(str));
- }
- mapc_repl_kv(root_map, xstrdup(dir), xstrdup(str));
-}
-
-
-int
-mapc_keyiter(mnt_map *m, key_fun *fn, opaque_t arg)
-{
- int i;
- int c = 0;
-
- for (i = 0; i < NKVHASH; i++) {
- kv *k = m->kvhash[i];
- while (k) {
- (*fn) (k->key, arg);
- k = k->next;
- c++;
- }
- }
-
- return c;
-}
-
-
-/*
- * Iterate on the root map and call (*fn)() on the key of all the nodes.
- * Returns the number of entries in the root map.
- */
-int
-root_keyiter(key_fun *fn, opaque_t arg)
-{
- if (root_map) {
- int c = mapc_keyiter(root_map, fn, arg);
- return c;
- }
-
- return 0;
-}
-
-
-/*
- * Error map
- */
-static int
-error_init(mnt_map *m, char *map, time_t *tp)
-{
- plog(XLOG_USER, "No source data for map %s", map);
- *tp = 0;
-
- return 0;
-}
-
-
-static int
-error_search(mnt_map *m, char *map, char *key, char **pval, time_t *tp)
-{
- return ENOENT;
-}
-
-
-static int
-error_reload(mnt_map *m, char *map, add_fn *fn)
-{
- return ENOENT;
-}
-
-
-static int
-error_mtime(mnt_map *m, char *map, time_t *tp)
-{
- *tp = 0;
-
- return 0;
-}
-
-
-/*
- * Return absolute path of map, searched in a type-specific path.
- * Note: uses a static buffer for returned data.
- */
-static const char *
-get_full_path(const char *map, const char *path, const char *type)
-{
- char component[MAXPATHLEN], *str;
- static char full_path[MAXPATHLEN];
- int len;
-
- /* for now, only file-type search paths are implemented */
- if (type && !STREQ(type, "file"))
- return map;
-
- /* if null map, return it */
- if (!map)
- return map;
-
- /* if map includes a '/', return it (absolute or relative path) */
- if (strchr(map, '/'))
- return map;
-
- /* if path is empty, return map */
- if (!path)
- return map;
-
- /* now break path into components, and search in each */
- xstrlcpy(component, path, sizeof(component));
-
- str = strtok(component, ":");
- do {
- xstrlcpy(full_path, str, sizeof(full_path));
- len = strlen(full_path);
- if (full_path[len - 1] != '/') /* add trailing "/" if needed */
- xstrlcat(full_path, "/", sizeof(full_path));
- xstrlcat(full_path, map, sizeof(full_path));
- if (access(full_path, R_OK) == 0)
- return full_path;
- str = strtok(NULL, ":");
- } while (str);
-
- return map; /* if found nothing, return map */
-}
diff --git a/contrib/amd/amd/mntfs.c b/contrib/amd/amd/mntfs.c
deleted file mode 100644
index a26ff8f553f6..000000000000
--- a/contrib/amd/amd/mntfs.c
+++ /dev/null
@@ -1,410 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/mntfs.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-qelem mfhead = {&mfhead, &mfhead};
-
-int mntfs_allocated;
-
-
-am_loc *
-dup_loc(am_loc *loc)
-{
- loc->al_refc++;
- if (loc->al_mnt) {
- dup_mntfs(loc->al_mnt);
- }
- return loc;
-}
-
-mntfs *
-dup_mntfs(mntfs *mf)
-{
- if (mf->mf_refc == 0) {
- if (mf->mf_cid)
- untimeout(mf->mf_cid);
- mf->mf_cid = 0;
- }
- mf->mf_refc++;
-
- return mf;
-}
-
-
-static void
-init_mntfs(mntfs *mf, am_ops *ops, am_opts *mo, char *mp, char *info, char *auto_opts, char *mopts, char *remopts)
-{
- mf->mf_ops = ops;
- mf->mf_fsflags = ops->nfs_fs_flags;
- mf->mf_fo = 0;
- if (mo)
- mf->mf_fo = copy_opts(mo);
-
- mf->mf_mount = xstrdup(mp);
- mf->mf_info = xstrdup(info);
- mf->mf_auto = xstrdup(auto_opts);
- mf->mf_mopts = xstrdup(mopts);
- mf->mf_remopts = xstrdup(remopts);
- mf->mf_loopdev = NULL;
- mf->mf_refc = 1;
- mf->mf_flags = 0;
- mf->mf_error = -1;
- mf->mf_cid = 0;
- mf->mf_private = NULL;
- mf->mf_prfree = NULL;
-
- if (ops->ffserver)
- mf->mf_server = (*ops->ffserver) (mf);
- else
- mf->mf_server = NULL;
-}
-
-
-static mntfs *
-alloc_mntfs(am_ops *ops, am_opts *mo, char *mp, char *info, char *auto_opts, char *mopts, char *remopts)
-{
- mntfs *mf = ALLOC(struct mntfs);
-
- init_mntfs(mf, ops, mo, mp, info, auto_opts, mopts, remopts);
- ins_que(&mf->mf_q, &mfhead);
- mntfs_allocated++;
-
- return mf;
-}
-
-
-/* find a matching mntfs in our list */
-mntfs *
-locate_mntfs(am_ops *ops, am_opts *mo, char *mp, char *info, char *auto_opts, char *mopts, char *remopts)
-{
- mntfs *mf;
-
- dlog("Locating mntfs reference to (%s,%s)", mp, info);
-
- ITER(mf, mntfs, &mfhead) {
- /*
- * For backwards compatibility purposes, we treat already-mounted
- * filesystems differently and only require a match of their mount point,
- * not of their server info. After all, there is little we can do if
- * the user asks us to mount two different things onto the same mount: one
- * will always cover the other one.
- */
- if (STREQ(mf->mf_mount, mp) &&
- ((mf->mf_flags & MFF_MOUNTED && !(mf->mf_fsflags & FS_DIRECT))
- || (STREQ(mf->mf_info, info) && mf->mf_ops == ops))) {
- /*
- * Handle cases where error ops are involved
- */
- if (ops == &amfs_error_ops) {
- /*
- * If the existing ops are not amfs_error_ops
- * then continue...
- */
- if (mf->mf_ops != &amfs_error_ops)
- continue;
- return dup_mntfs(mf);
- }
-
- dlog("mf->mf_flags = %#x", mf->mf_flags);
-
- if ((mf->mf_flags & MFF_RESTART) && amd_state < Finishing) {
- /*
- * Restart a previously mounted filesystem.
- */
- dlog("Restarting filesystem %s", mf->mf_mount);
-
- /*
- * If we are restarting an amd internal filesystem,
- * we need to initialize it a bit.
- *
- * We know it's internal because it is marked as toplvl.
- */
- if (mf->mf_ops == &amfs_toplvl_ops) {
- mf->mf_ops = ops;
- mf->mf_info = strealloc(mf->mf_info, info);
- ops->mounted(mf); /* XXX: not right, but will do for now */
- }
-
- return mf;
- }
-
- if (!(mf->mf_flags & (MFF_MOUNTED | MFF_MOUNTING | MFF_UNMOUNTING))) {
- fserver *fs;
- mf->mf_flags &= ~MFF_ERROR;
- mf->mf_error = -1;
- mf->mf_auto = strealloc(mf->mf_auto, auto_opts);
- mf->mf_mopts = strealloc(mf->mf_mopts, mopts);
- mf->mf_remopts = strealloc(mf->mf_remopts, remopts);
- mf->mf_info = strealloc(mf->mf_info, info);
-
- if (mf->mf_private && mf->mf_prfree) {
- mf->mf_prfree(mf->mf_private);
- mf->mf_private = NULL;
- }
-
- fs = ops->ffserver ? (*ops->ffserver) (mf) : (fserver *) NULL;
- if (mf->mf_server)
- free_srvr(mf->mf_server);
- mf->mf_server = fs;
- }
- return dup_mntfs(mf);
- } /* end of "if (STREQ(mf-> ..." */
- } /* end of ITER */
-
- return 0;
-}
-
-
-/* find a matching mntfs in our list, create a new one if none is found */
-mntfs *
-find_mntfs(am_ops *ops, am_opts *mo, char *mp, char *info, char *auto_opts, char *mopts, char *remopts)
-{
- mntfs *mf = locate_mntfs(ops, mo, mp, info, auto_opts, mopts, remopts);
- if (mf)
- return mf;
-
- return alloc_mntfs(ops, mo, mp, info, auto_opts, mopts, remopts);
-}
-
-
-mntfs *
-new_mntfs(void)
-{
- return alloc_mntfs(&amfs_error_ops, (am_opts *) NULL, "//nil//", ".", "", "", "");
-}
-
-am_loc *
-new_loc(void)
-{
- am_loc *loc = CALLOC(struct am_loc);
- loc->al_fo = 0;
- loc->al_mnt = new_mntfs();
- loc->al_refc = 1;
- return loc;
-}
-
-
-static void
-uninit_mntfs(mntfs *mf)
-{
- if (mf->mf_fo) {
- free_opts(mf->mf_fo);
- XFREE(mf->mf_fo);
- }
- XFREE(mf->mf_auto);
- XFREE(mf->mf_mopts);
- XFREE(mf->mf_remopts);
- XFREE(mf->mf_info);
- if (mf->mf_private && mf->mf_prfree)
- (*mf->mf_prfree) (mf->mf_private);
-
- XFREE(mf->mf_mount);
-
- /*
- * Clean up the file server
- */
- if (mf->mf_server)
- free_srvr(mf->mf_server);
-
- /*
- * Don't do a callback on this mount
- */
- if (mf->mf_cid) {
- untimeout(mf->mf_cid);
- mf->mf_cid = 0;
- }
-}
-
-
-static void
-discard_mntfs(voidp v)
-{
- mntfs *mf = v;
-
- rem_que(&mf->mf_q);
-
- /*
- * Free memory
- */
- uninit_mntfs(mf);
- XFREE(mf);
-
- --mntfs_allocated;
-}
-
-static void
-discard_loc(voidp v)
-{
- am_loc *loc = v;
- if (loc->al_fo) {
- free_opts(loc->al_fo);
- XFREE(loc->al_fo);
- }
- XFREE(loc);
-}
-
-void
-flush_mntfs(void)
-{
- mntfs *mf;
-
- mf = AM_FIRST(mntfs, &mfhead);
- while (mf != HEAD(mntfs, &mfhead)) {
- mntfs *mf2 = mf;
- mf = NEXT(mntfs, mf);
- if (mf2->mf_refc == 0 && mf2->mf_cid)
- discard_mntfs(mf2);
- }
-}
-
-void
-free_loc(opaque_t arg)
-{
- am_loc *loc = (am_loc *) arg;
- dlog("free_loc %p", loc);
-
- if (loc->al_refc <= 0) {
- plog(XLOG_ERROR, "IGNORING free_loc for 0x%p", loc);
- return;
- }
-
- if (loc->al_mnt)
- free_mntfs(loc->al_mnt);
- if (--loc->al_refc == 0) {
- discard_loc(loc);
- }
-}
-
-void
-free_mntfs(opaque_t arg)
-{
- mntfs *mf = (mntfs *) arg;
-
- dlog("free_mntfs <%s> type %s mf_refc %d flags %x",
- mf->mf_mount, mf->mf_ops->fs_type, mf->mf_refc, mf->mf_flags);
-
- /*
- * We shouldn't ever be called to free something that has
- * a non-positive refcount. Something is badly wrong if
- * we have been! Ignore the request for now...
- */
- if (mf->mf_refc <= 0) {
- plog(XLOG_ERROR, "IGNORING free_mntfs for <%s>: refc %d, flags %x (bug?)",
- mf->mf_mount, mf->mf_refc, mf->mf_flags);
- return;
- }
-
- /* don't discard last reference of a restarted/kept mntfs */
- if (mf->mf_refc == 1 && mf->mf_flags & MFF_RSTKEEP) {
- plog(XLOG_ERROR, "IGNORING free_mntfs for <%s>: refc %d, flags %x (restarted)",
- mf->mf_mount, mf->mf_refc, mf->mf_flags);
- return;
- }
-
- if (--mf->mf_refc == 0) {
- if (mf->mf_flags & MFF_MOUNTED) {
- int quoted;
- mf->mf_flags &= ~MFF_MOUNTED;
-
- /*
- * Record for posterity
- */
- quoted = strchr(mf->mf_info, ' ') != 0; /* cheap */
- plog(XLOG_INFO, "%s%s%s %sed fstype %s from %s",
- quoted ? "\"" : "",
- mf->mf_info,
- quoted ? "\"" : "",
- mf->mf_error ? "discard" : "unmount",
- mf->mf_ops->fs_type, mf->mf_mount);
- }
-
- if (mf->mf_fsflags & FS_DISCARD) {
- dlog("Immediately discarding mntfs for %s", mf->mf_mount);
- discard_mntfs(mf);
-
- } else {
-
- if (mf->mf_flags & MFF_RESTART) {
- dlog("Discarding remount hook for %s", mf->mf_mount);
- } else {
- dlog("Discarding last mntfs reference to %s fstype %s",
- mf->mf_mount, mf->mf_ops->fs_type);
- }
- if (mf->mf_flags & (MFF_MOUNTED | MFF_MOUNTING | MFF_UNMOUNTING))
- dlog("mntfs reference for %s still active", mf->mf_mount);
- mf->mf_cid = timeout(ALLOWED_MOUNT_TIME, discard_mntfs, (voidp) mf);
- }
- }
-}
-
-
-mntfs *
-realloc_mntfs(mntfs *mf, am_ops *ops, am_opts *mo, char *mp, char *info, char *auto_opts, char *mopts, char *remopts)
-{
- mntfs *mf2;
-
- if (mf->mf_refc == 1 &&
- mf->mf_flags & MFF_RESTART &&
- STREQ(mf->mf_mount, mp)) {
- /*
- * If we are inheriting then just return
- * the same node...
- */
- return mf;
- }
-
- /*
- * Re-use the existing mntfs if it is mounted.
- * This traps a race in nfsx.
- */
- if (mf->mf_ops != &amfs_error_ops &&
- (mf->mf_flags & MFF_MOUNTED) &&
- !FSRV_ISDOWN(mf->mf_server)) {
- return mf;
- }
-
- mf2 = find_mntfs(ops, mo, mp, info, auto_opts, mopts, remopts);
- free_mntfs(mf);
- return mf2;
-}
diff --git a/contrib/amd/amd/nfs_prot_svc.c b/contrib/amd/amd/nfs_prot_svc.c
deleted file mode 100644
index cbde17274aea..000000000000
--- a/contrib/amd/amd/nfs_prot_svc.c
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/nfs_prot_svc.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* external definitions */
-extern voidp nfsproc_null_2_svc(voidp, struct svc_req *);
-extern nfsattrstat *nfsproc_getattr_2_svc(am_nfs_fh *, struct svc_req *);
-extern nfsattrstat *nfsproc_setattr_2_svc(nfssattrargs *, struct svc_req *);
-extern voidp nfsproc_root_2_svc(voidp, struct svc_req *);
-extern nfsdiropres *nfsproc_lookup_2_svc(nfsdiropargs *, struct svc_req *);
-extern nfsreadlinkres *nfsproc_readlink_2_svc(am_nfs_fh *, struct svc_req *);
-extern nfsreadres *nfsproc_read_2_svc(nfsreadargs *, struct svc_req *);
-extern voidp nfsproc_writecache_2_svc(voidp, struct svc_req *);
-extern nfsattrstat *nfsproc_write_2_svc(nfswriteargs *, struct svc_req *);
-extern nfsdiropres *nfsproc_create_2_svc(nfscreateargs *, struct svc_req *);
-extern nfsstat *nfsproc_remove_2_svc(nfsdiropargs *, struct svc_req *);
-extern nfsstat *nfsproc_rename_2_svc(nfsrenameargs *, struct svc_req *);
-extern nfsstat *nfsproc_link_2_svc(nfslinkargs *, struct svc_req *);
-extern nfsstat *nfsproc_symlink_2_svc(nfssymlinkargs *, struct svc_req *);
-extern nfsdiropres *nfsproc_mkdir_2_svc(nfscreateargs *, struct svc_req *);
-extern nfsstat *nfsproc_rmdir_2_svc(nfsdiropargs *, struct svc_req *);
-extern nfsreaddirres *nfsproc_readdir_2_svc(nfsreaddirargs *, struct svc_req *);
-extern nfsstatfsres *nfsproc_statfs_2_svc(am_nfs_fh *, struct svc_req *);
-
-/* global variables */
-SVCXPRT *current_transp;
-dispatcher_t nfs_dispatcher = nfs_program_2;
-
-/* typedefs */
-typedef char *(*nfssvcproc_t)(voidp, struct svc_req *);
-
-
-void
-nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp)
-{
- union {
- am_nfs_fh nfsproc_getattr_2_arg;
- nfssattrargs nfsproc_setattr_2_arg;
- nfsdiropargs nfsproc_lookup_2_arg;
- am_nfs_fh nfsproc_readlink_2_arg;
- nfsreadargs nfsproc_read_2_arg;
- nfswriteargs nfsproc_write_2_arg;
- nfscreateargs nfsproc_create_2_arg;
- nfsdiropargs nfsproc_remove_2_arg;
- nfsrenameargs nfsproc_rename_2_arg;
- nfslinkargs nfsproc_link_2_arg;
- nfssymlinkargs nfsproc_symlink_2_arg;
- nfscreateargs nfsproc_mkdir_2_arg;
- nfsdiropargs fsproc_rmdir_2_arg;
- nfsreaddirargs nfsproc_readdir_2_arg;
- am_nfs_fh nfsproc_statfs_2_arg;
- } argument;
- char *result;
- xdrproc_t xdr_argument, xdr_result;
- nfssvcproc_t local;
-
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- /*
- * On TLI systems we don't use an INET network type, but a "ticlts" (see
- * /etc/netconfig and conf/transp_tli.c:create_nfs_service). This means
- * that packets could only come from the loopback interface, and we don't
- * need to check them and filter possibly spoofed packets. Therefore we
- * only need to check if the UID caller is correct.
- */
-# ifdef HAVE___RPC_GET_LOCAL_UID
- uid_t u;
- /* extern definition for an internal libnsl function */
- extern int __rpc_get_local_uid(SVCXPRT *transp, uid_t *uid);
- if (__rpc_get_local_uid(transp, &u) >= 0 && u != 0) {
- plog(XLOG_WARNING, "ignoring request from UID %ld, must be 0", (long) u);
- return;
- }
-# else /* not HAVE___RPC_GET_LOCAL_UID */
- dlog("cannot verify local uid for rpc request");
-# endif /* HAVE___RPC_GET_LOCAL_UID */
-#else /* not HAVE_TRANPORT_TYPE_TLI */
- struct sockaddr_in *sinp;
- char dq[20], dq2[28];
- sinp = amu_svc_getcaller(rqstp->rq_xprt);
-# ifdef MNT2_NFS_OPT_RESVPORT
- /* Verify that the request comes from a reserved port */
- if (sinp &&
- ntohs(sinp->sin_port) >= IPPORT_RESERVED &&
- !(gopt.flags & CFM_NFS_INSECURE_PORT)) {
- plog(XLOG_WARNING, "ignoring request from %s:%u, port not reserved",
- inet_dquad(dq, sizeof(dq), sinp->sin_addr.s_addr),
- ntohs(sinp->sin_port));
- return;
- }
-# endif /* MNT2_NFS_OPT_RESVPORT */
- /* if the address does not match, ignore the request */
- if (sinp && (sinp->sin_addr.s_addr != myipaddr.s_addr)) {
- if (gopt.flags & CFM_NFS_ANY_INTERFACE) {
- if (!is_interface_local(sinp->sin_addr.s_addr)) {
- plog(XLOG_WARNING, "ignoring request from %s:%u, not a local interface",
- inet_dquad(dq, sizeof(dq), sinp->sin_addr.s_addr),
- ntohs(sinp->sin_port));
- }
- } else {
- plog(XLOG_WARNING, "ignoring request from %s:%u, expected %s",
- inet_dquad(dq, sizeof(dq), sinp->sin_addr.s_addr),
- ntohs(sinp->sin_port),
- inet_dquad(dq2, sizeof(dq2), myipaddr.s_addr));
- return;
- }
- }
-#endif /* not HAVE_TRANPORT_TYPE_TLI */
-
- current_transp = NULL;
-
- switch (rqstp->rq_proc) {
-
- case NFSPROC_NULL:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_void;
- local = (nfssvcproc_t) nfsproc_null_2_svc;
- break;
-
- case NFSPROC_GETATTR:
- xdr_argument = (xdrproc_t) xdr_nfs_fh;
- xdr_result = (xdrproc_t) xdr_attrstat;
- local = (nfssvcproc_t) nfsproc_getattr_2_svc;
- break;
-
- case NFSPROC_SETATTR:
- xdr_argument = (xdrproc_t) xdr_sattrargs;
- xdr_result = (xdrproc_t) xdr_attrstat;
- local = (nfssvcproc_t) nfsproc_setattr_2_svc;
- break;
-
- case NFSPROC_ROOT:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_void;
- local = (nfssvcproc_t) nfsproc_root_2_svc;
- break;
-
- case NFSPROC_LOOKUP:
- xdr_argument = (xdrproc_t) xdr_diropargs;
- xdr_result = (xdrproc_t) xdr_diropres;
- local = (nfssvcproc_t) nfsproc_lookup_2_svc;
- /*
- * Cheap way to pass transp down to amfs_auto_lookuppn so it can
- * be stored in the am_node structure and later used for
- * quick_reply().
- */
- current_transp = transp;
- break;
-
- case NFSPROC_READLINK:
- xdr_argument = (xdrproc_t) xdr_nfs_fh;
- xdr_result = (xdrproc_t) xdr_readlinkres;
- local = (nfssvcproc_t) nfsproc_readlink_2_svc;
- break;
-
- case NFSPROC_READ:
- xdr_argument = (xdrproc_t) xdr_readargs;
- xdr_result = (xdrproc_t) xdr_readres;
- local = (nfssvcproc_t) nfsproc_read_2_svc;
- break;
-
- case NFSPROC_WRITECACHE:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_void;
- local = (nfssvcproc_t) nfsproc_writecache_2_svc;
- break;
-
- case NFSPROC_WRITE:
- xdr_argument = (xdrproc_t) xdr_writeargs;
- xdr_result = (xdrproc_t) xdr_attrstat;
- local = (nfssvcproc_t) nfsproc_write_2_svc;
- break;
-
- case NFSPROC_CREATE:
- xdr_argument = (xdrproc_t) xdr_createargs;
- xdr_result = (xdrproc_t) xdr_diropres;
- local = (nfssvcproc_t) nfsproc_create_2_svc;
- break;
-
- case NFSPROC_REMOVE:
- xdr_argument = (xdrproc_t) xdr_diropargs;
- xdr_result = (xdrproc_t) xdr_nfsstat;
- local = (nfssvcproc_t) nfsproc_remove_2_svc;
- break;
-
- case NFSPROC_RENAME:
- xdr_argument = (xdrproc_t) xdr_renameargs;
- xdr_result = (xdrproc_t) xdr_nfsstat;
- local = (nfssvcproc_t) nfsproc_rename_2_svc;
- break;
-
- case NFSPROC_LINK:
- xdr_argument = (xdrproc_t) xdr_linkargs;
- xdr_result = (xdrproc_t) xdr_nfsstat;
- local = (nfssvcproc_t) nfsproc_link_2_svc;
- break;
-
- case NFSPROC_SYMLINK:
- xdr_argument = (xdrproc_t) xdr_symlinkargs;
- xdr_result = (xdrproc_t) xdr_nfsstat;
- local = (nfssvcproc_t) nfsproc_symlink_2_svc;
- break;
-
- case NFSPROC_MKDIR:
- xdr_argument = (xdrproc_t) xdr_createargs;
- xdr_result = (xdrproc_t) xdr_diropres;
- local = (nfssvcproc_t) nfsproc_mkdir_2_svc;
- break;
-
- case NFSPROC_RMDIR:
- xdr_argument = (xdrproc_t) xdr_diropargs;
- xdr_result = (xdrproc_t) xdr_nfsstat;
- local = (nfssvcproc_t) nfsproc_rmdir_2_svc;
- break;
-
- case NFSPROC_READDIR:
- xdr_argument = (xdrproc_t) xdr_readdirargs;
- xdr_result = (xdrproc_t) xdr_readdirres;
- local = (nfssvcproc_t) nfsproc_readdir_2_svc;
- break;
-
- case NFSPROC_STATFS:
- xdr_argument = (xdrproc_t) xdr_nfs_fh;
- xdr_result = (xdrproc_t) xdr_statfsres;
- local = (nfssvcproc_t) nfsproc_statfs_2_svc;
- break;
-
- default:
- svcerr_noproc(transp);
- return;
- }
-
- memset((char *) &argument, 0, sizeof(argument));
- if (!svc_getargs(transp,
- (XDRPROC_T_TYPE) xdr_argument,
- (SVC_IN_ARG_TYPE) &argument)) {
- plog(XLOG_ERROR,
- "NFS xdr decode failed for %d %d %d",
- (int) rqstp->rq_prog, (int) rqstp->rq_vers, (int) rqstp->rq_proc);
- svcerr_decode(transp);
- return;
- }
- result = (*local) (&argument, rqstp);
-
- current_transp = NULL;
-
- if (result != NULL && !svc_sendreply(transp,
- (XDRPROC_T_TYPE) xdr_result,
- result)) {
- svcerr_systemerr(transp);
- }
- if (!svc_freeargs(transp,
- (XDRPROC_T_TYPE) xdr_argument,
- (SVC_IN_ARG_TYPE) & argument)) {
- plog(XLOG_FATAL, "unable to free rpc arguments in nfs_program_2");
- going_down(1);
- }
-}
-
-void
-nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp)
-{
- union {
- am_GETATTR3args am_nfs3_getattr_3_arg;
- am_SETATTR3args am_nfs3_setattr_3_arg;
- am_LOOKUP3args am_nfs3_lookup_3_arg;
- am_ACCESS3args am_nfs3_access_3_arg;
- am_READLINK3args am_nfs3_readlink_3_arg;
- am_READ3args am_nfs3_read_3_arg;
- am_WRITE3args am_nfs3_write_3_arg;
- am_CREATE3args am_nfs3_create_3_arg;
- am_MKDIR3args am_nfs3_mkdir_3_arg;
- am_SYMLINK3args am_nfs3_symlink_3_arg;
- am_MKNOD3args am_nfs3_mknod_3_arg;
- am_REMOVE3args am_nfs3_remove_3_arg;
- am_RMDIR3args am_nfs3_rmdir_3_arg;
- am_RENAME3args am_nfs3_rename_3_arg;
- am_LINK3args am_nfs3_link_3_arg;
- am_READDIR3args am_nfs3_readdir_3_arg;
- am_READDIRPLUS3args am_nfs3_readdirplus_3_arg;
- am_FSSTAT3args am_nfs3_fsstat_3_arg;
- am_FSINFO3args am_nfs3_fsinfo_3_arg;
- am_PATHCONF3args am_nfs3_pathconf_3_arg;
- am_COMMIT3args am_nfs3_commit_3_arg;
- } argument;
- char *result;
- xdrproc_t _xdr_argument, _xdr_result;
- nfssvcproc_t local;
-
- switch (rqstp->rq_proc) {
- case AM_NFS3_NULL:
- _xdr_argument = (xdrproc_t) xdr_void;
- _xdr_result = (xdrproc_t) xdr_void;
- local = (nfssvcproc_t) am_nfs3_null_3_svc;
- break;
-
- case AM_NFS3_GETATTR:
- _xdr_argument = (xdrproc_t) xdr_am_GETATTR3args;
- _xdr_result = (xdrproc_t) xdr_am_GETATTR3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_getattr_3_svc;
- break;
-
- case AM_NFS3_SETATTR:
- _xdr_argument = (xdrproc_t) xdr_am_SETATTR3args;
- _xdr_result = (xdrproc_t) xdr_am_SETATTR3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_setattr_3_svc;
- break;
-
- case AM_NFS3_LOOKUP:
- _xdr_argument = (xdrproc_t) xdr_am_LOOKUP3args;
- _xdr_result = (xdrproc_t) xdr_am_LOOKUP3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_lookup_3_svc;
- break;
-
- case AM_NFS3_ACCESS:
- _xdr_argument = (xdrproc_t) xdr_am_ACCESS3args;
- _xdr_result = (xdrproc_t) xdr_am_ACCESS3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_access_3_svc;
- break;
-
- case AM_NFS3_READLINK:
- _xdr_argument = (xdrproc_t) xdr_am_READLINK3args;
- _xdr_result = (xdrproc_t) xdr_am_READLINK3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_readlink_3_svc;
- break;
-
- case AM_NFS3_READ:
- _xdr_argument = (xdrproc_t) xdr_am_READ3args;
- _xdr_result = (xdrproc_t) xdr_am_READ3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_read_3_svc;
- break;
-
- case AM_NFS3_WRITE:
- _xdr_argument = (xdrproc_t) xdr_am_WRITE3args;
- _xdr_result = (xdrproc_t) xdr_am_WRITE3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_write_3_svc;
- break;
-
- case AM_NFS3_CREATE:
- _xdr_argument = (xdrproc_t) xdr_am_CREATE3args;
- _xdr_result = (xdrproc_t) xdr_am_CREATE3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_create_3_svc;
- break;
-
- case AM_NFS3_MKDIR:
- _xdr_argument = (xdrproc_t) xdr_am_MKDIR3args;
- _xdr_result = (xdrproc_t) xdr_am_MKDIR3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_mkdir_3_svc;
- break;
-
- case AM_NFS3_SYMLINK:
- _xdr_argument = (xdrproc_t) xdr_am_SYMLINK3args;
- _xdr_result = (xdrproc_t) xdr_am_SYMLINK3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_symlink_3_svc;
- break;
-
- case AM_NFS3_MKNOD:
- _xdr_argument = (xdrproc_t) xdr_am_MKNOD3args;
- _xdr_result = (xdrproc_t) xdr_am_MKNOD3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_mknod_3_svc;
- break;
-
- case AM_NFS3_REMOVE:
- _xdr_argument = (xdrproc_t) xdr_am_REMOVE3args;
- _xdr_result = (xdrproc_t) xdr_am_REMOVE3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_remove_3_svc;
- break;
-
- case AM_NFS3_RMDIR:
- _xdr_argument = (xdrproc_t) xdr_am_RMDIR3args;
- _xdr_result = (xdrproc_t) xdr_am_RMDIR3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_rmdir_3_svc;
- break;
-
- case AM_NFS3_RENAME:
- _xdr_argument = (xdrproc_t) xdr_am_RENAME3args;
- _xdr_result = (xdrproc_t) xdr_am_RENAME3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_rename_3_svc;
- break;
-
- case AM_NFS3_LINK:
- _xdr_argument = (xdrproc_t) xdr_am_LINK3args;
- _xdr_result = (xdrproc_t) xdr_am_LINK3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_link_3_svc;
- break;
-
- case AM_NFS3_READDIR:
- _xdr_argument = (xdrproc_t) xdr_am_READDIR3args;
- _xdr_result = (xdrproc_t) xdr_am_READDIR3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_readdir_3_svc;
- break;
-
- case AM_NFS3_READDIRPLUS:
- _xdr_argument = (xdrproc_t) xdr_am_READDIRPLUS3args;
- _xdr_result = (xdrproc_t) xdr_am_READDIRPLUS3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_readdirplus_3_svc;
- break;
-
- case AM_NFS3_FSSTAT:
- _xdr_argument = (xdrproc_t) xdr_am_FSSTAT3args;
- _xdr_result = (xdrproc_t) xdr_am_FSSTAT3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_fsstat_3_svc;
- break;
-
- case AM_NFS3_FSINFO:
- _xdr_argument = (xdrproc_t) xdr_am_FSINFO3args;
- _xdr_result = (xdrproc_t) xdr_am_FSINFO3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_fsinfo_3_svc;
- break;
-
- case AM_NFS3_PATHCONF:
- _xdr_argument = (xdrproc_t) xdr_am_PATHCONF3args;
- _xdr_result = (xdrproc_t) xdr_am_PATHCONF3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_pathconf_3_svc;
- break;
-
- case AM_NFS3_COMMIT:
- _xdr_argument = (xdrproc_t) xdr_am_COMMIT3args;
- _xdr_result = (xdrproc_t) xdr_am_COMMIT3res;
- local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_commit_3_svc;
- break;
-
- default:
- svcerr_noproc (transp);
- return;
- }
-
- memset ((char *)&argument, 0, sizeof (argument));
-
- if (!svc_getargs(transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
- plog(XLOG_ERROR,
- "NFS xdr decode failed for %d %d %d",
- (int) rqstp->rq_prog, (int) rqstp->rq_vers, (int) rqstp->rq_proc);
- svcerr_decode(transp);
- return;
- }
-
- result = (*local) (&argument, rqstp);
- if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) {
- svcerr_systemerr (transp);
- }
-
- if (!svc_freeargs (transp, (xdrproc_t) _xdr_argument, (caddr_t) &argument)) {
- plog(XLOG_FATAL, "unable to free rpc arguments in nfs_program_3");
- going_down(1);
- }
- return;
-}
diff --git a/contrib/amd/amd/nfs_start.c b/contrib/amd/amd/nfs_start.c
deleted file mode 100644
index b6c544ddf178..000000000000
--- a/contrib/amd/amd/nfs_start.c
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/nfs_start.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-#ifndef SELECT_MAXWAIT
-# define SELECT_MAXWAIT 16
-#endif /* not SELECT_MAXWAIT */
-
-SVCXPRT *nfsxprt = NULL;
-u_short nfs_port = 0;
-
-#ifndef HAVE_SIGACTION
-# define MASKED_SIGS (sigmask(SIGINT)|sigmask(SIGTERM)|sigmask(SIGCHLD)|sigmask(SIGHUP))
-#endif /* not HAVE_SIGACTION */
-
-#ifdef DEBUG
-/*
- * Check that we are not burning resources
- */
-static void
-checkup(void)
-{
- static int max_fd = 0;
- static char *max_mem = NULL;
- int next_fd = dup(0);
- caddr_t next_mem = sbrk(0);
-
- close(next_fd);
-
- if (max_fd < next_fd) {
- dlog("%d new fds allocated; total is %d",
- next_fd - max_fd, next_fd);
- max_fd = next_fd;
- }
- if (max_mem < next_mem) {
-#ifdef HAVE_GETPAGESIZE
- dlog("%#lx bytes of memory allocated; total is %#lx (%ld pages)",
- (long) (next_mem - max_mem), (unsigned long) next_mem,
- ((long) next_mem + getpagesize() - 1) / (long) getpagesize());
-#else /* not HAVE_GETPAGESIZE */
- dlog("%#lx bytes of memory allocated; total is %#lx",
- (long) (next_mem - max_mem), (unsigned long) next_mem);
-#endif /* not HAVE_GETPAGESIZE */
- max_mem = next_mem;
-
- }
-}
-#else /* not DEBUG */
-#define checkup()
-#endif /* not DEBUG */
-
-
-static int
-#ifdef HAVE_SIGACTION
-do_select(sigset_t smask, int fds, fd_set *fdp, struct timeval *tvp)
-#else /* not HAVE_SIGACTION */
-do_select(int smask, int fds, fd_set *fdp, struct timeval *tvp)
-#endif /* not HAVE_SIGACTION */
-{
-
- int sig;
- int nsel;
-
- if ((sig = setjmp(select_intr))) {
- select_intr_valid = 0;
- /* Got a signal */
- switch (sig) {
- case SIGINT:
- case SIGTERM:
- amd_state = Finishing;
- reschedule_timeout_mp();
- break;
- }
- nsel = -1;
- errno = EINTR;
- } else {
- select_intr_valid = 1;
- /*
- * Allow interrupts. If a signal
- * occurs, then it will cause a longjmp
- * up above.
- */
-#ifdef HAVE_SIGACTION
- sigprocmask(SIG_SETMASK, &smask, NULL);
-#else /* not HAVE_SIGACTION */
- (void) sigsetmask(smask);
-#endif /* not HAVE_SIGACTION */
-
- /*
- * Wait for input
- */
- nsel = select(fds, fdp, (fd_set *) NULL, (fd_set *) NULL,
- tvp->tv_sec ? tvp : (struct timeval *) NULL);
- }
-
-#ifdef HAVE_SIGACTION
- sigprocmask(SIG_BLOCK, &masked_sigs, NULL);
-#else /* not HAVE_SIGACTION */
- (void) sigblock(MASKED_SIGS);
-#endif /* not HAVE_SIGACTION */
-
- /*
- * Perhaps reload the cache?
- */
- if (do_mapc_reload < clocktime(NULL)) {
- mapc_reload();
- do_mapc_reload = clocktime(NULL) + gopt.map_reload_interval;
- }
- return nsel;
-}
-
-
-/*
- * Determine whether anything is left in
- * the RPC input queue.
- */
-static int
-rpc_pending_now(void)
-{
- struct timeval tvv;
- int nsel;
- fd_set readfds;
-
- FD_ZERO(&readfds);
- FD_SET(fwd_sock, &readfds);
-
- tvv.tv_sec = tvv.tv_usec = 0;
- nsel = select(FD_SETSIZE, &readfds, (fd_set *) NULL, (fd_set *) NULL, &tvv);
- if (nsel < 1)
- return (0);
- if (FD_ISSET(fwd_sock, &readfds))
- return (1);
-
- return (0);
-}
-
-
-static serv_state
-run_rpc(void)
-{
-#ifdef HAVE_SIGACTION
- sigset_t smask;
- sigprocmask(SIG_BLOCK, &masked_sigs, &smask);
-#else /* not HAVE_SIGACTION */
- int smask = sigblock(MASKED_SIGS);
-#endif /* not HAVE_SIGACTION */
-
- next_softclock = clocktime(NULL);
-
- amd_state = Run;
-
- /*
- * Keep on trucking while we are in Run mode. This state
- * is switched to Quit after all the file systems have
- * been unmounted.
- */
- while ((int) amd_state <= (int) Finishing) {
- struct timeval tvv;
- int nsel;
- time_t now;
- fd_set readfds;
-
-#ifdef HAVE_SVC_GETREQSET
- memmove(&readfds, &svc_fdset, sizeof(svc_fdset));
-#else /* not HAVE_SVC_GETREQSET */
- FD_ZERO(&readfds);
-# ifdef HAVE_FD_SET_FDS_BITS
- readfds.fds_bits[0] = svc_fds;
-# else /* not HAVE_FD_SET_FDS_BITS */
- readfds = svc_fds;
-# endif /* not HAVE_FD_SET_FDS_BITS */
-#endif /* not HAVE_SVC_GETREQSET */
- FD_SET(fwd_sock, &readfds);
-
- checkup();
-
- /*
- * If the full timeout code is not called,
- * then recompute the time delta manually.
- */
- now = clocktime(NULL);
-
- if (next_softclock <= now) {
- if (amd_state == Finishing)
- umount_exported();
- tvv.tv_sec = softclock();
- } else {
- tvv.tv_sec = next_softclock - now;
- }
- tvv.tv_usec = 0;
-
- if (amd_state == Finishing && get_exported_ap(0) == NULL) {
- flush_mntfs();
- amd_state = Quit;
- break;
- }
-
-#ifdef HAVE_FS_AUTOFS
- autofs_add_fdset(&readfds);
-#endif /* HAVE_FS_AUTOFS */
-
- if (tvv.tv_sec <= 0)
- tvv.tv_sec = SELECT_MAXWAIT;
- if (tvv.tv_sec) {
- dlog("Select waits for %ds", (int) tvv.tv_sec);
- } else {
- dlog("Select waits for Godot");
- }
-
- nsel = do_select(smask, FD_SETSIZE, &readfds, &tvv);
-
- switch (nsel) {
- case -1:
- if (errno == EINTR) {
- dlog("select interrupted");
- continue;
- }
- plog(XLOG_ERROR, "select: %m");
- break;
-
- case 0:
- break;
-
- default:
- /*
- * Read all pending NFS responses at once to avoid having responses
- * queue up as a consequence of retransmissions.
- */
- if (FD_ISSET(fwd_sock, &readfds)) {
- FD_CLR(fwd_sock, &readfds);
- --nsel;
- do {
- fwd_reply();
- } while (rpc_pending_now() > 0);
- }
-
-#ifdef HAVE_FS_AUTOFS
- if (nsel)
- nsel = autofs_handle_fdset(&readfds, nsel);
-#endif /* HAVE_FS_AUTOFS */
-
- if (nsel) {
- /*
- * Anything left must be a normal
- * RPC request.
- */
-#ifdef HAVE_SVC_GETREQSET
- svc_getreqset(&readfds);
-#else /* not HAVE_SVC_GETREQSET */
-# ifdef HAVE_FD_SET_FDS_BITS
- svc_getreq(readfds.fds_bits[0]);
-# else /* not HAVE_FD_SET_FDS_BITS */
- svc_getreq(readfds);
-# endif /* not HAVE_FD_SET_FDS_BITS */
-#endif /* not HAVE_SVC_GETREQSET */
- }
- break;
- }
- }
-
-#ifdef HAVE_SIGACTION
- sigprocmask(SIG_SETMASK, &smask, NULL);
-#else /* not HAVE_SIGACTION */
- (void) sigsetmask(smask);
-#endif /* not HAVE_SIGACTION */
-
- if (amd_state == Quit)
- amd_state = Done;
-
- return amd_state;
-}
-
-
-int
-mount_automounter(int ppid)
-{
- /*
- * Old code replaced by rpc-trash patch.
- * Erez Zadok <ezk@cs.columbia.edu>
- int so = socket(AF_INET, SOCK_DGRAM, 0);
- */
- SVCXPRT *udp_amqp = NULL, *tcp_amqp = NULL;
- int nmount, ret;
- int soNFS;
- int udp_soAMQ, tcp_soAMQ;
- struct netconfig *udp_amqncp, *tcp_amqncp;
-
- /*
- * This must be done first, because it attempts to bind
- * to various UDP ports and we don't want anything else
- * potentially taking over those ports before we get a chance
- * to reserve them.
- */
- if (gopt.flags & CFM_RESTART_EXISTING_MOUNTS)
- restart_automounter_nodes();
-
- /*
- * Start RPC forwarding
- */
- if (fwd_init() != 0)
- return 3;
-
- /*
- * Construct the root automount node
- */
- make_root_node();
-
- /*
- * Pick up the pieces from a previous run
- * This is likely to (indirectly) need the rpc_fwd package
- * so it *must* come after the call to fwd_init().
- */
- if (gopt.flags & CFM_RESTART_EXISTING_MOUNTS)
- restart();
-
- /*
- * Create the nfs service for amd
- * If nfs_port is already initialized, it means we
- * already created the service during restart_automounter_nodes().
- */
- if (nfs_port == 0) {
- ret = create_nfs_service(&soNFS, &nfs_port, &nfsxprt, nfs_dispatcher,
- get_nfs_dispatcher_version(nfs_dispatcher));
- if (ret != 0)
- return ret;
- }
- xsnprintf(pid_fsname, sizeof(pid_fsname), "%s:(pid%ld,port%u)",
- am_get_hostname(), (long) am_mypid, nfs_port);
-
- /* security: if user sets -D noamq, don't even create listening socket */
- if (amuDebug(D_AMQ)) {
- ret = create_amq_service(&udp_soAMQ,
- &udp_amqp,
- &udp_amqncp,
- &tcp_soAMQ,
- &tcp_amqp,
- &tcp_amqncp,
- gopt.preferred_amq_port);
- if (ret != 0)
- return ret;
- }
-
-#ifdef HAVE_FS_AUTOFS
- if (amd_use_autofs) {
- /*
- * Create the autofs service for amd.
- */
- ret = create_autofs_service();
- /* if autofs service fails it is OK if using a test amd */
- if (ret != 0) {
- plog(XLOG_WARNING, "autofs service registration failed, turning off autofs support");
- amd_use_autofs = 0;
- }
- }
-#endif /* HAVE_FS_AUTOFS */
-
- /*
- * Mount the top-level auto-mountpoints
- */
- nmount = mount_exported();
-
- /*
- * Now safe to tell parent that we are up and running
- */
- if (ppid)
- kill(ppid, SIGQUIT);
-
- if (nmount == 0) {
- plog(XLOG_FATAL, "No work to do - quitting");
- amd_state = Done;
- return 0;
- }
-
- if (amuDebug(D_AMQ)) {
- /*
- * Complete registration of amq (first TCP service then UDP)
- */
- int tcp_ok = 0, udp_ok = 0;
-
- unregister_amq(); /* unregister leftover Amd, if any, just in case */
-
- tcp_ok = amu_svc_register(tcp_amqp, get_amd_program_number(), AMQ_VERSION,
- amq_program_1, IPPROTO_TCP, tcp_amqncp);
- if (!tcp_ok)
- plog(XLOG_FATAL,
- "unable to register (AMQ_PROGRAM=%lu, AMQ_VERSION, tcp)",
- get_amd_program_number());
-
- udp_ok = amu_svc_register(udp_amqp, get_amd_program_number(), AMQ_VERSION,
- amq_program_1, IPPROTO_UDP, udp_amqncp);
- if (!udp_ok)
- plog(XLOG_FATAL,
- "unable to register (AMQ_PROGRAM=%lu, AMQ_VERSION, udp)",
- get_amd_program_number());
-
- /* return error only if both failed */
- if (!tcp_ok && !udp_ok) {
- amd_state = Done;
- return 3;
- }
- }
-
- /*
- * Start timeout_mp rolling
- */
- reschedule_timeout_mp();
-
- /*
- * Start the server
- */
- if (run_rpc() != Done) {
- plog(XLOG_FATAL, "run_rpc failed");
- amd_state = Done;
- }
- return 0;
-}
diff --git a/contrib/amd/amd/nfs_subr.c b/contrib/amd/amd/nfs_subr.c
deleted file mode 100644
index 734c69827a35..000000000000
--- a/contrib/amd/amd/nfs_subr.c
+++ /dev/null
@@ -1,1863 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/nfs_subr.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/*
- * Convert from UN*X to NFS error code.
- * Some systems like linux define their own (see
- * conf/mount/mount_linux.h).
- */
-#ifndef nfs_error
-# define nfs_error(e) ((nfsstat)(e))
-#endif /* nfs_error */
-
-/*
- * File Handle structure
- *
- * This is interpreted by indexing the exported array
- * by fhh_id (for old-style filehandles), or by retrieving
- * the node name from fhh_path (for new-style filehandles).
- *
- * The whole structure is mapped onto a standard fhandle_t
- * when transmitted.
- */
-struct am_fh {
- u_int fhh_gen; /* generation number */
- union {
- struct {
- int fhh_type; /* old or new am_fh */
- pid_t fhh_pid; /* process id */
- int fhh_id; /* map id */
- } s;
- char fhh_path[NFS_FHSIZE-sizeof(u_int)]; /* path to am_node */
- } u;
-};
-
-struct am_fh3 {
- u_int fhh_gen; /* generation number */
- union {
- struct {
- int fhh_type; /* old or new am_fh */
- pid_t fhh_pid; /* process id */
- int fhh_id; /* map id */
- } s;
- char fhh_path[AM_FHSIZE3-sizeof(u_int)]; /* path to am_node */
- } u;
-};
-
-/* forward declarations */
-/* converting am-filehandles to mount-points */
-static am_node *fh_to_mp3(am_nfs_fh *fhp, int *rp, int vop);
-static am_node *fh_to_mp(am_nfs_fh *fhp);
-static void count_map_entries(const am_node *mp, u_int *out_blocks, u_int *out_bfree, u_int *out_bavail);
-
-
-static char *
-do_readlink(am_node *mp, int *error_return)
-{
- char *ln;
-
- /*
- * If there is a readlink method then use it,
- * otherwise if a link exists use that,
- * otherwise use the mount point.
- */
- if (mp->am_al->al_mnt->mf_ops->readlink) {
- int retry = 0;
- mp = (*mp->am_al->al_mnt->mf_ops->readlink) (mp, &retry);
- if (mp == NULL) {
- *error_return = retry;
- return 0;
- }
- /* reschedule_timeout_mp(); */
- }
-
- if (mp->am_link) {
- ln = mp->am_link;
- } else {
- ln = mp->am_al->al_mnt->mf_mount;
- }
-
- return ln;
-}
-
-
-voidp
-nfsproc_null_2_svc(voidp argp, struct svc_req *rqstp)
-{
- static char res;
-
- return (voidp) &res;
-}
-
-
-nfsattrstat *
-nfsproc_getattr_2_svc(am_nfs_fh *argp, struct svc_req *rqstp)
-{
- static nfsattrstat res;
- am_node *mp;
- int retry = 0;
- time_t now = clocktime(NULL);
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "getattr:");
-
- mp = fh_to_mp3(argp, &retry, VLOOK_CREATE);
- if (mp == NULL) {
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\tretry=%d", retry);
-
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- res.ns_status = nfs_error(retry);
- return &res;
- }
-
- res = mp->am_attr;
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\tstat(%s), size = %d, mtime=%ld.%ld",
- mp->am_path,
- (int) res.ns_u.ns_attr_u.na_size,
- (long) res.ns_u.ns_attr_u.na_mtime.nt_seconds,
- (long) res.ns_u.ns_attr_u.na_mtime.nt_useconds);
-
- /* Delay unmount of what was looked up */
- if (mp->am_timeo_w < 4 * gopt.am_timeo_w)
- mp->am_timeo_w += gopt.am_timeo_w;
- mp->am_ttl = now + mp->am_timeo_w;
-
- mp->am_stats.s_getattr++;
- return &res;
-}
-
-
-nfsattrstat *
-nfsproc_setattr_2_svc(nfssattrargs *argp, struct svc_req *rqstp)
-{
- static nfsattrstat res;
-
- if (!fh_to_mp(&argp->sag_fhandle))
- res.ns_status = nfs_error(ESTALE);
- else
- res.ns_status = nfs_error(EROFS);
-
- return &res;
-}
-
-
-voidp
-nfsproc_root_2_svc(voidp argp, struct svc_req *rqstp)
-{
- static char res;
-
- return (voidp) &res;
-}
-
-
-nfsdiropres *
-nfsproc_lookup_2_svc(nfsdiropargs *argp, struct svc_req *rqstp)
-{
- static nfsdiropres res;
- am_node *mp;
- int retry;
- uid_t uid;
- gid_t gid;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "lookup:");
-
- /* finally, find the effective uid/gid from RPC request */
- if (getcreds(rqstp, &uid, &gid, nfsxprt) < 0)
- plog(XLOG_ERROR, "cannot get uid/gid from RPC credentials");
- xsnprintf(opt_uid, sizeof(uid_str), "%d", (int) uid);
- xsnprintf(opt_gid, sizeof(gid_str), "%d", (int) gid);
-
- mp = fh_to_mp3(&argp->da_fhandle, &retry, VLOOK_CREATE);
- if (mp == NULL) {
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- res.dr_status = nfs_error(retry);
- } else {
- int error;
- am_node *ap;
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\tlookup(%s, %s)", mp->am_path, argp->da_name);
- ap = mp->am_al->al_mnt->mf_ops->lookup_child(mp, argp->da_name, &error, VLOOK_CREATE);
- if (ap && error < 0)
- ap = mp->am_al->al_mnt->mf_ops->mount_child(ap, &error);
- if (ap == 0) {
- if (error < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- res.dr_status = nfs_error(error);
- } else {
- /*
- * XXX: EXPERIMENTAL! Delay unmount of what was looked up. This
- * should reduce the chance for race condition between unmounting an
- * entry synchronously, and re-mounting it asynchronously.
- */
- if (ap->am_ttl < mp->am_ttl)
- ap->am_ttl = mp->am_ttl;
- mp_to_fh(ap, &res.dr_u.dr_drok_u.drok_fhandle);
- res.dr_u.dr_drok_u.drok_attributes = ap->am_fattr;
- res.dr_status = NFS_OK;
- }
- mp->am_stats.s_lookup++;
- /* reschedule_timeout_mp(); */
- }
-
- return &res;
-}
-
-
-void
-nfs_quick_reply(am_node *mp, int error)
-{
- SVCXPRT *transp = mp->am_transp;
- nfsdiropres res;
- xdrproc_t xdr_result = (xdrproc_t) xdr_diropres;
-
- /*
- * If there's a transp structure then we can reply to the client's
- * nfs lookup request.
- */
- if (transp) {
- if (error == 0) {
- /*
- * Construct a valid reply to a lookup request. Same
- * code as in nfsproc_lookup_2_svc() above.
- */
- mp_to_fh(mp, &res.dr_u.dr_drok_u.drok_fhandle);
- res.dr_u.dr_drok_u.drok_attributes = mp->am_fattr;
- res.dr_status = NFS_OK;
- } else
- /*
- * Return the error that was passed to us.
- */
- res.dr_status = nfs_error(error);
-
- /*
- * Send off our reply
- */
- if (!svc_sendreply(transp, (XDRPROC_T_TYPE) xdr_result, (SVC_IN_ARG_TYPE) & res))
- svcerr_systemerr(transp);
-
- /*
- * Free up transp. It's only used for one reply.
- */
- XFREE(mp->am_transp);
- dlog("Quick reply sent for %s", mp->am_al->al_mnt->mf_mount);
- }
-}
-
-
-nfsreadlinkres *
-nfsproc_readlink_2_svc(am_nfs_fh *argp, struct svc_req *rqstp)
-{
- static nfsreadlinkres res;
- am_node *mp;
- int retry;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "readlink:");
-
- mp = fh_to_mp3(argp, &retry, VLOOK_CREATE);
- if (mp == NULL) {
- readlink_retry:
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- res.rlr_status = nfs_error(retry);
- } else {
- char *ln = do_readlink(mp, &retry);
- if (ln == 0)
- goto readlink_retry;
- res.rlr_status = NFS_OK;
- if (amuDebug(D_TRACE) && ln)
- plog(XLOG_DEBUG, "\treadlink(%s) = %s", mp->am_path, ln);
- res.rlr_u.rlr_data_u = ln;
- mp->am_stats.s_readlink++;
- }
-
- return &res;
-}
-
-
-nfsreadres *
-nfsproc_read_2_svc(nfsreadargs *argp, struct svc_req *rqstp)
-{
- static nfsreadres res;
-
- memset((char *) &res, 0, sizeof(res));
- res.rr_status = nfs_error(EACCES);
-
- return &res;
-}
-
-
-voidp
-nfsproc_writecache_2_svc(voidp argp, struct svc_req *rqstp)
-{
- static char res;
-
- return (voidp) &res;
-}
-
-
-nfsattrstat *
-nfsproc_write_2_svc(nfswriteargs *argp, struct svc_req *rqstp)
-{
- static nfsattrstat res;
-
- if (!fh_to_mp(&argp->wra_fhandle))
- res.ns_status = nfs_error(ESTALE);
- else
- res.ns_status = nfs_error(EROFS);
-
- return &res;
-}
-
-
-nfsdiropres *
-nfsproc_create_2_svc(nfscreateargs *argp, struct svc_req *rqstp)
-{
- static nfsdiropres res;
-
- if (!fh_to_mp(&argp->ca_where.da_fhandle))
- res.dr_status = nfs_error(ESTALE);
- else
- res.dr_status = nfs_error(EROFS);
-
- return &res;
-}
-
-
-static nfsstat *
-unlink_or_rmdir(nfsdiropargs *argp, struct svc_req *rqstp, int unlinkp)
-{
- static nfsstat res;
- int retry;
-
- am_node *mp = fh_to_mp3(&argp->da_fhandle, &retry, VLOOK_DELETE);
- if (mp == NULL) {
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- res = nfs_error(retry);
- goto out;
- }
-
- if (mp->am_fattr.na_type != NFDIR) {
- res = nfs_error(ENOTDIR);
- goto out;
- }
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\tremove(%s, %s)", mp->am_path, argp->da_name);
-
- mp = mp->am_al->al_mnt->mf_ops->lookup_child(mp, argp->da_name, &retry, VLOOK_DELETE);
- if (mp == NULL) {
- /*
- * Ignore retries...
- */
- if (retry < 0)
- retry = 0;
- /*
- * Usual NFS workaround...
- */
- else if (retry == ENOENT)
- retry = 0;
- res = nfs_error(retry);
- } else {
- forcibly_timeout_mp(mp);
- res = NFS_OK;
- }
-
-out:
- return &res;
-}
-
-
-nfsstat *
-nfsproc_remove_2_svc(nfsdiropargs *argp, struct svc_req *rqstp)
-{
- return unlink_or_rmdir(argp, rqstp, TRUE);
-}
-
-
-nfsstat *
-nfsproc_rename_2_svc(nfsrenameargs *argp, struct svc_req *rqstp)
-{
- static nfsstat res;
-
- if (!fh_to_mp(&argp->rna_from.da_fhandle) || !fh_to_mp(&argp->rna_to.da_fhandle))
- res = nfs_error(ESTALE);
- /*
- * If the kernel is doing clever things with referenced files
- * then let it pretend...
- */
- else if (NSTREQ(argp->rna_to.da_name, ".nfs", 4))
- res = NFS_OK;
- /*
- * otherwise a failure
- */
- else
- res = nfs_error(EROFS);
-
- return &res;
-}
-
-
-nfsstat *
-nfsproc_link_2_svc(nfslinkargs *argp, struct svc_req *rqstp)
-{
- static nfsstat res;
-
- if (!fh_to_mp(&argp->la_fhandle) || !fh_to_mp(&argp->la_to.da_fhandle))
- res = nfs_error(ESTALE);
- else
- res = nfs_error(EROFS);
-
- return &res;
-}
-
-
-nfsstat *
-nfsproc_symlink_2_svc(nfssymlinkargs *argp, struct svc_req *rqstp)
-{
- static nfsstat res;
-
- if (!fh_to_mp(&argp->sla_from.da_fhandle))
- res = nfs_error(ESTALE);
- else
- res = nfs_error(EROFS);
-
- return &res;
-}
-
-
-nfsdiropres *
-nfsproc_mkdir_2_svc(nfscreateargs *argp, struct svc_req *rqstp)
-{
- static nfsdiropres res;
-
- if (!fh_to_mp(&argp->ca_where.da_fhandle))
- res.dr_status = nfs_error(ESTALE);
- else
- res.dr_status = nfs_error(EROFS);
-
- return &res;
-}
-
-
-nfsstat *
-nfsproc_rmdir_2_svc(nfsdiropargs *argp, struct svc_req *rqstp)
-{
- return unlink_or_rmdir(argp, rqstp, FALSE);
-}
-
-
-nfsreaddirres *
-nfsproc_readdir_2_svc(nfsreaddirargs *argp, struct svc_req *rqstp)
-{
- static nfsreaddirres res;
- static nfsentry e_res[MAX_READDIR_ENTRIES];
- am_node *mp;
- int retry;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "readdir:");
-
- mp = fh_to_mp3(&argp->rda_fhandle, &retry, VLOOK_CREATE);
- if (mp == NULL) {
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- res.rdr_status = nfs_error(retry);
- } else {
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\treaddir(%s)", mp->am_path);
- res.rdr_status = nfs_error((*mp->am_al->al_mnt->mf_ops->readdir)
- (mp, argp->rda_cookie,
- &res.rdr_u.rdr_reply_u, e_res, argp->rda_count));
- mp->am_stats.s_readdir++;
- }
-
- return &res;
-}
-
-
-nfsstatfsres *
-nfsproc_statfs_2_svc(am_nfs_fh *argp, struct svc_req *rqstp)
-{
- static nfsstatfsres res;
- am_node *mp;
- int retry;
- mntent_t mnt;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "statfs:");
-
- mp = fh_to_mp3(argp, &retry, VLOOK_CREATE);
- if (mp == NULL) {
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- res.sfr_status = nfs_error(retry);
- } else {
- nfsstatfsokres *fp;
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\tstat_fs(%s)", mp->am_path);
-
- /*
- * just return faked up file system information
- */
- fp = &res.sfr_u.sfr_reply_u;
-
- fp->sfrok_tsize = 1024;
- fp->sfrok_bsize = 1024;
-
- /* check if map is browsable and show_statfs_entries=yes */
- if ((gopt.flags & CFM_SHOW_STATFS_ENTRIES) &&
- mp->am_al->al_mnt && mp->am_al->al_mnt->mf_mopts) {
- mnt.mnt_opts = mp->am_al->al_mnt->mf_mopts;
- if (amu_hasmntopt(&mnt, "browsable")) {
- count_map_entries(mp,
- &fp->sfrok_blocks,
- &fp->sfrok_bfree,
- &fp->sfrok_bavail);
- }
- } else {
- fp->sfrok_blocks = 0; /* set to 1 if you don't want empty automounts */
- fp->sfrok_bfree = 0;
- fp->sfrok_bavail = 0;
- }
-
- res.sfr_status = NFS_OK;
- mp->am_stats.s_statfs++;
- }
-
- return &res;
-}
-
-
-/*
- * count how many total entries there are in a map, and how many
- * of them are in use.
- */
-static void
-count_map_entries(const am_node *mp, u_int *out_blocks, u_int *out_bfree, u_int *out_bavail)
-{
- u_int blocks, bfree, bavail, i;
- mntfs *mf;
- mnt_map *mmp;
- kv *k;
-
- blocks = bfree = bavail = 0;
- if (!mp)
- goto out;
- mf = mp->am_al->al_mnt;
- if (!mf)
- goto out;
- mmp = (mnt_map *) mf->mf_private;
- if (!mmp)
- goto out;
-
- /* iterate over keys */
- for (i = 0; i < NKVHASH; i++) {
- for (k = mmp->kvhash[i]; k ; k = k->next) {
- if (!k->key)
- continue;
- blocks++;
- /*
- * XXX: Need to count how many are actively in use and recompute
- * bfree and bavail based on it.
- */
- }
- }
-
-out:
- *out_blocks = blocks;
- *out_bfree = bfree;
- *out_bavail = bavail;
-}
-
-static am_node *
-validate_ap(am_node *node, int *rp, u_int fhh_gen)
-{
- am_node *ap = node;
- /*
- * Check the generation number in the node
- * matches the one from the kernel. If not
- * then the old node has been timed out and
- * a new one allocated.
- */
- if (node != NULL && node->am_gen != fhh_gen)
- ap = NULL;
-
- /*
- * If it doesn't exists then drop the request
- */
- if (!ap)
- goto drop;
-
-#if 0
- /*
- * If the node is hung then locate a new node
- * for it. This implements the replicated filesystem
- * retries.
- */
- if (ap->am_al->al_mnt && FSRV_ISDOWN(ap->am_al->al_mnt->mf_server) && ap->am_parent) {
- int error;
- am_node *orig_ap = ap;
-
- dlog("%s: %s (%s) is hung: lookup alternative file server", __func__,
- orig_ap->am_path, orig_ap->am_al->al_mnt->mf_info);
-
- /*
- * Update modify time of parent node.
- * With any luck the kernel will re-stat
- * the child node and get new information.
- */
- clocktime(&orig_ap->am_fattr.na_mtime);
-
- /*
- * Call the parent's lookup routine for an object
- * with the same name. This may return -1 in error
- * if a mount is in progress. In any case, if no
- * mount node is returned the error code is propagated
- * to the caller.
- */
- if (vop == VLOOK_CREATE) {
- ap = orig_ap->am_parent->am_al->al_mnt->mf_ops->lookup_child(orig_ap->am_parent, orig_ap->am_name, &error, vop);
- if (ap && error < 0)
- ap = orig_ap->am_parent->am_al->al_mnt->mf_ops->mount_child(ap, &error);
- } else {
- ap = NULL;
- error = ESTALE;
- }
- if (ap == 0) {
- if (error < 0 && amd_state == Finishing)
- error = ENOENT;
- *rp = error;
- return 0;
- }
-
- /*
- * Update last access to original node. This
- * avoids timing it out and so sending ESTALE
- * back to the kernel.
- * XXX - Not sure we need this anymore (jsp, 90/10/6).
- */
- new_ttl(orig_ap);
-
- }
-#endif /* 0 */
-
- /*
- * Disallow references to objects being unmounted, unless
- * they are automount points.
- */
- if (ap->am_al->al_mnt && (ap->am_al->al_mnt->mf_flags & MFF_UNMOUNTING) &&
- !(ap->am_flags & AMF_ROOT)) {
- if (amd_state == Finishing)
- *rp = ENOENT;
- else
- *rp = -1;
- return 0;
- }
- new_ttl(ap);
-
-drop:
- if (!ap || !ap->am_al->al_mnt) {
- /*
- * If we are shutting down then it is likely
- * that this node has disappeared because of
- * a fast timeout. To avoid things thrashing
- * just pretend it doesn't exist at all. If
- * ESTALE is returned, some NFS clients just
- * keep retrying (stupid or what - if it's
- * stale now, what's it going to be in 5 minutes?)
- */
- if (amd_state == Finishing)
- *rp = ENOENT;
- else {
- *rp = ESTALE;
- amd_stats.d_stale++;
- }
- }
-
- return ap;
-}
-
-/*
- * Convert from file handle to automount node.
- */
-static am_node *
-fh_to_mp3(am_nfs_fh *fhp, int *rp, int vop)
-{
- struct am_fh *fp = (struct am_fh *) fhp;
- am_node *ap = NULL;
-
- if (fp->u.s.fhh_type != 0) {
- /* New filehandle type */
- int len = sizeof(*fhp) - sizeof(fp->fhh_gen);
- char *path = xmalloc(len+1);
- /*
- * Because fhp is treated as a filehandle we use memcpy
- * instead of xstrlcpy.
- */
- memcpy(path, (char *) fp->u.fhh_path, len);
- path[len] = '\0';
- dlog("%s: new filehandle: %s", __func__, path);
-
- ap = path_to_exported_ap(path);
- XFREE(path);
- } else {
- dlog("%s: old filehandle: %d", __func__, fp->u.s.fhh_id);
- /*
- * Check process id matches
- * If it doesn't then it is probably
- * from an old kernel-cached filehandle
- * which is now out of date.
- */
- if (fp->u.s.fhh_pid != get_server_pid()) {
- dlog("%s: wrong pid %ld != my pid %ld", __func__,
- (long) fp->u.s.fhh_pid, get_server_pid());
- goto done;
- }
-
- /*
- * Get hold of the supposed mount node
- */
- ap = get_exported_ap(fp->u.s.fhh_id);
- }
-done:
- return validate_ap(ap, rp, fp->fhh_gen);
-}
-
-static am_node *
-fh_to_mp(am_nfs_fh *fhp)
-{
- int dummy;
-
- return fh_to_mp3(fhp, &dummy, VLOOK_CREATE);
-}
-
-static am_node *
-fh3_to_mp3(am_nfs_fh3 *fhp, int *rp, int vop)
-{
- struct am_fh3 *fp = (struct am_fh3 *) fhp->am_fh3_data;
- am_node *ap = NULL;
-
- if (fp->u.s.fhh_type != 0) {
- /* New filehandle type */
- int len = sizeof(*fp) - sizeof(fp->fhh_gen);
- char *path = xmalloc(len+1);
- /*
- * Because fhp is treated as a filehandle we use memcpy
- * instead of xstrlcpy.
- */
- memcpy(path, (char *) fp->u.fhh_path, len);
- path[len] = '\0';
- dlog("%s: new filehandle: %s", __func__, path);
-
- ap = path_to_exported_ap(path);
- XFREE(path);
- } else {
- dlog("%s: old filehandle: %d", __func__, fp->u.s.fhh_id);
- /*
- * Check process id matches
- * If it doesn't then it is probably
- * from an old kernel-cached filehandle
- * which is now out of date.
- */
- if (fp->u.s.fhh_pid != get_server_pid()) {
- dlog("%s: wrong pid %ld != my pid %ld", __func__,
- (long) fp->u.s.fhh_pid, get_server_pid());
- goto done;
- }
-
- /*
- * Get hold of the supposed mount node
- */
- ap = get_exported_ap(fp->u.s.fhh_id);
- }
-done:
- return validate_ap(ap, rp, fp->fhh_gen);
-}
-
-static am_node *
-fh3_to_mp(am_nfs_fh3 *fhp)
-{
- int dummy;
-
- return fh3_to_mp3(fhp, &dummy, VLOOK_CREATE);
-}
-
-/*
- * Convert from automount node to file handle.
- */
-void
-mp_to_fh(am_node *mp, am_nfs_fh *fhp)
-{
- u_int pathlen;
- struct am_fh *fp = (struct am_fh *) fhp;
-
- memset((char *) fhp, 0, sizeof(am_nfs_fh));
-
- /* Store the generation number */
- fp->fhh_gen = mp->am_gen;
-
- pathlen = strlen(mp->am_path);
- if (pathlen <= sizeof(*fhp) - sizeof(fp->fhh_gen)) {
- /* dlog("mp_to_fh: new filehandle: %s", mp->am_path); */
-
- /*
- * Because fhp is treated as a filehandle we use memcpy instead of
- * xstrlcpy.
- */
- memcpy(fp->u.fhh_path, mp->am_path, pathlen); /* making a filehandle */
- } else {
- /*
- * Take the process id
- */
- fp->u.s.fhh_pid = get_server_pid();
-
- /*
- * ... the map number
- */
- fp->u.s.fhh_id = mp->am_mapno;
-
- /*
- * ... and the generation number (previously stored)
- * to make a "unique" triple that will never
- * be reallocated except across reboots (which doesn't matter)
- * or if we are unlucky enough to be given the same
- * pid as a previous amd (very unlikely).
- */
- /* dlog("mp_to_fh: old filehandle: %d", fp->u.s.fhh_id); */
- }
-}
-void
-mp_to_fh3(am_node *mp, am_nfs_fh3 *fhp)
-{
- u_int pathlen;
- struct am_fh3 *fp = (struct am_fh3 *) fhp->am_fh3_data;
-
- memset((char *) fhp, 0, sizeof(am_nfs_fh3));
- fhp->am_fh3_length = AM_FHSIZE3;
-
- /* Store the generation number */
- fp->fhh_gen = mp->am_gen;
-
- pathlen = strlen(mp->am_path);
- if (pathlen <= sizeof(*fp) - sizeof(fp->fhh_gen)) {
- /* dlog("mp_to_fh: new filehandle: %s", mp->am_path); */
-
- /*
- * Because fhp is treated as a filehandle we use memcpy instead of
- * xstrlcpy.
- */
- memcpy(fp->u.fhh_path, mp->am_path, pathlen); /* making a filehandle */
- } else {
- /*
- * Take the process id
- */
- fp->u.s.fhh_pid = get_server_pid();
-
- /*
- * ... the map number
- */
- fp->u.s.fhh_id = mp->am_mapno;
-
- /*
- * ... and the generation number (previously stored)
- * to make a "unique" triple that will never
- * be reallocated except across reboots (which doesn't matter)
- * or if we are unlucky enough to be given the same
- * pid as a previous amd (very unlikely).
- */
- /* dlog("mp_to_fh: old filehandle: %d", fp->u.s.fhh_id); */
- }
-}
-
-#ifdef HAVE_FS_NFS3
-static am_ftype3 ftype_to_ftype3(nfsftype ftype)
-{
- if (ftype == NFFIFO)
- return AM_NF3FIFO;
- else
- return ftype;
-}
-
-static void nfstime_to_am_nfstime3(nfstime *time, am_nfstime3 *time3)
-{
- time3->seconds = time->seconds;
- time3->nseconds = time->useconds * 1000;
-}
-
-static void rdev_to_am_specdata3(u_int rdev, am_specdata3 *rdev3)
-{
- /* No device node here */
- rdev3->specdata1 = (u_int) -1;
- rdev3->specdata2 = (u_int) -1;
-}
-
-static void fattr_to_fattr3(nfsfattr *fattr, am_fattr3 *fattr3)
-{
- fattr3->type = ftype_to_ftype3(fattr->na_type);
- fattr3->mode = (am_mode3) fattr->na_mode;
- fattr3->nlink = fattr->na_nlink;
- fattr3->uid = (am_uid3) fattr->na_uid;
- fattr3->gid = (am_uid3) fattr->na_gid;
- fattr3->size = (am_size3) fattr->na_size;
- fattr3->used = (am_size3) fattr->na_size;
- rdev_to_am_specdata3(fattr->na_rdev, &fattr3->rdev);
- fattr3->fsid = (uint64) fattr->na_fsid;
- fattr3->fileid = (uint64) fattr->na_fileid;
- nfstime_to_am_nfstime3(&fattr->na_atime, &fattr3->atime);
- nfstime_to_am_nfstime3(&fattr->na_mtime, &fattr3->mtime);
- nfstime_to_am_nfstime3(&fattr->na_ctime, &fattr3->ctime);
-}
-
-static void fattr_to_wcc_attr(nfsfattr *fattr, am_wcc_attr *wcc_attr)
-{
- wcc_attr->size = (am_size3) fattr->na_size;
- nfstime_to_am_nfstime3(&fattr->na_mtime, &wcc_attr->mtime);
- nfstime_to_am_nfstime3(&fattr->na_ctime, &wcc_attr->ctime);
-}
-
-static am_nfsstat3 return_estale_or_rofs(am_nfs_fh3 *fh,
- am_pre_op_attr *pre_op,
- am_post_op_attr *post_op)
-{
- am_node *mp;
-
- mp = fh3_to_mp(fh);
- if (!mp) {
- pre_op->attributes_follow = 0;
- post_op->attributes_follow = 0;
- return nfs_error(ESTALE);
- } else {
- am_fattr3 *fattr3 = &post_op->am_post_op_attr_u.attributes;
- am_wcc_attr *wcc_attr = &pre_op->am_pre_op_attr_u.attributes;
- nfsfattr *fattr = &mp->am_fattr;
- pre_op->attributes_follow = 1;
- fattr_to_wcc_attr(fattr, wcc_attr);
- post_op->attributes_follow = 1;
- fattr_to_fattr3(fattr, fattr3);
- return nfs_error(EROFS);
- }
-}
-
-static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp,
- am_wcc_data *wcc_data, int unlinkp)
-{
- static am_nfsstat3 res;
- am_nfs_fh3 *dir = &argp->dir;
- am_filename3 name = argp->name;
- am_pre_op_attr *pre_op_dir = &wcc_data->before;
- am_post_op_attr *post_op_dir = &wcc_data->after;
- nfsfattr *fattr;
- am_wcc_attr *wcc_attr;
- am_node *mp, *ap;
- int retry;
-
- post_op_dir->attributes_follow = 0;
-
- mp = fh3_to_mp3(dir, &retry, VLOOK_DELETE);
- if (!mp) {
- pre_op_dir->attributes_follow = 0;
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- res = nfs_error(retry);
- goto out;
- }
-
- pre_op_dir->attributes_follow = 1;
- fattr = &mp->am_fattr;
- wcc_attr = &pre_op_dir->am_pre_op_attr_u.attributes;
- fattr_to_wcc_attr(fattr, wcc_attr);
-
- if (mp->am_fattr.na_type != NFDIR) {
- res = nfs_error(ENOTDIR);
- goto out;
- }
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\tremove(%s, %s)", mp->am_path, name);
-
- ap = mp->am_al->al_mnt->mf_ops->lookup_child(mp, name, &retry, VLOOK_DELETE);
- if (!ap) {
- /*
- * Ignore retries...
- */
- if (retry < 0)
- retry = 0;
- /*
- * Usual NFS workaround...
- */
- else if (retry == ENOENT)
- retry = 0;
- res = nfs_error(retry);
- } else {
- forcibly_timeout_mp(mp);
- res = AM_NFS3_OK;
- }
-
-out:
- return res;
-}
-
-voidp
-am_nfs3_null_3_svc(voidp argp, struct svc_req *rqstp)
-{
- static char * result;
-
- return (voidp) &result;
-}
-
-am_GETATTR3res *
-am_nfs3_getattr_3_svc(am_GETATTR3args *argp, struct svc_req *rqstp)
-{
- static am_GETATTR3res result;
- am_nfs_fh3 *fh = (am_nfs_fh3 *) &argp->object;
- am_fattr3 *fattr3;
- nfsfattr *fattr;
- am_node *mp;
- int retry = 0;
- time_t now = clocktime(NULL);
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "getattr_3:");
-
- mp = fh3_to_mp3(fh, &retry, VLOOK_CREATE);
- if (!mp) {
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\tretry=%d", retry);
-
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- result.status = nfs_error(retry);
- return &result;
- }
-
- fattr = &mp->am_fattr;
- fattr3 = (am_fattr3 *) &result.res_u.ok.obj_attributes;
- fattr_to_fattr3(fattr, fattr3);
-
- result.status = AM_NFS3_OK;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\tstat(%s), size = %lu, mtime=%d.%d",
- mp->am_path,
- (u_long) fattr3->size,
- (u_int) fattr3->mtime.seconds,
- (u_int) fattr3->mtime.nseconds);
-
- /* Delay unmount of what was looked up */
- if (mp->am_timeo_w < 4 * gopt.am_timeo_w)
- mp->am_timeo_w += gopt.am_timeo_w;
- mp->am_ttl = now + mp->am_timeo_w;
-
- mp->am_stats.s_getattr++;
-
- return &result;
-}
-
-am_SETATTR3res *
-am_nfs3_setattr_3_svc(am_SETATTR3args *argp, struct svc_req *rqstp)
-{
- static am_SETATTR3res result;
- am_nfs_fh3 *fh = (am_nfs_fh3 *) &argp->object;
- am_pre_op_attr *pre_op_obj = &result.res_u.fail.obj_wcc.before;
- am_post_op_attr *post_op_obj = &result.res_u.fail.obj_wcc.after;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "setattr_3:");
-
- result.status = return_estale_or_rofs(fh, pre_op_obj, post_op_obj);
-
- return &result;
-}
-
-am_LOOKUP3res *
-am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp)
-{
- static am_LOOKUP3res result;
- am_nfs_fh3 *dir = &argp->what.dir;
- am_post_op_attr *post_op_dir;
- am_post_op_attr *post_op_obj;
- am_node *mp;
- int retry;
- uid_t uid;
- gid_t gid;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "lookup_3:");
-
- /* finally, find the effective uid/gid from RPC request */
- if (getcreds(rqstp, &uid, &gid, nfsxprt) < 0)
- plog(XLOG_ERROR, "cannot get uid/gid from RPC credentials");
- xsnprintf(opt_uid, sizeof(uid_str), "%d", (int) uid);
- xsnprintf(opt_gid, sizeof(gid_str), "%d", (int) gid);
-
- mp = fh3_to_mp3(dir, &retry, VLOOK_CREATE);
- if (!mp) {
- post_op_dir = &result.res_u.fail.dir_attributes;
- post_op_dir->attributes_follow = 0;
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- result.status = nfs_error(retry);
- } else {
- post_op_dir = &result.res_u.ok.dir_attributes;
- post_op_obj = &result.res_u.ok.obj_attributes;
- am_filename3 name;
- am_fattr3 *fattr3;
- nfsfattr *fattr;
- am_node *ap;
- int error;
-
- /* dir attributes */
- post_op_dir->attributes_follow = 1;
- fattr = &mp->am_fattr;
- fattr3 = &post_op_dir->am_post_op_attr_u.attributes;
- fattr_to_fattr3(fattr, fattr3);
-
- post_op_obj->attributes_follow = 0;
-
- name = argp->what.name;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\tlookup_3(%s, %s)", mp->am_path, name);
-
- ap = mp->am_al->al_mnt->mf_ops->lookup_child(mp, name, &error, VLOOK_CREATE);
- if (ap && error < 0)
- ap = mp->am_al->al_mnt->mf_ops->mount_child(ap, &error);
- if (ap == 0) {
- if (error < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- result.status = nfs_error(error);
- } else {
- /*
- * XXX: EXPERIMENTAL! Delay unmount of what was looked up. This
- * should reduce the chance for race condition between unmounting an
- * entry synchronously, and re-mounting it asynchronously.
- */
- if (ap->am_ttl < mp->am_ttl)
- ap->am_ttl = mp->am_ttl;
-
- mp_to_fh3(ap, &result.res_u.ok.object);
-
- /* mount attributes */
- post_op_obj->attributes_follow = 1;
- fattr = &ap->am_fattr;
- fattr3 = &post_op_obj->am_post_op_attr_u.attributes;
- fattr_to_fattr3(fattr, fattr3);
-
- result.status = AM_NFS3_OK;
- }
- mp->am_stats.s_lookup++;
- }
- return &result;
-}
-
-am_ACCESS3res *
-am_nfs3_access_3_svc(am_ACCESS3args *argp, struct svc_req *rqstp)
-{
- static am_ACCESS3res result;
-
- am_nfs_fh3 *obj = &argp->object;
- u_int accessbits = argp->access;
- u_int accessmask = AM_ACCESS3_LOOKUP|AM_ACCESS3_READ;
- am_post_op_attr *post_op_obj;
- am_node *mp;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "access_3:");
-
- mp = fh3_to_mp(obj);
- if (!mp) {
- post_op_obj = &result.res_u.fail.obj_attributes;
- post_op_obj->attributes_follow = 0;
- result.status = nfs_error(ENOENT);
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "access_3: ENOENT");
- } else {
- nfsfattr *fattr = &mp->am_fattr;
- am_fattr3 *fattr3;
- post_op_obj = &result.res_u.ok.obj_attributes;
- fattr3 = &post_op_obj->am_post_op_attr_u.attributes;
- post_op_obj->attributes_follow = 1;
- fattr_to_fattr3(fattr, fattr3);
-
- result.res_u.ok.access = accessbits & accessmask;
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "access_3: b=%x m=%x", accessbits, accessmask);
-
- result.status = AM_NFS3_OK;
- }
-
- return &result;
-}
-
-am_READLINK3res *
-am_nfs3_readlink_3_svc(am_READLINK3args *argp, struct svc_req *rqstp)
-{
- static am_READLINK3res result;
-
- am_nfs_fh3 *symlink = (am_nfs_fh3 *) &argp->symlink;
- am_post_op_attr *post_op_sym;
- am_node *mp;
- int retry = 0;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "readlink_3:");
-
- mp = fh3_to_mp3(symlink, &retry, VLOOK_CREATE);
- if (!mp) {
- readlink_retry:
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- post_op_sym = &result.res_u.fail.symlink_attributes;
- post_op_sym->attributes_follow = 0;
- result.status = nfs_error(retry);
- } else {
- nfsfattr *fattr;
- am_fattr3 *fattr3;
- char *ln;
-
- ln = do_readlink(mp, &retry);
- if (!ln)
- goto readlink_retry;
-
- if (amuDebug(D_TRACE) && ln)
- plog(XLOG_DEBUG, "\treadlink_3(%s) = %s", mp->am_path, ln);
-
- result.res_u.ok.data = ln;
-
- post_op_sym = &result.res_u.ok.symlink_attributes;
- post_op_sym->attributes_follow = 1;
- fattr = &mp->am_fattr;
- fattr3 = &post_op_sym->am_post_op_attr_u.attributes;
- fattr_to_fattr3(fattr, fattr3);
-
- mp->am_stats.s_readlink++;
- result.status = AM_NFS3_OK;
- }
-
- return &result;
-}
-
-am_READ3res *
-am_nfs3_read_3_svc(am_READ3args *argp, struct svc_req *rqstp)
-{
- static am_READ3res result;
-
- am_nfs_fh3 *file = (am_nfs_fh3 *) &argp->file;
- am_post_op_attr *post_op_file;
- am_node *mp;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "read_3:");
-
- post_op_file = &result.res_u.fail.file_attributes;
- result.status = nfs_error(EACCES);
-
- mp = fh3_to_mp(file);
- if (!mp)
- post_op_file->attributes_follow = 0;
- else {
- nfsfattr *fattr = &mp->am_fattr;
- am_fattr3 *fattr3 = &post_op_file->am_post_op_attr_u.attributes;
- post_op_file->attributes_follow = 1;
- fattr_to_fattr3(fattr, fattr3);
- }
-
- return &result;
-}
-
-am_WRITE3res *
-am_nfs3_write_3_svc(am_WRITE3args *argp, struct svc_req *rqstp)
-{
- static am_WRITE3res result;
-
- am_nfs_fh3 *file = (am_nfs_fh3 *) &argp->file;
- am_pre_op_attr *pre_op_file = &result.res_u.fail.file_wcc.before;
- am_post_op_attr *post_op_file = &result.res_u.fail.file_wcc.after;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "write_3:");
-
- result.status = return_estale_or_rofs(file, pre_op_file, post_op_file);
-
- return &result;
-}
-
-am_CREATE3res *
-am_nfs3_create_3_svc(am_CREATE3args *argp, struct svc_req *rqstp)
-{
- static am_CREATE3res result;
-
- am_nfs_fh3 *dir = (am_nfs_fh3 *) &argp->where.dir;
- am_pre_op_attr *pre_op_dir = &result.res_u.fail.dir_wcc.before;
- am_post_op_attr *post_op_dir = &result.res_u.fail.dir_wcc.after;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "create_3:");
-
- result.status = return_estale_or_rofs(dir, pre_op_dir, post_op_dir);
-
- return &result;
-}
-
-am_MKDIR3res *
-am_nfs3_mkdir_3_svc(am_MKDIR3args *argp, struct svc_req *rqstp)
-{
- static am_MKDIR3res result;
-
- am_nfs_fh3 *dir = (am_nfs_fh3 *) &argp->where.dir;
- am_pre_op_attr *pre_op_dir = &result.res_u.fail.dir_wcc.before;
- am_post_op_attr *post_op_dir = &result.res_u.fail.dir_wcc.after;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "mkdir_3:");
-
- result.status = return_estale_or_rofs(dir, pre_op_dir, post_op_dir);
-
- return &result;
-}
-
-am_SYMLINK3res *
-am_nfs3_symlink_3_svc(am_SYMLINK3args *argp, struct svc_req *rqstp)
-{
- static am_SYMLINK3res result;
-
- am_nfs_fh3 *dir = (am_nfs_fh3 *) &argp->where.dir;
- am_pre_op_attr *pre_op_dir = &result.res_u.fail.dir_wcc.before;
- am_post_op_attr *post_op_dir = &result.res_u.fail.dir_wcc.after;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "symlink_3:");
-
- result.status = return_estale_or_rofs(dir, pre_op_dir, post_op_dir);
-
- return &result;
-}
-
-am_MKNOD3res *
-am_nfs3_mknod_3_svc(am_MKNOD3args *argp, struct svc_req *rqstp)
-{
- static am_MKNOD3res result;
-
- am_nfs_fh3 *dir = (am_nfs_fh3 *) &argp->where.dir;
- am_pre_op_attr *pre_op_dir = &result.res_u.fail.dir_wcc.before;
- am_post_op_attr *post_op_dir = &result.res_u.fail.dir_wcc.after;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "mknod_3:");
-
- result.status = return_estale_or_rofs(dir, pre_op_dir, post_op_dir);
- return &result;
-}
-
-am_REMOVE3res *
-am_nfs3_remove_3_svc(am_REMOVE3args *argp, struct svc_req *rqstp)
-{
- static am_REMOVE3res result;
-
- am_diropargs3 *obj = &argp->object;
- am_wcc_data dir_wcc;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "remove_3:");
-
- result.status = unlink3_or_rmdir3(obj, &dir_wcc, TRUE);
-
- result.res_u.ok.dir_wcc = dir_wcc;
-
- return &result;
-}
-
-am_RMDIR3res *
-am_nfs3_rmdir_3_svc(am_RMDIR3args *argp, struct svc_req *rqstp)
-{
- static am_RMDIR3res result;
-
- am_diropargs3 *obj = &argp->object;
- am_wcc_data dir_wcc;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "rmdir_3:");
-
- result.status = unlink3_or_rmdir3(obj, &dir_wcc, TRUE);
-
- result.res_u.ok.dir_wcc = dir_wcc;
-
- return &result;
-}
-
-am_RENAME3res *
-am_nfs3_rename_3_svc(am_RENAME3args *argp, struct svc_req *rqstp)
-{
- static am_RENAME3res result;
-
- am_nfs_fh3 *fromdir = (am_nfs_fh3 *) &argp->from.dir;
- am_nfs_fh3 *todir = (am_nfs_fh3 *) &argp->to.dir;
- am_filename3 name = argp->to.name;
- am_node *to_mp, *from_mp;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "rename_3:");
-
- if (!(from_mp = fh3_to_mp(fromdir)) || !(to_mp = fh3_to_mp(todir)))
- result.status = nfs_error(ESTALE);
- /*
- * If the kernel is doing clever things with referenced files
- * then let it pretend...
- */
- else {
- am_wcc_attr *wcc_attr;
- am_fattr3 *fattr3;
- am_wcc_data *to_wcc_data, *from_wcc_data;
- am_pre_op_attr *pre_op_to, *pre_op_from;
- am_post_op_attr *post_op_to, *post_op_from;
- nfsfattr *fattr;
-
- to_wcc_data = &result.res_u.ok.todir_wcc;
-
- pre_op_to = &to_wcc_data->before;
- post_op_to = &to_wcc_data->after;
-
- pre_op_to->attributes_follow = 1;
- fattr = &to_mp->am_fattr;
- wcc_attr = &pre_op_to->am_pre_op_attr_u.attributes;
- fattr_to_wcc_attr(fattr, wcc_attr);
- post_op_to->attributes_follow = 1;
- fattr3 = &post_op_to->am_post_op_attr_u.attributes;
- fattr_to_fattr3(fattr, fattr3);
-
- from_wcc_data = &result.res_u.ok.fromdir_wcc;
-
- pre_op_from = &from_wcc_data->before;
- post_op_from = &from_wcc_data->after;
-
- pre_op_from->attributes_follow = 1;
- fattr = &from_mp->am_fattr;
- wcc_attr = &pre_op_from->am_pre_op_attr_u.attributes;
- fattr_to_wcc_attr(fattr, wcc_attr);
- post_op_from->attributes_follow = 1;
- fattr3 = &post_op_from->am_post_op_attr_u.attributes;
- fattr_to_fattr3(fattr, fattr3);
-
- if (NSTREQ(name, ".nfs", 4))
- result.status = AM_NFS3_OK;
- /*
- * otherwise a failure
- */
- else
- result.status = nfs_error(EROFS);
- }
-
- return &result;
-}
-
-am_LINK3res *
-am_nfs3_link_3_svc(am_LINK3args *argp, struct svc_req *rqstp)
-{
- static am_LINK3res result;
-
- am_nfs_fh3 *file = (am_nfs_fh3 *) &argp->file;
- am_nfs_fh3 *dir = (am_nfs_fh3 *) &argp->link.dir;
- am_post_op_attr *post_op_file;
- am_pre_op_attr *pre_op_dir;
- am_post_op_attr *post_op_dir;
- am_node *mp_file, *mp_dir;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "link_3:");
-
- post_op_file = &result.res_u.fail.file_attributes;
- post_op_file->attributes_follow = 0;
-
- mp_file = fh3_to_mp(file);
- if (mp_file) {
- nfsfattr *fattr = &mp_file->am_fattr;
- am_fattr3 *fattr3 = &post_op_file->am_post_op_attr_u.attributes;
- fattr_to_fattr3(fattr, fattr3);
- }
-
- pre_op_dir = &result.res_u.fail.linkdir_wcc.before;
- pre_op_dir->attributes_follow = 0;
- post_op_dir = &result.res_u.fail.linkdir_wcc.after;
- post_op_dir->attributes_follow = 0;
-
- mp_dir = fh3_to_mp(dir);
- if (mp_dir) {
- nfsfattr *fattr = &mp_dir->am_fattr;
- am_fattr3 *fattr3 = &post_op_dir->am_post_op_attr_u.attributes;
- am_wcc_attr *wcc_attr = &pre_op_dir->am_pre_op_attr_u.attributes;
-
- pre_op_dir->attributes_follow = 1;
- fattr_to_wcc_attr(fattr, wcc_attr);
- post_op_dir->attributes_follow = 1;
- fattr_to_fattr3(fattr, fattr3);
- }
-
- if (!mp_file || !mp_dir)
- result.status = nfs_error(ESTALE);
- else
- result.status = nfs_error(EROFS);
-
- return &result;
-}
-
-am_READDIR3res *
-am_nfs3_readdir_3_svc(am_READDIR3args *argp, struct svc_req *rqstp)
-{
- static am_READDIR3res result;
- static am_entry3 entries[MAX_READDIR_ENTRIES];
- am_nfs_fh3 *dir = (am_nfs_fh3 *) &argp->dir;
- am_cookie3 cookie = argp->cookie;
- am_cookieverf3 cookieverf;
- am_count3 count = argp->count;
- am_post_op_attr *post_op_dir;
- am_node *mp;
- int retry;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "readdir_3:");
-
- memcpy(&cookieverf, &argp->cookieverf, sizeof(am_cookieverf3));
-
- mp = fh3_to_mp3(dir, &retry, VLOOK_CREATE);
- if (mp == NULL) {
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- post_op_dir = &result.res_u.fail.dir_attributes;
- post_op_dir->attributes_follow = 0;
- result.status = nfs_error(retry);
- } else {
- am_dirlist3 *list = &result.res_u.ok.reply;
- am_nfsstat3 status;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\treaddir_3(%s)", mp->am_path);
-
- status = mp->am_al->al_mnt->mf_ops->readdir(mp,
- (voidp)&cookie, list, entries, count);
- if (status == 0) {
- post_op_dir = &result.res_u.ok.dir_attributes;
- nfsfattr *fattr;
- am_fattr3 *fattr3;
-
- fattr = &mp->am_fattr;
- fattr3 = &post_op_dir->am_post_op_attr_u.attributes;
- post_op_dir->attributes_follow = 1;
- fattr_to_fattr3(fattr, fattr3);
- result.status = AM_NFS3_OK;
- } else {
- post_op_dir = &result.res_u.fail.dir_attributes;
- post_op_dir->attributes_follow = 0;
- result.status = nfs_error(status);
- }
-
- mp->am_stats.s_readdir++;
- }
-
- return &result;
-}
-
-am_READDIRPLUS3res *
-am_nfs3_readdirplus_3_svc(am_READDIRPLUS3args *argp, struct svc_req *rqstp)
-{
- static am_READDIRPLUS3res result;
- am_nfs_fh3 *dir = (am_nfs_fh3 *) &argp->dir;
- am_post_op_attr *post_op_dir;
- nfsfattr *fattr;
- am_fattr3 *fattr3;
- am_node *mp;
- int retry;
-
- mp = fh3_to_mp3(dir, &retry, VLOOK_CREATE);
- if (mp == NULL) {
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- post_op_dir = &result.res_u.fail.dir_attributes;
- post_op_dir->attributes_follow = 0;
- result.status = nfs_error(retry);
- } else {
- post_op_dir = &result.res_u.ok.dir_attributes;
- fattr = &mp->am_fattr;
- fattr3 = &post_op_dir->am_post_op_attr_u.attributes;
- post_op_dir->attributes_follow = 1;
- fattr_to_fattr3(fattr, fattr3);
- result.status = AM_NFS3ERR_NOTSUPP;
- }
-
- return &result;
-}
-
-am_FSSTAT3res *
-am_nfs3_fsstat_3_svc(am_FSSTAT3args *argp, struct svc_req *rqstp)
-{
- static am_FSSTAT3res result;
-
- am_nfs_fh3 *fsroot = (am_nfs_fh3 *) &argp->fsroot;
- am_post_op_attr *post_op_fsroot;
- am_node *mp;
- int retry;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "fsstat_3:");
-
- mp = fh3_to_mp3(fsroot, &retry, VLOOK_CREATE);
- if (!mp) {
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- post_op_fsroot = &result.res_u.fail.obj_attributes;
- post_op_fsroot->attributes_follow = 0;
- result.status = nfs_error(retry);
- } else {
- am_FSSTAT3resok *ok = &result.res_u.ok;
- u_int blocks, bfree, bavail;
- nfsfattr *fattr;
- am_fattr3 *fattr3;
- mntent_t mnt;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\tfsstat_3(%s)", mp->am_path);
-
- fattr = &mp->am_fattr;
- post_op_fsroot = &ok->obj_attributes;
- post_op_fsroot->attributes_follow = 1;
- fattr3 = &post_op_fsroot->am_post_op_attr_u.attributes;
- fattr_to_fattr3(fattr, fattr3);
-
- /*
- * just return faked up file system information
- */
- ok->tbytes = 1024;
- ok->invarsec = 0;
-
- /* check if map is browsable and show_statfs_entries=yes */
- if ((gopt.flags & CFM_SHOW_STATFS_ENTRIES) &&
- mp->am_al->al_mnt && mp->am_al->al_mnt->mf_mopts) {
- mnt.mnt_opts = mp->am_al->al_mnt->mf_mopts;
- if (amu_hasmntopt(&mnt, "browsable")) {
- count_map_entries(mp, &blocks, &bfree, &bavail);
- }
- ok->fbytes = bfree;
- ok->abytes = bavail;
- ok->ffiles = bfree;
- ok->afiles = bavail;
- ok->tfiles = blocks;
- } else {
- ok->fbytes = 0;
- ok->abytes = 0;
- ok->ffiles = 0;
- ok->afiles = 0;
- ok->tfiles = 0; /* set to 1 if you don't want empty automounts */
- }
-
- result.status = AM_NFS3_OK;
- mp->am_stats.s_statfs++;
- }
-
- return &result;
-}
-
-#define FSF3_HOMOGENEOUS 0x0008
-
-am_FSINFO3res *
-am_nfs3_fsinfo_3_svc(am_FSINFO3args *argp, struct svc_req *rqstp)
-{
- static am_FSINFO3res result;
-
- am_nfs_fh3 *fsroot = (am_nfs_fh3 *) &argp->fsroot;
- am_post_op_attr *post_op_fsroot;
- am_node *mp;
- int retry;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "fsinfo_3:");
-
- mp = fh3_to_mp3(fsroot, &retry, VLOOK_CREATE);
- if (!mp) {
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- post_op_fsroot = &result.res_u.fail.obj_attributes;
- post_op_fsroot->attributes_follow = 0;
- result.status = nfs_error(retry);
- } else {
- am_FSINFO3resok *ok = &result.res_u.ok;
- nfsfattr *fattr;
- am_fattr3 *fattr3;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\tfsinfo_3(%s)", mp->am_path);
-
- fattr = &mp->am_fattr;
- post_op_fsroot = &ok->obj_attributes;
- post_op_fsroot->attributes_follow = 1;
- fattr3 = &post_op_fsroot->am_post_op_attr_u.attributes;
- fattr_to_fattr3(fattr, fattr3);
-
- /*
- * just return faked up file system information
- */
- ok->rtmax = 0;
- ok->rtpref = 0;
- ok->rtmult = 0;
- ok->wtmax = 0;
- ok->wtpref = 0;
- ok->wtmult = 0;
- ok->dtpref = 1024;
- ok->maxfilesize = 0;
- ok->time_delta.seconds = 1;
- ok->time_delta.nseconds = 0;
- ok->properties = FSF3_HOMOGENEOUS;
-
- result.status = AM_NFS3_OK;
- mp->am_stats.s_fsinfo++;
- }
-
- return &result;
-}
-
-am_PATHCONF3res *
-am_nfs3_pathconf_3_svc(am_PATHCONF3args *argp, struct svc_req *rqstp)
-{
- static am_PATHCONF3res result;
-
- am_nfs_fh3 *obj = (am_nfs_fh3 *) &argp->object;
- am_post_op_attr *post_op_obj;
- am_node *mp;
- int retry;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "pathconf_3:");
-
- mp = fh3_to_mp3(obj, &retry, VLOOK_CREATE);
- if (!mp) {
- if (retry < 0) {
- amd_stats.d_drops++;
- return 0;
- }
- post_op_obj = &result.res_u.fail.obj_attributes;
- post_op_obj->attributes_follow = 0;
- result.status = nfs_error(retry);
- } else {
- am_PATHCONF3resok *ok = &result.res_u.ok;
- nfsfattr *fattr;
- am_fattr3 *fattr3;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "\tpathconf_3(%s)", mp->am_path);
-
- fattr = &mp->am_fattr;
- post_op_obj = &ok->obj_attributes;
- post_op_obj->attributes_follow = 1;
- fattr3 = &post_op_obj->am_post_op_attr_u.attributes;
- fattr_to_fattr3(fattr, fattr3);
-
- ok->linkmax = 0;
- ok->name_max = NAME_MAX;
- ok->no_trunc = 1;
- ok->chown_restricted = 1;
- ok->case_insensitive = 0;
- ok->case_preserving = 1;
-
- result.status = AM_NFS3_OK;
- mp->am_stats.s_pathconf++;
- }
-
- return &result;
-}
-
-am_COMMIT3res *
-am_nfs3_commit_3_svc(am_COMMIT3args *argp, struct svc_req *rqstp)
-{
- static am_COMMIT3res result;
-
- am_nfs_fh3 *file = (am_nfs_fh3 *) &argp->file;
- am_pre_op_attr *pre_op_file = &result.res_u.fail.file_wcc.before;
- am_post_op_attr *post_op_file = &result.res_u.fail.file_wcc.after;
-
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "commit_3:");
-
- result.status = return_estale_or_rofs(file, pre_op_file, post_op_file);
-
- return &result;
-}
-#endif /* HAVE_FS_NFS3 */
diff --git a/contrib/amd/amd/ops_TEMPLATE.c b/contrib/amd/amd/ops_TEMPLATE.c
deleted file mode 100644
index b873c8ece271..000000000000
--- a/contrib/amd/amd/ops_TEMPLATE.c
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_TEMPLATE.c
- *
- */
-
-/*
- * An empty template for an amd pseudo filesystem "foofs".
- */
-
-/*
- * NOTE: if this is an Amd file system, prepend "amfs_" to all foofs symbols
- * and renamed the file name to amfs_foofs.c. If it is a native file system
- * (such as pcfs, isofs, or ffs), then you can keep the names as is, and
- * just rename the file to ops_foofs.c.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward declarations */
-static char *foofs_match(am_opts *fo);
-static int foofs_init(mntfs *mf);
-static int foofs_mount(am_node *mp, mntfs *mf);
-static int foofs_umount(am_node *mp, mntfs *mf);
-static am_node *foofs_lookuppn(am_node *mp, char *fname, int *error_return, int op);
-static int foofs_readdir(am_node *mp, void cookie, voidp dp, voidp ep, u_int count);
-static am_node *foofs_readlink(am_node *mp, int *error_return);
-static void foofs_mounted(am_node *am, mntfs *mf);
-static void foofs_umounted(am_node *mp, mntfs *mf);
-static fserver *foofs_ffserver(mntfs *mf);
-
-
-/*
- * Foofs operations.
- * Define only those you need, others set to 0 (NULL)
- */
-am_ops foofs_ops =
-{
- "foofs", /* name of file system */
- foofs_match, /* match */
- foofs_init, /* initialize */
- foofs_mount, /* mount vnode */
- foofs_umount, /* unmount vnode */
- foofs_lookup_child, /* lookup path-name */
- foofs_mount_child, /* mount path-name */
- foofs_readdir, /* read directory */
- foofs_readlink, /* read link */
- foofs_mounted, /* after-mount extra actions */
- foofs_umounted, /* after-umount extra actions */
- foofs_ffserver, /* find a file server */
- foofs_get_wchan, /* return the waiting channel */
- FS_MKMNT | FS_BACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_TEMPLATE_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * Check that f/s has all needed fields.
- * Returns: matched string if found, NULL otherwise.
- */
-static char *
-foofs_match(am_opts *fo)
-{
- char *cp = "fill this with a way to find the match";
-
- plog(XLOG_INFO, "entering foofs_match...");
-
- if (cp)
- return cp; /* OK */
-
- return NULL; /* not OK */
-}
-
-
-/*
- * Initialize.
- * Returns: 0 if OK, non-zero (errno) if failed.
- */
-static int
-foofs_init(mntfs *mf)
-{
- int error = 0;
-
- plog(XLOG_INFO, "entering foofs_init...");
-
- error = EPERM; /* XXX: fixme */
- return error;
-}
-
-
-/*
- * Mount vnode.
- * Returns: 0 if OK, non-zero (errno) if failed.
- */
-static int
-foofs_mount(am_node *mp)
-{
- int error = 0;
-
- plog(XLOG_INFO, "entering foofs_mount...");
-
- error = EPERM; /* XXX: fixme */
- return error;
-}
-
-
-/*
- * Mount vfs.
- * Returns: 0 if OK, non-zero (errno) if failed.
- */
-static int
-foofs_fmount(mntfs *mf)
-{
- int error = 0;
-
- plog(XLOG_INFO, "entering foofs_fmount...");
-
- error = EPERM; /* XXX: fixme */
- return error;
-}
-
-
-/*
- * Unmount vnode.
- * Returns: 0 if OK, non-zero (errno) if failed.
- */
-static int
-foofs_umount(am_node *mp)
-{
- int error = 0;
-
- plog(XLOG_INFO, "entering foofs_umount...");
-
- error = EPERM; /* XXX: fixme */
- return error;
-}
-
-
-/*
- * Unmount VFS.
- * Returns: 0 if OK, non-zero (errno) if failed.
- */
-static int
-foofs_fumount(mntfs *mf)
-{
- int error = 0;
-
- plog(XLOG_INFO, "entering foofs_fumount...");
-
- error = EPERM; /* XXX: fixme */
- return error;
-}
-
-
-/*
- * Lookup path-name.
- * Returns: the am_node that was found, or NULL if failed.
- * If failed, also fills in errno in error_return.
- */
-static am_node *
-foofs_lookuppn(am_node *mp, char *fname, int *error_return, int op)
-{
- int error = 0;
-
- plog(XLOG_INFO, "entering foofs_lookuppn...");
-
- error = EPERM; /* XXX: fixme */
-
- *error_return = error;
- return NULL;
-}
-
-
-/*
- * Read directory.
- * Returns: 0 if OK, non-zero (errno) if failed.
- * If OK, fills in ep with chain of directory entries.
- */
-static int
-foofs_readdir(am_node *mp, void cookie, voidp dp, voidp ep, u_int count)
-{
- int error = 0;
-
- plog(XLOG_INFO, "entering foofs_readdir...");
-
- error = EPERM; /* XXX: fixme */
- return error;
-}
-
-
-/*
- * Read link.
- * Returns: am_node found, or NULL if not found.
- * If failed, fills in errno in error_return.
- */
-static am_node *
-foofs_readlink(am_node *mp, int *error_return)
-{
- int error = 0;
-
- plog(XLOG_INFO, "entering foofs_readlink...");
-
- error = EPERM; /* XXX: fixme */
-
- *error_return = error;
- return NULL;
-}
-
-
-/*
- * Async mount callback function.
- * After the base mount went OK, sometimes
- * there are additional actions that are needed. See union_mounted() and
- * toplvl_mounted().
- */
-static void
-foofs_mounted(mntfs *mf)
-{
- plog(XLOG_INFO, "entering foofs_mounted...");
-
- return;
-}
-
-
-/*
- * Async unmount callback function.
- * After the base umount() succeeds, we may want to take extra actions,
- * such as informing remote mount daemons that we've unmounted them.
- * See amfs_auto_umounted(), host_umounted(), nfs_umounted().
- */
-static void
-foofs_umounted(am_node *mp)
-{
- plog(XLOG_INFO, "entering foofs_umounted...");
-
- return;
-}
-
-
-/*
- * Find a file server.
- * Returns: fserver of found server, or NULL if not found.
- */
-static fserver *
-foofs_ffserver(mntfs *mf)
-{
- plog(XLOG_INFO, "entering foofs_ffserver...");
-
- return NULL;
-}
-
-
-/*
- * Normally just return mf. Only inherit needs to do special tricks.
- */
-static wchan_t *
-foofs_get_wchan(mntfs *mf)
-{
- plog(XLOG_INFO, "entering foofs_get_wchan...");
-
- return mf;
-}
diff --git a/contrib/amd/amd/ops_cachefs.c b/contrib/amd/amd/ops_cachefs.c
deleted file mode 100644
index 26a333527457..000000000000
--- a/contrib/amd/amd/ops_cachefs.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_cachefs.c
- *
- */
-
-/*
- * Caching filesystem (Solaris 2.x)
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward declarations */
-static char *cachefs_match(am_opts *fo);
-static int cachefs_init(mntfs *mf);
-static int cachefs_mount(am_node *am, mntfs *mf);
-static int cachefs_umount(am_node *am, mntfs *mf);
-
-
-/*
- * Ops structure
- */
-am_ops cachefs_ops =
-{
- "cachefs",
- cachefs_match,
- cachefs_init,
- cachefs_mount,
- cachefs_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* cachefs_readlink */
- 0, /* cachefs_mounted */
- 0, /* cachefs_umounted */
- amfs_generic_find_srvr,
- 0, /* cachefs_get_wchan */
- FS_MKMNT | FS_NOTIMEOUT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_CACHEFS_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * Check that f/s has all needed fields.
- * Returns: matched string if found, NULL otherwise.
- */
-static char *
-cachefs_match(am_opts *fo)
-{
- /* sanity check */
- if (!fo->opt_rfs || !fo->opt_fs || !fo->opt_cachedir) {
- plog(XLOG_USER, "cachefs: must specify cachedir, rfs, and fs");
- return NULL;
- }
-
- dlog("CACHEFS: using cache directory \"%s\"", fo->opt_cachedir);
-
- /* determine magic cookie to put in mtab */
- return xstrdup(fo->opt_cachedir);
-}
-
-
-/*
- * Initialize.
- * Returns: 0 if OK, non-zero (errno) if failed.
- */
-static int
-cachefs_init(mntfs *mf)
-{
- /*
- * Save cache directory name
- */
- if (!mf->mf_private) {
- mf->mf_private = (voidp) xstrdup(mf->mf_fo->opt_cachedir);
- mf->mf_prfree = (void (*)(voidp)) free;
- }
-
- return 0;
-}
-
-
-/*
- * mntpt is the mount point ($fs) [XXX: was 'dir']
- * backdir is the mounted pathname ($rfs) [XXX: was 'fs_name']
- * cachedir is the cache directory ($cachedir)
- */
-static int
-mount_cachefs(char *mntdir, char *backdir, char *cachedir,
- char *opts, int on_autofs)
-{
- cachefs_args_t ca;
- mntent_t mnt;
- int flags;
- char *cp;
- MTYPE_TYPE type = MOUNT_TYPE_CACHEFS; /* F/S mount type */
-
- memset((voidp) &ca, 0, sizeof(ca)); /* Paranoid */
-
- /*
- * Fill in the mount structure
- */
- memset((voidp) &mnt, 0, sizeof(mnt));
- mnt.mnt_dir = mntdir;
- mnt.mnt_fsname = backdir;
- mnt.mnt_type = MNTTAB_TYPE_CACHEFS;
- mnt.mnt_opts = opts;
-
- flags = compute_mount_flags(&mnt);
-#ifdef HAVE_FS_AUTOFS
- if (on_autofs)
- flags |= autofs_compute_mount_flags(&mnt);
-#endif /* HAVE_FS_AUTOFS */
-
- /* Fill in cachefs mount arguments */
-
- /*
- * XXX: Caveats
- * (1) cache directory is NOT checked for sanity beforehand, nor is it
- * purged. Maybe it should be purged first?
- * (2) cache directory is NOT locked. Should we?
- */
-
- /* mount flags */
- ca.cfs_options.opt_flags = CFS_WRITE_AROUND | CFS_ACCESS_BACKFS;
- /* cache population size */
- ca.cfs_options.opt_popsize = DEF_POP_SIZE; /* default: 64K */
- /* filegrp size */
- ca.cfs_options.opt_fgsize = DEF_FILEGRP_SIZE; /* default: 256 */
-
- /* CFS ID for file system (must be unique) */
- ca.cfs_fsid = cachedir;
-
- /* CFS fscdir name */
- memset(ca.cfs_cacheid, 0, sizeof(ca.cfs_cacheid));
- /*
- * Append cacheid and mountpoint.
- * sizeof(cfs_cacheid) should be C_MAX_MOUNT_FSCDIRNAME as per
- * <sys/fs/cachefs_fs.h> (checked on Solaris 8).
- */
- xsnprintf(ca.cfs_cacheid, sizeof(ca.cfs_cacheid),
- "%s:%s", ca.cfs_fsid, mntdir);
- /* convert '/' to '_' (Solaris does that...) */
- cp = ca.cfs_cacheid;
- while ((cp = strpbrk(cp, "/")) != NULL)
- *cp = '_';
-
- /* path for this cache dir */
- ca.cfs_cachedir = cachedir;
-
- /* back filesystem dir */
- ca.cfs_backfs = backdir;
-
- /* same as nfs values (XXX: need to handle these options) */
- ca.cfs_acregmin = 0;
- ca.cfs_acregmax = 0;
- ca.cfs_acdirmin = 0;
- ca.cfs_acdirmax = 0;
-
- /*
- * Call generic mount routine
- */
- return mount_fs(&mnt, flags, (caddr_t) &ca, 0, type, 0, NULL, mnttab_file_name, on_autofs);
-}
-
-
-static int
-cachefs_mount(am_node *am, mntfs *mf)
-{
- int on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
- int error;
-
- error = mount_cachefs(mf->mf_mount,
- mf->mf_fo->opt_rfs,
- mf->mf_fo->opt_cachedir,
- mf->mf_mopts,
- on_autofs);
- if (error) {
- errno = error;
- /* according to Solaris, if errno==ESRCH, "options to not match" */
- if (error == ESRCH)
- plog(XLOG_ERROR, "mount_cachefs: options to no match: %m");
- else
- plog(XLOG_ERROR, "mount_cachefs: %m");
- return error;
- }
-
- return 0;
-}
-
-
-static int
-cachefs_umount(am_node *am, mntfs *mf)
-{
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
- int error;
-
- error = UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
-
- /*
- * In the case of cachefs, we must fsck the cache directory. Otherwise,
- * it will remain inconsistent, and the next cachefs mount will fail
- * with the error "no space left on device" (ENOSPC).
- *
- * XXX: this is hacky! use fork/exec/wait instead...
- */
- if (!error) {
- char *cachedir = NULL;
- char cmd[128];
-
- cachedir = (char *) mf->mf_private;
- plog(XLOG_INFO, "running fsck on cache directory \"%s\"", cachedir);
- xsnprintf(cmd, sizeof(cmd), "fsck -F cachefs %s", cachedir);
- system(cmd);
- }
-
- return error;
-}
diff --git a/contrib/amd/amd/ops_cdfs.c b/contrib/amd/amd/ops_cdfs.c
deleted file mode 100644
index 6ceb76408b03..000000000000
--- a/contrib/amd/amd/ops_cdfs.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_cdfs.c
- *
- */
-
-/*
- * High Sierra (CD-ROM) file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward declarations */
-static char *cdfs_match(am_opts *fo);
-static int cdfs_mount(am_node *am, mntfs *mf);
-static int cdfs_umount(am_node *am, mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops cdfs_ops =
-{
- "cdfs",
- cdfs_match,
- 0, /* cdfs_init */
- cdfs_mount,
- cdfs_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* cdfs_readlink */
- 0, /* cdfs_mounted */
- 0, /* cdfs_umounted */
- amfs_generic_find_srvr,
- 0, /* cdfs_get_wchan */
- FS_MKMNT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_CDFS_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * CDFS needs remote filesystem.
- */
-static char *
-cdfs_match(am_opts *fo)
-{
- if (!fo->opt_dev) {
- plog(XLOG_USER, "cdfs: no source device specified");
- return 0;
- }
- dlog("CDFS: mounting device \"%s\" on \"%s\"",
- fo->opt_dev, fo->opt_fs);
-
- /*
- * Determine magic cookie to put in mtab
- */
- return xstrdup(fo->opt_dev);
-}
-
-
-static int
-mount_cdfs(char *mntdir, char *fs_name, char *opts, int on_autofs)
-{
- cdfs_args_t cdfs_args;
- mntent_t mnt;
- int genflags, cdfs_flags, retval;
-
- /*
- * Figure out the name of the file system type.
- */
- MTYPE_TYPE type = MOUNT_TYPE_CDFS;
-
- memset((voidp) &cdfs_args, 0, sizeof(cdfs_args)); /* Paranoid */
- cdfs_flags = 0;
-
- /*
- * Fill in the mount structure
- */
- memset((voidp) &mnt, 0, sizeof(mnt));
- mnt.mnt_dir = mntdir;
- mnt.mnt_fsname = fs_name;
- mnt.mnt_type = MNTTAB_TYPE_CDFS;
- mnt.mnt_opts = opts;
-
-#if defined(MNT2_CDFS_OPT_DEFPERM) && defined(MNTTAB_OPT_DEFPERM)
- if (amu_hasmntopt(&mnt, MNTTAB_OPT_DEFPERM))
-# ifdef MNT2_CDFS_OPT_DEFPERM
- cdfs_flags |= MNT2_CDFS_OPT_DEFPERM;
-# else /* not MNT2_CDFS_OPT_DEFPERM */
- cdfs_flags &= ~MNT2_CDFS_OPT_NODEFPERM;
-# endif /* not MNT2_CDFS_OPT_DEFPERM */
-#endif /* defined(MNT2_CDFS_OPT_DEFPERM) && defined(MNTTAB_OPT_DEFPERM) */
-
-#if defined(MNT2_CDFS_OPT_NODEFPERM) && defined(MNTTAB_OPT_NODEFPERM)
- if (amu_hasmntopt(&mnt, MNTTAB_OPT_NODEFPERM))
- cdfs_flags |= MNT2_CDFS_OPT_NODEFPERM;
-#endif /* MNTTAB_OPT_NODEFPERM */
-
-#if defined(MNT2_CDFS_OPT_NOVERSION) && defined(MNTTAB_OPT_NOVERSION)
- if (amu_hasmntopt(&mnt, MNTTAB_OPT_NOVERSION))
- cdfs_flags |= MNT2_CDFS_OPT_NOVERSION;
-#endif /* defined(MNT2_CDFS_OPT_NOVERSION) && defined(MNTTAB_OPT_NOVERSION) */
-
-#if defined(MNT2_CDFS_OPT_RRIP) && defined(MNTTAB_OPT_RRIP)
- if (amu_hasmntopt(&mnt, MNTTAB_OPT_RRIP))
- cdfs_flags |= MNT2_CDFS_OPT_RRIP;
-#endif /* defined(MNT2_CDFS_OPT_RRIP) && defined(MNTTAB_OPT_RRIP) */
-
-#if defined(MNT2_CDFS_OPT_NORRIP) && defined(MNTTAB_OPT_NORRIP)
- if (amu_hasmntopt(&mnt, MNTTAB_OPT_NORRIP))
- cdfs_flags |= MNT2_CDFS_OPT_NORRIP;
-#endif /* defined(MNT2_CDFS_OPT_NORRIP) && defined(MNTTAB_OPT_NORRIP) */
-
-#if defined(MNT2_CDFS_OPT_GENS) && defined(MNTTAB_OPT_GENS)
- if (amu_hasmntopt(&mnt, MNTTAB_OPT_GENS))
- cdfs_flags |= MNT2_CDFS_OPT_GENS;
-#endif /* defined(MNT2_CDFS_OPT_GENS) && defined(MNTTAB_OPT_GENS) */
-
-#if defined(MNT2_CDFS_OPT_EXTATT) && defined(MNTTAB_OPT_EXTATT)
- if (amu_hasmntopt(&mnt, MNTTAB_OPT_EXTATT))
- cdfs_flags |= MNT2_CDFS_OPT_EXTATT;
-#endif /* defined(MNT2_CDFS_OPT_EXTATT) && defined(MNTTAB_OPT_EXTATT) */
-
-#if defined(MNT2_CDFS_OPT_NOCASETRANS) && defined(MNTTAB_OPT_NOCASETRANS)
- if (amu_hasmntopt(&mnt, MNTTAB_OPT_NOCASETRANS))
- cdfs_flags |= MNT2_CDFS_OPT_NOCASETRANS;
-#endif /* defined(MNT2_CDFS_OPT_NOCASETRANS) && defined(MNTTAB_OPT_NOCASETRANS) */
-
-#if defined(MNT2_CDFS_OPT_NOJOLIET) && defined(MNTTAB_OPT_NOJOLIET)
- if (amu_hasmntopt(&mnt, MNTTAB_OPT_NOJOLIET))
- cdfs_flags |= MNT2_CDFS_OPT_NOJOLIET;
-#endif /* defined(MNT2_CDFS_OPT_NOJOLIET) && defined(MNTTAB_OPT_NOJOLIET) */
-
-#if defined(MNT2_CDFS_OPT_RRCASEINS) && defined(MNTTAB_OPT_RRCASEINS)
- if (amu_hasmntopt(&mnt, MNTTAB_OPT_RRCASEINS))
- cdfs_flags |= MNT2_CDFS_OPT_RRCASEINS;
-#endif /* defined(MNT2_CDFS_OPT_RRCASEINS) && defined(MNTTAB_OPT_RRCASEINS) */
-
- genflags = compute_mount_flags(&mnt);
-#ifdef HAVE_FS_AUTOFS
- if (on_autofs)
- genflags |= autofs_compute_mount_flags(&mnt);
-#endif /* HAVE_FS_AUTOFS */
-
-#ifdef HAVE_CDFS_ARGS_T_FLAGS
- cdfs_args.flags = cdfs_flags;
-#endif /* HAVE_CDFS_ARGS_T_FLAGS */
-
-#ifdef HAVE_CDFS_ARGS_T_ISO_FLAGS
- cdfs_args.iso_flags = genflags | cdfs_flags;
-#endif /* HAVE_CDFS_ARGS_T_ISO_FLAGS */
-
-#ifdef HAVE_CDFS_ARGS_T_ISO_PGTHRESH
- cdfs_args.iso_pgthresh = hasmntval(&mnt, MNTTAB_OPT_PGTHRESH);
-#endif /* HAVE_CDFS_ARGS_T_ISO_PGTHRESH */
-
-#ifdef HAVE_CDFS_ARGS_T_NORRIP
- /* XXX: need to provide norrip mount opt */
- cdfs_args.norrip = 0; /* use Rock-Ridge Protocol extensions */
-#endif /* HAVE_CDFS_ARGS_T_NORRIP */
-
-#ifdef HAVE_CDFS_ARGS_T_SSECTOR
- /* XXX: need to provide ssector mount option */
- cdfs_args.ssector = 0; /* use 1st session on disk */
-#endif /* HAVE_CDFS_ARGS_T_SSECTOR */
-
-#ifdef HAVE_CDFS_ARGS_T_FSPEC
- cdfs_args.fspec = fs_name;
-#endif /* HAVE_CDFS_ARGS_T_FSPEC */
-
- /*
- * Call generic mount routine
- */
- retval = mount_fs(&mnt, genflags, (caddr_t) &cdfs_args, 0, type, 0, NULL, mnttab_file_name, on_autofs);
-
- return retval;
-}
-
-
-static int
-cdfs_mount(am_node *am, mntfs *mf)
-{
- int on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
- int error;
-
- error = mount_cdfs(mf->mf_mount, mf->mf_info, mf->mf_mopts, on_autofs);
- if (error) {
- errno = error;
- plog(XLOG_ERROR, "mount_cdfs: %m");
- return error;
- }
- return 0;
-}
-
-
-static int
-cdfs_umount(am_node *am, mntfs *mf)
-{
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
-
- return UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
-}
diff --git a/contrib/amd/amd/ops_efs.c b/contrib/amd/amd/ops_efs.c
deleted file mode 100644
index 58bf8f0b76cb..000000000000
--- a/contrib/amd/amd/ops_efs.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_efs.c
- *
- */
-
-/*
- * Irix UN*X file system: EFS (Extent File System)
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward declarations */
-static char *efs_match(am_opts *fo);
-static int efs_mount(am_node *am, mntfs *mf);
-static int efs_umount(am_node *am, mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops efs_ops =
-{
- "efs",
- efs_match,
- 0, /* efs_init */
- efs_mount,
- efs_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* efs_readlink */
- 0, /* efs_mounted */
- 0, /* efs_umounted */
- amfs_generic_find_srvr,
- 0, /* efs_get_wchan */
- FS_MKMNT | FS_NOTIMEOUT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_EFS_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * EFS needs local filesystem and device.
- */
-static char *
-efs_match(am_opts *fo)
-{
-
- if (!fo->opt_dev) {
- plog(XLOG_USER, "efs: no device specified");
- return 0;
- }
-
- dlog("EFS: mounting device \"%s\" on \"%s\"", fo->opt_dev, fo->opt_fs);
-
- /*
- * Determine magic cookie to put in mtab
- */
- return xstrdup(fo->opt_dev);
-}
-
-
-static int
-mount_efs(char *mntdir, char *fs_name, char *opts, int on_autofs)
-{
- efs_args_t efs_args;
- mntent_t mnt;
- int flags;
-
- /*
- * Figure out the name of the file system type.
- */
- MTYPE_TYPE type = MOUNT_TYPE_EFS;
-
- memset((voidp) &efs_args, 0, sizeof(efs_args)); /* Paranoid */
-
- /*
- * Fill in the mount structure
- */
- memset((voidp) &mnt, 0, sizeof(mnt));
- mnt.mnt_dir = mntdir;
- mnt.mnt_fsname = fs_name;
- mnt.mnt_type = MNTTAB_TYPE_EFS;
- mnt.mnt_opts = opts;
-
- flags = compute_mount_flags(&mnt);
-#ifdef HAVE_FS_AUTOFS
- if (on_autofs)
- flags |= autofs_compute_mount_flags(&mnt);
-#endif /* HAVE_FS_AUTOFS */
-
-#ifdef HAVE_EFS_ARGS_T_FLAGS
- efs_args.flags = 0; /* XXX: fix this to correct flags */
-#endif /* HAVE_EFS_ARGS_T_FLAGS */
-#ifdef HAVE_EFS_ARGS_T_FSPEC
- efs_args.fspec = fs_name;
-#endif /* HAVE_EFS_ARGS_T_FSPEC */
-#if defined(HAVE_EFS_ARGS_T_VERSION) && defined(EFS_MNT_VERSION)
- efs_args.version = EFS_MNT_VERSION;
-#endif /* HAVE_EFS_ARGS_T_VERSION && EFS_MNT_VERSION */
-
- /*
- * Call generic mount routine
- */
- return mount_fs(&mnt, flags, (caddr_t) &efs_args, 0, type, 0, NULL, mnttab_file_name, on_autofs);
-}
-
-
-static int
-efs_mount(am_node *am, mntfs *mf)
-{
- int on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
- int error;
-
- error = mount_efs(mf->mf_mount, mf->mf_info, mf->mf_mopts, on_autofs);
- if (error) {
- errno = error;
- plog(XLOG_ERROR, "mount_efs: %m");
- return error;
- }
-
- return 0;
-}
-
-
-static int
-efs_umount(am_node *am, mntfs *mf)
-{
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
-
- return UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
-}
-
diff --git a/contrib/amd/amd/ops_ext.c b/contrib/amd/amd/ops_ext.c
deleted file mode 100644
index 106ab31f3748..000000000000
--- a/contrib/amd/amd/ops_ext.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_ext.c
- *
- */
-
-/*
- * Irix UN*X file system: EXT (Extended File System)
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward declarations */
-static char *ext_match(am_opts *fo);
-static int ext2_mount(am_node *am, mntfs *mf);
-static int ext3_mount(am_node *am, mntfs *mf);
-static int ext4_mount(am_node *am, mntfs *mf);
-static int ext_umount(am_node *am, mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops ext2_ops =
-{
- "ext2",
- ext_match,
- 0, /* ext_init */
- ext2_mount,
- ext_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* ext_readlink */
- 0, /* ext_mounted */
- 0, /* ext_umounted */
- amfs_generic_find_srvr,
- 0, /* ext_get_wchan */
- FS_MKMNT | FS_NOTIMEOUT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_EXT_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-am_ops ext3_ops =
-{
- "ext3",
- ext_match,
- 0, /* ext_init */
- ext3_mount,
- ext_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* ext_readlink */
- 0, /* ext_mounted */
- 0, /* ext_umounted */
- amfs_generic_find_srvr,
- 0, /* ext_get_wchan */
- FS_MKMNT | FS_NOTIMEOUT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_EXT_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-am_ops ext4_ops =
-{
- "ext4",
- ext_match,
- 0, /* ext_init */
- ext4_mount,
- ext_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* ext_readlink */
- 0, /* ext_mounted */
- 0, /* ext_umounted */
- amfs_generic_find_srvr,
- 0, /* ext_get_wchan */
- FS_MKMNT | FS_NOTIMEOUT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_EXT_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-/*
- * EXT needs local filesystem and device.
- */
-static char *
-ext_match(am_opts *fo)
-{
-
- if (!fo->opt_dev) {
- plog(XLOG_USER, "ext: no device specified");
- return 0;
- }
-
- dlog("EXT: mounting device \"%s\" on \"%s\"", fo->opt_dev, fo->opt_fs);
-
- /*
- * Determine magic cookie to put in mtab
- */
- return xstrdup(fo->opt_dev);
-}
-
-
-static int
-mount_ext(char *mntdir, char *fs_name, char *opts, int on_autofs, char *
- mount_type, const char *mnttab_type)
-{
- ext_args_t ext_args;
- mntent_t mnt;
- int flags;
-
- /*
- * Figure out the name of the file system type.
- */
- MTYPE_TYPE type = mount_type;
-
- memset((voidp) &ext_args, 0, sizeof(ext_args)); /* Paranoid */
-
- /*
- * Fill in the mount structure
- */
- memset((voidp) &mnt, 0, sizeof(mnt));
- mnt.mnt_dir = mntdir;
- mnt.mnt_fsname = fs_name;
- mnt.mnt_type = mnttab_type;
- mnt.mnt_opts = opts;
-
- flags = compute_mount_flags(&mnt);
-#ifdef HAVE_FS_AUTOFS
- if (on_autofs)
- flags |= autofs_compute_mount_flags(&mnt);
-#endif /* HAVE_FS_AUTOFS */
-
- /*
- * Call generic mount routine
- */
- return mount_fs(&mnt, flags, (caddr_t) &ext_args, 0, type, 0, NULL, mnttab_file_name, on_autofs);
-}
-
-
-static int
-ext_mount(am_node *am, mntfs *mf, char *mount_type,
- const char *mnttab_type)
-{
- int on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
- int error;
-
- error = mount_ext(mf->mf_mount, mf->mf_info, mf->mf_mopts, on_autofs,
- mount_type, mnttab_type);
- if (error) {
- errno = error;
- plog(XLOG_ERROR, "mount_ext: %m");
- return error;
- }
-
- return 0;
-}
-
-static int
-ext2_mount(am_node *am, mntfs *mf)
-{
- return ext_mount(am, mf, MOUNT_TYPE_EXT2, MNTTAB_TYPE_EXT2);
-}
-
-static int
-ext3_mount(am_node *am, mntfs *mf)
-{
- return ext_mount(am, mf, MOUNT_TYPE_EXT3, MNTTAB_TYPE_EXT3);
-}
-
-static int
-ext4_mount(am_node *am, mntfs *mf)
-{
- return ext_mount(am, mf, MOUNT_TYPE_EXT4, MNTTAB_TYPE_EXT4);
-}
-
-static int
-ext_umount(am_node *am, mntfs *mf)
-{
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
-
- return UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
-}
diff --git a/contrib/amd/amd/ops_lofs.c b/contrib/amd/amd/ops_lofs.c
deleted file mode 100644
index b04f64399c18..000000000000
--- a/contrib/amd/amd/ops_lofs.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_lofs.c
- *
- */
-
-/*
- * Loopback file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward definitions */
-static char *lofs_match(am_opts *fo);
-static int lofs_mount(am_node *am, mntfs *mf);
-static int lofs_umount(am_node *am, mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops lofs_ops =
-{
- "lofs",
- lofs_match,
- 0, /* lofs_init */
- lofs_mount,
- lofs_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* lofs_readlink */
- 0, /* lofs_mounted */
- 0, /* lofs_umounted */
- amfs_generic_find_srvr,
- 0, /* lofs_get_wchan */
- FS_MKMNT | FS_NOTIMEOUT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_LOFS_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * LOFS needs remote filesystem.
- */
-static char *
-lofs_match(am_opts *fo)
-{
- if (!fo->opt_rfs) {
- plog(XLOG_USER, "lofs: no source filesystem specified");
- return 0;
- }
- dlog("LOFS: mounting fs \"%s\" on \"%s\"",
- fo->opt_rfs, fo->opt_fs);
-
- /*
- * Determine magic cookie to put in mtab
- */
- return xstrdup(fo->opt_rfs);
-}
-
-
-int
-mount_lofs(char *mntdir, char *fs_name, char *opts, int on_autofs)
-{
- mntent_t mnt;
- int flags;
-
- /*
- * Figure out the name of the file system type.
- */
- MTYPE_TYPE type = MOUNT_TYPE_LOFS;
-
- /*
- * Fill in the mount structure
- */
- memset((voidp) &mnt, 0, sizeof(mnt));
- mnt.mnt_dir = mntdir;
- mnt.mnt_fsname = fs_name;
- mnt.mnt_type = MNTTAB_TYPE_LOFS;
- mnt.mnt_opts = opts;
-
- flags = compute_mount_flags(&mnt);
-#ifdef HAVE_FS_AUTOFS
- if (on_autofs)
- flags |= autofs_compute_mount_flags(&mnt);
-#endif /* HAVE_FS_AUTOFS */
-
- /*
- * Call generic mount routine
- */
- return mount_fs(&mnt, flags, NULL, 0, type, 0, NULL, mnttab_file_name, on_autofs);
-}
-
-
-static int
-lofs_mount(am_node *am, mntfs *mf)
-{
- int on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
- int error;
-
- error = mount_lofs(mf->mf_mount, mf->mf_info, mf->mf_mopts, on_autofs);
- if (error) {
- errno = error;
- plog(XLOG_ERROR, "mount_lofs: %m");
- return error;
- }
- return 0;
-}
-
-
-static int
-lofs_umount(am_node *am, mntfs *mf)
-{
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
-
- return UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
-}
diff --git a/contrib/amd/amd/ops_lustre.c b/contrib/amd/amd/ops_lustre.c
deleted file mode 100644
index 1b321ce4e8c4..000000000000
--- a/contrib/amd/amd/ops_lustre.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (c) 2011 Christos Zoulas
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_lustre.c
- *
- */
-
-/*
- * Lustre file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#ifdef HAVE_FS_LUSTRE
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward declarations */
-static char *lustre_match(am_opts *fo);
-static int lustre_mount(am_node *am, mntfs *mf);
-static int lustre_umount(am_node *am, mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops lustre_ops =
-{
- "lustre",
- lustre_match,
- 0, /* lustre_init */
- lustre_mount,
- lustre_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* lustre_readlink */
- 0, /* lustre_mounted */
- 0, /* lustre_umounted */
- amfs_generic_find_srvr,
- 0, /* lustre_get_wchan */
- FS_MKMNT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_LUSTRE_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * Lustre needs remote filesystem and host.
- */
-static char *
-lustre_match(am_opts *fo)
-{
- char *xmtab, *cp;
- size_t l;
- char *rhost, *ptr, *remhost;
- struct in_addr addr;
-
- if (fo->opt_fs && !fo->opt_rfs)
- fo->opt_rfs = fo->opt_fs;
- if (!fo->opt_rfs) {
- plog(XLOG_USER, "lustre: no remote filesystem specified");
- return NULL;
- }
- if (!fo->opt_rhost) {
- plog(XLOG_USER, "lustre: no remote host specified");
- return NULL;
- }
-
- /*
- * Determine magic cookie to put in mtab
- */
- rhost = xstrdup(fo->opt_rhost);
- remhost = NULL;
- for (ptr = strtok(rhost, ":"); ptr; ptr = strtok(NULL, ":")) {
- char *at = strchr(ptr, '@');
- if (at == NULL) {
- plog(XLOG_USER, "lustre: missing protocol in host `%s'", ptr);
- XFREE(rhost);
- return NULL;
- }
- *at = '\0';
- /*
- * Convert symbolic addresses to numbers that the kernel likes
- */
- if (inet_aton(ptr, &addr) == 0) {
- struct hostent *hp;
- if ((hp = gethostbyname(ptr)) == NULL) {
- plog(XLOG_USER, "lustre: unknown host `%s'", ptr);
- XFREE(rhost);
- return NULL;
- }
- if (hp->h_length != sizeof(addr.s_addr)) {
- plog(XLOG_USER, "lustre: bad address length %zu != %d for %s",
- sizeof(addr), hp->h_length, ptr);
- XFREE(rhost);
- return NULL;
- }
- memcpy(&addr.s_addr, hp->h_addr, sizeof(addr));
- }
- *at = '@';
-
- cp = remhost;
- if (remhost)
- remhost = strvcat(cp, ":", inet_ntoa(addr), at, NULL);
- else
- remhost = strvcat(inet_ntoa(addr), at, NULL);
- XFREE(cp);
- }
- if (remhost == NULL) {
- plog(XLOG_USER, "lustre: empty host");
- XFREE(rhost);
- return NULL;
- }
-
- XFREE(rhost);
- XFREE(fo->opt_rhost);
- fo->opt_rhost = remhost;
-
- l = strlen(fo->opt_rhost) + strlen(fo->opt_rfs) + 2;
- xmtab = xmalloc(l);
- xsnprintf(xmtab, l, "%s:%s", fo->opt_rhost, fo->opt_rfs);
- dlog("lustre: mounting remote server \"%s\", remote fs \"%s\" on \"%s\"",
- fo->opt_rhost, fo->opt_rfs, fo->opt_fs);
-
-
- return xmtab;
-}
-
-static int
-lustre_mount(am_node *am, mntfs *mf)
-{
- mntent_t mnt;
- int genflags, error;
- int on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
-
- /*
- * Figure out the name of the file system type.
- */
- MTYPE_TYPE type = MOUNT_TYPE_LUSTRE;
-
- /*
- * Fill in the mount structure
- */
- memset(&mnt, 0, sizeof(mnt));
- mnt.mnt_dir = mf->mf_mount;
- mnt.mnt_fsname = mf->mf_info;
- mnt.mnt_type = MNTTAB_TYPE_LUSTRE;
- mnt.mnt_opts = mf->mf_mopts;
-
- genflags = compute_mount_flags(&mnt);
-#ifdef HAVE_FS_AUTOFS
- if (on_autofs)
- genflags |= autofs_compute_mount_flags(&mnt);
-#endif /* HAVE_FS_AUTOFS */
-
- /*
- * Call generic mount routine
- */
- error = mount_fs(&mnt, genflags, NULL, 0, type, 0,
- NULL, mnttab_file_name, on_autofs);
- if (error) {
- errno = error;
- plog(XLOG_ERROR, "mount_lustre: %m");
- return error;
- }
-
- return 0;
-}
-
-
-static int
-lustre_umount(am_node *am, mntfs *mf)
-{
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
-
- return UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
-}
-#endif
diff --git a/contrib/amd/amd/ops_mfs.c b/contrib/amd/amd/ops_mfs.c
deleted file mode 100644
index 822a2659317b..000000000000
--- a/contrib/amd/amd/ops_mfs.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_mfs.c
- *
- */
-
-/*
- * Memory file system (RAM filesystem)
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* FEEL FREE TO IMPLEMENT THIS... :-) */
diff --git a/contrib/amd/amd/ops_nfs.c b/contrib/amd/amd/ops_nfs.c
deleted file mode 100644
index 2dbfa5b5e2ee..000000000000
--- a/contrib/amd/amd/ops_nfs.c
+++ /dev/null
@@ -1,1092 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_nfs.c
- *
- */
-
-/*
- * Network file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/*
- * Convert from nfsstat to UN*X error code
- */
-#define unx_error(e) ((int)(e))
-
-/*
- * FH_TTL is the time a file handle will remain in the cache since
- * last being used. If the file handle becomes invalid, then it
- * will be flushed anyway.
- */
-#define FH_TTL (5 * 60) /* five minutes */
-#define FH_TTL_ERROR (30) /* 30 seconds */
-#define FHID_ALLOC() (++fh_id)
-
-/*
- * The NFS layer maintains a cache of file handles.
- * This is *fundamental* to the implementation and
- * also allows quick remounting when a filesystem
- * is accessed soon after timing out.
- *
- * The NFS server layer knows to flush this cache
- * when a server goes down so avoiding stale handles.
- *
- * Each cache entry keeps a hard reference to
- * the corresponding server. This ensures that
- * the server keepalive information is maintained.
- *
- * The copy of the sockaddr_in here is taken so
- * that the port can be twiddled to talk to mountd
- * instead of portmap or the NFS server as used
- * elsewhere.
- * The port# is flushed if a server goes down.
- * The IP address is never flushed - we assume
- * that the address of a mounted machine never
- * changes. If it does, then you have other
- * problems...
- */
-typedef struct fh_cache fh_cache;
-struct fh_cache {
- qelem fh_q; /* List header */
- wchan_t fh_wchan; /* Wait channel */
- int fh_error; /* Valid data? */
- int fh_id; /* Unique id */
- int fh_cid; /* Callout id */
- u_long fh_nfs_version; /* highest NFS version on host */
- am_nfs_handle_t fh_nfs_handle; /* Handle on filesystem */
- int fh_status; /* Status of last rpc */
- struct sockaddr_in fh_sin; /* Address of mountd */
- fserver *fh_fs; /* Server holding filesystem */
- char *fh_path; /* Filesystem on host */
-};
-
-/* forward definitions */
-static int nfs_init(mntfs *mf);
-static char *nfs_match(am_opts *fo);
-static int nfs_mount(am_node *am, mntfs *mf);
-static int nfs_umount(am_node *am, mntfs *mf);
-static void nfs_umounted(mntfs *mf);
-static int call_mountd(fh_cache *fp, u_long proc, fwd_fun f, wchan_t wchan);
-static int webnfs_lookup(fh_cache *fp, fwd_fun f, wchan_t wchan);
-static int fh_id = 0;
-
-/*
- * clamp the filehandle version to 3, so that we can fail back to nfsv3
- * since nfsv4 does not have file handles
- */
-#define SET_FH_VERSION(fs) \
- (fs)->fs_version > NFS_VERSION3 ? NFS_VERSION3 : (fs)->fs_version;
-
-/* globals */
-AUTH *nfs_auth;
-qelem fh_head = {&fh_head, &fh_head};
-
-/*
- * Network file system operations
- */
-am_ops nfs_ops =
-{
- "nfs",
- nfs_match,
- nfs_init,
- nfs_mount,
- nfs_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* nfs_readlink */
- 0, /* nfs_mounted */
- nfs_umounted,
- find_nfs_srvr,
- 0, /* nfs_get_wchan */
- FS_MKMNT | FS_BACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_NFS_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-static fh_cache *
-find_nfs_fhandle_cache(opaque_t arg, int done)
-{
- fh_cache *fp, *fp2 = NULL;
- int id = (long) arg; /* for 64-bit archs */
-
- ITER(fp, fh_cache, &fh_head) {
- if (fp->fh_id == id) {
- fp2 = fp;
- break;
- }
- }
-
- if (fp2) {
- dlog("fh cache gives fp %#lx, fs %s", (unsigned long) fp2, fp2->fh_path);
- } else {
- dlog("fh cache search failed");
- }
-
- if (fp2 && !done) {
- fp2->fh_error = ETIMEDOUT;
- return 0;
- }
-
- return fp2;
-}
-
-
-/*
- * Called when a filehandle appears via the mount protocol
- */
-static void
-got_nfs_fh_mount(voidp pkt, int len, struct sockaddr_in *sa, struct sockaddr_in *ia, opaque_t arg, int done)
-{
- fh_cache *fp;
- struct fhstatus res;
-#ifdef HAVE_FS_NFS3
- struct am_mountres3 res3;
-#endif /* HAVE_FS_NFS3 */
-
- fp = find_nfs_fhandle_cache(arg, done);
- if (!fp)
- return;
-
- /*
- * retrieve the correct RPC reply for the file handle, based on the
- * NFS protocol version.
- */
-#ifdef HAVE_FS_NFS3
- if (fp->fh_nfs_version == NFS_VERSION3) {
- memset(&res3, 0, sizeof(res3));
- fp->fh_error = pickup_rpc_reply(pkt, len, (voidp) &res3,
- (XDRPROC_T_TYPE) xdr_am_mountres3);
- fp->fh_status = unx_error(res3.fhs_status);
- memset(&fp->fh_nfs_handle.v3, 0, sizeof(am_nfs_fh3));
- fp->fh_nfs_handle.v3.am_fh3_length = res3.mountres3_u.mountinfo.fhandle.fhandle3_len;
- memmove(fp->fh_nfs_handle.v3.am_fh3_data,
- res3.mountres3_u.mountinfo.fhandle.fhandle3_val,
- fp->fh_nfs_handle.v3.am_fh3_length);
-
- XFREE(res3.mountres3_u.mountinfo.fhandle.fhandle3_val);
- if (res3.mountres3_u.mountinfo.auth_flavors.auth_flavors_val)
- XFREE(res3.mountres3_u.mountinfo.auth_flavors.auth_flavors_val);
- } else {
-#endif /* HAVE_FS_NFS3 */
- memset(&res, 0, sizeof(res));
- fp->fh_error = pickup_rpc_reply(pkt, len, (voidp) &res,
- (XDRPROC_T_TYPE) xdr_fhstatus);
- fp->fh_status = unx_error(res.fhs_status);
- memmove(&fp->fh_nfs_handle.v2, &res.fhs_fh, NFS_FHSIZE);
-#ifdef HAVE_FS_NFS3
- }
-#endif /* HAVE_FS_NFS3 */
-
- if (!fp->fh_error) {
- dlog("got filehandle for %s:%s", fp->fh_fs->fs_host, fp->fh_path);
- } else {
- plog(XLOG_USER, "filehandle denied for %s:%s", fp->fh_fs->fs_host, fp->fh_path);
- /*
- * Force the error to be EACCES. It's debatable whether it should be
- * ENOENT instead, but the server really doesn't give us any clues, and
- * EACCES is more in line with the "filehandle denied" message.
- */
- fp->fh_error = EACCES;
- }
-
- /*
- * Wakeup anything sleeping on this filehandle
- */
- if (fp->fh_wchan) {
- dlog("Calling wakeup on %#lx", (unsigned long) fp->fh_wchan);
- wakeup(fp->fh_wchan);
- }
-}
-
-
-/*
- * Called when a filehandle appears via WebNFS
- */
-static void
-got_nfs_fh_webnfs(voidp pkt, int len, struct sockaddr_in *sa, struct sockaddr_in *ia, opaque_t arg, int done)
-{
- fh_cache *fp;
- nfsdiropres res;
-#ifdef HAVE_FS_NFS3
- am_LOOKUP3res res3;
-#endif /* HAVE_FS_NFS3 */
-
- fp = find_nfs_fhandle_cache(arg, done);
- if (!fp)
- return;
-
- /*
- * retrieve the correct RPC reply for the file handle, based on the
- * NFS protocol version.
- */
-#ifdef HAVE_FS_NFS3
- if (fp->fh_nfs_version == NFS_VERSION3) {
- memset(&res3, 0, sizeof(res3));
- fp->fh_error = pickup_rpc_reply(pkt, len, (voidp) &res3,
- (XDRPROC_T_TYPE) xdr_am_LOOKUP3res);
- fp->fh_status = unx_error(res3.status);
- memset(&fp->fh_nfs_handle.v3, 0, sizeof(am_nfs_fh3));
- fp->fh_nfs_handle.v3.am_fh3_length = res3.res_u.ok.object.am_fh3_length;
- memmove(fp->fh_nfs_handle.v3.am_fh3_data,
- res3.res_u.ok.object.am_fh3_data,
- fp->fh_nfs_handle.v3.am_fh3_length);
- } else {
-#endif /* HAVE_FS_NFS3 */
- memset(&res, 0, sizeof(res));
- fp->fh_error = pickup_rpc_reply(pkt, len, (voidp) &res,
- (XDRPROC_T_TYPE) xdr_diropres);
- fp->fh_status = unx_error(res.dr_status);
- memmove(&fp->fh_nfs_handle.v2, &res.dr_u.dr_drok_u.drok_fhandle, NFS_FHSIZE);
-#ifdef HAVE_FS_NFS3
- }
-#endif /* HAVE_FS_NFS3 */
-
- if (!fp->fh_error) {
- dlog("got filehandle for %s:%s", fp->fh_fs->fs_host, fp->fh_path);
- } else {
- plog(XLOG_USER, "filehandle denied for %s:%s", fp->fh_fs->fs_host, fp->fh_path);
- /*
- * Force the error to be EACCES. It's debatable whether it should be
- * ENOENT instead, but the server really doesn't give us any clues, and
- * EACCES is more in line with the "filehandle denied" message.
- */
- fp->fh_error = EACCES;
- }
-
- /*
- * Wakeup anything sleeping on this filehandle
- */
- if (fp->fh_wchan) {
- dlog("Calling wakeup on %#lx", (unsigned long) fp->fh_wchan);
- wakeup(fp->fh_wchan);
- }
-}
-
-
-void
-flush_nfs_fhandle_cache(fserver *fs)
-{
- fh_cache *fp;
-
- ITER(fp, fh_cache, &fh_head) {
- if (fp->fh_fs == fs || fs == NULL) {
- /*
- * Only invalidate port info for non-WebNFS servers
- */
- if (!(fp->fh_fs->fs_flags & FSF_WEBNFS))
- fp->fh_sin.sin_port = (u_short) 0;
- fp->fh_error = -1;
- }
- }
-}
-
-
-static void
-discard_fh(opaque_t arg)
-{
- fh_cache *fp = (fh_cache *) arg;
-
- rem_que(&fp->fh_q);
- if (fp->fh_fs) {
- dlog("Discarding filehandle for %s:%s", fp->fh_fs->fs_host, fp->fh_path);
- free_srvr(fp->fh_fs);
- }
- XFREE(fp->fh_path);
- XFREE(fp);
-}
-
-
-/*
- * Determine the file handle for a node
- */
-static int
-prime_nfs_fhandle_cache(char *path, fserver *fs, am_nfs_handle_t *fhbuf, mntfs *mf)
-{
- fh_cache *fp, *fp_save = NULL;
- int error;
- int reuse_id = FALSE;
-
- dlog("Searching cache for %s:%s", fs->fs_host, path);
-
- /*
- * First search the cache
- */
- ITER(fp, fh_cache, &fh_head) {
- if (fs != fp->fh_fs || !STREQ(path, fp->fh_path))
- continue; /* skip to next ITER item */
- /* else we got a match */
- switch (fp->fh_error) {
- case 0:
- plog(XLOG_INFO, "prime_nfs_fhandle_cache: NFS version %d", (int) fp->fh_nfs_version);
-
- error = fp->fh_error = fp->fh_status;
-
- if (error == 0) {
- if (mf->mf_flags & MFF_NFS_SCALEDOWN) {
- fp_save = fp;
- /* XXX: why reuse the ID? */
- reuse_id = TRUE;
- break;
- }
-
- if (fhbuf) {
-#ifdef HAVE_FS_NFS3
- if (fp->fh_nfs_version == NFS_VERSION3) {
- memmove((voidp) &(fhbuf->v3), (voidp) &(fp->fh_nfs_handle.v3),
- sizeof(fp->fh_nfs_handle.v3));
- } else
-#endif /* HAVE_FS_NFS3 */
- {
- memmove((voidp) &(fhbuf->v2), (voidp) &(fp->fh_nfs_handle.v2),
- sizeof(fp->fh_nfs_handle.v2));
- }
- }
- if (fp->fh_cid)
- untimeout(fp->fh_cid);
- fp->fh_cid = timeout(FH_TTL, discard_fh, (opaque_t) fp);
- } else if (error == EACCES) {
- /*
- * Now decode the file handle return code.
- */
- plog(XLOG_INFO, "Filehandle denied for \"%s:%s\"",
- fs->fs_host, path);
- } else {
- errno = error; /* XXX */
- plog(XLOG_INFO, "Filehandle error for \"%s:%s\": %m",
- fs->fs_host, path);
- }
-
- /*
- * The error was returned from the remote mount daemon.
- * Policy: this error will be cached for now...
- */
- return error;
-
- case -1:
- /*
- * Still thinking about it, but we can re-use.
- */
- fp_save = fp;
- reuse_id = TRUE;
- break;
-
- default:
- /*
- * Return the error.
- * Policy: make sure we recompute if required again
- * in case this was caused by a network failure.
- * This can thrash mountd's though... If you find
- * your mountd going slowly then:
- * 1. Add a fork() loop to main.
- * 2. Remove the call to innetgr() and don't use
- * netgroups, especially if you don't use YP.
- */
- error = fp->fh_error;
- fp->fh_error = -1;
- return error;
- } /* end of switch statement */
- } /* end of ITER loop */
-
- /*
- * Not in cache
- */
- if (fp_save) {
- fp = fp_save;
- /*
- * Re-use existing slot
- */
- untimeout(fp->fh_cid);
- free_srvr(fp->fh_fs);
- XFREE(fp->fh_path);
- } else {
- fp = ALLOC(struct fh_cache);
- memset((voidp) fp, 0, sizeof(struct fh_cache));
- ins_que(&fp->fh_q, &fh_head);
- }
- if (!reuse_id)
- fp->fh_id = FHID_ALLOC();
- fp->fh_wchan = get_mntfs_wchan(mf);
- fp->fh_error = -1;
- fp->fh_cid = timeout(FH_TTL, discard_fh, (opaque_t) fp);
-
- /*
- * If fs->fs_ip is null, remote server is probably down.
- */
- if (!fs->fs_ip) {
- /* Mark the fileserver down and invalid again */
- fs->fs_flags &= ~FSF_VALID;
- fs->fs_flags |= FSF_DOWN;
- error = AM_ERRNO_HOST_DOWN;
- return error;
- }
-
- /*
- * Either fp has been freshly allocated or the address has changed.
- * Initialize address and nfs version. Don't try to re-use the port
- * information unless using WebNFS where the port is fixed either by
- * the spec or the "port" mount option.
- */
- if (fp->fh_sin.sin_addr.s_addr != fs->fs_ip->sin_addr.s_addr) {
- fp->fh_sin = *fs->fs_ip;
- if (!(mf->mf_flags & MFF_WEBNFS))
- fp->fh_sin.sin_port = 0;
- fp->fh_nfs_version = SET_FH_VERSION(fs);
- }
-
- fp->fh_fs = dup_srvr(fs);
- fp->fh_path = xstrdup(path);
-
- if (mf->mf_flags & MFF_WEBNFS)
- error = webnfs_lookup(fp, got_nfs_fh_webnfs, get_mntfs_wchan(mf));
- else
- error = call_mountd(fp, MOUNTPROC_MNT, got_nfs_fh_mount, get_mntfs_wchan(mf));
- if (error) {
- /*
- * Local error - cache for a short period
- * just to prevent thrashing.
- */
- untimeout(fp->fh_cid);
- fp->fh_cid = timeout(error < 0 ? 2 * ALLOWED_MOUNT_TIME : FH_TTL_ERROR,
- discard_fh, (opaque_t) fp);
- fp->fh_error = error;
- } else {
- error = fp->fh_error;
- }
-
- return error;
-}
-
-
-int
-make_nfs_auth(void)
-{
- AUTH_CREATE_GIDLIST_TYPE group_wheel = 0;
-
- /* Some NFS mounts (particularly cross-domain) require FQDNs to succeed */
-
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- if (gopt.flags & CFM_FULLY_QUALIFIED_HOSTS) {
- plog(XLOG_INFO, "Using NFS auth for FQHN \"%s\"", hostd);
- nfs_auth = authsys_create(hostd, 0, 0, 1, &group_wheel);
- } else {
- nfs_auth = authsys_create_default();
- }
-#else /* not HAVE_TRANSPORT_TYPE_TLI */
- if (gopt.flags & CFM_FULLY_QUALIFIED_HOSTS) {
- plog(XLOG_INFO, "Using NFS auth for FQHN \"%s\"", hostd);
- nfs_auth = authunix_create(hostd, 0, 0, 1, &group_wheel);
- } else {
- nfs_auth = authunix_create_default();
- }
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
- if (!nfs_auth)
- return ENOBUFS;
-
- return 0;
-}
-
-
-static int
-call_mountd(fh_cache *fp, u_long proc, fwd_fun fun, wchan_t wchan)
-{
- struct rpc_msg mnt_msg;
- int len;
- char iobuf[UDPMSGSIZE];
- int error;
- u_long mnt_version;
-
- if (!nfs_auth) {
- error = make_nfs_auth();
- if (error)
- return error;
- }
-
- if (fp->fh_sin.sin_port == 0) {
- u_short mountd_port;
- error = get_mountd_port(fp->fh_fs, &mountd_port, wchan);
- if (error)
- return error;
- fp->fh_sin.sin_port = mountd_port;
- dlog("%s: New %d mountd port", __func__, fp->fh_sin.sin_port);
- } else
- dlog("%s: Already had %d mountd port", __func__, fp->fh_sin.sin_port);
-
- /* find the right version of the mount protocol */
-#ifdef HAVE_FS_NFS3
- if (fp->fh_nfs_version == NFS_VERSION3)
- mnt_version = AM_MOUNTVERS3;
- else
-#endif /* HAVE_FS_NFS3 */
- mnt_version = MOUNTVERS;
- plog(XLOG_INFO, "call_mountd: NFS version %d, mount version %d",
- (int) fp->fh_nfs_version, (int) mnt_version);
-
- rpc_msg_init(&mnt_msg, MOUNTPROG, mnt_version, MOUNTPROC_NULL);
- len = make_rpc_packet(iobuf,
- sizeof(iobuf),
- proc,
- &mnt_msg,
- (voidp) &fp->fh_path,
- (XDRPROC_T_TYPE) xdr_nfspath,
- nfs_auth);
-
- if (len > 0) {
- error = fwd_packet(MK_RPC_XID(RPC_XID_MOUNTD, fp->fh_id),
- iobuf,
- len,
- &fp->fh_sin,
- &fp->fh_sin,
- (opaque_t) ((long) fp->fh_id), /* cast to long needed for 64-bit archs */
- fun);
- } else {
- error = -len;
- }
-
- /*
- * It may be the case that we're sending to the wrong MOUNTD port. This
- * occurs if mountd is restarted on the server after the port has been
- * looked up and stored in the filehandle cache somewhere. The correct
- * solution, if we're going to cache port numbers is to catch the ICMP
- * port unreachable reply from the server and cause the portmap request
- * to be redone. The quick solution here is to invalidate the MOUNTD
- * port.
- */
- fp->fh_sin.sin_port = 0;
-
- return error;
-}
-
-
-static int
-webnfs_lookup(fh_cache *fp, fwd_fun fun, wchan_t wchan)
-{
- struct rpc_msg wnfs_msg;
- int len;
- char iobuf[UDPMSGSIZE];
- int error;
- u_long proc;
- XDRPROC_T_TYPE xdr_fn;
- voidp argp;
- nfsdiropargs args;
-#ifdef HAVE_FS_NFS3
- am_LOOKUP3args args3;
-#endif /* HAVE_FS_NFS3 */
- char *wnfs_path;
- size_t l;
-
- if (!nfs_auth) {
- error = make_nfs_auth();
- if (error)
- return error;
- }
-
- if (fp->fh_sin.sin_port == 0) {
- /* FIXME: wrong, don't discard sin_port in the first place for WebNFS. */
- plog(XLOG_WARNING, "webnfs_lookup: port == 0 for nfs on %s, fixed",
- fp->fh_fs->fs_host);
- fp->fh_sin.sin_port = htons(NFS_PORT);
- }
-
- /*
- * Use native path like the rest of amd (cf. RFC 2054, 6.1).
- */
- l = strlen(fp->fh_path) + 2;
- wnfs_path = (char *) xmalloc(l);
- wnfs_path[0] = 0x80;
- xstrlcpy(wnfs_path + 1, fp->fh_path, l - 1);
-
- /* find the right program and lookup procedure */
-#ifdef HAVE_FS_NFS3
- if (fp->fh_nfs_version == NFS_VERSION3) {
- proc = AM_NFSPROC3_LOOKUP;
- xdr_fn = (XDRPROC_T_TYPE) xdr_am_LOOKUP3args;
- argp = &args3;
- /* WebNFS public file handle */
- args3.what.dir.am_fh3_length = 0;
- args3.what.name = wnfs_path;
- } else {
-#endif /* HAVE_FS_NFS3 */
- proc = NFSPROC_LOOKUP;
- xdr_fn = (XDRPROC_T_TYPE) xdr_diropargs;
- argp = &args;
- /* WebNFS public file handle */
- memset(&args.da_fhandle, 0, NFS_FHSIZE);
- args.da_name = wnfs_path;
-#ifdef HAVE_FS_NFS3
- }
-#endif /* HAVE_FS_NFS3 */
-
- plog(XLOG_INFO, "webnfs_lookup: NFS version %d", (int) fp->fh_nfs_version);
-
- rpc_msg_init(&wnfs_msg, NFS_PROGRAM, fp->fh_nfs_version, proc);
- len = make_rpc_packet(iobuf,
- sizeof(iobuf),
- proc,
- &wnfs_msg,
- argp,
- (XDRPROC_T_TYPE) xdr_fn,
- nfs_auth);
-
- if (len > 0) {
- error = fwd_packet(MK_RPC_XID(RPC_XID_WEBNFS, fp->fh_id),
- iobuf,
- len,
- &fp->fh_sin,
- &fp->fh_sin,
- (opaque_t) ((long) fp->fh_id), /* cast to long needed for 64-bit archs */
- fun);
- } else {
- error = -len;
- }
-
- XFREE(wnfs_path);
- return error;
-}
-
-
-/*
- * NFS needs the local filesystem, remote filesystem
- * remote hostname.
- * Local filesystem defaults to remote and vice-versa.
- */
-static char *
-nfs_match(am_opts *fo)
-{
- char *xmtab;
- size_t l;
-
- if (fo->opt_fs && !fo->opt_rfs)
- fo->opt_rfs = fo->opt_fs;
- if (!fo->opt_rfs) {
- plog(XLOG_USER, "nfs: no remote filesystem specified");
- return NULL;
- }
- if (!fo->opt_rhost) {
- plog(XLOG_USER, "nfs: no remote host specified");
- return NULL;
- }
-
- /*
- * Determine magic cookie to put in mtab
- */
- l = strlen(fo->opt_rhost) + strlen(fo->opt_rfs) + 2;
- xmtab = (char *) xmalloc(l);
- xsnprintf(xmtab, l, "%s:%s", fo->opt_rhost, fo->opt_rfs);
- dlog("NFS: mounting remote server \"%s\", remote fs \"%s\" on \"%s\"",
- fo->opt_rhost, fo->opt_rfs, fo->opt_fs);
-
- return xmtab;
-}
-
-
-/*
- * Initialize am structure for nfs
- */
-static int
-nfs_init(mntfs *mf)
-{
- int error;
- am_nfs_handle_t fhs;
- char *colon;
-
-#ifdef NO_FALLBACK
- /*
- * We don't need file handles for NFS version 4, but we can fall back to
- * version 3, so we allocate anyway
- */
-#ifdef HAVE_FS_NFS4
- if (mf->mf_server->fs_version == NFS_VERSION4)
- return 0;
-#endif /* HAVE_FS_NFS4 */
-#endif /* NO_FALLBACK */
-
- if (mf->mf_private) {
- if (mf->mf_flags & MFF_NFS_SCALEDOWN) {
- fserver *fs;
-
- /* tell remote mountd that we're done with this filehandle */
- mf->mf_ops->umounted(mf);
-
- mf->mf_prfree(mf->mf_private);
- mf->mf_private = NULL;
- mf->mf_prfree = NULL;
-
- fs = mf->mf_ops->ffserver(mf);
- free_srvr(mf->mf_server);
- mf->mf_server = fs;
- } else
- return 0;
- }
-
- colon = strchr(mf->mf_info, ':');
- if (colon == 0)
- return ENOENT;
-
- error = prime_nfs_fhandle_cache(colon + 1, mf->mf_server, &fhs, mf);
- if (!error) {
- mf->mf_private = (opaque_t) ALLOC(am_nfs_handle_t);
- mf->mf_prfree = (void (*)(opaque_t)) free;
- memmove(mf->mf_private, (voidp) &fhs, sizeof(fhs));
- }
- return error;
-}
-
-
-int
-mount_nfs_fh(am_nfs_handle_t *fhp, char *mntdir, char *fs_name, mntfs *mf)
-{
- MTYPE_TYPE type;
- char *colon;
- char *xopts=NULL, transp_timeo_opts[40], transp_retrans_opts[40];
- char host[MAXHOSTNAMELEN + MAXPATHLEN + 2];
- fserver *fs = mf->mf_server;
- u_long nfs_version = fs->fs_version;
- char *nfs_proto = fs->fs_proto; /* "tcp" or "udp" */
- int on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
- int error;
- int genflags;
- int retry;
- int proto = AMU_TYPE_NONE;
- mntent_t mnt;
- void *argsp;
- nfs_args_t nfs_args;
-#ifdef HAVE_FS_NFS4
- nfs4_args_t nfs4_args;
-#endif /* HAVE_FS_NFS4 */
-
- /*
- * Extract HOST name to give to kernel.
- * Some systems like osf1/aix3/bsd44 variants may need old code
- * for NFS_ARGS_NEEDS_PATH.
- */
- if (!(colon = strchr(fs_name, ':')))
- return ENOENT;
-#ifdef MOUNT_TABLE_ON_FILE
- *colon = '\0';
-#endif /* MOUNT_TABLE_ON_FILE */
- xstrlcpy(host, fs_name, sizeof(host));
-#ifdef MOUNT_TABLE_ON_FILE
- *colon = ':';
-#endif /* MOUNT_TABLE_ON_FILE */
-#ifdef MAXHOSTNAMELEN
- /* most kernels have a name length restriction */
- if (strlen(host) >= MAXHOSTNAMELEN)
- xstrlcpy(host + MAXHOSTNAMELEN - 3, "..",
- sizeof(host) - MAXHOSTNAMELEN + 3);
-#endif /* MAXHOSTNAMELEN */
-
- /*
- * Create option=VAL for udp/tcp specific timeouts and retrans values, but
- * only if these options were specified.
- */
-
- transp_timeo_opts[0] = transp_retrans_opts[0] = '\0'; /* initialize */
- if (STREQ(nfs_proto, "udp"))
- proto = AMU_TYPE_UDP;
- else if (STREQ(nfs_proto, "tcp"))
- proto = AMU_TYPE_TCP;
- if (proto != AMU_TYPE_NONE) {
- if (gopt.amfs_auto_timeo[proto] > 0)
- xsnprintf(transp_timeo_opts, sizeof(transp_timeo_opts), "%s=%d,",
- MNTTAB_OPT_TIMEO, gopt.amfs_auto_timeo[proto]);
- if (gopt.amfs_auto_retrans[proto] > 0)
- xsnprintf(transp_retrans_opts, sizeof(transp_retrans_opts), "%s=%d,",
- MNTTAB_OPT_RETRANS, gopt.amfs_auto_retrans[proto]);
- }
-
- if (mf->mf_remopts && *mf->mf_remopts &&
- !islocalnet(fs->fs_ip->sin_addr.s_addr)) {
- plog(XLOG_INFO, "Using remopts=\"%s\"", mf->mf_remopts);
- /* use transp_opts first, so map-specific opts will override */
- xopts = str3cat(xopts, transp_timeo_opts, transp_retrans_opts, mf->mf_remopts);
- } else {
- /* use transp_opts first, so map-specific opts will override */
- xopts = str3cat(xopts, transp_timeo_opts, transp_retrans_opts, mf->mf_mopts);
- }
-
- memset((voidp) &mnt, 0, sizeof(mnt));
- mnt.mnt_dir = mntdir;
- mnt.mnt_fsname = fs_name;
- mnt.mnt_opts = xopts;
-
- /*
- * Set mount types accordingly
- */
-#ifdef HAVE_FS_NFS3
- if (nfs_version == NFS_VERSION3) {
- type = MOUNT_TYPE_NFS3;
- /*
- * Systems that include the mount table "vers" option generally do not
- * set the mnttab entry to "nfs3", but to "nfs" and then they set
- * "vers=3". Setting it to "nfs3" works, but it may break some things
- * like "df -t nfs" and the "quota" program (esp. on Solaris and Irix).
- * So on those systems, set it to "nfs".
- * Note: MNTTAB_OPT_VERS is always set for NFS3 (see am_compat.h).
- */
- argsp = &nfs_args;
-# if defined(MNTTAB_OPT_VERS) && defined(MOUNT_TABLE_ON_FILE)
- mnt.mnt_type = MNTTAB_TYPE_NFS;
-# else /* defined(MNTTAB_OPT_VERS) && defined(MOUNT_TABLE_ON_FILE) */
- mnt.mnt_type = MNTTAB_TYPE_NFS3;
-# endif /* defined(MNTTAB_OPT_VERS) && defined(MOUNT_TABLE_ON_FILE) */
-# ifdef HAVE_FS_NFS4
- } else if (nfs_version == NFS_VERSION4) {
- argsp = &nfs4_args;
- type = MOUNT_TYPE_NFS4;
- mnt.mnt_type = MNTTAB_TYPE_NFS4;
-# endif /* HAVE_FS_NFS4 */
- } else
-#endif /* HAVE_FS_NFS3 */
- {
- argsp = &nfs_args;
- type = MOUNT_TYPE_NFS;
- mnt.mnt_type = MNTTAB_TYPE_NFS;
- }
- plog(XLOG_INFO, "mount_nfs_fh: NFS version %d", (int) nfs_version);
- plog(XLOG_INFO, "mount_nfs_fh: using NFS transport %s", nfs_proto);
-
- retry = hasmntval(&mnt, MNTTAB_OPT_RETRY);
- if (retry <= 0)
- retry = 1; /* XXX */
-
- genflags = compute_mount_flags(&mnt);
-#ifdef HAVE_FS_AUTOFS
- if (on_autofs)
- genflags |= autofs_compute_mount_flags(&mnt);
-#endif /* HAVE_FS_AUTOFS */
-
- /* setup the many fields and flags within nfs_args */
- compute_nfs_args(argsp,
- &mnt,
- genflags,
- NULL, /* struct netconfig *nfsncp */
- fs->fs_ip,
- nfs_version,
- nfs_proto,
- fhp,
- host,
- fs_name);
-
- /* finally call the mounting function */
- if (amuDebug(D_TRACE)) {
- print_nfs_args(argsp, nfs_version);
- plog(XLOG_DEBUG, "Generic mount flags 0x%x used for NFS mount", genflags);
- }
- error = mount_fs(&mnt, genflags, argsp, retry, type,
- nfs_version, nfs_proto, mnttab_file_name, on_autofs);
- XFREE(mnt.mnt_opts);
- discard_nfs_args(argsp, nfs_version);
-
-#ifdef HAVE_FS_NFS4
-# ifndef NO_FALLBACK
- /*
- * If we are using a v4 file handle, we try a v3 if we get back:
- * ENOENT: NFS v4 has a different export list than v3
- * EPERM: Kernels <= 2.6.18 return that, instead of ENOENT
- */
- if ((error == ENOENT || error == EPERM) && nfs_version == NFS_VERSION4) {
- plog(XLOG_DEBUG, "Could not find NFS 4 mount, trying again with NFS 3");
- fs->fs_version = NFS_VERSION3;
- error = mount_nfs_fh(fhp, mntdir, fs_name, mf);
- if (error)
- fs->fs_version = NFS_VERSION4;
- }
-# endif /* NO_FALLBACK */
-#endif /* HAVE_FS_NFS4 */
-
- return error;
-}
-
-
-static int
-nfs_mount(am_node *am, mntfs *mf)
-{
- int error = 0;
- mntent_t mnt;
-
- if (!mf->mf_private && mf->mf_server->fs_version != 4) {
- plog(XLOG_ERROR, "Missing filehandle for %s", mf->mf_info);
- return EINVAL;
- }
-
- if (mf->mf_mopts == NULL) {
- plog(XLOG_ERROR, "Missing mount options for %s", mf->mf_info);
- return EINVAL;
- }
-
- mnt.mnt_opts = mf->mf_mopts;
- if (amu_hasmntopt(&mnt, "softlookup") ||
- (amu_hasmntopt(&mnt, "soft") && !amu_hasmntopt(&mnt, "nosoftlookup")))
- am->am_flags |= AMF_SOFTLOOKUP;
-
- error = mount_nfs_fh((am_nfs_handle_t *) mf->mf_private,
- mf->mf_mount,
- mf->mf_info,
- mf);
-
- if (error) {
- errno = error;
- dlog("mount_nfs: %m");
- }
-
- return error;
-}
-
-
-static int
-nfs_umount(am_node *am, mntfs *mf)
-{
- int unmount_flags, new_unmount_flags, error;
-
- dlog("attempting nfs umount");
- unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
- error = UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
-
-#if defined(HAVE_UMOUNT2) && (defined(MNT2_GEN_OPT_FORCE) || defined(MNT2_GEN_OPT_DETACH))
- /*
- * If the attempt to unmount failed with EBUSY, and this fserver was
- * marked for forced unmounts, then use forced/lazy unmounts.
- */
- if (error == EBUSY &&
- gopt.flags & CFM_FORCED_UNMOUNTS &&
- mf->mf_server->fs_flags & FSF_FORCE_UNMOUNT) {
- plog(XLOG_INFO, "EZK: nfs_umount: trying forced/lazy unmounts");
- /*
- * XXX: turning off the FSF_FORCE_UNMOUNT may not be perfectly
- * incorrect. Multiple nodes may need to be timed out and restarted for
- * a single hung fserver.
- */
- mf->mf_server->fs_flags &= ~FSF_FORCE_UNMOUNT;
- new_unmount_flags = unmount_flags | AMU_UMOUNT_FORCE | AMU_UMOUNT_DETACH;
- error = UMOUNT_FS(mf->mf_mount, mnttab_file_name, new_unmount_flags);
- }
-#endif /* HAVE_UMOUNT2 && (MNT2_GEN_OPT_FORCE || MNT2_GEN_OPT_DETACH) */
-
- /*
- * Here is some code to unmount 'restarted' file systems.
- * The restarted file systems are marked as 'nfs', not
- * 'host', so we only have the map information for the
- * the top-level mount. The unmount will fail (EBUSY)
- * if there are anything else from the NFS server mounted
- * below the mount-point. This code checks to see if there
- * is anything mounted with the same prefix as the
- * file system to be unmounted ("/a/b/c" when unmounting "/a/b").
- * If there is, and it is a 'restarted' file system, we unmount
- * it.
- * Added by Mike Mitchell, mcm@unx.sas.com, 09/08/93
- */
- if (error == EBUSY) {
- mntfs *new_mf;
- int len = strlen(mf->mf_mount);
- int didsome = 0;
-
- ITER(new_mf, mntfs, &mfhead) {
- if (new_mf->mf_ops != mf->mf_ops ||
- new_mf->mf_refc > 1 ||
- mf == new_mf ||
- ((new_mf->mf_flags & (MFF_MOUNTED | MFF_UNMOUNTING | MFF_RESTART)) == (MFF_MOUNTED | MFF_RESTART)))
- continue;
-
- if (NSTREQ(mf->mf_mount, new_mf->mf_mount, len) &&
- new_mf->mf_mount[len] == '/') {
- new_unmount_flags =
- (new_mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
- UMOUNT_FS(new_mf->mf_mount, mnttab_file_name, new_unmount_flags);
- didsome = 1;
- }
- }
- if (didsome)
- error = UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
- }
- if (error)
- return error;
-
- return 0;
-}
-
-
-static void
-nfs_umounted(mntfs *mf)
-{
- fserver *fs;
- char *colon, *path;
-
- if (mf->mf_error || mf->mf_refc > 1)
- return;
-
- /*
- * No need to inform mountd when WebNFS is in use.
- */
- if (mf->mf_flags & MFF_WEBNFS)
- return;
-
- /*
- * Call the mount daemon on the server to announce that we are not using
- * the fs any more.
- *
- * XXX: This is *wrong*. The mountd should be called when the fhandle is
- * flushed from the cache, and a reference held to the cached entry while
- * the fs is mounted...
- */
- fs = mf->mf_server;
- colon = path = strchr(mf->mf_info, ':');
- if (fs && colon) {
- fh_cache f;
-
- dlog("calling mountd for %s", mf->mf_info);
- *path++ = '\0';
- f.fh_path = path;
- f.fh_sin = *fs->fs_ip;
- f.fh_sin.sin_port = (u_short) 0;
- f.fh_nfs_version = SET_FH_VERSION(fs);
- f.fh_fs = fs;
- f.fh_id = 0;
- f.fh_error = 0;
- prime_nfs_fhandle_cache(colon + 1, mf->mf_server, (am_nfs_handle_t *) NULL, mf);
- call_mountd(&f, MOUNTPROC_UMNT, (fwd_fun *) NULL, (wchan_t) NULL);
- *colon = ':';
- }
-}
diff --git a/contrib/amd/amd/ops_nfs3.c b/contrib/amd/amd/ops_nfs3.c
deleted file mode 100644
index e07811b808e2..000000000000
--- a/contrib/amd/amd/ops_nfs3.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_nfs3.c
- *
- */
-
-/*
- * Network file system version 3.0
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* FEEL FREE TO IMPLEMENT THIS... :-) */
diff --git a/contrib/amd/amd/ops_nfs4.c b/contrib/amd/amd/ops_nfs4.c
deleted file mode 100644
index 3798590837f3..000000000000
--- a/contrib/amd/amd/ops_nfs4.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_nfs4.c
- *
- */
-
-/*
- * Network file system version 4.0
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* FEEL FREE TO IMPLEMENT THIS... :-) */
diff --git a/contrib/amd/amd/ops_nullfs.c b/contrib/amd/amd/ops_nullfs.c
deleted file mode 100644
index 73d1f0e53f1c..000000000000
--- a/contrib/amd/amd/ops_nullfs.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_nullfs.c
- *
- */
-
-/*
- * The null filesystem in BSD-4.4 is similar to the loopback one.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* FEEL FREE TO IMPLEMENT THIS... :-) */
diff --git a/contrib/amd/amd/ops_pcfs.c b/contrib/amd/amd/ops_pcfs.c
deleted file mode 100644
index b4c8dcd5fecc..000000000000
--- a/contrib/amd/amd/ops_pcfs.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_pcfs.c
- *
- */
-
-/*
- * PC (MS-DOS) file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward definitions */
-static char *pcfs_match(am_opts *fo);
-static int pcfs_mount(am_node *am, mntfs *mf);
-static int pcfs_umount(am_node *am, mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops pcfs_ops =
-{
- "pcfs",
- pcfs_match,
- 0, /* pcfs_init */
- pcfs_mount,
- pcfs_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* pcfs_readlink */
- 0, /* pcfs_mounted */
- 0, /* pcfs_umounted */
- amfs_generic_find_srvr,
- 0, /* pcfs_get_wchan */
- FS_MKMNT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_PCFS_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-
-/*
- * PCFS needs remote filesystem.
- */
-static char *
-pcfs_match(am_opts *fo)
-{
- if (!fo->opt_dev) {
- plog(XLOG_USER, "pcfs: no source device specified");
- return 0;
- }
- dlog("PCFS: mounting device \"%s\" on \"%s\"", fo->opt_dev, fo->opt_fs);
-
- /*
- * Determine magic cookie to put in mtab
- */
- return xstrdup(fo->opt_dev);
-}
-
-
-static int
-mount_pcfs(char *mntdir, char *fs_name, char *opts, int on_autofs)
-{
- pcfs_args_t pcfs_args;
- mntent_t mnt;
- int flags;
-#if defined(HAVE_PCFS_ARGS_T_MASK) || defined(HAVE_PCFS_ARGS_T_DIRMASK)
- int mask;
-#endif /* defined(HAVE_PCFS_ARGS_T_MASK) || defined(HAVE_PCFS_ARGS_T_DIRMASK) */
-#if defined(HAVE_PCFS_ARGS_T_UID) || defined(HAVE_PCFS_ARGS_T_UID)
- char *str;
-#endif /* defined(HAVE_PCFS_ARGS_T_UID) || defined(HAVE_PCFS_ARGS_T_UID) */
-
- /*
- * Figure out the name of the file system type.
- */
- MTYPE_TYPE type = MOUNT_TYPE_PCFS;
-
- memset((voidp) &pcfs_args, 0, sizeof(pcfs_args)); /* Paranoid */
-
- /*
- * Fill in the mount structure
- */
- memset((voidp) &mnt, 0, sizeof(mnt));
- mnt.mnt_dir = mntdir;
- mnt.mnt_fsname = fs_name;
- mnt.mnt_type = MNTTAB_TYPE_PCFS;
- mnt.mnt_opts = opts;
-
- flags = compute_mount_flags(&mnt);
-#ifdef HAVE_FS_AUTOFS
- if (on_autofs)
- flags |= autofs_compute_mount_flags(&mnt);
-#endif /* HAVE_FS_AUTOFS */
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "mount_pcfs: flags=0x%x", (u_int) flags);
-
-#ifdef HAVE_PCFS_ARGS_T_FSPEC
- pcfs_args.fspec = fs_name;
-#endif /* HAVE_PCFS_ARGS_T_FSPEC */
-
-#ifdef HAVE_PCFS_ARGS_T_MASK
- pcfs_args.mask = 0777; /* this may be the msdos file modes */
- if ((mask = hasmntval(&mnt, MNTTAB_OPT_MASK)) > 0)
- pcfs_args.mask = mask;
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "mount_pcfs: mask=%o (octal)", (u_int) pcfs_args.mask);
-#endif /* HAVE_PCFS_ARGS_T_MASK */
-
-#ifdef HAVE_PCFS_ARGS_T_DIRMASK
- pcfs_args.dirmask = 0777; /* this may be the msdos dir modes */
- if ((mask = hasmntval(&mnt, MNTTAB_OPT_DIRMASK)) > 0)
- pcfs_args.dirmask = mask;
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "mount_pcfs: dirmask=%o (octal)", (u_int) pcfs_args.dirmask);
-#endif /* HAVE_PCFS_ARGS_T_DIRMASK */
-
-#ifdef HAVE_PCFS_ARGS_T_UID
- pcfs_args.uid = 0; /* default to root */
- if ((str = hasmntstr(&mnt, MNTTAB_OPT_USER)) != NULL) {
- struct passwd *pw;
- if ((pw = getpwnam(str)) != NULL)
- pcfs_args.uid = pw->pw_uid;
- else /* maybe used passed a UID number, not user name */
- pcfs_args.uid = atoi(str); /* atoi returns '0' if it failed */
- XFREE(str);
- }
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "mount_pcfs: uid=%d", (int) pcfs_args.uid);
-#endif /* HAVE_PCFS_ARGS_T_UID */
-
-#ifdef HAVE_PCFS_ARGS_T_GID
- pcfs_args.gid = 0; /* default to wheel/root group */
- if ((str = hasmntstr(&mnt, MNTTAB_OPT_GROUP)) != NULL) {
- struct group *gr;
- if ((gr = getgrnam(str)) != NULL)
- pcfs_args.gid = gr->gr_gid;
- else /* maybe used passed a GID number, not group name */
- pcfs_args.gid = atoi(str); /* atoi returns '0' if it failed */
- XFREE(str);
- }
- if (amuDebug(D_TRACE))
- plog(XLOG_DEBUG, "mount_pcfs: gid=%d", (int) pcfs_args.gid);
-#endif /* HAVE_PCFS_ARGS_T_GID */
-
-#ifdef HAVE_PCFS_ARGS_T_SECONDSWEST
- pcfs_args.secondswest = 0; /* XXX: fill in correct values */
-#endif /* HAVE_PCFS_ARGS_T_SECONDSWEST */
-#ifdef HAVE_PCFS_ARGS_T_DSTTIME
- pcfs_args.dsttime = 0; /* XXX: fill in correct values */
-#endif /* HAVE_PCFS_ARGS_T_DSTTIME */
-
- /*
- * Call generic mount routine
- */
- return mount_fs(&mnt, flags, (caddr_t) & pcfs_args, 0, type, 0, NULL, mnttab_file_name, on_autofs);
-}
-
-
-static int
-pcfs_mount(am_node *am, mntfs *mf)
-{
- int on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
- int error;
-
- error = mount_pcfs(mf->mf_mount, mf->mf_info, mf->mf_mopts, on_autofs);
- if (error) {
- errno = error;
- plog(XLOG_ERROR, "mount_pcfs: %m");
- return error;
- }
-
- return 0;
-}
-
-
-static int
-pcfs_umount(am_node *am, mntfs *mf)
-{
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
-
- return UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
-}
diff --git a/contrib/amd/amd/ops_tfs.c b/contrib/amd/amd/ops_tfs.c
deleted file mode 100644
index 3276a6e62ff1..000000000000
--- a/contrib/amd/amd/ops_tfs.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_tfs.c
- *
- */
-
-/*
- * Translucent file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* FEEL FREE TO IMPLEMENT THIS... :-) */
diff --git a/contrib/amd/amd/ops_tmpfs.c b/contrib/amd/amd/ops_tmpfs.c
deleted file mode 100644
index d9a15ea0434d..000000000000
--- a/contrib/amd/amd/ops_tmpfs.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_tmpfs.c
- *
- */
-
-/*
- * TMPFS file system (combines RAM-fs and swap-fs)
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward declarations */
-static char *tmpfs_match(am_opts *fo);
-static int tmpfs_mount(am_node *am, mntfs *mf);
-static int tmpfs_umount(am_node *am, mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops tmpfs_ops =
-{
- "tmpfs",
- tmpfs_match,
- 0, /* tmpfs_init */
- tmpfs_mount,
- tmpfs_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* tmpfs_readlink */
- 0, /* tmpfs_mounted */
- 0, /* tmpfs_umounted */
- amfs_generic_find_srvr,
- 0, /* tmpfs_get_wchan */
- FS_MKMNT | FS_NOTIMEOUT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#if defined(HAVE_FS_AUTOFS) && defined(AUTOFS_TMPFS_FS_FLAGS)
- AUTOFS_TMPFS_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * EFS needs local filesystem and device.
- */
-static char *
-tmpfs_match(am_opts *fo)
-{
-
- if (!fo->opt_dev) {
- plog(XLOG_USER, "tmpfs: no device specified");
- return 0;
- }
-
- dlog("EFS: mounting device \"%s\" on \"%s\"", fo->opt_dev, fo->opt_fs);
-
- /*
- * Determine magic cookie to put in mtab
- */
- return xstrdup(fo->opt_dev);
-}
-
-
-static int
-mount_tmpfs(char *mntdir, char *fs_name, char *opts, int on_autofs)
-{
- tmpfs_args_t tmpfs_args;
- mntent_t mnt;
- int flags;
- const char *p;
-
- /*
- * Figure out the name of the file system type.
- */
- MTYPE_TYPE type = MOUNT_TYPE_TMPFS;
-
- p = NULL;
- memset((voidp) &tmpfs_args, 0, sizeof(tmpfs_args)); /* Paranoid */
-
- /*
- * Fill in the mount structure
- */
- memset((voidp) &mnt, 0, sizeof(mnt));
- mnt.mnt_dir = mntdir;
- mnt.mnt_fsname = fs_name;
- mnt.mnt_type = MNTTAB_TYPE_TMPFS;
- mnt.mnt_opts = opts;
-
- flags = compute_mount_flags(&mnt);
-#ifdef HAVE_FS_AUTOFS
- if (on_autofs)
- flags |= autofs_compute_mount_flags(&mnt);
-#endif /* HAVE_FS_AUTOFS */
-
-#if defined(HAVE_TMPFS_ARGS_T_TA_VERSION) && defined(TMPFS_ARGS_VERSION)
- tmpfs_args.ta_version = TMPFS_ARGS_VERSION;
-#endif /* HAVE_TMPFS_ARGS_T_TA_VERSION && TMPFS_ARGS_VERSION */
-#ifdef HAVE_TMPFS_ARGS_T_TA_NODES_MAX
- if ((p = amu_hasmntopt(&mnt, "nodes")) == NULL)
- p = "1000000";
- tmpfs_args.ta_nodes_max = atoi(p);
-#endif /* HAVE_TMPFS_ARGS_T_TA_SIZE_MAX */
-#ifdef HAVE_TMPFS_ARGS_T_TA_SIZE_MAX
- if ((p = amu_hasmntopt(&mnt, "size")) == NULL)
- p = "10000000";
- tmpfs_args.ta_size_max = atoi(p);
-#endif /* HAVE_TMPFS_ARGS_T_TA_SIZE_MAX */
-#ifdef HAVE_TMPFS_ARGS_T_TA_ROOT_UID
- if ((p = amu_hasmntopt(&mnt, "uid")) == NULL)
- p = "0";
- tmpfs_args.ta_root_uid = atoi(p);
-#endif /* HAVE_TMPFS_ARGS_T_TA_ROOT_UID */
-#ifdef HAVE_TMPFS_ARGS_T_TA_ROOT_GID
- if ((p = amu_hasmntopt(&mnt, "gid")) == NULL)
- p = "0";
- tmpfs_args.ta_root_gid = atoi(p);
-#endif /* HAVE_TMPFS_ARGS_T_TA_ROOT_GID */
-#ifdef HAVE_TMPFS_ARGS_T_TA_ROOT_MODE
- if ((p = amu_hasmntopt(&mnt, "mode")) == NULL)
- p = "01777";
- tmpfs_args.ta_root_mode = strtol(p, NULL, 8);
-#endif /* HAVE_TMPFS_ARGS_T_TA_ROOT_MODE */
-
- /*
- * Call generic mount routine
- */
- return mount_fs(&mnt, flags, (caddr_t) &tmpfs_args, 0, type, 0, NULL, mnttab_file_name, on_autofs);
-}
-
-
-static int
-tmpfs_mount(am_node *am, mntfs *mf)
-{
- int on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
- int error;
-
- error = mount_tmpfs(mf->mf_mount, mf->mf_info, mf->mf_mopts, on_autofs);
- if (error) {
- errno = error;
- plog(XLOG_ERROR, "mount_tmpfs: %m");
- return error;
- }
-
- return 0;
-}
-
-
-static int
-tmpfs_umount(am_node *am, mntfs *mf)
-{
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
-
- return UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
-}
-
diff --git a/contrib/amd/amd/ops_udf.c b/contrib/amd/amd/ops_udf.c
deleted file mode 100644
index 4230c5b12ff5..000000000000
--- a/contrib/amd/amd/ops_udf.c
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_udf.c
- *
- */
-
-/*
- * UDF file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward definitions */
-static char *udf_match(am_opts *fo);
-static int udf_mount(am_node *am, mntfs *mf);
-static int udf_umount(am_node *am, mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops udf_ops =
-{
- "udf",
- udf_match,
- 0, /* udf_init */
- udf_mount,
- udf_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* udf_readlink */
- 0, /* udf_mounted */
- 0, /* udf_umounted */
- amfs_generic_find_srvr,
- 0, /* udf_get_wchan */
- FS_MKMNT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_UDF_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-#if defined(HAVE_UDF_ARGS_T_NOBODY_GID) || defined(HAVE_UDF_ARGS_T_NOBODY_UID)
-static int
-a_num(const char *s, const char *id_type)
-{
- int id;
- char *ep;
-
- id = strtol(s, &ep, 0);
- if (*ep || s == ep || id < 0) {
- plog(XLOG_ERROR, "mount_udf: unknown %s: %s", id_type, s);
- return 0;
- }
- return id;
-}
-#endif /* defined(HAVE_UDF_ARGS_T_NOBODY_GID) || defined(HAVE_UDF_ARGS_T_NOBODY_UID) */
-
-#if defined(HAVE_UDF_ARGS_T_NOBODY_GID)
-static gid_t
-a_gid(const char *s, const char *id_type)
-{
- struct group *gr;
-
- if ((gr = getgrnam(s)) != NULL)
- return gr->gr_gid;
- return a_num(s, id_type);
-}
-#endif /* defined(HAVE_UDF_ARGS_T_NOBODY_GID) */
-
-#if defined(HAVE_UDF_ARGS_T_NOBODY_UID)
-static uid_t
-a_uid(const char *s, const char *id_type)
-{
- struct passwd *pw;
-
- if ((pw = getpwnam(s)) != NULL)
- return pw->pw_uid;
- return a_num(s, id_type);
-}
-#endif /* defined(HAVE_UDF_ARGS_T_NOBODY_UID) */
-
-/*
- * UDF needs remote filesystem.
- */
-static char *
-udf_match(am_opts *fo)
-{
-
- if (!fo->opt_dev) {
- plog(XLOG_USER, "udf: no source device specified");
- return 0;
- }
- dlog("UDF: mounting device \"%s\" on \"%s\"", fo->opt_dev, fo->opt_fs);
-
- /*
- * Determine magic cookie to put in mtab
- */
- return xstrdup(fo->opt_dev);
-}
-
-static int
-mount_udf(char *mntdir, char *fs_name, char *opts, int on_autofs)
-{
- udf_args_t udf_args;
- mntent_t mnt;
- int flags;
- char *str;
-#if defined(HAVE_UDF_ARGS_T_NOBODY_UID) || defined(HAVE_UDF_ARGS_T_ANON_UID)
- uid_t uid_nobody;
- gid_t gid_nobody;
-#endif /* defined(HAVE_UDF_ARGS_T_NOBODY_UID) || defined(HAVE_UDF_ARGS_T_ANON_UID) */
- /*
- * Figure out the name of the file system type.
- */
- MTYPE_TYPE type = MOUNT_TYPE_UDF;
-
-#if defined(HAVE_UDF_ARGS_T_NOBODY_UID) || defined(HAVE_UDF_ARGS_T_ANON_UID)
- uid_nobody = a_uid("nobody", "user");
- if (uid_nobody == 0) {
- plog(XLOG_ERROR, "mount_udf: invalid uid for nobody");
- return EPERM;
- }
-#endif /* defined(HAVE_UDF_ARGS_T_NOBODY_UID) || defined(HAVE_UDF_ARGS_T_ANON_UID) */
-
-#if defined(HAVE_UDF_ARGS_T_NOBODY_GID) || defined(HAVE_UDF_ARGS_T_ANON_GID)
- gid_nobody = a_gid("nobody", "group");
- if (gid_nobody == 0) {
- plog(XLOG_ERROR, "mount_udf: invalid gid for nobody");
- return EPERM;
- }
-#endif /* defined(HAVE_UDF_ARGS_T_NOBODY_GID) || defined(HAVE_UDF_ARGS_T_ANON_GID) */
-
- str = NULL;
- memset((voidp) &udf_args, 0, sizeof(udf_args)); /* Paranoid */
-
- /*
- * Fill in the mount structure
- */
- memset((voidp)&mnt, 0, sizeof(mnt));
- mnt.mnt_dir = mntdir;
- mnt.mnt_fsname = fs_name;
- mnt.mnt_type = MNTTAB_TYPE_UDF;
- mnt.mnt_opts = opts;
-
- flags = compute_mount_flags(&mnt);
-
-#ifdef HAVE_UDF_ARGS_T_UDFMFLAGS
-# if defined(MNT2_UDF_OPT_CLOSESESSION) && defined(MNTTAB_OPT_CLOSESESSION)
- if (amu_hasmntopt(&mnt, MNTTAB_OPT_CLOSESESSION))
- udf_args.udfmflags |= MNT2_UDF_OPT_CLOSESESSION;
-# endif /* defined(MNT2_UDF_OPT_CLOSESESSION) && defined(MNTTAB_OPT_CLOSESESSION) */
-#endif /* HAVE_UDF_ARGS_T_UDFMFLAGS */
-
-#ifdef HAVE_UDF_ARGS_T_NOBODY_UID
- udf_args.nobody_uid = uid_nobody;
-#endif /* HAVE_UDF_ARGS_T_NOBODY_UID */
-
-#ifdef HAVE_UDF_ARGS_T_NOBODY_GID
- udf_args.nobody_gid = gid_nobody;
-#endif /* HAVE_UDF_ARGS_T_NOBODY_GID */
-
-#ifdef HAVE_UDF_ARGS_T_ANON_UID
- udf_args.anon_uid = uid_nobody; /* default to nobody */
- if ((str = hasmntstr(&mnt, MNTTAB_OPT_USER)) != NULL) {
- udf_args.anon_uid = a_uid(str, MNTTAB_OPT_USER);
- XFREE(str);
- }
-#endif /* HAVE_UDF_ARGS_T_ANON_UID */
-
-#ifdef HAVE_UDF_ARGS_T_ANON_GID
- udf_args.anon_gid = gid_nobody; /* default to nobody */
- if ((str = hasmntstr(&mnt, MNTTAB_OPT_GROUP)) != NULL) {
- udf_args.anon_gid = a_gid(str, MNTTAB_OPT_GROUP);
- XFREE(str);
- }
-#endif /* HAVE_UDF_ARGS_T_ANON_GID */
-
-#ifdef HAVE_UDF_ARGS_T_GMTOFF
- udf_args.gmtoff = 0;
- if ((str = hasmntstr(&mnt, MNTTAB_OPT_GMTOFF)) != NULL) {
- udf_args.gmtoff = a_num(str, MNTTAB_OPT_GMTOFF);
- XFREE(str);
- }
-#endif /* HAVE_UDF_ARGS_T_GMTOFF */
-
-#ifdef HAVE_UDF_ARGS_T_SESSIONNR
- udf_args.sessionnr = 0;
- if ((str = hasmntstr(&mnt, MNTTAB_OPT_SESSIONNR)) != NULL) {
- udf_args.sessionnr = a_num(str, MNTTAB_OPT_SESSIONNR);
- XFREE(str);
- }
-#endif /* HAVE_UDF_ARGS_T_SESSIONNR */
-
-#ifdef HAVE_UDF_ARGS_T_VERSION
-# ifdef UDFMNT_VERSION
- udf_args.version = UDFMNT_VERSION;
-# endif /* UDFMNT_VERSION */
-#endif /* HAVE_UDF_ARGS_T_VERSION */
-
-#ifdef HAVE_UDF_ARGS_T_FSPEC
- udf_args.fspec = fs_name;
-#endif /* HAVE_UFS_ARGS_T_FSPEC */
-
- /*
- * Call generic mount routine
- */
- return mount_fs(&mnt, flags, (caddr_t)&udf_args, 0, type, 0, NULL,
- mnttab_file_name, on_autofs);
-}
-
-static int
-udf_mount(am_node *am, mntfs *mf)
-{
- int on_autofs;
- int error;
-
- on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
- error = mount_udf(mf->mf_mount, mf->mf_info, mf->mf_mopts, on_autofs);
- if (error) {
- errno = error;
- plog(XLOG_ERROR, "mount_udf: %m");
- return error;
- }
- return 0;
-}
-
-
-static int
-udf_umount(am_node *am, mntfs *mf)
-{
- int unmount_flags;
-
- unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
- return UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
-}
diff --git a/contrib/amd/amd/ops_ufs.c b/contrib/amd/amd/ops_ufs.c
deleted file mode 100644
index 0d8f3068dbe5..000000000000
--- a/contrib/amd/amd/ops_ufs.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_ufs.c
- *
- */
-
-/*
- * UN*X file system
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward declarations */
-static char *ufs_match(am_opts *fo);
-static int ufs_mount(am_node *am, mntfs *mf);
-static int ufs_umount(am_node *am, mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops ufs_ops =
-{
-#ifndef __NetBSD__
- "ufs",
-#else
- "ffs",
-#endif
- ufs_match,
- 0, /* ufs_init */
- ufs_mount,
- ufs_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* ufs_readlink */
- 0, /* ufs_mounted */
- 0, /* ufs_umounted */
- amfs_generic_find_srvr,
- 0, /* ufs_get_wchan */
- FS_MKMNT | FS_NOTIMEOUT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_UFS_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * UFS needs local filesystem and device.
- */
-static char *
-ufs_match(am_opts *fo)
-{
-
- if (!fo->opt_dev) {
- plog(XLOG_USER, "ufs: no device specified");
- return 0;
- }
-
- dlog("UFS: mounting device \"%s\" on \"%s\"", fo->opt_dev, fo->opt_fs);
-
- /*
- * Determine magic cookie to put in mtab
- */
- return xstrdup(fo->opt_dev);
-}
-
-
-static int
-mount_ufs(char *mntdir, char *fs_name, char *opts, int on_autofs)
-{
- ufs_args_t ufs_args;
- mntent_t mnt;
- int genflags;
-
- /*
- * Figure out the name of the file system type.
- */
- MTYPE_TYPE type = MOUNT_TYPE_UFS;
-
- memset((voidp) &ufs_args, 0, sizeof(ufs_args)); /* Paranoid */
-
- /*
- * Fill in the mount structure
- */
- memset((voidp) &mnt, 0, sizeof(mnt));
- mnt.mnt_dir = mntdir;
- mnt.mnt_fsname = fs_name;
- mnt.mnt_type = MNTTAB_TYPE_UFS;
- mnt.mnt_opts = opts;
-
- genflags = compute_mount_flags(&mnt);
-#ifdef HAVE_FS_AUTOFS
- if (on_autofs)
- genflags |= autofs_compute_mount_flags(&mnt);
-#endif /* HAVE_FS_AUTOFS */
-
-#ifdef HAVE_UFS_ARGS_T_FLAGS
- ufs_args.flags = genflags; /* XXX: is this correct? */
-#endif /* HAVE_UFS_ARGS_T_FLAGS */
-
-#ifdef HAVE_UFS_ARGS_T_UFS_FLAGS
- ufs_args.ufs_flags = genflags;
-#endif /* HAVE_UFS_ARGS_T_UFS_FLAGS */
-
-#ifdef HAVE_UFS_ARGS_T_FSPEC
- ufs_args.fspec = fs_name;
-#endif /* HAVE_UFS_ARGS_T_FSPEC */
-
-#ifdef HAVE_UFS_ARGS_T_UFS_PGTHRESH
- ufs_args.ufs_pgthresh = hasmntval(&mnt, MNTTAB_OPT_PGTHRESH);
-#endif /* HAVE_UFS_ARGS_T_UFS_PGTHRESH */
-
- /*
- * Call generic mount routine
- */
- return mount_fs(&mnt, genflags, (caddr_t) &ufs_args, 0, type, 0, NULL, mnttab_file_name, on_autofs);
-}
-
-
-static int
-ufs_mount(am_node *am, mntfs *mf)
-{
- int on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
- int error;
-
- error = mount_ufs(mf->mf_mount, mf->mf_info, mf->mf_mopts, on_autofs);
- if (error) {
- errno = error;
- plog(XLOG_ERROR, "mount_ufs: %m");
- return error;
- }
-
- return 0;
-}
-
-
-static int
-ufs_umount(am_node *am, mntfs *mf)
-{
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
-
- return UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
-}
diff --git a/contrib/amd/amd/ops_umapfs.c b/contrib/amd/amd/ops_umapfs.c
deleted file mode 100644
index 6f9d39d9d5db..000000000000
--- a/contrib/amd/amd/ops_umapfs.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_umapfs.c
- *
- */
-
-/*
- * uid/gid mapping filesystem.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* FEEL FREE TO IMPLEMENT THIS... :-) */
diff --git a/contrib/amd/amd/ops_unionfs.c b/contrib/amd/amd/ops_unionfs.c
deleted file mode 100644
index e6286133cbfa..000000000000
--- a/contrib/amd/amd/ops_unionfs.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_unionfs.c
- *
- */
-
-/*
- * Union filesystem (ala BSD-4.4)
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* FEEL FREE TO IMPLEMENT THIS... :-) */
diff --git a/contrib/amd/amd/ops_xfs.c b/contrib/amd/amd/ops_xfs.c
deleted file mode 100644
index 6e1495e295f4..000000000000
--- a/contrib/amd/amd/ops_xfs.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/ops_xfs.c
- *
- */
-
-/*
- * Irix UN*X file system: XFS (Extended File System)
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* forward declarations */
-static char *xfs_match(am_opts *fo);
-static int xfs_mount(am_node *am, mntfs *mf);
-static int xfs_umount(am_node *am, mntfs *mf);
-
-/*
- * Ops structure
- */
-am_ops xfs_ops =
-{
- "xfs",
- xfs_match,
- 0, /* xfs_init */
- xfs_mount,
- xfs_umount,
- amfs_error_lookup_child,
- amfs_error_mount_child,
- amfs_error_readdir,
- 0, /* xfs_readlink */
- 0, /* xfs_mounted */
- 0, /* xfs_umounted */
- amfs_generic_find_srvr,
- 0, /* xfs_get_wchan */
- FS_MKMNT | FS_NOTIMEOUT | FS_UBACKGROUND | FS_AMQINFO, /* nfs_fs_flags */
-#ifdef HAVE_FS_AUTOFS
- AUTOFS_XFS_FS_FLAGS,
-#endif /* HAVE_FS_AUTOFS */
-};
-
-
-/*
- * XFS needs local filesystem and device.
- */
-static char *
-xfs_match(am_opts *fo)
-{
-
- if (!fo->opt_dev) {
- plog(XLOG_USER, "xfs: no device specified");
- return 0;
- }
-
- dlog("XFS: mounting device \"%s\" on \"%s\"", fo->opt_dev, fo->opt_fs);
-
- /*
- * Determine magic cookie to put in mtab
- */
- return xstrdup(fo->opt_dev);
-}
-
-
-static int
-mount_xfs(char *mntdir, char *fs_name, char *opts, int on_autofs)
-{
- xfs_args_t xfs_args;
- mntent_t mnt;
- int flags;
-
- /*
- * Figure out the name of the file system type.
- */
- MTYPE_TYPE type = MOUNT_TYPE_XFS;
-
- memset((voidp) &xfs_args, 0, sizeof(xfs_args)); /* Paranoid */
-
- /*
- * Fill in the mount structure
- */
- memset((voidp) &mnt, 0, sizeof(mnt));
- mnt.mnt_dir = mntdir;
- mnt.mnt_fsname = fs_name;
- mnt.mnt_type = MNTTAB_TYPE_XFS;
- mnt.mnt_opts = opts;
-
- flags = compute_mount_flags(&mnt);
-#ifdef HAVE_FS_AUTOFS
- if (on_autofs)
- flags |= autofs_compute_mount_flags(&mnt);
-#endif /* HAVE_FS_AUTOFS */
-
-#ifdef HAVE_XFS_ARGS_T_FLAGS
- xfs_args.flags = 0; /* XXX: fix this to correct flags */
-#endif /* HAVE_XFS_ARGS_T_FLAGS */
-#ifdef HAVE_XFS_ARGS_T_FSPEC
- xfs_args.fspec = fs_name;
-#endif /* HAVE_XFS_ARGS_T_FSPEC */
-
- /*
- * Call generic mount routine
- */
- return mount_fs(&mnt, flags, (caddr_t) &xfs_args, 0, type, 0, NULL, mnttab_file_name, on_autofs);
-}
-
-
-static int
-xfs_mount(am_node *am, mntfs *mf)
-{
- int on_autofs = mf->mf_flags & MFF_ON_AUTOFS;
- int error;
-
- error = mount_xfs(mf->mf_mount, mf->mf_info, mf->mf_mopts, on_autofs);
- if (error) {
- errno = error;
- plog(XLOG_ERROR, "mount_xfs: %m");
- return error;
- }
-
- return 0;
-}
-
-
-static int
-xfs_umount(am_node *am, mntfs *mf)
-{
- int unmount_flags = (mf->mf_flags & MFF_ON_AUTOFS) ? AMU_UMOUNT_AUTOFS : 0;
-
- return UMOUNT_FS(mf->mf_mount, mnttab_file_name, unmount_flags);
-}
diff --git a/contrib/amd/amd/opts.c b/contrib/amd/amd/opts.c
deleted file mode 100644
index 4bc833a8dd85..000000000000
--- a/contrib/amd/amd/opts.c
+++ /dev/null
@@ -1,1560 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/opts.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/*
- * MACROS:
- */
-#define NLEN 16 /* Length of longest option name (conservative) */
-#define S(x) (x) , (sizeof(x)-1)
-/*
- * The BUFSPACE macros checks that there is enough space
- * left in the expansion buffer. If there isn't then we
- * give up completely. This is done to avoid crashing the
- * automounter itself (which would be a bad thing to do).
- */
-#define BUFSPACE(ep, len) (((ep) + (len)) < expbuf+MAXPATHLEN)
-
-/*
- * TYPEDEFS:
- */
-typedef int (*IntFuncPtr) (char *);
-typedef struct opt_apply opt_apply;
-enum vs_opt { SelEQ, SelNE, VarAss };
-
-/*
- * STRUCTURES
- */
-struct opt {
- char *name; /* Name of the option */
- int nlen; /* Length of option name */
- char **optp; /* Pointer to option value string */
- char **sel_p; /* Pointer to selector value string */
- int (*fxn_p)(char *); /* Pointer to boolean function */
- int case_insensitive; /* How to do selector comparisons */
-};
-
-struct opt_apply {
- char **opt;
- char *val;
-};
-
-struct functable {
- char *name;
- IntFuncPtr func;
-};
-
-/*
- * FORWARD DEFINITION:
- */
-static int f_in_network(char *);
-static int f_xhost(char *);
-static int f_netgrp(char *);
-static int f_netgrpd(char *);
-static int f_exists(char *);
-static int f_false(char *);
-static int f_true(char *);
-static inline char *expand_options(char *key);
-
-/*
- * STATICS:
- */
-static char NullStr[] = "<NULL>";
-static char nullstr[] = "";
-static char *opt_dkey = NullStr;
-static char *opt_host = nullstr; /* XXX: was the global hostname */
-static char *opt_hostd = hostd;
-static char *opt_key = nullstr;
-static char *opt_keyd = nullstr;
-static char *opt_map = nullstr;
-static char *opt_path = nullstr;
-char uid_str[SIZEOF_UID_STR], gid_str[SIZEOF_GID_STR];
-char *opt_uid = uid_str;
-char *opt_gid = gid_str;
-static char *vars[8];
-static char *literal_dollar = "$"; /* ${dollar}: a literal '$' in maps */
-
-/*
- * GLOBALS
- */
-static struct am_opts fs_static; /* copy of the options to play with */
-
-
-/*
- * Options in some order corresponding to frequency of use so that
- * first-match algorithm is sped up.
- */
-static struct opt opt_fields[] = {
- /* Name and length.
- Option str. Selector str. boolean fxn. case sensitive */
- { S("opts"),
- &fs_static.opt_opts, 0, 0, FALSE },
- { S("host"),
- 0, &opt_host, 0, TRUE },
- { S("hostd"),
- 0, &opt_hostd, 0, TRUE },
- { S("type"),
- &fs_static.opt_type, 0, 0, FALSE },
- { S("rhost"),
- &fs_static.opt_rhost, 0, 0, TRUE },
- { S("rfs"),
- &fs_static.opt_rfs, 0, 0, FALSE },
- { S("fs"),
- &fs_static.opt_fs, 0, 0, FALSE },
- { S("key"),
- 0, &opt_key, 0, FALSE },
- { S("map"),
- 0, &opt_map, 0, FALSE },
- { S("sublink"),
- &fs_static.opt_sublink, 0, 0, FALSE },
- { S("arch"),
- 0, &gopt.arch, 0, TRUE },
- { S("dev"),
- &fs_static.opt_dev, 0, 0, FALSE },
- { S("pref"),
- &fs_static.opt_pref, 0, 0, FALSE },
- { S("path"),
- 0, &opt_path, 0, FALSE },
- { S("autodir"),
- 0, &gopt.auto_dir, 0, FALSE },
- { S("delay"),
- &fs_static.opt_delay, 0, 0, FALSE },
- { S("domain"),
- 0, &hostdomain, 0, TRUE },
- { S("karch"),
- 0, &gopt.karch, 0, TRUE },
- { S("cluster"),
- 0, &gopt.cluster, 0, TRUE },
- { S("wire"),
- 0, 0, f_in_network, TRUE },
- { S("network"),
- 0, 0, f_in_network, TRUE },
- { S("netnumber"),
- 0, 0, f_in_network, TRUE },
- { S("byte"),
- 0, &endian, 0, TRUE },
- { S("os"),
- 0, &gopt.op_sys, 0, TRUE },
- { S("osver"),
- 0, &gopt.op_sys_ver, 0, TRUE },
- { S("full_os"),
- 0, &gopt.op_sys_full, 0, TRUE },
- { S("vendor"),
- 0, &gopt.op_sys_vendor, 0, TRUE },
- { S("remopts"),
- &fs_static.opt_remopts, 0, 0, FALSE },
- { S("mount"),
- &fs_static.opt_mount, 0, 0, FALSE },
- { S("unmount"),
- &fs_static.opt_unmount, 0, 0, FALSE },
- { S("umount"),
- &fs_static.opt_umount, 0, 0, FALSE },
- { S("cache"),
- &fs_static.opt_cache, 0, 0, FALSE },
- { S("user"),
- &fs_static.opt_user, 0, 0, FALSE },
- { S("group"),
- &fs_static.opt_group, 0, 0, FALSE },
- { S(".key"),
- 0, &opt_dkey, 0, FALSE },
- { S("key."),
- 0, &opt_keyd, 0, FALSE },
- { S("maptype"),
- &fs_static.opt_maptype, 0, 0, FALSE },
- { S("cachedir"),
- &fs_static.opt_cachedir, 0, 0, FALSE },
- { S("addopts"),
- &fs_static.opt_addopts, 0, 0, FALSE },
- { S("uid"),
- 0, &opt_uid, 0, FALSE },
- { S("gid"),
- 0, &opt_gid, 0, FALSE },
- { S("mount_type"),
- &fs_static.opt_mount_type, 0, 0, FALSE },
- { S("dollar"),
- &literal_dollar, 0, 0, FALSE },
- { S("var0"),
- &vars[0], 0, 0, FALSE },
- { S("var1"),
- &vars[1], 0, 0, FALSE },
- { S("var2"),
- &vars[2], 0, 0, FALSE },
- { S("var3"),
- &vars[3], 0, 0, FALSE },
- { S("var4"),
- &vars[4], 0, 0, FALSE },
- { S("var5"),
- &vars[5], 0, 0, FALSE },
- { S("var6"),
- &vars[6], 0, 0, FALSE },
- { S("var7"),
- &vars[7], 0, 0, FALSE },
- { 0, 0, 0, 0, 0, FALSE },
-};
-
-static struct functable functable[] = {
- { "in_network", f_in_network },
- { "xhost", f_xhost },
- { "netgrp", f_netgrp },
- { "netgrpd", f_netgrpd },
- { "exists", f_exists },
- { "false", f_false },
- { "true", f_true },
- { 0, 0 },
-};
-
-/*
- * Specially expand the remote host name first
- */
-static opt_apply rhost_expansion[] =
-{
- {&fs_static.opt_rhost, "${host}"},
- {0, 0},
-};
-
-/*
- * List of options which need to be expanded
- * Note that the order here _may_ be important.
- */
-static opt_apply expansions[] =
-{
- {&fs_static.opt_sublink, 0},
- {&fs_static.opt_rfs, "${path}"},
- {&fs_static.opt_fs, "${autodir}/${rhost}${rfs}"},
- {&fs_static.opt_opts, "rw"},
- {&fs_static.opt_remopts, "${opts}"},
- {&fs_static.opt_mount, 0},
- {&fs_static.opt_unmount, 0},
- {&fs_static.opt_umount, 0},
- {&fs_static.opt_cachedir, 0},
- {&fs_static.opt_addopts, 0},
- {0, 0},
-};
-
-/*
- * List of options which need to be free'ed before re-use
- */
-static opt_apply to_free[] =
-{
- {&fs_static.fs_glob, 0},
- {&fs_static.fs_local, 0},
- {&fs_static.fs_mtab, 0},
- {&fs_static.opt_sublink, 0},
- {&fs_static.opt_rfs, 0},
- {&fs_static.opt_fs, 0},
- {&fs_static.opt_rhost, 0},
- {&fs_static.opt_opts, 0},
- {&fs_static.opt_remopts, 0},
- {&fs_static.opt_mount, 0},
- {&fs_static.opt_unmount, 0},
- {&fs_static.opt_umount, 0},
- {&fs_static.opt_cachedir, 0},
- {&fs_static.opt_addopts, 0},
- {&vars[0], 0},
- {&vars[1], 0},
- {&vars[2], 0},
- {&vars[3], 0},
- {&vars[4], 0},
- {&vars[5], 0},
- {&vars[6], 0},
- {&vars[7], 0},
- {0, 0},
-};
-
-
-/*
- * expand backslash escape sequences
- * (escaped slash is handled separately in normalize_slash)
- */
-static char
-backslash(char **p)
-{
- char c;
-
- if ((*p)[1] == '\0') {
- plog(XLOG_USER, "Empty backslash escape");
- return **p;
- }
-
- if (**p == '\\') {
- (*p)++;
- switch (**p) {
- case 'g':
- c = '\007'; /* Bell */
- break;
- case 'b':
- c = '\010'; /* Backspace */
- break;
- case 't':
- c = '\011'; /* Horizontal Tab */
- break;
- case 'n':
- c = '\012'; /* New Line */
- break;
- case 'v':
- c = '\013'; /* Vertical Tab */
- break;
- case 'f':
- c = '\014'; /* Form Feed */
- break;
- case 'r':
- c = '\015'; /* Carriage Return */
- break;
- case 'e':
- c = '\033'; /* Escape */
- break;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- {
- int cnt, val, ch;
-
- for (cnt = 0, val = 0; cnt < 3; cnt++) {
- ch = *(*p)++;
- if (ch < '0' || ch > '7') {
- (*p)--;
- break;
- }
- val = (val << 3) | (ch - '0');
- }
-
- if ((val & 0xffffff00) != 0)
- plog(XLOG_USER,
- "Too large character constant %u\n",
- val);
- c = (char) val;
- --(*p);
- }
- break;
-
- default:
- c = **p;
- break;
- }
- } else
- c = **p;
-
- return c;
-}
-
-
-/*
- * Skip to next option in the string
- */
-static char *
-opt(char **p)
-{
- char *cp = *p;
- char *dp = cp;
- char *s = cp;
-
-top:
- while (*cp && *cp != ';') {
- if (*cp == '"') {
- /*
- * Skip past string
- */
- for (cp++; *cp && *cp != '"'; cp++)
- if (*cp == '\\')
- *dp++ = backslash(&cp);
- else
- *dp++ = *cp;
- if (*cp)
- cp++;
- } else {
- *dp++ = *cp++;
- }
- }
-
- /*
- * Skip past any remaining ';'s
- */
- while (*cp == ';')
- cp++;
-
- /*
- * If we have a zero length string
- * and there are more fields, then
- * parse the next one. This allows
- * sequences of empty fields.
- */
- if (*cp && dp == s)
- goto top;
-
- *dp = '\0';
-
- *p = cp;
- return s;
-}
-
-
-/*
- * These routines add a new style of selector; function-style boolean
- * operators. To add new ones, just define functions as in true, false,
- * exists (below) and add them to the functable, above.
- *
- * Usage example: Some people have X11R5 local, some go to a server. I do
- * this:
- *
- * * exists(/usr/pkg/${key});type:=link;fs:=/usr/pkg/${key} || \
- * -type:=nfs;rfs=/usr/pkg/${key} \
- * rhost:=server1 \
- * rhost:=server2
- *
- * -Rens Troost <rens@imsi.com>
- */
-static IntFuncPtr
-functable_lookup(char *key)
-{
- struct functable *fp;
-
- for (fp = functable; fp->name; fp++)
- if (FSTREQ(fp->name, key))
- return (fp->func);
- return (IntFuncPtr) NULL;
-}
-
-
-/*
- * Fill in the global structure fs_static by
- * cracking the string opts. opts may be
- * scribbled on at will. Does NOT evaluate options.
- * Returns 0 on error, 1 if no syntax errors were discovered.
- */
-static int
-split_opts(char *opts, char *mapkey)
-{
- char *o = opts;
- char *f;
-
- /*
- * For each user-specified option
- */
- for (f = opt(&o); *f; f = opt(&o)) {
- struct opt *op;
- char *eq = strchr(f, '=');
- char *opt = NULL;
-
- if (!eq)
- continue;
-
- if (*(eq-1) == '!' ||
- eq[1] == '=' ||
- eq[1] == '!') { /* != or == or =! */
- continue; /* we don't care about selectors */
- }
-
- if (*(eq-1) == ':') { /* := */
- *(eq-1) = '\0';
- } else {
- /* old style assignment */
- eq[0] = '\0';
- }
- opt = eq + 1;
-
- /*
- * For each recognized option
- */
- for (op = opt_fields; op->name; op++) {
- /*
- * Check whether they match
- */
- if (FSTREQ(op->name, f)) {
- if (op->sel_p) {
- plog(XLOG_USER, "key %s: Can't assign to a selector (%s)",
- mapkey, op->name);
- return 0;
- }
- *op->optp = opt; /* actual assignment into fs_static */
- break; /* break out of for loop */
- } /* end of "if (FSTREQ(op->name, f))" statement */
- } /* end of "for (op = opt_fields..." statement */
-
- if (!op->name)
- plog(XLOG_USER, "key %s: Unrecognized key/option \"%s\"", mapkey, f);
- }
-
- return 1;
-}
-
-
-/*
- * Just evaluate selectors, which were split by split_opts.
- * Returns 0 on error or no match, 1 if matched.
- */
-static int
-eval_selectors(char *opts, char *mapkey)
-{
- char *o, *old_o;
- char *f;
- int ret = 0;
-
- o = old_o = xstrdup(opts);
-
- /*
- * For each user-specified option
- */
- for (f = opt(&o); *f; f = opt(&o)) {
- struct opt *op;
- enum vs_opt vs_opt;
- char *eq = strchr(f, '=');
- char *fx;
- IntFuncPtr func;
- char *opt = NULL;
- char *arg;
-
- if (!eq) {
- /*
- * No value, is it a function call?
- */
- arg = strchr(f, '(');
-
- if (!arg || arg[1] == '\0' || arg == f) {
- /*
- * No, just continue
- */
- plog(XLOG_USER, "key %s: No value component in \"%s\"", mapkey, f);
- continue;
- }
-
- /* null-terminate the argument */
- *arg++ = '\0';
- fx = strchr(arg, ')');
- if (fx == NULL || fx == arg) {
- plog(XLOG_USER, "key %s: Malformed function in \"%s\"", mapkey, f);
- continue;
- }
- *fx = '\0';
-
- if (f[0] == '!') {
- vs_opt = SelNE;
- f++;
- } else {
- vs_opt = SelEQ;
- }
- /*
- * look up f in functable and pass it arg.
- * func must return 0 on failure, and 1 on success.
- */
- if ((func = functable_lookup(f))) {
- int funok;
-
- /* this allocates memory, don't forget to free */
- arg = expand_options(arg);
- funok = func(arg);
- XFREE(arg);
-
- if (vs_opt == SelNE)
- funok = !funok;
- if (!funok)
- goto out;
-
- continue;
- } else {
- plog(XLOG_USER, "key %s: unknown function \"%s\"", mapkey, f);
- goto out;
- }
- } else {
- if (eq[1] == '\0' || eq == f) {
-#ifdef notdef
- /* We allow empty assignments */
- plog(XLOG_USER, "key %s: Bad selector \"%s\"", mapkey, f);
-#endif
- continue;
- }
- }
-
- /*
- * Check what type of operation is happening
- * !=, =! is SelNE
- * == is SelEQ
- * =, := is VarAss
- */
- if (*(eq-1) == '!') { /* != */
- vs_opt = SelNE;
- *(eq-1) = '\0';
- opt = eq + 1;
- } else if (*(eq-1) == ':') { /* := */
- continue;
- } else if (eq[1] == '=') { /* == */
- vs_opt = SelEQ;
- eq[0] = '\0';
- opt = eq + 2;
- } else if (eq[1] == '!') { /* =! */
- vs_opt = SelNE;
- eq[0] = '\0';
- opt = eq + 2;
- } else {
- /* old style assignment */
- continue;
- }
-
- /*
- * For each recognized option
- */
- for (op = opt_fields; op->name; op++) {
- /*
- * Check whether they match
- */
- if (FSTREQ(op->name, f)) {
- opt = expand_options(opt);
-
- if (op->sel_p != NULL) {
- int selok;
- if (op->case_insensitive) {
- selok = STRCEQ(*op->sel_p, opt);
- } else {
- selok = STREQ(*op->sel_p, opt);
- }
- if (vs_opt == SelNE)
- selok = !selok;
- if (!selok) {
- plog(XLOG_MAP, "key %s: map selector %s (=%s) did not %smatch %s",
- mapkey,
- op->name,
- *op->sel_p,
- vs_opt == SelNE ? "mis" : "",
- opt);
- XFREE(opt);
- goto out;
- }
- XFREE(opt);
- }
- /* check if to apply a function */
- if (op->fxn_p) {
- int funok;
-
- funok = op->fxn_p(opt);
- if (vs_opt == SelNE)
- funok = !funok;
- if (!funok) {
- plog(XLOG_MAP, "key %s: map function %s did not %smatch %s",
- mapkey,
- op->name,
- vs_opt == SelNE ? "mis" : "",
- opt);
- XFREE(opt);
- goto out;
- }
- XFREE(opt);
- }
- break; /* break out of for loop */
- }
- }
-
- if (!op->name)
- plog(XLOG_USER, "key %s: Unrecognized key/option \"%s\"", mapkey, f);
- }
-
- /* all is ok */
- ret = 1;
-
- out:
- free(old_o);
- return ret;
-}
-
-
-/*
- * Skip to next option in the string, but don't scribble over the string.
- * However, *p gets repointed to the start of the next string past ';'.
- */
-static char *
-opt_no_scribble(char **p)
-{
- char *cp = *p;
- char *dp = cp;
- char *s = cp;
-
-top:
- while (*cp && *cp != ';') {
- if (*cp == '\"') {
- /*
- * Skip past string
- */
- cp++;
- while (*cp && *cp != '\"')
- *dp++ = *cp++;
- if (*cp)
- cp++;
- } else {
- *dp++ = *cp++;
- }
- }
-
- /*
- * Skip past any remaining ';'s
- */
- while (*cp == ';')
- cp++;
-
- /*
- * If we have a zero length string
- * and there are more fields, then
- * parse the next one. This allows
- * sequences of empty fields.
- */
- if (*cp && dp == s)
- goto top;
-
- *p = cp;
- return s;
-}
-
-
-/*
- * Strip any selectors from a string. Selectors are all assumed to be
- * first in the string. This is used for the new /defaults method which will
- * use selectors as well.
- */
-char *
-strip_selectors(char *opts, char *mapkey)
-{
- /*
- * Fill in the global structure fs_static by
- * cracking the string opts. opts may be
- * scribbled on at will.
- */
- char *o = opts;
- char *oo = opts;
- char *f;
-
- /*
- * Scan options. Note that the opt() function scribbles on the opt string.
- */
- while (*(f = opt_no_scribble(&o))) {
- enum vs_opt vs_opt = VarAss;
- char *eq = strchr(f, '=');
-
- if (!eq || eq[1] == '\0' || eq == f) {
- /*
- * No option or assignment? Return as is.
- */
- plog(XLOG_USER, "key %s: No option or assignment in \"%s\"", mapkey, f);
- return o;
- }
- /*
- * Check what type of operation is happening
- * !=, =! is SelNE
- * == is SelEQ
- * := is VarAss
- */
- if (*(eq-1) == '!') { /* != */
- vs_opt = SelNE;
- } else if (*(eq-1) == ':') { /* := */
- vs_opt = VarAss;
- } else if (eq[1] == '=') { /* == */
- vs_opt = SelEQ;
- } else if (eq[1] == '!') { /* =! */
- vs_opt = SelNE;
- }
- switch (vs_opt) {
- case SelEQ:
- case SelNE:
- /* Skip this selector, maybe there's another one following it */
- plog(XLOG_USER, "skipping selector to \"%s\"", o);
- /* store previous match. it may have been the first assignment */
- oo = o;
- break;
-
- case VarAss:
- /* found the first assignment, return the string starting with it */
- dlog("found first assignment past selectors \"%s\"", o);
- return oo;
- }
- }
-
- /* return the same string by default. should not happen. */
- return oo;
-}
-
-
-/*****************************************************************************
- *** BOOLEAN FUNCTIONS (return 0 if false, 1 if true): ***
- *****************************************************************************/
-
-/* test if arg is any of this host's network names or numbers */
-static int
-f_in_network(char *arg)
-{
- int status;
-
- if (!arg)
- return 0;
-
- status = is_network_member(arg);
- dlog("%s is %son a local network", arg, (status ? "" : "not "));
- return status;
-}
-
-
-/*
- * Test if arg is any of this host's names or aliases (CNAMES).
- * Note: this function compares against the fully expanded host name (hostd).
- * XXX: maybe we also need to compare against the stripped host name?
- */
-static int
-f_xhost(char *arg)
-{
- struct hostent *hp;
- char **cp;
-
- if (!arg)
- return 0;
-
- /* simple test: does it match main host name? */
- if (STREQ(arg, opt_hostd))
- return 1;
-
- /* now find all of the names of "arg" and compare against opt_hostd */
- hp = gethostbyname(arg);
- if (hp == NULL) {
-#ifdef HAVE_HSTRERROR
- plog(XLOG_ERROR, "gethostbyname xhost(%s): %s", arg, hstrerror(h_errno));
-#else /* not HAVE_HSTRERROR */
- plog(XLOG_ERROR, "gethostbyname xhost(%s): h_errno %d", arg, h_errno);
-#endif /* not HAVE_HSTRERROR */
- return 0;
- }
- /* check primary name */
- if (hp->h_name) {
- dlog("xhost: compare %s==%s", hp->h_name, opt_hostd);
- if (STREQ(hp->h_name, opt_hostd)) {
- plog(XLOG_INFO, "xhost(%s): matched h_name %s", arg, hp->h_name);
- return 1;
- }
- }
- /* check all aliases, if any */
- if (hp->h_aliases == NULL) {
- dlog("gethostbyname(%s) has no aliases", arg);
- return 0;
- }
- cp = hp->h_aliases;
- while (*cp) {
- dlog("xhost: compare alias %s==%s", *cp, opt_hostd);
- if (STREQ(*cp, opt_hostd)) {
- plog(XLOG_INFO, "xhost(%s): matched alias %s", arg, *cp);
- return 1;
- }
- cp++;
- }
- /* nothing matched */
- return 0;
-}
-
-
-/* test if this host (short hostname form) is in netgroup (arg) */
-static int
-f_netgrp(char *arg)
-{
- int status;
- char *ptr, *nhost;
-
- if ((ptr = strchr(arg, ',')) != NULL) {
- *ptr = '\0';
- nhost = ptr + 1;
- } else {
- nhost = opt_host;
- }
- status = innetgr(arg, nhost, NULL, NULL);
- dlog("netgrp = %s status = %d host = %s", arg, status, nhost);
- if (ptr)
- *ptr = ',';
- return status;
-}
-
-
-/* test if this host (fully-qualified name) is in netgroup (arg) */
-static int
-f_netgrpd(char *arg)
-{
- int status;
- char *ptr, *nhost;
-
- if ((ptr = strchr(arg, ',')) != NULL) {
- *ptr = '\0';
- nhost = ptr + 1;
- } else {
- nhost = opt_hostd;
- }
- status = innetgr(arg, nhost, NULL, NULL);
- dlog("netgrp = %s status = %d hostd = %s", arg, status, nhost);
- if (ptr)
- *ptr = ',';
- return status;
-}
-
-
-/* test if file (arg) exists via lstat */
-static int
-f_exists(char *arg)
-{
- struct stat buf;
-
- if (lstat(arg, &buf) < 0)
- return (0);
- else
- return (1);
-}
-
-
-/* always false */
-static int
-f_false(char *arg)
-{
- return (0);
-}
-
-
-/* always true */
-static int
-f_true(char *arg)
-{
- return (1);
-}
-
-
-/*
- * Free an option
- */
-static void
-free_op(opt_apply *p, int b)
-{
- XFREE(*p->opt);
-}
-
-
-/*
- * Normalize slashes in the string.
- */
-void
-normalize_slash(char *p)
-{
- char *f, *f0;
-
- if (!(gopt.flags & CFM_NORMALIZE_SLASHES))
- return;
-
- f0 = f = strchr(p, '/');
- if (f) {
- char *t = f;
- do {
- /* assert(*f == '/'); */
- if (f == f0 && f[0] == '/' && f[1] == '/') {
- /* copy double slash iff first */
- *t++ = *f++;
- *t++ = *f++;
- } else {
- /* copy a single / across */
- *t++ = *f++;
- }
-
- /* assert(f[-1] == '/'); */
- /* skip past more /'s */
- while (*f == '/')
- f++;
-
- /* assert(*f != '/'); */
- /* keep copying up to next / */
- while (*f && *f != '/') {
- /* support escaped slashes '\/' */
- if (f[0] == '\\' && f[1] == '/')
- f++; /* skip backslash */
- *t++ = *f++;
- }
-
- /* assert(*f == 0 || *f == '/'); */
-
- } while (*f);
- *t = '\0'; /* derived from fix by Steven Glassman */
- }
-}
-
-
-/*
- * Macro-expand an option. Note that this does not
- * handle recursive expansions. They will go badly wrong.
- * If sel_p is true then old expand selectors, otherwise
- * don't expand selectors.
- */
-static char *
-expand_op(char *opt, int sel_p)
-{
-#define EXPAND_ERROR "No space to expand \"%s\""
- char expbuf[MAXPATHLEN + 1];
- char nbuf[NLEN + 1];
- char *ep = expbuf;
- char *cp = opt;
- char *dp;
- struct opt *op;
- char *cp_orig = opt;
-
- while ((dp = strchr(cp, '$'))) {
- char ch;
- /*
- * First copy up to the $
- */
- {
- int len = dp - cp;
-
- if (len > 0) {
- if (BUFSPACE(ep, len)) {
- /*
- * We use strncpy (not xstrlcpy) because 'ep' relies on its
- * semantics. BUFSPACE guarantees that ep can hold len.
- */
- strncpy(ep, cp, len);
- ep += len;
- } else {
- plog(XLOG_ERROR, EXPAND_ERROR, opt);
- goto out;
- }
- }
- }
-
- cp = dp + 1;
- ch = *cp++;
- if (ch == '$') {
- if (BUFSPACE(ep, 1)) {
- *ep++ = '$';
- } else {
- plog(XLOG_ERROR, EXPAND_ERROR, opt);
- goto out;
- }
- } else if (ch == '{') {
- /* Expansion... */
- enum {
- E_All, E_Dir, E_File, E_Domain, E_Host
- } todo;
- /*
- * Find closing brace
- */
- char *br_p = strchr(cp, '}');
- int len;
-
- /*
- * Check we found it
- */
- if (!br_p) {
- /*
- * Just give up
- */
- plog(XLOG_USER, "No closing '}' in \"%s\"", opt);
- goto out;
- }
- len = br_p - cp;
-
- /*
- * Figure out which part of the variable to grab.
- */
- if (*cp == '/') {
- /*
- * Just take the last component
- */
- todo = E_File;
- cp++;
- --len;
- } else if (*(br_p-1) == '/') {
- /*
- * Take all but the last component
- */
- todo = E_Dir;
- --len;
- } else if (*cp == '.') {
- /*
- * Take domain name
- */
- todo = E_Domain;
- cp++;
- --len;
- } else if (*(br_p-1) == '.') {
- /*
- * Take host name
- */
- todo = E_Host;
- --len;
- } else {
- /*
- * Take the whole lot
- */
- todo = E_All;
- }
-
- /*
- * Truncate if too long. Since it won't
- * match anyway it doesn't matter that
- * it has been cut short.
- */
- if (len > NLEN)
- len = NLEN;
-
- /*
- * Put the string into another buffer so
- * we can do comparisons.
- *
- * We use strncpy here (not xstrlcpy) because the dest is meant
- * to be truncated and we don't want to log it as an error. The
- * use of the BUFSPACE macro above guarantees the safe use of
- * strncpy with nbuf.
- */
- strncpy(nbuf, cp, len);
- nbuf[len] = '\0';
-
- /*
- * Advance cp
- */
- cp = br_p + 1;
-
- /*
- * Search the option array
- */
- for (op = opt_fields; op->name; op++) {
- /*
- * Check for match
- */
- if (len == op->nlen && STREQ(op->name, nbuf)) {
- char xbuf[NLEN + 3];
- char *val;
- /*
- * Found expansion. Copy
- * the correct value field.
- */
- if (!(!op->sel_p == !sel_p)) {
- /*
- * Copy the string across unexpanded
- */
- xsnprintf(xbuf, sizeof(xbuf), "${%s%s%s}",
- todo == E_File ? "/" :
- todo == E_Domain ? "." : "",
- nbuf,
- todo == E_Dir ? "/" :
- todo == E_Host ? "." : "");
- val = xbuf;
- /*
- * Make sure expansion doesn't
- * munge the value!
- */
- todo = E_All;
- } else if (op->sel_p) {
- val = *op->sel_p;
- } else {
- val = *op->optp;
- }
-
- if (val) {
- /*
- * Do expansion:
- * ${/var} means take just the last part
- * ${var/} means take all but the last part
- * ${.var} means take all but first part
- * ${var.} means take just the first part
- * ${var} means take the whole lot
- */
- int vlen = strlen(val);
- char *vptr = val;
- switch (todo) {
- case E_Dir:
- vptr = strrchr(val, '/');
- if (vptr)
- vlen = vptr - val;
- vptr = val;
- break;
- case E_File:
- vptr = strrchr(val, '/');
- if (vptr) {
- vptr++;
- vlen = strlen(vptr);
- } else
- vptr = val;
- break;
- case E_Domain:
- vptr = strchr(val, '.');
- if (vptr) {
- vptr++;
- vlen = strlen(vptr);
- } else {
- vptr = "";
- vlen = 0;
- }
- break;
- case E_Host:
- vptr = strchr(val, '.');
- if (vptr)
- vlen = vptr - val;
- vptr = val;
- break;
- case E_All:
- break;
- }
-
- if (BUFSPACE(ep, vlen+1)) {
- /*
- * Don't call xstrlcpy() to truncate a string here. It causes
- * spurious xstrlcpy() syslog() errors. Use memcpy() and
- * explicitly terminate the string.
- */
- memcpy(ep, vptr, vlen+1);
- ep += vlen;
- *ep = '\0';
- } else {
- plog(XLOG_ERROR, EXPAND_ERROR, opt);
- goto out;
- }
- }
- /*
- * Done with this variable
- */
- break;
- }
- }
-
- /*
- * Check that the search was successful
- */
- if (!op->name) {
- /*
- * If it wasn't then scan the
- * environment for that name
- * and use any value found
- */
- char *env = getenv(nbuf);
-
- if (env) {
- int vlen = strlen(env);
-
- if (BUFSPACE(ep, vlen+1)) {
- xstrlcpy(ep, env, vlen+1);
- ep += vlen;
- } else {
- plog(XLOG_ERROR, EXPAND_ERROR, opt);
- goto out;
- }
- if (amuDebug(D_STR))
- plog(XLOG_DEBUG, "Environment gave \"%s\" -> \"%s\"", nbuf, env);
- } else {
- plog(XLOG_USER, "Unknown sequence \"${%s}\"", nbuf);
- }
- }
- } else {
- /*
- * Error, error
- */
- plog(XLOG_USER, "Unknown $ sequence in \"%s\"", opt);
- }
- }
-
-out:
- /*
- * Handle common case - no expansion
- */
- if (cp == opt) {
- opt = xstrdup(cp);
- } else {
- /*
- * Finish off the expansion
- */
- int vlen = strlen(cp);
- if (BUFSPACE(ep, vlen+1)) {
- xstrlcpy(ep, cp, vlen+1);
- /* ep += vlen; */
- } else {
- plog(XLOG_ERROR, EXPAND_ERROR, opt);
- }
-
- /*
- * Save the expansion
- */
- opt = xstrdup(expbuf);
- }
-
- normalize_slash(opt);
-
- if (amuDebug(D_STR)) {
- plog(XLOG_DEBUG, "Expansion of \"%s\"...", cp_orig);
- plog(XLOG_DEBUG, "......... is \"%s\"", opt);
- }
- return opt;
-}
-
-
-/*
- * Wrapper for expand_op
- */
-static void
-expand_opts(opt_apply *p, int sel_p)
-{
- if (*p->opt) {
- *p->opt = expand_op(*p->opt, sel_p);
- } else if (p->val) {
- /*
- * Do double expansion, remembering
- * to free the string from the first
- * expansion...
- */
- char *s = expand_op(p->val, TRUE);
- *p->opt = expand_op(s, sel_p);
- XFREE(s);
- }
-}
-
-
-/*
- * Apply a function to a list of options
- */
-static void
-apply_opts(void (*op) (opt_apply *, int), opt_apply ppp[], int b)
-{
- opt_apply *pp;
-
- for (pp = ppp; pp->opt; pp++)
- (*op) (pp, b);
-}
-
-
-/*
- * Free the option table
- */
-void
-free_opts(am_opts *fo)
-{
- /*
- * Copy in the structure we are playing with
- */
- fs_static = *fo;
-
- /*
- * Free previously allocated memory
- */
- apply_opts(free_op, to_free, FALSE);
-}
-
-am_opts *
-copy_opts(am_opts *old)
-{
- am_opts *newopts;
- newopts = CALLOC(struct am_opts);
-
-#define _AM_OPT_COPY(field) do { \
- if (old->field) \
- newopts->field = xstrdup(old->field); \
- } while (0)
-
- _AM_OPT_COPY(fs_glob);
- _AM_OPT_COPY(fs_local);
- _AM_OPT_COPY(fs_mtab);
- _AM_OPT_COPY(opt_dev);
- _AM_OPT_COPY(opt_delay);
- _AM_OPT_COPY(opt_dir);
- _AM_OPT_COPY(opt_fs);
- _AM_OPT_COPY(opt_group);
- _AM_OPT_COPY(opt_mount);
- _AM_OPT_COPY(opt_opts);
- _AM_OPT_COPY(opt_remopts);
- _AM_OPT_COPY(opt_pref);
- _AM_OPT_COPY(opt_cache);
- _AM_OPT_COPY(opt_rfs);
- _AM_OPT_COPY(opt_rhost);
- _AM_OPT_COPY(opt_sublink);
- _AM_OPT_COPY(opt_type);
- _AM_OPT_COPY(opt_mount_type);
- _AM_OPT_COPY(opt_unmount);
- _AM_OPT_COPY(opt_umount);
- _AM_OPT_COPY(opt_user);
- _AM_OPT_COPY(opt_maptype);
- _AM_OPT_COPY(opt_cachedir);
- _AM_OPT_COPY(opt_addopts);
-
- return newopts;
-}
-
-
-/*
- * Expand selectors (variables that cannot be assigned to or overridden)
- */
-char *
-expand_selectors(char *key)
-{
- return expand_op(key, TRUE);
-}
-
-
-/*
- * Expand options (i.e. non-selectors, see above for definition)
- */
-static inline char *
-expand_options(char *key)
-{
- return expand_op(key, FALSE);
-}
-
-
-/*
- * Remove trailing /'s from a string
- * unless the string is a single / (Steven Glassman)
- * or unless it is two slashes // (Kevin D. Bond)
- * or unless amd.conf says not to touch slashes.
- */
-void
-deslashify(char *s)
-{
- if (!(gopt.flags & CFM_NORMALIZE_SLASHES))
- return;
-
- if (s && *s) {
- char *sl = s + strlen(s);
-
- while (*--sl == '/' && sl > s)
- *sl = '\0';
- }
-}
-
-
-int
-eval_fs_opts(am_opts *fo, char *opts, char *g_opts, char *path, char *key, char *map)
-{
- int ok = TRUE;
-
- free_opts(fo);
-
- /*
- * Clear out the option table
- */
- memset((voidp) &fs_static, 0, sizeof(fs_static));
- memset((voidp) vars, 0, sizeof(vars));
- memset((voidp) fo, 0, sizeof(*fo));
-
- /* set hostname */
- opt_host = (char *) am_get_hostname();
-
- /*
- * Set key, map & path before expansion
- */
- opt_key = key;
- opt_map = map;
- opt_path = path;
-
- opt_dkey = strchr(key, '.');
- if (!opt_dkey) {
- opt_dkey = NullStr;
- opt_keyd = key;
- } else {
- opt_keyd = strnsave(key, opt_dkey - key);
- opt_dkey++;
- if (*opt_dkey == '\0') /* check for 'host.' */
- opt_dkey = NullStr;
- }
-
- /*
- * Expand global options
- */
- fs_static.fs_glob = expand_selectors(g_opts);
-
- /*
- * Expand local options
- */
- fs_static.fs_local = expand_selectors(opts);
-
- /* break global options into fs_static fields */
- if ((ok = split_opts(fs_static.fs_glob, key))) {
- dlog("global split_opts ok");
- /*
- * evaluate local selectors
- */
- if ((ok = eval_selectors(fs_static.fs_local, key))) {
- dlog("local eval_selectors ok");
- /* if the local selectors matched, then do the local overrides */
- ok = split_opts(fs_static.fs_local, key);
- if (ok)
- dlog("local split_opts ok");
- }
- }
-
- /*
- * Normalize remote host name.
- * 1. Expand variables
- * 2. Normalize relative to host tables
- * 3. Strip local domains from the remote host
- * name before using it in other expansions.
- * This makes mount point names and other things
- * much shorter, while allowing cross domain
- * sharing of mount maps.
- */
- apply_opts(expand_opts, rhost_expansion, FALSE);
- if (ok && fs_static.opt_rhost && *fs_static.opt_rhost)
- host_normalize(&fs_static.opt_rhost);
-
- /*
- * Macro expand the options.
- * Do this regardless of whether we are accepting
- * this mount - otherwise nasty things happen
- * with memory allocation.
- */
- apply_opts(expand_opts, expansions, FALSE);
-
- /*
- * Strip trailing slashes from local pathname...
- */
- deslashify(fs_static.opt_fs);
-
- /*
- * ok... copy the data back out.
- */
- *fo = fs_static;
-
- /*
- * Clear defined options
- */
- if (opt_keyd != key && opt_keyd != nullstr)
- XFREE(opt_keyd);
- opt_keyd = nullstr;
- opt_dkey = NullStr;
- opt_key = opt_map = opt_path = nullstr;
-
- return ok;
-}
diff --git a/contrib/amd/amd/readdir.c b/contrib/amd/amd/readdir.c
deleted file mode 100644
index 69be7a71d653..000000000000
--- a/contrib/amd/amd/readdir.c
+++ /dev/null
@@ -1,952 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/readdir.c
- *
- */
-
-
-#include <stdint.h>
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-
-/****************************************************************************
- *** MACROS ***
- ****************************************************************************/
-#define DOT_DOT_COOKIE (u_int) 1
-#define MAX_CHAIN 2048
-
-
-/****************************************************************************
- *** FORWARD DEFINITIONS ***
- ****************************************************************************/
-static int key_already_in_chain(char *keyname, const nfsentry *chain);
-static nfsentry *make_entry_chain(am_node *mp, const nfsentry *current_chain, int fully_browsable);
-static int amfs_readdir_browsable(am_node *mp, nfscookie cookie, nfsdirlist *dp, nfsentry *ep, u_int count, int fully_browsable);
-
-static const u_int dotdotcookie = DOT_DOT_COOKIE;
-
-/****************************************************************************
- *** FUNCTIONS ***
- ****************************************************************************/
-/*
- * Was: NEW_TOPLVL_READDIR
- * Search a chain for an entry with some name.
- * -Erez Zadok <ezk@cs.columbia.edu>
- */
-static int
-key_already_in_chain(char *keyname, const nfsentry *chain)
-{
- const nfsentry *tmpchain = chain;
-
- while (tmpchain) {
- if (keyname && tmpchain->ne_name && STREQ(keyname, tmpchain->ne_name))
- return 1;
- tmpchain = tmpchain->ne_nextentry;
- }
-
- return 0;
-}
-
-
-/*
- * Create a chain of entries which are not linked.
- * -Erez Zadok <ezk@cs.columbia.edu>
- */
-static nfsentry *
-make_entry_chain(am_node *mp, const nfsentry *current_chain, int fully_browsable)
-{
- static u_int last_cookie = (u_int) 2; /* monotonically increasing */
- static nfsentry chain[MAX_CHAIN];
- static int max_entries = MAX_CHAIN;
- char *key;
- int num_entries = 0, i;
- u_int preflen = 0;
- nfsentry *retval = (nfsentry *) NULL;
- mntfs *mf;
- mnt_map *mmp;
-
- if (!mp) {
- plog(XLOG_DEBUG, "make_entry_chain: mp is (NULL)");
- return retval;
- }
- mf = mp->am_al->al_mnt;
- if (!mf) {
- plog(XLOG_DEBUG, "make_entry_chain: mp->am_al->al_mnt is (NULL)");
- return retval;
- }
- mmp = (mnt_map *) mf->mf_private;
- if (!mmp) {
- plog(XLOG_DEBUG, "make_entry_chain: mp->am_al->al_mnt->mf_private is (NULL)");
- return retval;
- }
-
- if (mp->am_pref)
- preflen = strlen(mp->am_pref);
-
- /* iterate over keys */
- for (i = 0; i < NKVHASH; i++) {
- kv *k;
- for (k = mmp->kvhash[i]; k ; k = k->next) {
-
- /*
- * Skip unwanted entries which are either not real entries or
- * very difficult to interpret (wildcards...) This test needs
- * lots of improvement. Any takers?
- */
- key = k->key;
- if (!key)
- continue;
-
- /* Skip '/defaults' */
- if (STREQ(key, "/defaults"))
- continue;
-
- /* Skip '*' */
- if (!fully_browsable && strchr(key, '*'))
- continue;
-
- /*
- * If the map has a prefix-string then check if the key starts with
- * this string, and if it does, skip over this prefix. If it has a
- * prefix and it doesn't match the start of the key, skip it.
- */
- if (preflen) {
- if (preflen > strlen(key))
- continue;
- if (!NSTREQ(key, mp->am_pref, preflen))
- continue;
- key += preflen;
- }
-
- /* no more '/' are allowed, unless browsable_dirs=full was used */
- if (!fully_browsable && strchr(key, '/'))
- continue;
-
- /* no duplicates allowed */
- if (key_already_in_chain(key, current_chain))
- continue;
-
- /* fill in a cell and link the entry */
- if (num_entries >= max_entries) {
- /* out of space */
- plog(XLOG_DEBUG, "make_entry_chain: no more space in chain");
- if (num_entries > 0) {
- chain[num_entries - 1].ne_nextentry = NULL;
- retval = &chain[0];
- }
- return retval;
- }
-
- /* we have space. put entry in next cell */
- ++last_cookie;
- chain[num_entries].ne_fileid = last_cookie;
- (void)memcpy(chain[num_entries].ne_cookie, &last_cookie,
- sizeof(last_cookie));
- chain[num_entries].ne_name = key;
- if (num_entries < max_entries - 1) { /* link to next one */
- chain[num_entries].ne_nextentry = &chain[num_entries + 1];
- }
- ++num_entries;
- } /* end of "while (k)" */
- } /* end of "for (i ... NKVHASH ..." */
-
- /* terminate chain */
- if (num_entries > 0) {
- chain[num_entries - 1].ne_nextentry = NULL;
- retval = &chain[0];
- }
-
- return retval;
-}
-
-
-
-/* This one is called only if map is browsable */
-static int
-amfs_readdir_browsable(am_node *mp, nfscookie cookie, nfsdirlist *dp, nfsentry *ep, u_int count, int fully_browsable)
-{
- u_int gen = *(u_int *) (uintptr_t) cookie;
- int chain_length, i;
- static nfsentry *te, *te_next;
- static int j;
-
- dp->dl_eof = FALSE; /* assume readdir not done */
-
- if (amuDebug(D_READDIR))
- plog(XLOG_DEBUG, "amfs_readdir_browsable gen=%u, count=%d",
- gen, count);
-
- if (gen == 0) {
- /*
- * In the default instance (which is used to start a search) we return
- * "." and "..".
- *
- * This assumes that the count is big enough to allow both "." and ".."
- * to be returned in a single packet. If it isn't (which would be
- * fairly unbelievable) then tough.
- */
- dlog("%s: default search", __func__);
- /*
- * Check for enough room. This is extremely approximate but is more
- * than enough space. Really need 2 times:
- * 4byte fileid
- * 4byte cookie
- * 4byte name length
- * 4byte name
- * plus the dirlist structure */
- if (count < (2 * (2 * (sizeof(*ep) + sizeof("..") + 4) + sizeof(*dp))))
- return EINVAL;
-
- /*
- * compute # of entries to send in this chain.
- * heuristics: 128 bytes per entry.
- * This is too much probably, but it seems to work better because
- * of the re-entrant nature of nfs_readdir, and esp. on systems
- * like OpenBSD 2.2.
- */
- chain_length = count / 128;
-
- /* reset static state counters */
- te = te_next = NULL;
-
- dp->dl_entries = ep;
-
- /* construct "." */
- ep[0].ne_fileid = mp->am_gen;
- ep[0].ne_name = ".";
- ep[0].ne_nextentry = &ep[1];
- (void)memset(ep[0].ne_cookie, 0, sizeof(u_int));
-
- /* construct ".." */
- if (mp->am_parent)
- ep[1].ne_fileid = mp->am_parent->am_gen;
- else
- ep[1].ne_fileid = mp->am_gen;
-
- ep[1].ne_name = "..";
- ep[1].ne_nextentry = NULL;
- (void)memcpy(ep[1].ne_cookie, &dotdotcookie, sizeof(dotdotcookie));
-
- /*
- * If map is browsable, call a function make_entry_chain() to construct
- * a linked list of unmounted keys, and return it. Then link the chain
- * to the regular list. Get the chain only once, but return
- * chunks of it each time.
- */
- te = make_entry_chain(mp, dp->dl_entries, fully_browsable);
- if (!te)
- return 0;
- if (amuDebug(D_READDIR)) {
- nfsentry *ne;
- for (j = 0, ne = te; ne; ne = ne->ne_nextentry)
- plog(XLOG_DEBUG, "gen1 key %4d \"%s\"", j++, ne->ne_name);
- }
-
- /* return only "chain_length" entries */
- te_next = te;
- for (i=1; i<chain_length; ++i) {
- te_next = te_next->ne_nextentry;
- if (!te_next)
- break;
- }
- if (te_next) {
- nfsentry *te_saved = te_next->ne_nextentry;
- te_next->ne_nextentry = NULL; /* terminate "te" chain */
- te_next = te_saved; /* save rest of "te" for next iteration */
- dp->dl_eof = FALSE; /* tell readdir there's more */
- } else {
- dp->dl_eof = TRUE; /* tell readdir that's it */
- }
- ep[1].ne_nextentry = te; /* append this chunk of "te" chain */
- if (amuDebug(D_READDIR)) {
- nfsentry *ne;
- for (j = 0, ne = te; ne; ne = ne->ne_nextentry)
- plog(XLOG_DEBUG, "gen2 key %4d \"%s\"", j++, ne->ne_name);
- for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) {
- u_int cookie;
- (void)memcpy(&cookie, ne->ne_cookie, sizeof(cookie));
- plog(XLOG_DEBUG, "gen2+ key %4d \"%s\" fi=%d ck=%d",
- j++, ne->ne_name, ne->ne_fileid, cookie);
- }
- plog(XLOG_DEBUG, "EOF is %d", dp->dl_eof);
- }
- return 0;
- } /* end of "if (gen == 0)" statement */
-
- dlog("%s: real child", __func__);
-
- if (gen == DOT_DOT_COOKIE) {
- dlog("%s: End of readdir in %s", __func__, mp->am_path);
- dp->dl_eof = TRUE;
- dp->dl_entries = NULL;
- return 0;
- }
-
- /*
- * If browsable directories, then continue serving readdir() with another
- * chunk of entries, starting from where we left off (when gen was equal
- * to 0). Once again, assume last chunk served to readdir.
- */
- dp->dl_eof = TRUE;
- dp->dl_entries = ep;
-
- te = te_next; /* reset 'te' from last saved te_next */
- if (!te) { /* another indicator of end of readdir */
- dp->dl_entries = NULL;
- return 0;
- }
- /*
- * compute # of entries to send in this chain.
- * heuristics: 128 bytes per entry.
- */
- chain_length = count / 128;
-
- /* return only "chain_length" entries */
- for (i = 1; i < chain_length; ++i) {
- te_next = te_next->ne_nextentry;
- if (!te_next)
- break;
- }
- if (te_next) {
- nfsentry *te_saved = te_next->ne_nextentry;
- te_next->ne_nextentry = NULL; /* terminate "te" chain */
- te_next = te_saved; /* save rest of "te" for next iteration */
- dp->dl_eof = FALSE; /* tell readdir there's more */
- }
- ep = te; /* send next chunk of "te" chain */
- dp->dl_entries = ep;
- if (amuDebug(D_READDIR)) {
- nfsentry *ne;
- plog(XLOG_DEBUG, "dl_entries=%p, te_next=%p, dl_eof=%d",
- dp->dl_entries, te_next, dp->dl_eof);
- for (ne = te; ne; ne = ne->ne_nextentry)
- plog(XLOG_DEBUG, "gen3 key %4d \"%s\"", j++, ne->ne_name);
- }
- return 0;
-}
-
-static int
-amfs_readdir(am_node *mp, nfscookie cookie, nfsdirlist *dp, nfsentry *ep, u_int count)
-{
- u_int gen = *(u_int *) (uintptr_t) cookie;
- am_node *xp;
-
- dp->dl_eof = FALSE; /* assume readdir not done */
-
- /* when gen is 0, we start reading from the beginning of the directory */
- if (gen == 0) {
- /*
- * In the default instance (which is used to start a search) we return
- * "." and "..".
- *
- * This assumes that the count is big enough to allow both "." and ".."
- * to be returned in a single packet. If it isn't (which would be
- * fairly unbelievable) then tough.
- */
- dlog("%s: default search", __func__);
- /*
- * Check for enough room. This is extremely approximate but is more
- * than enough space. Really need 2 times:
- * 4byte fileid
- * 4byte cookie
- * 4byte name length
- * 4byte name
- * plus the dirlist structure */
-#define NEEDROOM (2 * (2 * (sizeof(*ep) + sizeof("..") + 4) + sizeof(*dp)))
- if (count < NEEDROOM) {
- dlog("%s: not enough room %u < %zu", __func__, count, NEEDROOM);
- return EINVAL;
- }
-
- xp = next_nonerror_node(mp->am_child);
- dp->dl_entries = ep;
-
- /* construct "." */
- ep[0].ne_fileid = mp->am_gen;
- ep[0].ne_name = ".";
- ep[0].ne_nextentry = &ep[1];
- (void)memset(ep[0].ne_cookie, 0, sizeof(u_int));
-
- /* construct ".." */
- if (mp->am_parent)
- ep[1].ne_fileid = mp->am_parent->am_gen;
- else
- ep[1].ne_fileid = mp->am_gen;
- ep[1].ne_name = "..";
- ep[1].ne_nextentry = NULL;
- (void)memcpy(ep[1].ne_cookie, (xp ? &xp->am_gen : &dotdotcookie),
- sizeof(dotdotcookie));
-
- if (!xp)
- dp->dl_eof = TRUE; /* by default assume readdir done */
-
- if (amuDebug(D_READDIR)) {
- nfsentry *ne;
- int j;
- for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) {
- u_int cookie;
- (void)memcpy(&cookie, ne->ne_cookie, sizeof(cookie));
- plog(XLOG_DEBUG, "gen1 key %4d \"%s\" fi=%d ck=%d",
- j++, ne->ne_name, ne->ne_fileid, cookie);
- }
- }
- return 0;
- }
- dlog("%s: real child", __func__);
-
- if (gen == DOT_DOT_COOKIE) {
- dlog("%s: End of readdir in %s", __func__, mp->am_path);
- dp->dl_eof = TRUE;
- dp->dl_entries = NULL;
- if (amuDebug(D_READDIR))
- plog(XLOG_DEBUG, "end of readdir eof=TRUE, dl_entries=0\n");
- return 0;
- }
-
- /* non-browsable directories code */
- xp = mp->am_child;
- while (xp && xp->am_gen != gen)
- xp = xp->am_osib;
-
- if (xp) {
- int nbytes = count / 2; /* conservative */
- int todo = MAX_READDIR_ENTRIES;
-
- dp->dl_entries = ep;
- do {
- am_node *xp_next = next_nonerror_node(xp->am_osib);
-
- if (xp_next) {
- (void)memcpy(ep->ne_cookie, &xp_next->am_gen, sizeof(xp_next->am_gen));
- } else {
- (void)memcpy(ep->ne_cookie, &dotdotcookie, sizeof(dotdotcookie));
- dp->dl_eof = TRUE;
- }
-
- ep->ne_fileid = xp->am_gen;
- ep->ne_name = xp->am_name;
- nbytes -= sizeof(*ep) + 1;
- if (xp->am_name)
- nbytes -= strlen(xp->am_name);
-
- xp = xp_next;
-
- if (nbytes > 0 && !dp->dl_eof && todo > 1) {
- ep->ne_nextentry = ep + 1;
- ep++;
- --todo;
- } else {
- todo = 0;
- }
- } while (todo > 0);
-
- ep->ne_nextentry = NULL;
-
- if (amuDebug(D_READDIR)) {
- nfsentry *ne;
- int j;
- for (j=0,ne=ep; ne; ne=ne->ne_nextentry) {
- u_int cookie;
- (void)memcpy(&cookie, ne->ne_cookie, sizeof(cookie));
- plog(XLOG_DEBUG, "gen2 key %4d \"%s\" fi=%d ck=%d",
- j++, ne->ne_name, ne->ne_fileid, cookie);
- }
- }
- return 0;
- }
- return ESTALE;
-}
-
-/*
- * Search a chain for an entry with some name.
- */
-static int
-key_already_in_chain3(char *keyname, const am_entry3 *chain)
-{
- const am_entry3 *tmpchain = chain;
-
- while (tmpchain) {
- if (keyname && tmpchain->name && STREQ(keyname, tmpchain->name))
- return 1;
- tmpchain = tmpchain->nextentry;
- }
-
- return 0;
-}
-
-/*
- * Create a chain of entries which are not linked.
- */
-static am_entry3 *
-make_entry_chain3(am_node *mp, const am_entry3 *current_chain, int fully_browsable)
-{
- static uint64 last_cookie = (uint64) 2; /* monotonically increasing */
- static am_entry3 chain[MAX_CHAIN];
- static int max_entries = MAX_CHAIN;
- char *key;
- int num_entries = 0, i;
- u_int preflen = 0;
- am_entry3 *retval = (am_entry3 *) NULL;
- mntfs *mf;
- mnt_map *mmp;
-
- if (!mp) {
- plog(XLOG_DEBUG, "make_entry_chain3: mp is (NULL)");
- return retval;
- }
- mf = mp->am_al->al_mnt;
- if (!mf) {
- plog(XLOG_DEBUG, "make_entry_chain3: mp->am_al->al_mnt is (NULL)");
- return retval;
- }
- mmp = (mnt_map *) mf->mf_private;
- if (!mmp) {
- plog(XLOG_DEBUG, "make_entry_chain3: mp->am_al->al_mnt->mf_private is (NULL)");
- return retval;
- }
-
- if (mp->am_pref)
- preflen = strlen(mp->am_pref);
-
- /* iterate over keys */
- for (i = 0; i < NKVHASH; i++) {
- kv *k;
- for (k = mmp->kvhash[i]; k ; k = k->next) {
-
- /*
- * Skip unwanted entries which are either not real entries or
- * very difficult to interpret (wildcards...) This test needs
- * lots of improvement. Any takers?
- */
- key = k->key;
- if (!key)
- continue;
-
- /* Skip '/defaults' */
- if (STREQ(key, "/defaults"))
- continue;
-
- /* Skip '*' */
- if (!fully_browsable && strchr(key, '*'))
- continue;
-
- /*
- * If the map has a prefix-string then check if the key starts with
- * this string, and if it does, skip over this prefix. If it has a
- * prefix and it doesn't match the start of the key, skip it.
- */
- if (preflen) {
- if (preflen > strlen(key))
- continue;
- if (!NSTREQ(key, mp->am_pref, preflen))
- continue;
- key += preflen;
- }
-
- /* no more '/' are allowed, unless browsable_dirs=full was used */
- if (!fully_browsable && strchr(key, '/'))
- continue;
-
- /* no duplicates allowed */
- if (key_already_in_chain3(key, current_chain))
- continue;
-
- /* fill in a cell and link the entry */
- if (num_entries >= max_entries) {
- /* out of space */
- plog(XLOG_DEBUG, "make_entry_chain3: no more space in chain");
- if (num_entries > 0) {
- chain[num_entries - 1].nextentry = NULL;
- retval = &chain[0];
- }
- return retval;
- }
-
- /* we have space. put entry in next cell */
- ++last_cookie;
- chain[num_entries].fileid = last_cookie;
- chain[num_entries].cookie = last_cookie;
- chain[num_entries].name = key;
- if (num_entries < max_entries - 1) { /* link to next one */
- chain[num_entries].nextentry = &chain[num_entries + 1];
- }
- ++num_entries;
- } /* end of "while (k)" */
- } /* end of "for (i ... NKVHASH ..." */
-
- /* terminate chain */
- if (num_entries > 0) {
- chain[num_entries - 1].nextentry = NULL;
- retval = &chain[0];
- }
-
- return retval;
-}
-
-static size_t needroom3(void)
-{
- /*
- * Check for enough room. This is extremely approximate but should
- * be enough space. Really need 2 times:
- * (8byte fileid
- * 8byte cookie
- * 8byte name pointer
- * 8byte next entry addres) = sizeof(am_entry3)
- * 2byte name + 1byte terminator
- * plus the size of the am_dirlist3 structure */
- return ((2 * ((sizeof(am_entry3) + sizeof("..") + 1))) + sizeof(am_dirlist3));
-}
-
-/* This one is called only if map is browsable */
-static int
-amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie,
- am_dirlist3 *dp, am_entry3 *ep, u_int count,
- int fully_browsable)
-{
- uint64 gen = *(uint64 *) (uintptr_t) cookie;
- int chain_length, i;
- static am_entry3 *te, *te_next;
- static int j;
-
- dp->eof = FALSE; /* assume readdir not done */
-
- if (amuDebug(D_READDIR))
- plog(XLOG_DEBUG, "amfs_readdir3_browsable gen=%lu, count=%d", (long unsigned) gen, count);
-
- if (gen == 0) {
- size_t needed = needroom3();
- /*
- * In the default instance (which is used to start a search) we return
- * "." and "..".
- *
- * This assumes that the count is big enough to allow both "." and ".."
- * to be returned in a single packet. If it isn't (which would be
- * fairly unbelievable) then tough.
- */
- dlog("%s: default search", __func__);
-
- if (count < needed) {
- dlog("%s: not enough room %u < %zu", __func__, count, needed);
- return EINVAL;
- }
-
- /*
- * compute # of entries to send in this chain.
- * heuristics: 128 bytes per entry.
- * This is too much probably, but it seems to work better because
- * of the re-entrant nature of nfs_readdir, and esp. on systems
- * like OpenBSD 2.2.
- */
- chain_length = count / 128;
-
- /* reset static state counters */
- te = te_next = NULL;
-
- dp->entries = ep;
-
- /* construct "." */
- ep[0].fileid = mp->am_gen;
- ep[0].name = ".";
- ep[0].nextentry = &ep[1];
- ep[0].cookie = 0;
-
- /* construct ".." */
- if (mp->am_parent)
- ep[1].fileid = mp->am_parent->am_gen;
- else
- ep[1].fileid = mp->am_gen;
-
- ep[1].name = "..";
- ep[1].nextentry = NULL;
- ep[1].cookie = dotdotcookie;
-
- /*
- * If map is browsable, call a function make_entry_chain() to construct
- * a linked list of unmounted keys, and return it. Then link the chain
- * to the regular list. Get the chain only once, but return
- * chunks of it each time.
- */
- te = make_entry_chain3(mp, dp->entries, fully_browsable);
- if (!te)
- return 0;
- if (amuDebug(D_READDIR)) {
- am_entry3 *ne;
- for (j = 0, ne = te; ne; ne = ne->ne_nextentry)
- plog(XLOG_DEBUG, "gen1 key %4d \"%s\"", j++, ne->ne_name);
- }
-
- /* return only "chain_length" entries */
- te_next = te;
- for (i=1; i<chain_length; ++i) {
- te_next = te_next->nextentry;
- if (!te_next)
- break;
- }
- if (te_next) {
- am_entry3 *te_saved = te_next->nextentry;
- te_next->nextentry = NULL; /* terminate "te" chain */
- te_next = te_saved; /* save rest of "te" for next iteration */
- dp->eof = FALSE; /* tell readdir there's more */
- } else {
- dp->eof = TRUE; /* tell readdir that's it */
- }
- ep[1].nextentry = te; /* append this chunk of "te" chain */
- if (amuDebug(D_READDIR)) {
- am_entry3 *ne;
- for (j = 0, ne = te; ne; ne = ne->ne_nextentry)
- plog(XLOG_DEBUG, "gen2 key %4d \"%s\"", j++, ne->name);
- for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) {
- plog(XLOG_DEBUG, "gen2+ key %4d \"%s\" fi=%lu ck=%lu",
- j++, ne->name, (long unsigned) ne->fileid, (long unsigned) ne->cookie);
- }
- plog(XLOG_DEBUG, "EOF is %d", dp->eof);
- }
- return 0;
- } /* end of "if (gen == 0)" statement */
-
- dlog("%s: real child", __func__);
-
- if (gen == DOT_DOT_COOKIE) {
- dlog("%s: End of readdir in %s", __func__, mp->am_path);
- dp->eof = TRUE;
- dp->entries = NULL;
- return 0;
- }
-
- /*
- * If browsable directories, then continue serving readdir() with another
- * chunk of entries, starting from where we left off (when gen was equal
- * to 0). Once again, assume last chunk served to readdir.
- */
- dp->eof = TRUE;
- dp->entries = ep;
-
- te = te_next; /* reset 'te' from last saved te_next */
- if (!te) { /* another indicator of end of readdir */
- dp->entries = NULL;
- return 0;
- }
- /*
- * compute # of entries to send in this chain.
- * heuristics: 128 bytes per entry.
- */
- chain_length = count / 128;
-
- /* return only "chain_length" entries */
- for (i = 1; i < chain_length; ++i) {
- te_next = te_next->nextentry;
- if (!te_next)
- break;
- }
- if (te_next) {
- am_entry3 *te_saved = te_next->nextentry;
- te_next->nextentry = NULL; /* terminate "te" chain */
- te_next = te_saved; /* save rest of "te" for next iteration */
- dp->eof = FALSE; /* tell readdir there's more */
- }
- ep = te; /* send next chunk of "te" chain */
- dp->entries = ep;
- if (amuDebug(D_READDIR)) {
- am_entry3 *ne;
- plog(XLOG_DEBUG,
- "entries=%p, te_next=%p, eof=%d", dp->entries, te_next, dp->eof);
- for (ne = te; ne; ne = ne->nextentry)
- plog(XLOG_DEBUG, "gen3 key %4d \"%s\"", j++, ne->name);
- }
- return 0;
-}
-
-static int
-amfs_readdir3(am_node *mp, am_cookie3 cookie,
- am_dirlist3 *dp, am_entry3 *ep, u_int count)
-{
- uint64 gen = *(uint64 *) (uintptr_t) cookie;
- am_node *xp;
-
- if (amuDebug(D_READDIR))
- plog(XLOG_DEBUG, "amfs_readdir3 gen=%lu, count=%d", (long unsigned) gen, count);
-
- dp->eof = FALSE; /* assume readdir not done */
-
- /* when gen is 0, we start reading from the beginning of the directory */
- if (gen == 0) {
- size_t needed = needroom3();
- /*
- * In the default instance (which is used to start a search) we return
- * "." and "..".
- *
- * This assumes that the count is big enough to allow both "." and ".."
- * to be returned in a single packet. If it isn't (which would be
- * fairly unbelievable) then tough.
- */
- dlog("%s: default search", __func__);
-
- if (count < needed) {
- dlog("%s: not enough room %u < %zu", __func__, count, needed);
- return EINVAL;
- }
-
- xp = next_nonerror_node(mp->am_child);
- dp->entries = ep;
-
- /* construct "." */
- ep[0].fileid = mp->am_gen;
- ep[0].name = ".";
- ep[0].cookie = 0;
- ep[0].nextentry = &ep[1];
-
- /* construct ".." */
- if (mp->am_parent)
- ep[1].fileid = mp->am_parent->am_gen;
- else
- ep[1].fileid = mp->am_gen;
- ep[1].name = "..";
- ep[1].nextentry = NULL;
- ep[1].cookie = (xp ? xp->am_gen : dotdotcookie);
-
- if (!xp)
- dp->eof = TRUE; /* by default assume readdir done */
-
- if (amuDebug(D_READDIR)) {
- am_entry3 *ne;
- int j;
- for (j = 0, ne = ep; ne; ne = ne->nextentry) {
- plog(XLOG_DEBUG, "gen1 key %4d \"%s\" fi=%lu ck=%lu",
- j++, ne->name, (long unsigned) ne->fileid, (long unsigned) ne->cookie);
- }
- }
- return 0;
- }
- dlog("%s: real child", __func__);
-
- if (gen == (uint64) DOT_DOT_COOKIE) {
- dlog("%s: End of readdir in %s", __func__, mp->am_path);
- dp->eof = TRUE;
- dp->entries = NULL;
- if (amuDebug(D_READDIR))
- plog(XLOG_DEBUG, "end of readdir eof=TRUE, dl_entries=0\n");
- return 0;
- }
-
- /* non-browsable directories code */
- xp = mp->am_child;
- while (xp && xp->am_gen != gen)
- xp = xp->am_osib;
-
- if (xp) {
- int nbytes = count / 2; /* conservative */
- int todo = MAX_READDIR_ENTRIES;
-
- dp->entries = ep;
- do {
- am_node *xp_next = next_nonerror_node(xp->am_osib);
-
- if (xp_next) {
- ep->cookie = xp_next->am_gen;
- } else {
- ep->cookie = (uint64) dotdotcookie;
- dp->eof = TRUE;
- }
-
- ep->fileid = xp->am_gen;
- ep->name = xp->am_name;
- nbytes -= sizeof(*ep) + 1;
- if (xp->am_name)
- nbytes -= strlen(xp->am_name);
-
- xp = xp_next;
-
- if (nbytes > 0 && !dp->dl_eof && todo > 1) {
- ep->nextentry = ep + 1;
- ep++;
- --todo;
- } else {
- todo = 0;
- }
- } while (todo > 0);
-
- ep->nextentry = NULL;
-
- if (amuDebug(D_READDIR)) {
- am_entry3 *ne;
- int j;
- for (j = 0, ne = ep; ne; ne = ne->nextentry) {
- plog(XLOG_DEBUG, "gen2 key %4d \"%s\" fi=%lu ck=%lu",
- j++, ne->name, (long unsigned) ne->fileid, (long unsigned) ne->cookie);
- }
- }
- return 0;
- }
- return ESTALE;
-}
-
-/*
- * This readdir function which call a special version of it that allows
- * browsing if browsable_dirs=yes was set on the map.
- */
-int
-amfs_generic_readdir(am_node *mp, voidp cookie, voidp dp, voidp ep, u_int count)
-{
- int browsable, full;
-
- /* check if map is browsable */
- browsable = 0;
- if (mp->am_al->al_mnt && mp->am_al->al_mnt->mf_mopts) {
- mntent_t mnt;
- mnt.mnt_opts = mp->am_al->al_mnt->mf_mopts;
- if (amu_hasmntopt(&mnt, "fullybrowsable"))
- browsable = 2;
- else if (amu_hasmntopt(&mnt, "browsable"))
- browsable = 1;
- }
- full = (browsable == 2);
-
- if (nfs_dispatcher == nfs_program_2) {
- if (browsable)
- return amfs_readdir_browsable(mp, cookie, dp, ep, count, full);
- else
- return amfs_readdir(mp, cookie, dp, ep, count);
- } else {
- if (browsable)
- return amfs_readdir3_browsable(mp, (am_cookie3) (uintptr_t) cookie, dp, ep, count, full);
- else
- return amfs_readdir3(mp, (am_cookie3) (uintptr_t) cookie, dp, ep, count);
- }
-}
diff --git a/contrib/amd/amd/restart.c b/contrib/amd/amd/restart.c
deleted file mode 100644
index de38bcfb2741..000000000000
--- a/contrib/amd/amd/restart.c
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/restart.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-
-static void
-restart_fake_mntfs(mntent_t *me, am_ops *fs_ops)
-{
- mntfs *mf;
- am_opts mo;
- char *cp;
-
- /*
- * Partially fake up an opts structure
- */
- memset(&mo, 0, sizeof(mo));
- mo.opt_rhost = NULL;
- mo.opt_rfs = NULL;
- cp = strchr(me->mnt_fsname, ':');
- if (cp) {
- *cp = '\0';
- mo.opt_rhost = xstrdup(me->mnt_fsname);
- mo.opt_rfs = xstrdup(cp + 1);
- *cp = ':';
- } else if (STREQ(me->mnt_type, MNTTAB_TYPE_NFS)) {
- /*
- * Hacky workaround for mnttab NFS entries that only list the server
- */
- plog(XLOG_WARNING, "NFS server entry assumed to be %s:/", me->mnt_fsname);
- mo.opt_rhost = xstrdup(me->mnt_fsname);
- mo.opt_rfs = xstrdup("/");
- me->mnt_fsname = str3cat(me->mnt_fsname, mo.opt_rhost, ":", "/");
- }
- mo.opt_fs = me->mnt_dir;
- mo.opt_opts = me->mnt_opts;
-
- /*
- * Make a new mounted filesystem
- */
- mf = find_mntfs(fs_ops, &mo, me->mnt_dir,
- me->mnt_fsname, "", me->mnt_opts, "");
- if (mf->mf_refc == 1) {
- mf->mf_flags |= MFF_RESTART | MFF_MOUNTED;
- mf->mf_error = 0; /* Already mounted correctly */
- /*
- * Only timeout non-NFS entries
- */
- if (!STREQ(me->mnt_type, MNTTAB_TYPE_NFS))
- mf->mf_flags |= MFF_RSTKEEP;
- if (fs_ops->fs_init) {
- /*
- * Don't care whether this worked since
- * it is checked again when the fs is
- * inherited.
- */
- (void) (*fs_ops->fs_init) (mf);
- }
- plog(XLOG_INFO, "%s restarted fstype %s on %s, flags 0x%x",
- me->mnt_fsname, fs_ops->fs_type, me->mnt_dir, mf->mf_flags);
- } else {
- /* Something strange happened - two mounts at the same place! */
- free_mntfs(mf);
- }
- /*
- * Clean up mo
- */
- XFREE(mo.opt_rhost);
- XFREE(mo.opt_rfs);
-}
-
-
-/*
- * Handle an amd restart.
- *
- * Scan through the mount list finding all "interesting" mount points.
- * Next hack up partial data structures and add the mounted file
- * system to the list of known filesystems.
- *
- * This module relies on internal details of other components. If
- * you change something else make *sure* restart() still works.
- */
-void
-restart(void)
-{
- mntlist *ml, *mlp;
-
- /*
- * Read the existing mount table. For each entry, find nfs, ufs or auto
- * mounts and create a partial am_node to represent it.
- */
- for (mlp = ml = read_mtab("restart", mnttab_file_name);
- mlp;
- mlp = mlp->mnext) {
- mntent_t *me = mlp->mnt;
- am_ops *fs_ops = NULL;
-
- if (STREQ(me->mnt_type, MNTTAB_TYPE_NFS)) {
- /*
- * NFS entry, or possibly an Amd entry...
- * The mnt_fsname for daemon mount points is
- * host:(pidXXX)
- * or (seen on Solaris)
- * host:daemon(pidXXX)
- */
- char *colon = strchr(me->mnt_fsname, ':');
- if (colon && strstr(colon, "(pid"))
- continue;
- }
-
- /* Search for the correct filesystem ops */
- fs_ops = ops_search(me->mnt_type);
-
- /*
- * Catch everything else with symlinks to
- * avoid recursive mounts. This is debatable...
- */
- if (!fs_ops)
- fs_ops = &amfs_link_ops;
-
- restart_fake_mntfs(me, fs_ops);
- }
-
- /*
- * Free the mount list
- */
- free_mntlist(ml);
-}
-
-
-/*
- * Handle an amd restart for amd's own mount points.
- *
- * Scan through the mount list finding all daemon mount points
- * (determined by the presence of a pid inside the mount info).
- * Next hack up partial data structures and add the mounted file
- * system to the list of known filesystems.
- *
- * This module relies on internal details of other components. If
- * you change something else make *sure* restart() still works.
- */
-void
-restart_automounter_nodes(void)
-{
- mntlist *ml, *mlp;
- /* reasonably sized list of restarted nfs ports */
- u_short old_ports[256];
-
- memset((voidp) &old_ports, 0, sizeof(u_short) * 256);
-
- /*
- * Read the existing mount table. For each entry, find nfs, ufs or auto
- * mounts and create a partial am_node to represent it.
- */
- for (mlp = ml = read_mtab("restart", mnttab_file_name);
- mlp;
- mlp = mlp->mnext) {
- mntent_t *me = mlp->mnt;
- am_ops *fs_ops = NULL;
- char *colon;
- long pid;
- u_short port;
- int err;
-
- if (!STREQ(me->mnt_type, MNTTAB_TYPE_NFS))
- continue; /* to next mlp */
- /*
- * NFS entry, or possibly an Amd entry...
- * The mnt_fsname for daemon mount points is
- * host:(pidXXX)
- * or (seen on Solaris)
- * host:daemon(pidXXX)
- */
- colon = strchr(me->mnt_fsname, ':');
- if (!colon || !strstr(colon, "(pid"))
- continue;
- /* if got here, then we matched an existing Amd mount point */
- err = 1;
-
- plog(XLOG_WARNING, "%s is an existing automount point", me->mnt_dir);
-
- /* Is the old automounter still alive? */
- if (sscanf(colon, "%*[^(](pid%ld%*[,)]", &pid) != 1) {
- plog(XLOG_WARNING, "Can't parse pid in %s", me->mnt_fsname);
- goto give_up;
- }
- if (kill(pid, 0) != -1 || errno != ESRCH) {
- plog(XLOG_WARNING, "Automounter (pid: %ld) still alive", pid);
- goto give_up;
- }
-
- /*
- * Do we have a map for this mount point? Who cares, we'll restart
- * anyway -- getting ESTALE is way better than hanging.
- */
-
- /* Can we restart it? Only if it tells us what port it was using... */
- if (sscanf(colon, "%*[^,],port%hu)", &port) != 1) {
- plog(XLOG_WARNING, "No port specified for %s", me->mnt_fsname);
- goto give_up;
- }
-
- /* Maybe we already own that port... */
- if (port != nfs_port) {
- int i;
- for (i = 0; i < 256; i++) {
- if (old_ports[i] == port ||
- old_ports[i] == 0)
- break;
- }
- if (i == 256) {
- plog(XLOG_WARNING, "Too many open ports (256)");
- goto give_up;
- }
-
- if (old_ports[i] == 0) {
- int soNFS;
- SVCXPRT *nfsxprt;
- if (create_nfs_service(&soNFS, &port, &nfsxprt, nfs_dispatcher,
- get_nfs_dispatcher_version(nfs_dispatcher)) != 0) {
- plog(XLOG_WARNING, "Can't bind to port %u", port);
- goto give_up;
- }
- old_ports[i] = nfs_port = port;
- }
- }
- err = 0;
-
- give_up:
- if (err) {
- plog(XLOG_WARNING, "Can't restart %s, leaving it alone", me->mnt_dir);
- fs_ops = &amfs_link_ops;
- } else {
- fs_ops = &amfs_toplvl_ops;
- }
-
- restart_fake_mntfs(me, fs_ops);
- } /* end of "for (mlp" */
-
- /* free the mount list */
- free_mntlist(ml);
-}
diff --git a/contrib/amd/amd/rpc_fwd.c b/contrib/amd/amd/rpc_fwd.c
deleted file mode 100644
index 4f4374e96433..000000000000
--- a/contrib/amd/amd/rpc_fwd.c
+++ /dev/null
@@ -1,474 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/rpc_fwd.c
- *
- */
-
-/*
- * RPC packet forwarding
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/*
- * Note that the ID field in the external packet is only
- * ever treated as a 32 bit opaque data object, so there
- * is no need to convert to and from network byte ordering.
- */
-
-#define XID_ALLOC() (xid++)
-#define MAX_PACKET_SIZE 8192 /* Maximum UDP packet size */
-
-/*
- * Each pending reply has an rpc_forward structure
- * associated with it. These have a 15 second lifespan.
- * If a new structure is required, then an expired
- * one will be re-allocated if available, otherwise a fresh
- * one is allocated. Whenever a reply is received the
- * structure is discarded.
- */
-typedef struct rpc_forward rpc_forward;
-struct rpc_forward {
- qelem rf_q; /* Linked list */
- time_t rf_ttl; /* Time to live */
- u_int rf_xid; /* Packet id */
- u_int rf_oldid; /* Original packet id */
- fwd_fun *rf_fwd; /* Forwarding function */
- voidp rf_ptr;
- struct sockaddr_in rf_sin;
-};
-
-/*
- * Head of list of pending replies
- */
-qelem rpc_head = {&rpc_head, &rpc_head};
-int fwd_sock;
-static u_int xid;
-
-
-/*
- * Allocate a rely structure
- */
-static rpc_forward *
-fwd_alloc(void)
-{
- time_t now = clocktime(NULL);
- rpc_forward *p = NULL, *p2;
-
- /*
- * First search for an existing expired one.
- */
- ITER(p2, rpc_forward, &rpc_head) {
- if (p2->rf_ttl <= now) {
- p = p2;
- break;
- }
- }
-
- /*
- * If one couldn't be found then allocate
- * a new structure and link it at the
- * head of the list.
- */
- if (p) {
- /*
- * Call forwarding function to say that
- * this message was junked.
- */
- dlog("Re-using packet forwarding slot - id %#x", p->rf_xid);
- if (p->rf_fwd)
- (*p->rf_fwd) (0, 0, 0, &p->rf_sin, p->rf_ptr, FALSE);
- rem_que(&p->rf_q);
- } else {
- p = ALLOC(struct rpc_forward);
- }
- ins_que(&p->rf_q, &rpc_head);
-
- /*
- * Set the time to live field
- * Timeout in 43 seconds
- */
- p->rf_ttl = now + 43;
-
- return p;
-}
-
-
-/*
- * Free an allocated reply structure.
- * First unlink it from the list, then
- * discard it.
- */
-static void
-fwd_free(rpc_forward *p)
-{
- rem_que(&p->rf_q);
- XFREE(p);
-}
-
-
-/*
- * Initialize the RPC forwarder
- */
-int
-fwd_init(void)
-{
-#ifdef FIONBIO
- int on = 1;
-#endif /* FIONBIO */
-
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- /*
- * Create ping TLI socket (/dev/tcp and /dev/ticlts did not work)
- * (HPUX-11 does not like using O_NDELAY in flags)
- */
- fwd_sock = t_open("/dev/udp", O_RDWR|O_NONBLOCK, 0);
- if (fwd_sock < 0) {
- plog(XLOG_ERROR, "unable to create RPC forwarding TLI socket: %s",
- t_errlist[t_errno]);
- return errno;
- }
-#else /* not HAVE_TRANSPORT_TYPE_TLI */
- /*
- * Create ping socket
- */
- fwd_sock = socket(AF_INET, SOCK_DGRAM, 0);
- if (fwd_sock < 0) {
- plog(XLOG_ERROR, "unable to create RPC forwarding socket: %m");
- return errno;
- }
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
- /*
- * Some things we talk to require a priv port - so make one here
- */
- if (bind_resv_port(fwd_sock, (u_short *) NULL) < 0)
- plog(XLOG_ERROR, "can't bind privileged port (rpc_fwd)");
-
- if (fcntl(fwd_sock, F_SETFL, FNDELAY) < 0
-#ifdef FIONBIO
- && ioctl(fwd_sock, FIONBIO, &on) < 0
-#endif /* FIONBIO */
- ) {
- plog(XLOG_ERROR, "Can't set non-block on forwarding socket: %m");
- return errno;
- }
-
- return 0;
-}
-
-
-/*
- * Locate a packet in the forwarding list
- */
-static rpc_forward *
-fwd_locate(u_int id)
-{
- rpc_forward *p;
-
- ITER(p, rpc_forward, &rpc_head) {
- if (p->rf_xid == id)
- return p;
- }
-
- return 0;
-}
-
-
-/*
- * This is called to forward a packet to another
- * RPC server. The message id is changed and noted
- * so that when a reply appears we can tie it up
- * correctly. Just matching the reply's source address
- * would not work because it might come from a
- * different address.
- */
-int
-fwd_packet(int type_id, char *pkt, int len, struct sockaddr_in *fwdto, struct sockaddr_in *replyto, opaque_t cb_arg, fwd_fun *cb)
-{
- rpc_forward *p;
- u_int *pkt_int;
- int error;
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- struct t_unitdata ud;
-#endif /* HAVE_TRANSPORT_TYPE_TLI */
-
- if ((int) amd_state >= (int) Finishing)
- return ENOENT;
-
- /*
- * See if the type_id is fully specified.
- * If so, then discard any old entries
- * for this id.
- * Otherwise make sure the type_id is
- * fully qualified by allocating an id here.
- */
- switch (type_id & RPC_XID_MASK) {
- case RPC_XID_PORTMAP:
- dlog("Sending PORTMAP request %#x", type_id);
- break;
- case RPC_XID_MOUNTD:
- dlog("Sending MOUNTD request %#x", type_id);
- break;
- case RPC_XID_NFSPING:
- dlog("Sending NFS ping %#x", type_id);
- break;
- case RPC_XID_WEBNFS:
- dlog("Sending WebNFS lookup %#x", type_id);
- break;
- default:
- dlog("UNKNOWN RPC XID %#x", type_id);
- break;
- }
-
- if (type_id & ~RPC_XID_MASK) {
- p = fwd_locate(type_id);
- if (p) {
- dlog("Discarding earlier rpc fwd handle");
- fwd_free(p);
- }
- } else {
- dlog("Allocating a new xid...");
- type_id = MK_RPC_XID(type_id, XID_ALLOC());
- }
-
- p = fwd_alloc();
- if (!p)
- return ENOBUFS;
-
- error = 0;
-
- pkt_int = (u_int *) pkt;
-
- /*
- * Get the original packet id
- */
- p->rf_oldid = ntohl(*pkt_int);
-
- /*
- * Replace with newly allocated id
- */
- p->rf_xid = type_id;
- *pkt_int = htonl(type_id);
-
- /*
- * The sendto may fail if, for example, the route
- * to a remote host is lost because an intermediate
- * gateway has gone down. Important to fill in the
- * rest of "p" otherwise nasty things happen later...
- */
-#ifdef DEBUG
- {
- char dq[20];
- if (p && fwdto)
- dlog("Sending packet id %#x to %s:%d",
- p->rf_xid,
- inet_dquad(dq, sizeof(dq), fwdto->sin_addr.s_addr),
- ntohs(fwdto->sin_port));
- }
-#endif /* DEBUG */
-
- /* if NULL, remote server probably down */
- if (!fwdto) {
- error = AM_ERRNO_HOST_DOWN;
- goto out;
- }
-
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- ud.addr.buf = (char *) fwdto;
- if (fwdto) /* if NULL, set sizes to zero */
- ud.addr.maxlen = ud.addr.len = sizeof(struct sockaddr_in);
- else
- ud.addr.maxlen = ud.addr.len = 0;
- ud.opt.buf = (char *) NULL;
- ud.opt.maxlen = ud.opt.len = 0;
- ud.udata.buf = pkt;
- ud.udata.maxlen = ud.udata.len = len;
- if (t_sndudata(fwd_sock, &ud) < 0) {
- plog(XLOG_ERROR,"fwd_packet failed: t_errno=%d, errno=%d",t_errno,errno);
- error = errno;
- }
-#else /* not HAVE_TRANSPORT_TYPE_TLI */
- if (sendto(fwd_sock, (char *) pkt, len, 0,
- (struct sockaddr *) fwdto, sizeof(*fwdto)) < 0)
- error = errno;
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
- /*
- * Save callback function and return address
- */
-out:
- p->rf_fwd = cb;
- if (replyto)
- p->rf_sin = *replyto;
- else
- memset((voidp) &p->rf_sin, 0, sizeof(p->rf_sin));
- p->rf_ptr = cb_arg;
-
- return error;
-}
-
-
-/*
- * Called when some data arrives on the forwarding socket
- */
-void
-fwd_reply(void)
-{
- int len;
- u_int pkt[MAX_PACKET_SIZE / sizeof(u_int) + 1];
- u_int *pkt_int;
- u_int pkt_xid;
- int rc;
- rpc_forward *p;
- struct sockaddr_in src_addr;
- RECVFROM_FROMLEN_TYPE src_addr_len;
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- struct t_unitdata ud;
- int flags = 0;
-#endif /* HAVE_TRANSPORT_TYPE_TLI */
-
- /*
- * Determine the length of the packet
- */
- len = MAX_PACKET_SIZE;
-
- /*
- * Read the packet and check for validity
- */
-again:
- src_addr_len = sizeof(src_addr);
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- ud.addr.buf = (char *) &src_addr;
- ud.addr.maxlen = ud.addr.len = src_addr_len;
- ud.opt.buf = (char *) NULL;
- ud.opt.maxlen = ud.opt.len = 0;
- ud.udata.buf = (char *) pkt;
- ud.udata.maxlen = ud.udata.len = len;
- /* XXX: use flags accordingly such as if T_MORE set */
- rc = t_rcvudata(fwd_sock, &ud, &flags);
- if (rc == 0) /* success, reset rc to length */
- rc = ud.udata.len;
- else {
- plog(XLOG_ERROR,"fwd_reply failed: t_errno=%d, errno=%d, flags=%d",t_errno,errno, flags);
- /*
- * Clear error indication, otherwise the error condition persists and
- * amd gets into an infinite loop.
- */
- if (t_errno == TLOOK)
- t_rcvuderr(fwd_sock, NULL);
- }
-#else /* not HAVE_TRANSPORT_TYPE_TLI */
- rc = recvfrom(fwd_sock,
- (char *) pkt,
- len,
- 0,
- (struct sockaddr *) &src_addr,
- &src_addr_len);
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
- /*
- * XXX: in svr4, if the T_MORE bit of flags is set, what do
- * we then do? -Erez
- */
- if (rc < 0 || src_addr_len != sizeof(src_addr) ||
- src_addr.sin_family != AF_INET) {
- if (rc < 0 && errno == EINTR)
- goto again;
- plog(XLOG_ERROR, "Error reading RPC reply: %m");
- goto out;
- }
-
- /*
- * Do no more work if finishing soon
- */
- if ((int) amd_state >= (int) Finishing)
- goto out;
-
- /*
- * Find packet reference
- */
- pkt_int = (u_int *) pkt;
- pkt_xid = ntohl(*pkt_int);
-
- switch (pkt_xid & RPC_XID_MASK) {
- case RPC_XID_PORTMAP:
- dlog("Receiving PORTMAP reply %#x", pkt_xid);
- break;
- case RPC_XID_MOUNTD:
- dlog("Receiving MOUNTD reply %#x", pkt_xid);
- break;
- case RPC_XID_NFSPING:
- dlog("Receiving NFS ping %#x", pkt_xid);
- break;
- case RPC_XID_WEBNFS:
- dlog("Receiving WebNFS lookup %#x", pkt_xid);
- break;
- default:
- dlog("UNKNOWN RPC XID %#x", pkt_xid);
- break;
- }
-
- p = fwd_locate(pkt_xid);
- if (!p) {
- dlog("Can't forward reply id %#x", pkt_xid);
- goto out;
- }
-
- if (p->rf_fwd) {
- /*
- * Put the original message id back
- * into the packet.
- */
- *pkt_int = htonl(p->rf_oldid);
-
- /*
- * Call forwarding function
- */
- (*p->rf_fwd) ((voidp) pkt, rc, &src_addr, &p->rf_sin, p->rf_ptr, TRUE);
- }
-
- /*
- * Free forwarding info
- */
- fwd_free(p);
-
-out:;
-}
diff --git a/contrib/amd/amd/sched.c b/contrib/amd/amd/sched.c
deleted file mode 100644
index 5c816b4c2058..000000000000
--- a/contrib/amd/amd/sched.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/sched.c
- *
- */
-
-/*
- * Process scheduler
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-
-typedef struct pjob pjob;
-
-struct pjob {
- qelem hdr; /* Linked list */
- int pid; /* Process ID of job */
- cb_fun *cb_fun; /* Callback function */
- opaque_t cb_arg; /* Argument for callback */
- int w; /* everyone these days uses int, not a "union wait" */
- wchan_t wchan; /* Wait channel */
-};
-
-/* globals */
-qelem proc_list_head = {&proc_list_head, &proc_list_head};
-qelem proc_wait_list = {&proc_wait_list, &proc_wait_list};
-int task_notify_todo;
-
-
-void
-ins_que(qelem *elem, qelem *pred)
-{
- qelem *p = pred->q_forw;
-
- elem->q_back = pred;
- elem->q_forw = p;
- pred->q_forw = elem;
- p->q_back = elem;
-}
-
-
-void
-rem_que(qelem *elem)
-{
- qelem *p = elem->q_forw;
- qelem *p2 = elem->q_back;
-
- p2->q_forw = p;
- p->q_back = p2;
-}
-
-
-static pjob *
-sched_job(cb_fun *cf, opaque_t ca)
-{
- pjob *p = ALLOC(struct pjob);
-
- p->cb_fun = cf;
- p->cb_arg = ca;
-
- /*
- * Now place on wait queue
- */
- ins_que(&p->hdr, &proc_wait_list);
-
- return p;
-}
-
-
-/*
- * tf: The task to execute (ta is its arguments)
- * cf: Continuation function (ca is its arguments)
- */
-void
-run_task(task_fun *tf, opaque_t ta, cb_fun *cf, opaque_t ca)
-{
- pjob *p = sched_job(cf, ca);
-#ifdef HAVE_SIGACTION
- sigset_t new, mask;
-#else /* not HAVE_SIGACTION */
- int mask;
-#endif /* not HAVE_SIGACTION */
-
- p->wchan = (wchan_t) p;
-
-#ifdef HAVE_SIGACTION
- sigemptyset(&new); /* initialize signal set we wish to block */
- sigaddset(&new, SIGCHLD); /* only block on SIGCHLD */
- sigprocmask(SIG_BLOCK, &new, &mask);
-#else /* not HAVE_SIGACTION */
- mask = sigblock(sigmask(SIGCHLD));
-#endif /* not HAVE_SIGACTION */
-
- if ((p->pid = background())) {
-#ifdef HAVE_SIGACTION
- sigprocmask(SIG_SETMASK, &mask, NULL);
-#else /* not HAVE_SIGACTION */
- sigsetmask(mask);
-#endif /* not HAVE_SIGACTION */
- return;
- }
-
- /* child code runs here, parent has returned to caller */
-
- exit((*tf) (ta));
- /* firewall... */
- abort();
-}
-
-
-/*
- * Schedule a task to be run when woken up
- */
-void
-sched_task(cb_fun *cf, opaque_t ca, wchan_t wchan)
-{
- /*
- * Allocate a new task
- */
- pjob *p = sched_job(cf, ca);
-
- dlog("SLEEP on %p", wchan);
- p->wchan = wchan;
- p->pid = 0;
- p->w = 0; /* was memset (when ->w was union) */
-}
-
-
-static void
-wakeupjob(pjob *p)
-{
- rem_que(&p->hdr);
- ins_que(&p->hdr, &proc_list_head);
- task_notify_todo++;
-}
-
-
-void
-wakeup(wchan_t wchan)
-{
- pjob *p, *p2;
-
- if (!foreground)
- return;
-
- /*
- * Can't use ITER() here because
- * wakeupjob() juggles the list.
- */
- for (p = AM_FIRST(pjob, &proc_wait_list);
- p2 = NEXT(pjob, p), p != HEAD(pjob, &proc_wait_list);
- p = p2) {
- if (p->wchan == wchan) {
- wakeupjob(p);
- }
- }
-}
-
-
-void
-wakeup_task(int rc, int term, wchan_t wchan)
-{
- wakeup(wchan);
-}
-
-
-wchan_t
-get_mntfs_wchan(mntfs *mf)
-{
- if (mf &&
- mf->mf_ops &&
- mf->mf_ops->get_wchan)
- return mf->mf_ops->get_wchan(mf);
- return mf;
-}
-
-
-/*
- * Run any pending tasks.
- * This must be called with SIGCHLD disabled
- */
-void
-do_task_notify(void)
-{
- /*
- * Keep taking the first item off the list and processing it.
- *
- * Done this way because the callback can, quite reasonably,
- * queue a new task, so no local reference into the list can be
- * held here.
- */
- while (AM_FIRST(pjob, &proc_list_head) != HEAD(pjob, &proc_list_head)) {
- pjob *p = AM_FIRST(pjob, &proc_list_head);
- rem_que(&p->hdr);
- /*
- * This job has completed
- */
- --task_notify_todo;
-
- /*
- * Do callback if it exists
- */
- if (p->cb_fun) {
- /* these two trigraphs will ensure compatibility with strict POSIX.1 */
- p->cb_fun(WIFEXITED(p->w) ? WEXITSTATUS(p->w) : 0,
- WIFSIGNALED(p->w) ? WTERMSIG(p->w) : 0,
- p->cb_arg);
- }
- XFREE(p);
- }
-}
-
-
-RETSIGTYPE
-sigchld(int sig)
-{
- int w; /* everyone these days uses int, not a "union wait" */
- int pid;
-
-#ifdef HAVE_WAITPID
- while ((pid = waitpid((pid_t) -1, &w, WNOHANG)) > 0) {
-#else /* not HAVE_WAITPID */
- while ((pid = wait3( &w, WNOHANG, (struct rusage *) NULL)) > 0) {
-#endif /* not HAVE_WAITPID */
- pjob *p, *p2;
-
- if (WIFSIGNALED(w))
- plog(XLOG_ERROR, "Process %d exited with signal %d",
- pid, WTERMSIG(w));
- else
- dlog("Process %d exited with status %d",
- pid, WEXITSTATUS(w));
-
- for (p = AM_FIRST(pjob, &proc_wait_list);
- p2 = NEXT(pjob, p), p != HEAD(pjob, &proc_wait_list);
- p = p2) {
- if (p->pid == pid) {
- p->w = w;
- wakeupjob(p);
- break;
- }
- } /* end of for loop */
-
- if (p == HEAD(pjob, &proc_wait_list))
- dlog("can't locate task block for pid %d", pid);
-
- /*
- * Must count down children inside the while loop, otherwise we won't
- * count them all, and NumChildren (and later backoff) will be set
- * incorrectly. SH/RUNIT 940519.
- */
- if (--NumChildren < 0)
- NumChildren = 0;
- } /* end of "while wait..." loop */
-
-#ifdef REINSTALL_SIGNAL_HANDLER
- signal(sig, sigchld);
-#endif /* REINSTALL_SIGNAL_HANDLER */
-
- if (select_intr_valid)
- longjmp(select_intr, sig);
-}
diff --git a/contrib/amd/amd/srvr_amfs_auto.c b/contrib/amd/amd/srvr_amfs_auto.c
deleted file mode 100644
index 44b130254d30..000000000000
--- a/contrib/amd/amd/srvr_amfs_auto.c
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/srvr_amfs_auto.c
- *
- */
-
-/*
- * Automount FS server ("localhost") modeling
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/* globals */
-
-/* statics */
-static qelem amfs_auto_srvr_list = {&amfs_auto_srvr_list, &amfs_auto_srvr_list};
-static fserver *localhost;
-
-
-/*
- * Find an nfs server for the local host
- */
-fserver *
-amfs_generic_find_srvr(mntfs *mf)
-{
- fserver *fs = localhost;
-
- if (!fs) {
- fs = ALLOC(struct fserver);
- fs->fs_refc = 0;
- fs->fs_host = xstrdup("localhost");
- fs->fs_ip = NULL;
- fs->fs_cid = 0;
- fs->fs_pinger = AM_PINGER;
- fs->fs_flags = FSF_VALID | FSF_PING_UNINIT;
- fs->fs_type = "local";
- fs->fs_private = NULL;
- fs->fs_prfree = NULL;
-
- ins_que(&fs->fs_q, &amfs_auto_srvr_list);
-
- srvrlog(fs, "starts up");
-
- localhost = fs;
- }
- fs->fs_refc++;
-
- return fs;
-}
-
-
-/*****************************************************************************
- *** GENERIC ROUTINES FOLLOW
- *****************************************************************************/
-
-/*
- * Wakeup anything waiting for this server
- */
-void
-wakeup_srvr(fserver *fs)
-{
- fs->fs_flags &= ~FSF_WANT;
- wakeup((voidp) fs);
-}
-
-
-/*
- * Called when final ttl of server has expired
- */
-static void
-timeout_srvr(voidp v)
-{
- fserver *fs = v;
-
- /*
- * If the reference count is still zero then
- * we are free to remove this node
- */
- if (fs->fs_refc == 0) {
- dlog("Deleting file server %s", fs->fs_host);
- if (fs->fs_flags & FSF_WANT)
- wakeup_srvr(fs);
-
- /*
- * Remove from queue.
- */
- rem_que(&fs->fs_q);
- /*
- * (Possibly) call the private free routine.
- */
- if (fs->fs_private && fs->fs_prfree)
- (*fs->fs_prfree) (fs->fs_private);
-
- /*
- * Free the net address
- */
- XFREE(fs->fs_ip);
-
- /*
- * Free the host name.
- */
- XFREE(fs->fs_host);
-
- /*
- * Discard the fserver object.
- */
- XFREE(fs);
- }
-}
-
-
-/*
- * Free a file server
- */
-void
-free_srvr(fserver *fs)
-{
- if (--fs->fs_refc == 0) {
- /*
- * The reference count is now zero,
- * so arrange for this node to be
- * removed in AM_TTL seconds if no
- * other mntfs is referencing it.
- */
- int ttl = (FSRV_ERROR(fs) || FSRV_ISDOWN(fs)) ? 19 : AM_TTL;
-
- dlog("Last hard reference to file server %s - will timeout in %ds", fs->fs_host, ttl);
- if (fs->fs_cid) {
- untimeout(fs->fs_cid);
- /*
- * Turn off pinging - XXX
- */
- fs->fs_flags &= ~FSF_PINGING;
- }
-
- /*
- * Keep structure lying around for a while
- */
- fs->fs_cid = timeout(ttl, timeout_srvr, (voidp) fs);
-
- /*
- * Mark the fileserver down and invalid again
- */
- fs->fs_flags &= ~FSF_VALID;
- fs->fs_flags |= FSF_DOWN;
- }
-}
-
-
-/*
- * Make a duplicate fserver reference
- */
-fserver *
-dup_srvr(fserver *fs)
-{
- fs->fs_refc++;
- return fs;
-}
-
-
-/*
- * Log state change
- */
-void
-srvrlog(fserver *fs, char *state)
-{
- plog(XLOG_INFO, "file server %s, type %s, state %s", fs->fs_host, fs->fs_type, state);
-}
diff --git a/contrib/amd/amd/srvr_nfs.c b/contrib/amd/amd/srvr_nfs.c
deleted file mode 100644
index b7c852c9e1de..000000000000
--- a/contrib/amd/amd/srvr_nfs.c
+++ /dev/null
@@ -1,1075 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/srvr_nfs.c
- *
- */
-
-/*
- * NFS server modeling
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-
-/*
- * Number of pings allowed to fail before host is declared down
- * - three-fifths of the allowed mount time...
- */
-#define MAX_ALLOWED_PINGS (3 + /* for luck ... */ 1)
-
-/*
- * How often to ping when starting a new server
- */
-#define FAST_NFS_PING 3
-
-#if (FAST_NFS_PING * MAX_ALLOWED_PINGS) >= ALLOWED_MOUNT_TIME
-# error: sanity check failed in srvr_nfs.c
-/*
- * you cannot do things this way...
- * sufficient fast pings must be given the chance to fail
- * within the allowed mount time
- */
-#endif /* (FAST_NFS_PING * MAX_ALLOWED_PINGS) >= ALLOWED_MOUNT_TIME */
-
-/* structures and typedefs */
-typedef struct nfs_private {
- u_short np_mountd; /* Mount daemon port number */
- char np_mountd_inval; /* Port *may* be invalid */
- /* 'Y' invalid, 'N' valid, 'P' permanent */
- int np_ping; /* Number of failed ping attempts */
- time_t np_ttl; /* Time when server is thought dead */
- int np_xid; /* RPC transaction id for pings */
- int np_error; /* Error during portmap request */
-} nfs_private;
-
-/* globals */
-qelem nfs_srvr_list = {&nfs_srvr_list, &nfs_srvr_list};
-
-/* statics */
-static int global_xid; /* For NFS pings */
-#define XID_ALLOC() (++global_xid)
-
-#if defined(HAVE_FS_NFS4)
-# define NUM_NFS_VERS 3
-#elif defined(HAVE_FS_NFS3)
-# define NUM_NFS_VERS 2
-#else /* not HAVE_FS_NFS3 */
-# define NUM_NFS_VERS 1
-#endif /* not HAVE_FS_NFS3 */
-static int ping_len[NUM_NFS_VERS];
-static char ping_buf[NUM_NFS_VERS][sizeof(struct rpc_msg) + 32];
-
-#if defined(MNTTAB_OPT_PROTO) || defined(HAVE_FS_NFS3)
-/*
- * Protocols we know about, in order of preference.
- *
- * Note that Solaris 8 and newer NetBSD systems are switching to UDP first,
- * so this order may have to be adjusted for Amd in the future once more
- * vendors make that change. -Erez 11/24/2000
- *
- * Or we might simply make this is a platform-specific order. -Ion 09/13/2003
- */
-static char *protocols[] = { "tcp", "udp", NULL };
-#endif /* defined(MNTTAB_OPT_PROTO) || defined(HAVE_FS_NFS3) */
-
-/* forward definitions */
-static void nfs_keepalive(voidp);
-
-
-/*
- * Flush cached data for an fserver (or for all, if fs==NULL)
- */
-void
-flush_srvr_nfs_cache(fserver *fs)
-{
- fserver *fs2 = NULL;
-
- ITER(fs2, fserver, &nfs_srvr_list) {
- if (fs == NULL || fs == fs2) {
- nfs_private *np = (nfs_private *) fs2->fs_private;
- if (np && np->np_mountd_inval != 'P') {
- np->np_mountd_inval = 'Y';
- np->np_error = -1;
- }
- }
- }
-}
-
-
-/*
- * Startup the NFS ping for a particular version.
- */
-static void
-create_ping_payload(u_long nfs_version)
-{
- XDR ping_xdr;
- struct rpc_msg ping_msg;
-
- /*
- * Non nfs mounts like /afs/glue.umd.edu have ended up here.
- */
- if (nfs_version == 0) {
- nfs_version = NFS_VERSION;
- plog(XLOG_WARNING, "%s: nfs_version = 0, changed to 2", __func__);
- } else
- plog(XLOG_INFO, "%s: nfs_version: %d", __func__, (int) nfs_version);
-
- rpc_msg_init(&ping_msg, NFS_PROGRAM, nfs_version, NFSPROC_NULL);
-
- /*
- * Create an XDR endpoint
- */
- xdrmem_create(&ping_xdr, ping_buf[nfs_version - NFS_VERSION], sizeof(ping_buf[0]), XDR_ENCODE);
-
- /*
- * Create the NFS ping message
- */
- if (!xdr_callmsg(&ping_xdr, &ping_msg)) {
- plog(XLOG_ERROR, "Couldn't create ping RPC message");
- going_down(3);
- return;
- }
- /*
- * Find out how long it is
- */
- ping_len[nfs_version - NFS_VERSION] = xdr_getpos(&ping_xdr);
-
- /*
- * Destroy the XDR endpoint - we don't need it anymore
- */
- xdr_destroy(&ping_xdr);
-}
-
-
-/*
- * Called when a portmap reply arrives
- */
-static void
-got_portmap(voidp pkt, int len, struct sockaddr_in *sa, struct sockaddr_in *ia, voidp idv, int done)
-{
- fserver *fs2 = (fserver *) idv;
- fserver *fs = NULL;
-
- /*
- * Find which fileserver we are talking about
- */
- ITER(fs, fserver, &nfs_srvr_list)
- if (fs == fs2)
- break;
-
- if (fs == fs2) {
- u_long port = 0; /* XXX - should be short but protocol is naff */
- int error = done ? pickup_rpc_reply(pkt, len, (voidp) &port, (XDRPROC_T_TYPE) xdr_u_long) : -1;
- nfs_private *np = (nfs_private *) fs->fs_private;
-
- if (!error && port) {
- dlog("got port (%d) for mountd on %s", (int) port, fs->fs_host);
- /*
- * Grab the port number. Portmap sends back
- * an u_long in native ordering, so it
- * needs converting to a u_short in
- * network ordering.
- */
- np->np_mountd = htons((u_short) port);
- np->np_mountd_inval = 'N';
- np->np_error = 0;
- } else {
- dlog("Error fetching port for mountd on %s", fs->fs_host);
- dlog("\t error=%d, port=%d", error, (int) port);
- /*
- * Almost certainly no mountd running on remote host
- */
- np->np_error = error ? error : ETIMEDOUT;
- }
-
- if (fs->fs_flags & FSF_WANT)
- wakeup_srvr(fs);
- } else if (done) {
- dlog("Got portmap for old port request");
- } else {
- dlog("portmap request timed out");
- }
-}
-
-
-/*
- * Obtain portmap information
- */
-static int
-call_portmap(fserver *fs, AUTH *auth, u_long prog, u_long vers, u_long prot)
-{
- struct rpc_msg pmap_msg;
- int len;
- char iobuf[UDPMSGSIZE];
- int error;
- struct pmap pmap;
-
- rpc_msg_init(&pmap_msg, PMAPPROG, PMAPVERS, PMAPPROC_NULL);
- pmap.pm_prog = prog;
- pmap.pm_vers = vers;
- pmap.pm_prot = prot;
- pmap.pm_port = 0;
- len = make_rpc_packet(iobuf,
- sizeof(iobuf),
- PMAPPROC_GETPORT,
- &pmap_msg,
- (voidp) &pmap,
- (XDRPROC_T_TYPE) xdr_pmap,
- auth);
- if (len > 0) {
- struct sockaddr_in sin;
- memset((voidp) &sin, 0, sizeof(sin));
- sin = *fs->fs_ip;
- sin.sin_port = htons(PMAPPORT);
- error = fwd_packet(RPC_XID_PORTMAP, iobuf, len,
- &sin, &sin, (voidp) fs, got_portmap);
- } else {
- error = -len;
- }
-
- return error;
-}
-
-
-static void
-recompute_portmap(fserver *fs)
-{
- int error;
- u_long mnt_version;
-
- /*
- * No portmap calls for pure WebNFS servers.
- */
- if (fs->fs_flags & FSF_WEBNFS)
- return;
-
- if (nfs_auth)
- error = 0;
- else
- error = make_nfs_auth();
-
- if (error) {
- nfs_private *np = (nfs_private *) fs->fs_private;
- np->np_error = error;
- return;
- }
-
- if (fs->fs_version == 0)
- plog(XLOG_WARNING, "%s: nfs_version = 0 fixed", __func__);
-
- plog(XLOG_INFO, "%s: NFS version %d on %s", __func__,
- (int) fs->fs_version, fs->fs_host);
-#ifdef HAVE_FS_NFS3
- if (fs->fs_version == NFS_VERSION3)
- mnt_version = AM_MOUNTVERS3;
- else
-#endif /* HAVE_FS_NFS3 */
- mnt_version = MOUNTVERS;
-
- plog(XLOG_INFO, "Using MOUNT version: %d", (int) mnt_version);
- call_portmap(fs, nfs_auth, MOUNTPROG, mnt_version, (u_long) IPPROTO_UDP);
-}
-
-
-int
-get_mountd_port(fserver *fs, u_short *port, wchan_t wchan)
-{
- int error = -1;
-
- if (FSRV_ISDOWN(fs))
- return EWOULDBLOCK;
-
- if (FSRV_ISUP(fs)) {
- nfs_private *np = (nfs_private *) fs->fs_private;
- if (np->np_error == 0) {
- *port = np->np_mountd;
- error = 0;
- } else {
- error = np->np_error;
- }
- /*
- * Now go get the port mapping again in case it changed.
- * Note that it is used even if (np_mountd_inval)
- * is True. The flag is used simply as an
- * indication that the mountd may be invalid, not
- * that it is known to be invalid.
- */
- switch (np->np_mountd_inval) {
- case 'Y':
- recompute_portmap(fs);
- break;
- case 'N':
- np->np_mountd_inval = 'Y';
- break;
- case 'P':
- break;
- default:
- abort();
- }
- }
- if (error < 0 && wchan && !(fs->fs_flags & FSF_WANT)) {
- /*
- * If a wait channel is supplied, and no
- * error has yet occurred, then arrange
- * that a wakeup is done on the wait channel,
- * whenever a wakeup is done on this fs node.
- * Wakeup's are done on the fs node whenever
- * it changes state - thus causing control to
- * come back here and new, better things to happen.
- */
- fs->fs_flags |= FSF_WANT;
- sched_task(wakeup_task, wchan, (wchan_t) fs);
- }
- return error;
-}
-
-
-/*
- * This is called when we get a reply to an RPC ping.
- * The value of id was taken from the nfs_private
- * structure when the ping was transmitted.
- */
-static void
-nfs_keepalive_callback(voidp pkt, int len, struct sockaddr_in *sp, struct sockaddr_in *tsp, voidp idv, int done)
-{
- int xid = (long) idv; /* cast needed for 64-bit archs */
- fserver *fs;
- int found_map = 0;
-
- if (!done)
- return;
-
- /*
- * For each node...
- */
- ITER(fs, fserver, &nfs_srvr_list) {
- nfs_private *np = (nfs_private *) fs->fs_private;
- if (np->np_xid == xid && (fs->fs_flags & FSF_PINGING)) {
- /*
- * Reset the ping counter.
- * Update the keepalive timer.
- * Log what happened.
- */
- if (fs->fs_flags & FSF_DOWN) {
- fs->fs_flags &= ~FSF_DOWN;
- if (fs->fs_flags & FSF_VALID) {
- srvrlog(fs, "is up");
- } else {
- if (np->np_ping > 1)
- srvrlog(fs, "ok");
- else
- srvrlog(fs, "starts up");
- fs->fs_flags |= FSF_VALID;
- }
-
- map_flush_srvr(fs);
- } else {
- if (fs->fs_flags & FSF_VALID) {
- dlog("file server %s type nfs is still up", fs->fs_host);
- } else {
- if (np->np_ping > 1)
- srvrlog(fs, "ok");
- fs->fs_flags |= FSF_VALID;
- }
- }
-
- /*
- * Adjust ping interval
- */
- untimeout(fs->fs_cid);
- fs->fs_cid = timeout(fs->fs_pinger, nfs_keepalive, (voidp) fs);
-
- /*
- * Update ttl for this server
- */
- np->np_ttl = clocktime(NULL) +
- (MAX_ALLOWED_PINGS - 1) * FAST_NFS_PING + fs->fs_pinger - 1;
-
- /*
- * New RPC xid...
- */
- np->np_xid = XID_ALLOC();
-
- /*
- * Failed pings is zero...
- */
- np->np_ping = 0;
-
- /*
- * Recompute portmap information if not known
- */
- if (np->np_mountd_inval == 'Y')
- recompute_portmap(fs);
-
- found_map++;
- break;
- }
- }
-
- if (found_map == 0)
- dlog("Spurious ping packet");
-}
-
-
-static void
-check_fs_addr_change(fserver *fs)
-{
- struct hostent *hp = NULL;
- struct in_addr ia;
- char *old_ipaddr, *new_ipaddr;
-
- hp = gethostbyname(fs->fs_host);
- if (!hp ||
- hp->h_addrtype != AF_INET ||
- !STREQ((char *) hp->h_name, fs->fs_host) ||
- memcmp((voidp) &fs->fs_ip->sin_addr,
- (voidp) hp->h_addr,
- sizeof(fs->fs_ip->sin_addr)) == 0)
- return;
- /* if got here: downed server changed IP address */
- old_ipaddr = xstrdup(inet_ntoa(fs->fs_ip->sin_addr));
- memmove((voidp) &ia, (voidp) hp->h_addr, sizeof(struct in_addr));
- new_ipaddr = inet_ntoa(ia); /* ntoa uses static buf */
- plog(XLOG_WARNING, "EZK: down fileserver %s changed ip: %s -> %s",
- fs->fs_host, old_ipaddr, new_ipaddr);
- XFREE(old_ipaddr);
- /* copy new IP addr */
- memmove((voidp) &fs->fs_ip->sin_addr,
- (voidp) hp->h_addr,
- sizeof(fs->fs_ip->sin_addr));
- /* XXX: do we need to un/set these flags? */
- fs->fs_flags &= ~FSF_DOWN;
- fs->fs_flags |= FSF_VALID | FSF_WANT;
- map_flush_srvr(fs); /* XXX: a race with flush_srvr_nfs_cache? */
- flush_srvr_nfs_cache(fs);
- fs->fs_flags |= FSF_FORCE_UNMOUNT;
-
-#if 0
- flush_nfs_fhandle_cache(fs); /* done in caller: nfs_keepalive_timeout */
- /* XXX: need to purge nfs_private so that somehow it will get re-initialized? */
-#endif /* 0 */
-}
-
-
-/*
- * Called when no ping-reply received
- */
-static void
-nfs_keepalive_timeout(voidp v)
-{
- fserver *fs = v;
- nfs_private *np = (nfs_private *) fs->fs_private;
-
- /*
- * Another ping has failed
- */
- np->np_ping++;
- if (np->np_ping > 1)
- srvrlog(fs, "not responding");
-
- /*
- * Not known to be up any longer
- */
- if (FSRV_ISUP(fs))
- fs->fs_flags &= ~FSF_VALID;
-
- /*
- * If ttl has expired then guess that it is dead
- */
- if (np->np_ttl < clocktime(NULL)) {
- int oflags = fs->fs_flags;
- dlog("ttl has expired");
- if ((fs->fs_flags & FSF_DOWN) == 0) {
- /*
- * Server was up, but is now down.
- */
- srvrlog(fs, "is down");
- fs->fs_flags |= FSF_DOWN | FSF_VALID;
- /*
- * Since the server is down, the portmap
- * information may now be wrong, so it
- * must be flushed from the local cache
- */
- flush_nfs_fhandle_cache(fs);
- np->np_error = -1;
- check_fs_addr_change(fs); /* check if IP addr of fserver changed */
- } else {
- /*
- * Known to be down
- */
- if ((fs->fs_flags & FSF_VALID) == 0)
- srvrlog(fs, "starts down");
- fs->fs_flags |= FSF_VALID;
- }
- if (oflags != fs->fs_flags && (fs->fs_flags & FSF_WANT))
- wakeup_srvr(fs);
- /*
- * Reset failed ping count
- */
- np->np_ping = 0;
- } else {
- if (np->np_ping > 1)
- dlog("%d pings to %s failed - at most %d allowed", np->np_ping, fs->fs_host, MAX_ALLOWED_PINGS);
- }
-
- /*
- * New RPC xid, so any late responses to the previous ping
- * get ignored...
- */
- np->np_xid = XID_ALLOC();
-
- /*
- * Run keepalive again
- */
- nfs_keepalive(fs);
-}
-
-
-/*
- * Keep track of whether a server is alive
- */
-static void
-nfs_keepalive(voidp v)
-{
- fserver *fs = v;
- int error;
- nfs_private *np = (nfs_private *) fs->fs_private;
- int fstimeo = -1;
- int fs_version = nfs_valid_version(gopt.nfs_vers_ping) &&
- gopt.nfs_vers_ping < fs->fs_version ? gopt.nfs_vers_ping : fs->fs_version;
-
- /*
- * Send an NFS ping to this node
- */
-
- if (ping_len[fs_version - NFS_VERSION] == 0)
- create_ping_payload(fs_version);
-
- /*
- * Queue the packet...
- */
- error = fwd_packet(MK_RPC_XID(RPC_XID_NFSPING, np->np_xid),
- ping_buf[fs_version - NFS_VERSION],
- ping_len[fs_version - NFS_VERSION],
- fs->fs_ip,
- (struct sockaddr_in *) NULL,
- (voidp) ((long) np->np_xid), /* cast needed for 64-bit archs */
- nfs_keepalive_callback);
-
- /*
- * See if a hard error occurred
- */
- switch (error) {
- case ENETDOWN:
- case ENETUNREACH:
- case EHOSTDOWN:
- case EHOSTUNREACH:
- np->np_ping = MAX_ALLOWED_PINGS; /* immediately down */
- np->np_ttl = (time_t) 0;
- /*
- * This causes an immediate call to nfs_keepalive_timeout
- * whenever the server was thought to be up.
- * See +++ below.
- */
- fstimeo = 0;
- break;
-
- case 0:
- dlog("Sent NFS ping to %s", fs->fs_host);
- break;
- }
-
- /*
- * Back off the ping interval if we are not getting replies and
- * the remote system is known to be down.
- */
- switch (fs->fs_flags & (FSF_DOWN | FSF_VALID)) {
- case FSF_VALID: /* Up */
- if (fstimeo < 0) /* +++ see above */
- fstimeo = FAST_NFS_PING;
- break;
-
- case FSF_VALID | FSF_DOWN: /* Down */
- fstimeo = fs->fs_pinger;
- break;
-
- default: /* Unknown */
- fstimeo = FAST_NFS_PING;
- break;
- }
-
- dlog("NFS timeout in %d seconds", fstimeo);
-
- fs->fs_cid = timeout(fstimeo, nfs_keepalive_timeout, (voidp) fs);
-}
-
-
-static void
-start_nfs_pings(fserver *fs, int pingval)
-{
- if (pingval == 0) /* could be because ping mnt option not found */
- pingval = AM_PINGER;
- /* if pings haven't been initalized, then init them for first time */
- if (fs->fs_flags & FSF_PING_UNINIT) {
- fs->fs_flags &= ~FSF_PING_UNINIT;
- plog(XLOG_INFO, "initializing %s's pinger to %d sec", fs->fs_host, pingval);
- goto do_pings;
- }
-
- if ((fs->fs_flags & FSF_PINGING) && fs->fs_pinger == pingval) {
- dlog("already running pings to %s", fs->fs_host);
- return;
- }
-
- /* if got here, then we need to update the ping value */
- plog(XLOG_INFO, "changing %s's ping value from %d%s to %d%s",
- fs->fs_host,
- fs->fs_pinger, (fs->fs_pinger < 0 ? " (off)" : ""),
- pingval, (pingval < 0 ? " (off)" : ""));
- do_pings:
- fs->fs_pinger = pingval;
-
- if (fs->fs_cid)
- untimeout(fs->fs_cid);
- if (pingval < 0) {
- srvrlog(fs, "wired up (pings disabled)");
- fs->fs_flags |= FSF_VALID;
- fs->fs_flags &= ~FSF_DOWN;
- } else {
- fs->fs_flags |= FSF_PINGING;
- nfs_keepalive(fs);
- }
-}
-
-
-/*
- * Find an nfs server for a host.
- */
-fserver *
-find_nfs_srvr(mntfs *mf)
-{
- char *host;
- fserver *fs;
- int pingval;
- mntent_t mnt;
- nfs_private *np;
- struct hostent *hp = NULL;
- struct sockaddr_in *ip = NULL;
- u_long nfs_version = 0; /* default is no version specified */
- u_long best_nfs_version = 0;
- char *nfs_proto = NULL; /* no IP protocol either */
- int nfs_port = 0;
- int nfs_port_opt = 0;
- int fserver_is_down = 0;
-
- if (mf->mf_fo == NULL) {
- plog(XLOG_ERROR, "%s: NULL mf_fo", __func__);
- return NULL;
- }
- host = mf->mf_fo->opt_rhost;
- /*
- * Get ping interval from mount options.
- * Current only used to decide whether pings
- * are required or not. < 0 = no pings.
- */
- mnt.mnt_opts = mf->mf_mopts;
- pingval = hasmntval(&mnt, "ping");
-
- if (mf->mf_flags & MFF_NFS_SCALEDOWN) {
- /*
- * the server granted us a filehandle, but we were unable to mount it.
- * therefore, scale down to NFSv2/UDP and try again.
- */
- nfs_version = NFS_VERSION;
- nfs_proto = "udp";
- plog(XLOG_WARNING, "%s: NFS mount failed, trying again with NFSv2/UDP",
- __func__);
- mf->mf_flags &= ~MFF_NFS_SCALEDOWN;
- } else {
- /*
- * Get the NFS version from the mount options. This is used
- * to decide the highest NFS version to try.
- */
-#ifdef MNTTAB_OPT_VERS
- nfs_version = hasmntval(&mnt, MNTTAB_OPT_VERS);
-#endif /* MNTTAB_OPT_VERS */
-
-#ifdef MNTTAB_OPT_PROTO
- {
- char *proto_opt = hasmnteq(&mnt, MNTTAB_OPT_PROTO);
- if (proto_opt) {
- char **p;
- for (p = protocols; *p; p++)
- if (NSTREQ(proto_opt, *p, strlen(*p))) {
- nfs_proto = *p;
- break;
- }
- if (*p == NULL)
- plog(XLOG_WARNING, "ignoring unknown protocol option for %s:%s",
- host, mf->mf_fo->opt_rfs);
- }
- }
-#endif /* MNTTAB_OPT_PROTO */
-
-#ifdef HAVE_NFS_NFSV2_H
- /* allow overriding if nfsv2 option is specified in mount options */
- if (amu_hasmntopt(&mnt, "nfsv2")) {
- nfs_version = NFS_VERSION;/* nullify any ``vers=X'' statements */
- nfs_proto = "udp"; /* nullify any ``proto=tcp'' statements */
- plog(XLOG_WARNING, "found compatibility option \"nfsv2\": set options vers=2,proto=udp for host %s", host);
- }
-#endif /* HAVE_NFS_NFSV2_H */
-
- /* check if we've globally overridden the NFS version/protocol */
- if (gopt.nfs_vers) {
- nfs_version = gopt.nfs_vers;
- plog(XLOG_INFO, "%s: force NFS version to %d", __func__,
- (int) nfs_version);
- }
- if (gopt.nfs_proto) {
- nfs_proto = gopt.nfs_proto;
- plog(XLOG_INFO, "%s: force NFS protocol transport to %s", __func__,
- nfs_proto);
- }
- }
-
- /*
- * lookup host address and canonical name
- */
- hp = gethostbyname(host);
-
- /*
- * New code from Bob Harris <harris@basil-rathbone.mit.edu>
- * Use canonical name to keep track of file server
- * information. This way aliases do not generate
- * multiple NFS pingers. (Except when we're normalizing
- * hosts.)
- */
- if (hp && !(gopt.flags & CFM_NORMALIZE_HOSTNAMES))
- host = (char *) hp->h_name;
-
- if (hp) {
- switch (hp->h_addrtype) {
- case AF_INET:
- ip = CALLOC(struct sockaddr_in);
- memset((voidp) ip, 0, sizeof(*ip));
- /* as per POSIX, sin_len need not be set (used internally by kernel) */
- ip->sin_family = AF_INET;
- memmove((voidp) &ip->sin_addr, (voidp) hp->h_addr, sizeof(ip->sin_addr));
- break;
-
- default:
- plog(XLOG_USER, "No IP address for host %s", host);
- goto no_dns;
- }
- } else {
- plog(XLOG_USER, "Unknown host: %s", host);
- goto no_dns;
- }
-
- /*
- * This may not be the best way to do things, but it really doesn't make
- * sense to query a file server which is marked as 'down' for any
- * version/proto combination.
- */
- ITER(fs, fserver, &nfs_srvr_list) {
- if (FSRV_ISDOWN(fs) &&
- STREQ(host, fs->fs_host)) {
- plog(XLOG_WARNING, "fileserver %s is already hung - not running NFS proto/version discovery", host);
- fs->fs_refc++;
- XFREE(ip);
- return fs;
- }
- }
-
- /*
- * Get the NFS Version, and verify server is up.
- * If the client only supports NFSv2, hardcode it but still try to
- * contact the remote portmapper to see if the service is running.
- */
-#ifndef HAVE_FS_NFS3
- nfs_version = NFS_VERSION;
- nfs_proto = "udp";
- plog(XLOG_INFO, "The client supports only NFS(2,udp)");
-#endif /* not HAVE_FS_NFS3 */
-
-
- if (amu_hasmntopt(&mnt, MNTTAB_OPT_PUBLIC)) {
- /*
- * Use WebNFS to obtain file handles.
- */
- mf->mf_flags |= MFF_WEBNFS;
- plog(XLOG_INFO, "%s option used, NOT contacting the portmapper on %s",
- MNTTAB_OPT_PUBLIC, host);
- /*
- * Prefer NFSv4/tcp if the client supports it (cf. RFC 2054, 7).
- */
- if (!nfs_version) {
-#if defined(HAVE_FS_NFS4)
- nfs_version = NFS_VERSION4;
-#elif defined(HAVE_FS_NFS3)
- nfs_version = NFS_VERSION3;
-#else /* not HAVE_FS_NFS3 */
- nfs_version = NFS_VERSION;
-#endif /* not HAVE_FS_NFS3 */
- plog(XLOG_INFO, "No NFS version specified, will use NFSv%d",
- (int) nfs_version);
- }
- if (!nfs_proto) {
-#if defined(MNTTAB_OPT_PROTO) || defined(HAVE_FS_NFS3) || defined(HAVE_FS_NFS4)
- nfs_proto = "tcp";
-#else /* not defined(MNTTAB_OPT_PROTO) || defined(HAVE_FS_NFS3) || defined(HAVE_FS_NFS4) */
- nfs_proto = "udp";
-#endif /* not defined(MNTTAB_OPT_PROTO) || defined(HAVE_FS_NFS3) || defined(HAVE_FS_NFS4) */
- plog(XLOG_INFO, "No NFS protocol transport specified, will use %s",
- nfs_proto);
- }
- } else {
- /*
- * Find the best combination of NFS version and protocol.
- * When given a choice, use the highest available version,
- * and use TCP over UDP if available.
- */
- if (check_pmap_up(host, ip)) {
- if (nfs_proto) {
- best_nfs_version = get_nfs_version(host, ip, nfs_version, nfs_proto,
- gopt.nfs_vers);
- nfs_port = ip->sin_port;
- }
-#ifdef MNTTAB_OPT_PROTO
- else {
- u_int proto_nfs_version;
- char **p;
-
- for (p = protocols; *p; p++) {
- proto_nfs_version = get_nfs_version(host, ip, nfs_version, *p,
- gopt.nfs_vers);
- if (proto_nfs_version > best_nfs_version) {
- best_nfs_version = proto_nfs_version;
- nfs_proto = *p;
- nfs_port = ip->sin_port;
- }
- }
- }
-#endif /* MNTTAB_OPT_PROTO */
- } else {
- plog(XLOG_INFO, "portmapper service not running on %s", host);
- }
-
- /* use the portmapper results only nfs_version is not set yet */
- if (!best_nfs_version) {
- /*
- * If the NFS server is down or does not support the portmapper call
- * (such as certain Novell NFS servers) we mark it as version 2 and we
- * let the nfs code deal with the case when it is down. If/when the
- * server comes back up and it can support NFSv3 and/or TCP, it will
- * use those.
- */
- if (nfs_version == 0) {
- nfs_version = NFS_VERSION;
- nfs_proto = "udp";
- }
- plog(XLOG_INFO, "NFS service not running on %s", host);
- fserver_is_down = 1;
- } else {
- if (nfs_version == 0)
- nfs_version = best_nfs_version;
- plog(XLOG_INFO, "Using NFS version %d, protocol %s on host %s",
- (int) nfs_version, nfs_proto, host);
- }
- }
-
- /*
- * Determine the NFS port.
- *
- * A valid "port" mount option overrides anything else.
- * If the port has been determined from the portmapper, use that.
- * Default to NFS_PORT otherwise (cf. RFC 2054, 3).
- */
- nfs_port_opt = hasmntval(&mnt, MNTTAB_OPT_PORT);
- if (nfs_port_opt > 0)
- nfs_port = htons(nfs_port_opt);
- if (!nfs_port)
- nfs_port = htons(NFS_PORT);
-
- dlog("%s: using port %d for nfs on %s", __func__,
- (int) ntohs(nfs_port), host);
- ip->sin_port = nfs_port;
-
-no_dns:
- /*
- * Try to find an existing fs server structure for this host.
- * Note that differing versions or protocols have their own structures.
- * XXX: Need to fix the ping mechanism to actually use the NFS protocol
- * chosen here (right now it always uses datagram sockets).
- */
- ITER(fs, fserver, &nfs_srvr_list) {
- if (STREQ(host, fs->fs_host) &&
- nfs_version == fs->fs_version &&
- STREQ(nfs_proto, fs->fs_proto)) {
- /*
- * fill in the IP address -- this is only needed
- * if there is a chance an IP address will change
- * between mounts.
- * Mike Mitchell, mcm@unx.sas.com, 09/08/93
- */
- if (hp && fs->fs_ip &&
- memcmp((voidp) &fs->fs_ip->sin_addr,
- (voidp) hp->h_addr,
- sizeof(fs->fs_ip->sin_addr)) != 0) {
- struct in_addr ia;
- char *old_ipaddr, *new_ipaddr;
- old_ipaddr = xstrdup(inet_ntoa(fs->fs_ip->sin_addr));
- memmove((voidp) &ia, (voidp) hp->h_addr, sizeof(struct in_addr));
- new_ipaddr = inet_ntoa(ia); /* ntoa uses static buf */
- plog(XLOG_WARNING, "fileserver %s changed ip: %s -> %s",
- fs->fs_host, old_ipaddr, new_ipaddr);
- XFREE(old_ipaddr);
- flush_nfs_fhandle_cache(fs);
- memmove((voidp) &fs->fs_ip->sin_addr, (voidp) hp->h_addr, sizeof(fs->fs_ip->sin_addr));
- }
-
- /*
- * If the new file systems doesn't use WebNFS, the nfs pings may
- * try to contact the portmapper.
- */
- if (!(mf->mf_flags & MFF_WEBNFS))
- fs->fs_flags &= ~FSF_WEBNFS;
-
- /* check if pingval needs to be updated/set/reset */
- start_nfs_pings(fs, pingval);
-
- /*
- * Following if statement from Mike Mitchell <mcm@unx.sas.com>
- * Initialize the ping data if we aren't pinging now. The np_ttl and
- * np_ping fields are especially important.
- */
- if (!(fs->fs_flags & FSF_PINGING)) {
- np = (nfs_private *) fs->fs_private;
- if (np->np_mountd_inval != 'P') {
- np->np_mountd_inval = TRUE;
- np->np_xid = XID_ALLOC();
- np->np_error = -1;
- np->np_ping = 0;
- /*
- * Initially the server will be deemed dead
- * after MAX_ALLOWED_PINGS of the fast variety
- * have failed.
- */
- np->np_ttl = MAX_ALLOWED_PINGS * FAST_NFS_PING + clocktime(NULL) - 1;
- start_nfs_pings(fs, pingval);
- if (fserver_is_down)
- fs->fs_flags |= FSF_VALID | FSF_DOWN;
- } else {
- fs->fs_flags = FSF_VALID;
- }
-
- }
-
- fs->fs_refc++;
- XFREE(ip);
- return fs;
- }
- }
-
- /*
- * Get here if we can't find an entry
- */
-
- /*
- * Allocate a new server
- */
- fs = ALLOC(struct fserver);
- fs->fs_refc = 1;
- fs->fs_host = xstrdup(hp ? hp->h_name : "unknown_hostname");
- if (gopt.flags & CFM_NORMALIZE_HOSTNAMES)
- host_normalize(&fs->fs_host);
- fs->fs_ip = ip;
- fs->fs_cid = 0;
- if (ip) {
- fs->fs_flags = FSF_DOWN; /* Starts off down */
- } else {
- fs->fs_flags = FSF_ERROR | FSF_VALID;
- mf->mf_flags |= MFF_ERROR;
- mf->mf_error = ENOENT;
- }
- if (mf->mf_flags & MFF_WEBNFS)
- fs->fs_flags |= FSF_WEBNFS;
- fs->fs_version = nfs_version;
- fs->fs_proto = nfs_proto;
- fs->fs_type = MNTTAB_TYPE_NFS;
- fs->fs_pinger = AM_PINGER;
- fs->fs_flags |= FSF_PING_UNINIT; /* pinger hasn't been initialized */
- np = ALLOC(struct nfs_private);
- memset((voidp) np, 0, sizeof(*np));
- np->np_mountd = htons(hasmntval(&mnt, "mountport"));
- if (np->np_mountd == 0) {
- np->np_mountd_inval = 'Y';
- np->np_xid = XID_ALLOC();
- np->np_error = -1;
- } else {
- plog(XLOG_INFO, "%s: using mountport: %d", __func__,
- (int) ntohs(np->np_mountd));
- np->np_mountd_inval = 'P';
- np->np_xid = 0;
- np->np_error = 0;
- }
-
- /*
- * Initially the server will be deemed dead after
- * MAX_ALLOWED_PINGS of the fast variety have failed.
- */
- np->np_ttl = clocktime(NULL) + MAX_ALLOWED_PINGS * FAST_NFS_PING - 1;
- fs->fs_private = (voidp) np;
- fs->fs_prfree = (void (*)(voidp)) free;
-
- if (!FSRV_ERROR(fs)) {
- /* start of keepalive timer, first updating pingval */
- start_nfs_pings(fs, pingval);
- if (fserver_is_down)
- fs->fs_flags |= FSF_VALID | FSF_DOWN;
- }
-
- /*
- * Add to list of servers
- */
- ins_que(&fs->fs_q, &nfs_srvr_list);
-
- return fs;
-}
diff --git a/contrib/amd/amd/sun2amd.8 b/contrib/amd/amd/sun2amd.8
deleted file mode 100644
index 67d241f32cdb..000000000000
--- a/contrib/amd/amd/sun2amd.8
+++ /dev/null
@@ -1,92 +0,0 @@
-.\"
-.\" Copyright (c) 1997-2014 Erez Zadok
-.\" Copyright (c) 2005 Daniel P. Ottavio
-.\" Copyright (c) 1990 Jan-Simon Pendry
-.\" Copyright (c) 1990 Imperial College of Science, Technology & Medicine
-.\" Copyright (c) 1990 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" Jan-Simon Pendry at Imperial College, London.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\"
-.\" File: am-utils/amd/sun2amd.8
-.\"
-.TH SUN2AMD 8L "14 August 2005"
-
-.SH NAME
-sun2amd \- converts Sun automount maps to Amd maps
-
-.SH SYNOPSIS
-.B sun2amd
-[-hH] [-i infile] [-o outfile]
-
-.SH DESCRIPTION
-.B sun2amd
-is used to convert Sun style automount maps to Amd style automount
-maps. By default
-.B sun2amd
-reads from stdin and writes to stdout.
-
-.SH OPTIONS
-.TP
-.B -h
-Help
-.TP
-.B -i
-Read Sun map information from specified file.
-.TP
-.B -o
-Write Amd map information to specified file.
-
-.SH EXAMPLE
-To convert a Sun automount file called auto_foo to an Amd file called
-auto.amd type:
-
-.B sun2amd
--i auto_foo -o auto.amd
-
-.SH BUGS
-* Can not convert master maps yet.
-
-* NFS is the only automount type currently supported.
-
-total_bug_count = number_found + 1;
-
-.SH "SEE ALSO"
-.BR automount(8),
-.BR amd(8)
-
-.I "Linux NFS and Automounter Administration"
-by Erez Zadok, ISBN 0-7821-2739-8, (Sybex, 2001).
-.LP
-.I http://www.am-utils.org
-.LP
-
-.SH AUTHOR
-Daniel P. Ottavio
-.I <dottavio@ic.sunysb.edu>
diff --git a/contrib/amd/amd/sun2amd.c b/contrib/amd/amd/sun2amd.c
deleted file mode 100644
index ee6fbb59626f..000000000000
--- a/contrib/amd/amd/sun2amd.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 2005 Daniel P. Ottavio
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/sun2amd.c
- *
- */
-
-/*
- * Translate Sun-syntax maps to Amd maps
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-#include <sun_map.h>
-
-
-/* dummies to make the program compile and link */
-struct amu_global_options gopt;
-#if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP)
-# ifdef NEED_LIBWRAP_SEVERITY_VARIABLES
-/*
- * Some systems that define libwrap already define these two variables
- * in libwrap, while others don't: so I need to know precisely iff
- * to define these two severity variables.
- */
-int allow_severity=0, deny_severity=0, rfc931_timeout=0;
-# endif /* NEED_LIBWRAP_SEVERITY_VARIABLES */
-#endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */
-
-
-/*
- * Parse the stream sun_in, convert the map information to amd, write
- * the results to amd_out.
- */
-static int
-sun2amd_convert(FILE *sun_in, FILE *amd_out)
-{
- char line_buff[INFO_MAX_LINE_LEN], *tmp, *key, *entry;
- int pos, line = 0, retval = 1;
-
- /* just to be safe */
- memset(line_buff, 0, sizeof(line_buff));
-
- /* Read the input line by line and do the conversion. */
- while ((pos = file_read_line(line_buff, sizeof(line_buff), sun_in))) {
- line++;
- line_buff[pos - 1] = '\0';
-
- /* remove comments */
- if ((tmp = strchr(line_buff, '#')) != NULL) {
- *tmp = '\0';
- }
-
- /* find start of key */
- key = line_buff;
- while (*key != '\0' && isspace((unsigned char)*key)) {
- key++;
- }
-
- /* ignore blank lines */
- if (*key == '\0') {
- continue;
- }
-
- /* find the end of the key and NULL terminate */
- tmp = key;
- while (*tmp != '\0' && isspace((unsigned char)*tmp) == 0) {
- tmp++;
- }
- if (*tmp == '\0') {
- plog(XLOG_ERROR, "map line %d has no entry", line);
- goto err;
- }
- *tmp++ = '\0';
- if (*tmp == '\0') {
- plog(XLOG_ERROR, "map line %d has no entry", line);
- goto err;
- }
- entry = tmp;
-
- /* convert the sun entry to an amd entry */
- if ((tmp = sun_entry2amd(key, entry)) == NULL) {
- plog(XLOG_ERROR, "parse error on line %d", line);
- goto err;
- }
-
- if (fprintf(amd_out, "%s %s\n", key, tmp) < 0) {
- plog(XLOG_ERROR, "can't write to output stream: %s", strerror(errno));
- goto err;
- }
-
- /* just to be safe */
- memset(line_buff, 0, sizeof(line_buff));
- }
-
- /* success */
- retval = 0;
-
- err:
- return retval;
-}
-
-
-/*
- * wrapper open function
- */
-static FILE *
-sun2amd_open(const char *path, const char *mode)
-{
- FILE *retval = NULL;
-
- if ((retval = fopen(path,mode)) == NULL) {
- plog(XLOG_ERROR,"could not open file %s",path);
- }
-
- return retval;
-}
-
-
-/*
- * echo the usage and exit
- */
-static void
-sun2amd_usage(void)
-{
- fprintf(stderr,
- "usage : sun2amd [-hH] [-i infile] [-o outfile]\n"
- "-h\thelp\n"
- "-i\tspecify an infile (defaults to stdin)\n"
- "-o\tspecify an outfile (defaults to stdout)\n");
-}
-
-
-int
-main(int argc, char **argv)
-{
- /* default in/out to stdin/stdout */
- FILE *sun_in = stdin, *amd_out = stdout;
- int opt, retval = 1;
-
- while ((opt = getopt(argc, argv , "i:o:hH")) != -1) {
- switch (opt) {
-
- case 'i':
- if ((sun_in = sun2amd_open(optarg,"r")) == NULL) {
- goto err;
- }
- break;
-
- case 'o':
- if ((amd_out = sun2amd_open(optarg,"w")) == NULL) {
- goto err;
- }
- break;
-
- case 'h':
- case 'H':
- sun2amd_usage();
- goto err;
- }
- }
-
- retval = sun2amd_convert(sun_in,amd_out);
-
- err:
- exit(retval);
-}
diff --git a/contrib/amd/amd/sun_map.c b/contrib/amd/amd/sun_map.c
deleted file mode 100644
index 8e3559960cd3..000000000000
--- a/contrib/amd/amd/sun_map.c
+++ /dev/null
@@ -1,595 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 2005 Daniel P. Ottavio
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/sun_map.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-#include <sun_map.h>
-
-
-
-/*
- * Add a data pointer to the end of the list.
- */
-void
-sun_list_add(struct sun_list *list, qelem *item)
-{
- if (list->last == NULL) {
- list->last = item;
- list->first = item;
- item->q_back = NULL;
- }
- else {
- list->last->q_forw = item;
- item->q_back = list->last;
- list->last = item;
- }
-
- item->q_forw = NULL;
-}
-
-
-/*
- * Sun2Amd conversion routines
- */
-
-/*
- * AMD entry keywords
- */
-#define AMD_OPTS_KW "addopts:=" /* add entry options */
-#define AMD_RHOST_KW "rhost:=" /* remote host */
-#define AMD_RFS_KW "rfs:=" /* remote file system */
-#define AMD_FS_KW "fs:=" /* local file system */
-#define AMD_DEV_KW "dev:=" /* device */
-#define AMD_TYPE_NFS_KW "type:=nfs;" /* fs type nfs */
-#define AMD_TYPE_AUTO_KW "type:=auto;" /* fs type auto */
-#define AMD_TYPE_CDFS_KW "type:=cdfs;" /* fs type cd */
-#define AMD_MAP_FS_KW "fs:=${map};" /* set the mount map as current map */
-#define AMD_MAP_PREF_KW "pref:=${key}/" /* set the mount map as current map */
-
-/*
- * A set of string Sun fstypes.
- */
-#define SUN_NFS_TYPE "nfs"
-#define SUN_HSFS_TYPE "hsfs" /* CD fs */
-#define SUN_AUTOFS_TYPE "autofs"
-#define SUN_CACHEFS_TYPE "cachefs"
-
-#define SUN_KEY_SUB "&" /* Sun key substitution */
-
-/* a set a Sun variable substitutions for map entries */
-#define SUN_ARCH "$ARCH" /* host architecture */
-#define SUN_CPU "$CPU" /* processor type */
-#define SUN_HOST "$HOST" /* host name */
-#define SUN_OSNAME "$OSNAME" /* OS name */
-#define SUN_OSREL "$OSREL" /* OS release */
-#define SUN_OSVERS "$OSVERS" /* OS version */
-#define SUN_NATISA "$NATISA" /* native instruction set */
-
-/* a set of Amd variable substitutions */
-#define AMD_ARCH "${arch}" /* host architecture */
-#define AMD_HOST "${host}" /* host name */
-#define AMD_OSNAME "${os}" /* OS name */
-#define AMD_OSVER "${osver}" /* OS version */
-
-
-/*
- * Return a copy of src that has all occurrences of 'str' replaced
- * with sub.
- *
- * param src - the original string
- * param str - string that is the replaced with str
- * param sub - string that replaces an occurrences of 'delim'
- *
- * return - new string with str substitutions, NULL on error
- */
-static char *
-sun_strsub(const char *src, const char *str, const char *sub)
-{
-
- char *retval = NULL, *str_start, *str_end, *src_end;
- size_t total_size, first_half, second_half, sub_size;
-
- /* assign pointers to the start and end of str */
- if ((str_start = strstr(src, str)) == NULL) {
- return retval;
- }
- str_end = (strlen(str) - 1) + str_start;
-
- /* assign to the end of the src. */
- src_end = (strlen(src) - 1) + (char*)src;
-
- /* size from the beginning of src to the start of str */
- first_half = (size_t)(str_start - src);
-
- /* size from the end of str to the end of src */
- second_half = (size_t)(src_end - str_end);
-
- sub_size = strlen(sub);
-
- total_size = (first_half + sub_size + second_half + 1);
-
- retval = (char*)xmalloc(total_size);
- memset(retval, 0, total_size);
-
- /*
- * Put together the string such that the first half is copied
- * followed the sub and second half.
- *
- * We use strncpy instead of xstrlcpy because we are intentionally
- * causing truncation and we don't want this to cause errors in the
- * log.
- */
- (void)strncpy(retval, src, first_half);
- (void)strncat(retval, sub, sub_size);
- (void)strncat(retval, str_end + 1, second_half);
-
- if (strstr(retval, str) != NULL) {
- /*
- * If there is another occurrences of str call this function
- * recursively.
- */
- char* tmp;
- if ((tmp = sun_strsub(retval, str, sub)) != NULL) {
- XFREE(retval);
- retval = tmp;
- }
- }
- return retval;
-}
-
-
-/*
- * Return a new string that is a copy of str, all occurrences of a Sun
- * variable substitutions are replaced by there equivalent Amd
- * substitutions.
- *
- * param str - source string
- *
- * return - A new string with the expansions, NULL if str does not
- * exist in src or error.
- */
-static char *
-sun_expand2amd(const char *str)
-{
-
- char *retval = NULL, *tmp = NULL, *tmp2 = NULL;
- const char *pos;
-
- /*
- * Iterator through the string looking for '$' chars. For each '$'
- * found try to replace it with Sun variable substitutions. If we
- * find a '$' that is not a substation each of the i.e $blah than
- * each of the replace attempt will fail and we'll move on to the
- * next char.
- */
- tmp = xstrdup(str);
- for (pos = str; *pos != '\0'; pos++) {
- if (*pos != '$') {
- continue;
- }
- if (tmp2 != NULL) {
- XFREE(tmp);
- tmp = tmp2;
- }
-
- /*
- * If a 'replace' does not return NULL than a variable was
- * successfully substituted.
- */
-
- /* architecture */
- if ((tmp2 = sun_strsub(tmp, SUN_ARCH, AMD_ARCH)) != NULL) {
- continue;
- }
- /* cpu - there is not POSIX uname for cpu so just use machine */
- if ((tmp2 = sun_strsub(tmp, SUN_CPU, AMD_ARCH)) != NULL) {
- continue;
- }
- /* hostname */
- if ((tmp2 = sun_strsub(tmp, SUN_HOST, AMD_HOST)) != NULL) {
- continue;
- }
- /* os name */
- if ((tmp2 = sun_strsub(tmp, SUN_OSNAME, AMD_OSNAME)) != NULL) {
- continue;
- }
- /*
- * os release - Amd doesn't hava a OS release var just usr os
- * version or now.
- */
- if ((tmp2 = sun_strsub(tmp, SUN_OSREL, AMD_OSVER)) != NULL) {
- continue;
- }
- /* os version */
- if ((tmp2 = sun_strsub(tmp, SUN_OSVERS, AMD_OSVER)) != NULL) {
- continue;
- }
- /* native instruction set - there is no POSIX natisa so just use system */
- if ((tmp2 = sun_strsub(tmp, SUN_NATISA, AMD_ARCH)) != NULL) {
- continue;
- }
- }
- if (tmp2 == NULL) {
- retval = tmp;
- }
- else {
- retval = tmp2;
- XFREE(tmp);
- }
-
- return retval;
-}
-
-
-/*
- * This is a wrapper function for appending Amd entry information to a
- * buffer. Any Sun variable substitutions will be converted into Amd
- * equivalents.
- *
- * param dest - destination buffer
- * param deslen - destination buffer length
- * param key - entry key, this might be needed for key substitutions
- * param str - string to append
- */
-static void
-sun_append_str(char *dest,
- size_t destlen,
- const char *key,
- const char *str)
-{
- char *sub = NULL, *sub2 = NULL, *out = NULL;
-
- /* By default we are going to just write the original string. */
- out = (char*)str;
-
- /*
- * Resolve variable substitutions in two steps; 1) replace any key
- * map substitutions with the entry key 2) expand any variable
- * substitutions i.e $HOST.
- *
- * Try to replace the key substitution '&'. If this function returns
- * with a new string, one or more key subs. where replaced with the
- * entry key.
- */
- if ((sub = sun_strsub(str, SUN_KEY_SUB, "${key}")) != NULL) {
- out = sub;
- /*
- * Try to convert any variable substitutions. If this function
- * returns a new string one or more var subs where expanded.
- */
- if ((sub2 = sun_expand2amd(sub)) != NULL) {
- out = sub2;
- }
- }
- /*
- * Try to convert any variable substitutions. If this function
- * returns a new string one or more var subs where expanded.
- */
- else if (out != NULL && (sub = sun_expand2amd(out)) != NULL) {
- out = sub;
- }
-
- if (out != NULL) {
- xstrlcat(dest, out, destlen);
- }
- XFREE(sub);
- XFREE(sub2);
-}
-
-
-/*
- * Convert the list of Sun mount options to Amd mount options. The
- * result is concatenated to dest.
- *
- * param dest - destination buffer
- * param destlen - destination buffer length
- * param key - automount key
- * param opt_list - list of Sun mount options
- */
-static void
-sun_opts2amd(char *dest,
- size_t destlen,
- const char *key,
- const struct sun_opt *opt_list)
-{
- const struct sun_opt *opt;
-
- xstrlcat(dest, AMD_OPTS_KW, destlen);
-
- /* Iterate through each option and append it to the buffer. */
- for(opt = opt_list; opt != NULL; opt = NEXT(struct sun_opt, opt)) {
- sun_append_str(dest, destlen, key, opt->str);
- /* If there are more options add some commas. */
- if (NEXT(struct sun_opt, opt) != NULL) {
- xstrlcat(dest, ",", destlen);
- }
- }
- xstrlcat(dest, ";", destlen);
-}
-
-
-/*
- * Convert the list of Sun mount locations to a list of Amd mount
- * locations. The result is concatenated to dest.
- *
- * param dest - destination buffer
- * param destlen - destination buffer length
- * param key - automount key
- * param local_list - list of Sun mount locations
- */
-static void
-sun_locations2amd(char *dest,
- size_t destlen,
- const char *key,
- const struct sun_location *local_list)
-{
- const struct sun_location *local;
- const struct sun_host *host;
-
- for (local = local_list;
- local != NULL;
- local = NEXT(struct sun_location,local)) {
- /*
- * Check to see if the list of hosts is empty. Some mount types
- * i.e cd-rom may have mount location with no host.
- */
- if (local->host_list != NULL) {
- /* Write each host that belongs to this location. */
- for (host = local->host_list;
- host != NULL;
- host = NEXT(struct sun_host, host)) {
- /* set fstype NFS */
- xstrlcat(dest, AMD_TYPE_NFS_KW, destlen);
- /* add rhost key word */
- xstrlcat(dest, AMD_RHOST_KW, destlen);
- /* add host name */
- sun_append_str(dest, destlen, key, host->name);
- xstrlcat(dest, ";", destlen);
- /* add remote fs key word */
- xstrlcat(dest, AMD_RFS_KW, destlen);
- /* add local path */
- sun_append_str(dest, destlen, key, local->path);
- if (NEXT(struct sun_host, host) != NULL) {
- xstrlcat(dest, ";", destlen);
- xstrlcat(dest, " ", destlen);
- }
- }
- }
- else {
- /* no host location */
- xstrlcat(dest, AMD_FS_KW, destlen);
- sun_append_str(dest, destlen, key, local->path);
- }
- if (NEXT(struct sun_location, local) != NULL) {
- /* add a space to separate each location */
- xstrlcat(dest, " ", destlen);
- }
- }
-}
-
-
-/*
- * Convert a Sun HSFS mount point to an Amd. The result is
- * concatenated intp dest.
- *
- * param dest - destination buffer
- * param destlen - destination buffer length
- * param key - automount key
- * param s_entry - Sun entry
- */
-static void
-sun_hsfs2amd(char *dest,
- size_t destlen,
- const char *key,
- const struct sun_entry *s_entry)
-{
- /* set fstype CDFS */
- xstrlcat(dest, AMD_TYPE_CDFS_KW, destlen);
- /* set the cdrom device */
- xstrlcat(dest, AMD_DEV_KW, destlen);
- /* XXX: For now just assume that there is only one device. */
- xstrlcat(dest, s_entry->location_list->path, destlen);
-}
-
-
-/*
- * Convert a Sun NFS automount entry to an Amd. The result is concatenated
- * into dest.
- *
- * param dest - destination buffer
- * param destlen - destination buffer length
- * param key - automount key
- * param s_entry - Sun entry
- */
-static void
-sun_nfs2amd(char *dest,
- size_t destlen,
- const char *key,
- const struct sun_entry *s_entry)
-{
- if (s_entry->location_list != NULL) {
- /* write out the list of mountpoint locations */
- sun_locations2amd(dest, destlen, key, s_entry->location_list);
- }
-}
-
-
-/*
- * Convert a Sun multi-mount point entry to an Amd. This is done
- * using the Amd type auto. Each auto entry is separated with a \n.
- *
- * param dest - destination buffer
- * param destlen - destination buffer length
- * param key - automount key
- * param s_entry - Sun entry
- */
-static void
-sun_multi2amd(char *dest,
- size_t destlen,
- const char *key,
- const struct sun_entry *s_entry)
-{
- const struct sun_mountpt *mountpt;
-
- /* We need to setup a auto fs Amd automount point. */
- xstrlcat(dest, AMD_TYPE_AUTO_KW, destlen);
- xstrlcat(dest, AMD_MAP_FS_KW, destlen);
- xstrlcat(dest, AMD_MAP_PREF_KW, destlen);
-
- /* write the mountpts to dest */
- for (mountpt = s_entry->mountpt_list;
- mountpt != NULL;
- mountpt = NEXT(struct sun_mountpt, mountpt)) {
- xstrlcat(dest, "\n", destlen);
- /* write the key */
- xstrlcat(dest, key, destlen);
- /* write the mount path */
- sun_append_str(dest, destlen, key, mountpt->path);
- /* space */
- xstrlcat(dest, " ", destlen);
- /* Write all the host locations for this mount point. */
- sun_locations2amd(dest, destlen, key, mountpt->location_list);
- }
-}
-
-
-/*
- * Convert the sun_entry into an Amd equivalent string.
- *
- * param key - automount key
- * param s_entry - Sun style automap entry
- *
- * return - Amd entry on succes, NULL on error
- */
-char *
-sun_entry2amd(const char *key, const char *s_entry_str)
-{
- char *retval = NULL;
- char line_buff[INFO_MAX_LINE_LEN];
- int ws;
- struct sun_entry *s_entry = NULL;
-
- /* The key should not be NULL. */
- if (key == NULL) {
- plog(XLOG_ERROR,"Sun key value was null");
- goto err;
- }
- /* The Sun entry string should never be NULL. */
- if (s_entry_str == NULL) {
- plog(XLOG_ERROR,"Sun entry value was null");
- goto err;
- }
-
- /* Make sure there are no trailing white spaces or '\n'. */
- xstrlcpy(line_buff, s_entry_str, sizeof(line_buff));
- ws = strlen(line_buff) - 1;
- while (ws >= 0 && (isspace((unsigned char)line_buff[ws]) || line_buff[ws] == '\n')) {
- line_buff[ws--] = '\0';
- }
-
- /* Parse the sun entry line. */
- s_entry = sun_map_parse_read(line_buff);
- if (s_entry == NULL) {
- plog(XLOG_ERROR,"could not parse Sun style map");
- goto err;
- }
-
- memset(line_buff, 0, sizeof(line_buff));
-
- if (s_entry->opt_list != NULL) {
- /* write the mount options to the buffer */
- sun_opts2amd(line_buff, sizeof(line_buff), key, s_entry->opt_list);
- }
-
- /* Check if this is a multi-mount entry. */
- if (s_entry->mountpt_list != NULL) {
- /* multi-mount point */
- sun_multi2amd(line_buff, sizeof(line_buff), key, s_entry);
- retval = xstrdup(line_buff);
- }
- else {
- /* single mount point */
- if (s_entry->fstype != NULL) {
- if (NSTREQ(s_entry->fstype, SUN_NFS_TYPE, strlen(SUN_NFS_TYPE))) {
- /* NFS Type */
- sun_nfs2amd(line_buff, sizeof(line_buff), key, s_entry);
- retval = xstrdup(line_buff);
- }
- else if (NSTREQ(s_entry->fstype, SUN_HSFS_TYPE, strlen(SUN_HSFS_TYPE))) {
- /* HSFS Type (CD fs) */
- sun_hsfs2amd(line_buff, sizeof(line_buff), key, s_entry);
- retval = xstrdup(line_buff);
- }
- /*
- * XXX: The following fstypes are not yet supported.
- */
- else if (NSTREQ(s_entry->fstype, SUN_AUTOFS_TYPE, strlen(SUN_AUTOFS_TYPE))) {
- /* AutoFS Type */
- plog(XLOG_ERROR, "Sun fstype %s is currently not supported by Amd.",
- s_entry->fstype);
- goto err;
-
- }
- else if (NSTREQ(s_entry->fstype, SUN_CACHEFS_TYPE, strlen(SUN_CACHEFS_TYPE))) {
- /* CacheFS Type */
- plog(XLOG_ERROR, "Sun fstype %s is currently not supported by Amd.",
- s_entry->fstype);
- goto err;
- }
- else {
- plog(XLOG_ERROR, "Sun fstype %s is currently not supported by Amd.",
- s_entry->fstype);
- goto err;
- }
- }
- else {
- plog(XLOG_INFO, "No SUN fstype specified defaulting to NFS.");
- sun_nfs2amd(line_buff, sizeof(line_buff), key, s_entry);
- retval = xstrdup(line_buff);
- }
- }
-
- err:
- XFREE(s_entry);
- return retval;
-}
diff --git a/contrib/amd/amd/sun_map.h b/contrib/amd/amd/sun_map.h
deleted file mode 100644
index 75e707ae7003..000000000000
--- a/contrib/amd/amd/sun_map.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 2005 Daniel P. Ottavio
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/sun_map.h
- *
- */
-
-#ifndef _SUN_MAP_H
-#define _SUN_MAP_H
-
-/* host */
-struct sun_host {
- qelem head; /* link-list header */
- char *name; /* hostname */
- int weight; /* weight given to the host */
-};
-
-/* location */
-struct sun_location {
- qelem head; /* link-list header */
- char *path; /* server path */
- struct sun_host *host_list; /* list of hosts */
-};
-
-/* sun mount option */
-struct sun_opt {
- qelem head; /* link-list header */
- char *str; /* option string */
-};
-
-/* mount point */
-struct sun_mountpt {
- qelem head; /* link-list header */
- char *path; /* optional mount point path */
- char *fstype; /* filesystem type */
- struct sun_opt *opt_list; /* list of option strings */
- struct sun_location *location_list; /* list of 'struct s2a_location' */
-};
-
-/* automount entry */
-struct sun_entry {
- qelem head; /* link-list header */
- char *key; /* auto map key */
- char *fstype; /* filesystem type */
- struct sun_opt *opt_list; /* list of mount options */
- struct sun_location *location_list; /* list of mount locations */
- struct sun_mountpt *mountpt_list; /* list of mount points */
-};
-
-/*
- * automount map file
- *
- * XXX: Only a place holder structure, not implemented yet.
- */
-struct sun_map {
- qelem head; /* link-list header */
- char *path; /* directory path of the map file */
- char *mount_dir; /* top level mount point for this map */
- int lookup; /* lookup type i.e file, yp, program, etc. */
- int direct_bool; /* set true if this map is a direct map */
- struct sun_opt *opt_list; /* list of global map options */
- struct sun_opt *include_list; /* list of included map files */
- struct sun_entry *entry_list; /* list of 'struct s2a_entry' */
-};
-
-/*
- * master map file
- *
- * XXX: Only a place holder structure, not implemented yet.
- */
-struct sun_mmap {
- qelem head; /* link-list header */
- struct sun_opt *include_list; /* list of included master maps */
- struct sun_map *amap_list; /* list of 'struct s2a_amap' */
-};
-
-struct sun_list {
- qelem *first;
- qelem *last;
-};
-
-
-/*
- * EXTERNS
- */
-extern char *sun_entry2amd(const char *, const char *);
-extern struct sun_entry *sun_map_parse_read(const char *);
-extern void sun_list_add(struct sun_list *, qelem *);
-
-#endif /* not _SUN_MAP_H */
diff --git a/contrib/amd/amd/sun_map_parse.y b/contrib/amd/amd/sun_map_parse.y
deleted file mode 100644
index ccf258e2dcc8..000000000000
--- a/contrib/amd/amd/sun_map_parse.y
+++ /dev/null
@@ -1,492 +0,0 @@
-%{
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 2005 Daniel P. Ottavio
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/sun_map_parse.y
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amd.h>
-#include <sun_map.h>
-
-
-#define SUN_FSTYPE_STR "fstype="
-
-
-extern int sun_map_lex(void);
-extern int sun_map_error(const char *);
-extern void sun_map_tok_setbuff(const char *);
-extern int sun_map_parse(void);
-
-struct sun_entry *sun_map_parse_read(const char *);
-
-static struct sun_list *sun_entry_list = NULL;
-static struct sun_list *sun_opt_list = NULL;
-static struct sun_list *sun_host_list = NULL;
-static struct sun_list *sun_location_list = NULL;
-static struct sun_list *mountpt_list = NULL;
-static char *tmpFsType = NULL;
-
-
-/*
- * Each get* function returns a pointer to the corresponding global
- * list structure. If the structure is NULL than a new instance is
- * returned.
- */
-static struct sun_list *get_sun_opt_list(void);
-static struct sun_list *get_sun_host_list(void);
-static struct sun_list *get_sun_location_list(void);
-static struct sun_list *get_mountpt_list(void);
-static struct sun_list *get_sun_entry_list(void);
-
-%}
-
-%union {
- char strval[2048];
-}
-
-%token NEWLINE COMMENT WSPACE
-%token <strval> WORD
-
-%%
-
-amap : file
- ;
-
-file : new_lines entries
- | entries
- ;
-
-entries : entry
- | entry new_lines
- | entry new_lines entries
- ;
-
-new_lines : NEWLINE
- | NEWLINE new_lines
- ;
-
-entry : locations {
-
- struct sun_list *list;
- struct sun_entry *entry;
-
- /* allocate an entry */
- entry = CALLOC(struct sun_entry);
-
- /*
- * Assign the global location list to this entry and reset the
- * global pointer. Reseting the global pointer will create a new
- * list instance next time get_sun_location_list() is called.
- */
- list = get_sun_location_list();
- entry->location_list = (struct sun_location *)list->first;
- sun_location_list = NULL;
-
- /* Add this entry to the entry list. */
- sun_list_add(get_sun_entry_list(), (qelem *)entry);
-}
-
-| '-' options WSPACE locations {
-
- struct sun_list *list;
- struct sun_entry *entry;
-
- entry = CALLOC(struct sun_entry);
-
- /* An fstype may have been defined in the 'options'. */
- if (tmpFsType != NULL) {
- entry->fstype = tmpFsType;
- tmpFsType = NULL;
- }
-
- /*
- * Assign the global location list to this entry and reset the
- * global pointer. Reseting the global pointer will create a new
- * list instance next time get_sun_location_list() is called.
- */
- list = get_sun_location_list();
- entry->location_list = (struct sun_location *)list->first;
- sun_location_list = NULL;
-
- /*
- * Assign the global opt list to this entry and reset the global
- * pointer. Reseting the global pointer will create a new list
- * instance next time get_sun_opt_list() is called.
- */
- list = get_sun_opt_list();
- entry->opt_list = (struct sun_opt *)list->first;
- sun_opt_list = NULL;
-
- /* Add this entry to the entry list. */
- sun_list_add(get_sun_entry_list(), (qelem *)entry);
-}
-
-| mountpoints {
-
- struct sun_list *list;
- struct sun_entry *entry;
-
- /* allocate an entry */
- entry = CALLOC(struct sun_entry);
-
- /*
- * Assign the global mountpt list to this entry and reset the global
- * pointer. Reseting the global pointer will create a new list
- * instance next time get_mountpt_list() is called.
- */
- list = get_mountpt_list();
- entry->mountpt_list = (struct sun_mountpt *)list->first;
- mountpt_list = NULL;
-
- /* Add this entry to the entry list. */
- sun_list_add(get_sun_entry_list(), (qelem *)entry);
-}
-
-| '-' options WSPACE mountpoints {
-
- struct sun_list *list;
- struct sun_entry *entry;
-
- /* allocate an entry */
- entry = CALLOC(struct sun_entry);
-
- /* An fstype may have been defined in the 'options'. */
- if (tmpFsType != NULL) {
- entry->fstype = tmpFsType;
- tmpFsType = NULL;
- }
-
- /*
- * Assign the global mountpt list to this entry and reset the global
- * pointer. Reseting the global pointer will create a new list
- * instance next time get_mountpt_list() is called.
- */
- list = get_mountpt_list();
- entry->mountpt_list = (struct sun_mountpt *)list->first;
- mountpt_list = NULL;
-
- /*
- * Assign the global opt list to this entry and reset the global
- * pointer. Reseting the global pointer will create a new list
- * instance next time get_sun_opt_list() is called.
- */
- list = get_sun_opt_list();
- entry->opt_list = (struct sun_opt *)list->first;
- sun_opt_list = NULL;
-
- /* Add this entry to the entry list. */
- sun_list_add(get_sun_entry_list(), (qelem *)entry);
-}
-;
-
-mountpoints : mountpoint
- | mountpoint WSPACE mountpoints
- ;
-
-mountpoint : WORD WSPACE location {
-
- struct sun_list *list;
- struct sun_mountpt *mountpt;
-
- /* allocate a mountpt */
- mountpt = CALLOC(struct sun_mountpt);
-
- /*
- * Assign the global loaction list to this entry and reset the
- * global pointer. Reseting the global pointer will create a new
- * list instance next time get_sun_location_list() is called.
- */
- list = get_sun_location_list();
- mountpt->location_list = (struct sun_location *)list->first;
- sun_location_list = NULL;
-
- mountpt->path = xstrdup($1);
-
- /* Add this mountpt to the mountpt list. */
- sun_list_add(get_mountpt_list(), (qelem *)mountpt);
-}
-
-| WORD WSPACE '-' options WSPACE location {
-
- struct sun_list *list;
- struct sun_mountpt *mountpt;
-
- /* allocate a mountpt */
- mountpt = CALLOC(struct sun_mountpt);
-
- /* An fstype may have been defined in the 'options'. */
- if (tmpFsType != NULL) {
- mountpt->fstype = tmpFsType;
- tmpFsType = NULL;
- }
-
- /*
- * Assign the global location list to this entry and reset the
- * global pointer. Reseting the global pointer will create a new
- * list instance next time get_sun_location_list() is called.
- */
- list = get_sun_location_list();
- mountpt->location_list = (struct sun_location *)list->first;
- sun_location_list = NULL;
-
- /*
- * Assign the global opt list to this entry and reset the global
- * pointer. Reseting the global pointer will create a new list
- * instance next time get_sun_opt_list() is called.
- */
- list = get_sun_opt_list();
- mountpt->opt_list = (struct sun_opt *)list->first;
- sun_opt_list = NULL;
-
- mountpt->path = xstrdup($1);
-
- /* Add this mountpt to the mountpt list. */
- sun_list_add(get_mountpt_list(), (qelem *)mountpt);
-}
-;
-
-locations : location
- | location WSPACE locations
- ;
-
-location : hosts ':' WORD {
-
- struct sun_list *list;
- struct sun_location *location;
-
- /* allocate a new location */
- location = CALLOC(struct sun_location);
-
- /*
- * Assign the global opt list to this entry and reset the global
- * pointer. Reseting the global pointer will create a new list
- * instance next time get_sun_opt_list() is called.
- */
- list = get_sun_host_list();
- location->host_list = (struct sun_host *)list->first;
- sun_host_list = NULL;
-
- location->path = xstrdup($3);
-
- /* Add this location to the location list. */
- sun_list_add(get_sun_location_list(), (qelem *)location);
-}
-
-| ':' WORD {
-
- struct sun_location *location;
-
- /* allocate a new location */
- location = CALLOC(struct sun_location);
-
- location->path = xstrdup($2);
-
- /* Add this location to the location list. */
- sun_list_add(get_sun_location_list(), (qelem *)location);
-}
-;
-
-hosts : host
- | host ',' hosts
- ;
-
-host : WORD {
-
- /* allocate a new host */
- struct sun_host *host = CALLOC(struct sun_host);
-
- host->name = xstrdup($1);
-
- /* Add this host to the host list. */
- sun_list_add(get_sun_host_list(),(qelem *)host);
-}
-
-| WORD weight {
-
- /*
- * It is assumed that the host for this rule was allocated by the
- * 'weight' rule and assigned to be the last host item on the host
- * list.
- */
- struct sun_host *host = (struct sun_host *)sun_host_list->last;
-
- host->name = xstrdup($1);
-}
-;
-
-weight : '(' WORD ')' {
-
- int val;
- /* allocate a new host */
- struct sun_host *host = CALLOC(struct sun_host);
-
- val = atoi($2);
-
- host->weight = val;
-
- /* Add this host to the host list. */
- sun_list_add(get_sun_host_list(), (qelem *)host);
-}
-;
-
-options : option
- | option ',' options
- ;
-
-option : WORD {
-
- char *type;
-
- /* check if this is an fstype option */
- if ((type = strstr($1,SUN_FSTYPE_STR)) != NULL) {
- /* parse out the fs type from the Sun fstype keyword */
- if ((type = type + strlen(SUN_FSTYPE_STR)) != NULL) {
- /*
- * This global fstype str will be assigned to the current being
- * parsed later in the parsing.
- */
- tmpFsType = xstrdup(type);
- }
- }
- else {
- /*
- * If it is not an fstype option allocate an opt struct and assign
- * the value.
- */
- struct sun_opt *opt = CALLOC(struct sun_opt);
- opt->str = xstrdup($1);
- /* Add this opt to the opt list. */
- sun_list_add(get_sun_opt_list(), (qelem *)opt);
- }
-}
-
-;
-
-%%
-
-/*
- * Parse 'map_data' which is assumed to be a Sun-syle map. If
- * successful a sun_entry is returned.
- *
- * The parser is designed to parse map entries with out the keys. For
- * example the entry:
- *
- * usr -ro pluto:/usr/local
- *
- * should be passed to the parser as:
- *
- * -ro pluto:/usr/local
- *
- * The reason for this is that the Amd info services already strip off
- * the key when they read map info.
- */
-struct sun_entry *
-sun_map_parse_read(const char *map_data)
-{
- struct sun_entry *retval = NULL;
-
- /* pass map_data to lex */
- sun_map_tok_setbuff(map_data);
-
- /* call yacc */
- sun_map_parse();
-
- if (sun_entry_list != NULL) {
- /* return the first Sun entry in the list */
- retval = (struct sun_entry*)sun_entry_list->first;
- sun_entry_list = NULL;
- }
- else {
- plog(XLOG_ERROR, "Sun map parser did not produce data structs.");
- }
-
- return retval;
-}
-
-
-static struct sun_list *
-get_sun_entry_list(void)
-{
- if (sun_entry_list == NULL) {
- sun_entry_list = CALLOC(struct sun_list);
- }
- return sun_entry_list;
-}
-
-
-static struct sun_list *
-get_mountpt_list(void)
-{
- if (mountpt_list == NULL) {
- mountpt_list = CALLOC(struct sun_list);
- }
- return mountpt_list;
-}
-
-
-static struct sun_list *
-get_sun_location_list(void)
-{
- if (sun_location_list == NULL) {
- sun_location_list = CALLOC(struct sun_list);
- }
- return sun_location_list;
-}
-
-
-static struct sun_list *
-get_sun_host_list(void)
-{
- if (sun_host_list == NULL) {
- sun_host_list = CALLOC(struct sun_list);
- }
- return sun_host_list;
-}
-
-
-static struct sun_list *
-get_sun_opt_list(void)
-{
- if (sun_opt_list == NULL) {
- sun_opt_list = CALLOC(struct sun_list);
- }
- return sun_opt_list;
-}
diff --git a/contrib/amd/amd/sun_map_tok.l b/contrib/amd/amd/sun_map_tok.l
deleted file mode 100644
index f979bea4cf1f..000000000000
--- a/contrib/amd/amd/sun_map_tok.l
+++ /dev/null
@@ -1,233 +0,0 @@
-%{
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 2005 Daniel P. Ottavio
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amd/sun_map_tok.l
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-/*
- * Some systems include a definition for the macro ECHO in <sys/ioctl.h>,
- * and their (bad) version of lex defines it too at the very beginning of
- * the generated lex.yy.c file (before it can be easily undefined),
- * resulting in a conflict. So undefine it here before needed.
- * Luckily, it does not appear that this macro is actually used in the rest
- * of the generated lex.yy.c file.
- */
-#ifdef ECHO
-# undef ECHO
-#endif /* ECHO */
-#include <am_defs.h>
-#include <amd.h>
-#include <sun_map_parse.h>
-/* and once again undefine this, just in case */
-#ifdef ECHO
-# undef ECHO
-#endif /* ECHO */
-
-/*
- * There are some things that need to be defined only if using GNU flex.
- * These must not be defined if using standard lex
- */
-#ifdef FLEX_SCANNER
-# ifndef ECHO
-# define ECHO __IGNORE(fwrite( yytext, yyleng, 1, yyout ))
-# endif /* not ECHO */
-#endif /* FLEX_SCANNER */
-
-int yylex(void);
-int sun_map_error(const char *);
-
-/*
- * We need to configure lex to parse from a string
- * instead of a file. Each version of lex has it's
- * own way of doing this (sigh).
- */
-
-/* assign the buffer to parse */
-void sun_map_tok_setbuff(const char* buff);
-
-/* buffer that contains the string to parse */
-const char *sun_map_tok_buff = NULL;
-
-#ifdef FLEX_SCANNER
-/*
- * The flex scanner uses the YY_INPUT to parse the input.
- * We need to redefine it so that it can parse strings.
- * In addition to the above string buffer we need to have
- * a position pointer and a end pointer.
- */
-
-/* current position of the buffer */
-const char *sun_map_tok_pos = NULL;
-
-/* size of the buffer */
-const char *sun_map_tok_end = NULL;
-
-/* copies the current position + maxsize into buff */
-int sun_map_input(char *buff, int maxsize);
-
-# undef YY_INPUT
-# define YY_INPUT(buff,result,maxsize) (result = sun_map_input(buff,maxsize))
-
-#else
-/*
- * If this is not Flex than fall back to an AT&T style lex.
- * We can parse strings by redefining input and unput.
- */
-#undef input
-#undef unput
-#define input() (*(char *)sun_map_tok_buff++)
-#define unput(c) (*(char *)--sun_map_tok_buff = c)
-
-#endif /* FLEX_SCANNER */
-
-/*
- * some systems such as DU-4.x have a different GNU flex in /usr/bin
- * which automatically generates yywrap macros and symbols. So I must
- * distinguish between them and when yywrap is actually needed.
- */
-#if !defined(yywrap) || defined(yylex)
-int yywrap(void);
-#endif /* not yywrap or yylex */
-
-/* no need to use yywrap() */
-#define YY_SKIP_YYWRAP
-
-int sun_map_line = 1;
-int sun_map_tokpos = 1;
-
-%}
-
-/* This option causes Solaris lex to fail. Use flex. See BUGS file */
-/* no need to use yyunput() */
-%option nounput
-%option noinput
-
-/* allocate more output slots so lex scanners don't run out of mem */
-%o 1024
-
-WORD_REX [A-Za-z0-9_/&\.$=]+[A-Za-z0-9_/&\.$=-]*
-COMMENT_REX ^#.*\n
-WSPACE_REX [ \t]*
-NEWLINE_REX [ \t]*\n
-CONTINUE_REX "\\"\n
-
-%%
-
-{WORD_REX} {
- sun_map_tokpos += yyleng;
- xstrlcpy((char *)sun_map_lval.strval,(const char *)yytext,sizeof(sun_map_lval.strval));
- return WORD;
- }
-
-{WSPACE_REX} {
- sun_map_tokpos += yyleng;
- return WSPACE;
- }
-
-{NEWLINE_REX} {
- sun_map_tokpos = 0;
- sun_map_line++;
- return NEWLINE;
- }
-
-{CONTINUE_REX} {
- sun_map_tokpos = 0;
- sun_map_line++;
- }
-
-{COMMENT_REX} {
- sun_map_line++;
- }
-
-. {
- return yytext[0];
- }
-
-%%
-
-
-int
-sun_map_error(const char* s)
-{
- return 1;
-}
-
-#ifdef FLEX_SCANNER
-void
-sun_map_tok_setbuff(const char* buff)
-{
- sun_map_tok_end = buff + strlen(buff);
- sun_map_tok_pos = buff;
- sun_map_tok_buff = buff;
-}
-
-
-int
-sun_map_input(char *buff, int maxsize)
-{
- int size = MIN(maxsize, (sun_map_tok_end - sun_map_tok_pos));
- if (size > 0) {
- memcpy(buff,sun_map_tok_pos,size);
- sun_map_tok_pos += size;
- }
-
- return size;
-}
-#else
-void
-sun_map_tok_setbuff(const char* buff)
-{
- sun_map_tok_buff = buff;
-}
-
-#endif /* FLEX_SCANNER */
-
-/*
- * some systems such as DU-4.x have a different GNU flex in /usr/bin
- * which automatically generates yywrap macros and symbols. So I must
- * distinguish between them and when yywrap is actually needed.
- */
-#if !defined(yywrap) || defined(yylex)
-int yywrap(void)
-{
- return 1;
-}
-#endif /* not yywrap or yylex */
diff --git a/contrib/amd/amd/test1.sh b/contrib/amd/amd/test1.sh
deleted file mode 100755
index 44cafbcbc71e..000000000000
--- a/contrib/amd/amd/test1.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-./amd -v 2> /dev/null
diff --git a/contrib/amd/amq/amq.8 b/contrib/amd/amq/amq.8
deleted file mode 100644
index 4cfdf84423be..000000000000
--- a/contrib/amd/amq/amq.8
+++ /dev/null
@@ -1,307 +0,0 @@
-.\"
-.\" Copyright (c) 1997-2014 Erez Zadok
-.\" Copyright (c) 1990 Jan-Simon Pendry
-.\" Copyright (c) 1990 Imperial College of Science, Technology & Medicine
-.\" Copyright (c) 1990 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" Jan-Simon Pendry at Imperial College, London.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\"
-.\" File: am-utils/amq/amq.8
-.\" $FreeBSD$
-.\"
-.Dd August 31, 2016
-.Dt AMQ 8
-.Os
-.Sh NAME
-.Nm amq
-.Nd automounter query tool
-.Sh SYNOPSIS
-.Nm
-.Op Fl fimpqsvwHTU
-.Op Fl h Ar hostname
-.Op Fl l Ar log_file
-.Op Fl x Ar log_options
-.Op Fl D Ar debug_options
-.Op Fl P Ar program_number
-.Op Oo Fl u Oc Ar directory ...
-.Sh DESCRIPTION
-.Bf -symbolic
-This command is obsolete.
-Users are advised to use
-.Xr autofs 5
-instead.
-.Ef
-.Pp
-The
-.Nm
-utility
-provides a simple way of determining the current state of the
-.Xr amd 8
-program.
-Communication is by
-.Tn RPC .
-Three modes of operation are supported by the current protocol.
-By default
-a list of mount points and auto-mounted file systems is output.
-An
-alternative host can be specified using the
-.Fl h
-option.
-.Pp
-If
-.Ar directory
-names are given, as output by default, then per file system
-information is displayed.
-.Sh OPTIONS
-.Bl -tag -width indent
-.It Fl f
-Ask the automounter to flush the internal caches and reload all the maps.
-.It Fl h Ar hostname
-Specify an alternate host to query.
-By default the local host is used.
-In
-an
-.Tn HP-UX
-cluster, the root server is queried by default, since that is the system on
-which the automounter is normally run.
-.TP
-.It Fl i
-Print information about the mount maps.
-.TP
-.It Fl l Ar log_file
-Tell
-.Xr amd 8
-to use
-.Ar log_file
-as the log file name.
-For security reasons, this must be the same log file
-which
-.Xr amd 8
-used when started.
-This option is therefore only useful to
-refresh
-.Nm amd Ns 's
-open file handle on the log file, so that it can be rotated
-and compressed via daily cron jobs.
-.It Fl m
-Ask the automounter to provide a list of mounted file systems, including the
-number of references to each file system and any error which occurred while
-mounting.
-.It Fl p
-Return the process ID of the remote or locally running
-.Xr amd 8 .
-Useful when you
-need to send a signal to the local
-.Xr amd 8
-process, and would rather not have to
-search through the process table.
-This option is used in the
-.Pa ctl-amd
-script.
-.TP
-.It Fl q
-Suppress error messages produced when attempting synchronous unmounts
-with the
-.B \-u
-option.
-.TP
-.It Fl s
-Ask the automounter to provide system-wide mount statistics.
-.It Fl u
-Ask the automounter to unmount the file systems named in
-.Ar directory
-instead of providing
-information about them.
-Unmounts are requested, not forced.
-They merely
-cause the mounted file system to timeout, which will be picked up by
-.Nm amd Ns 's
-main scheduler thus causing the normal timeout action to be taken.
-If the
-.B \-u
-option is repeated,
-.B amq
-will attempt to unmount the file system synchronously by waiting until
-the timeout action is taken and returning an error if the unmount
-fails.
-Any error messages produced may be suppressed with the
-.B \-q
-option.
-.TP
-.It Fl v
-Ask the automounter for its version information. This is a subset of the
-information output by
-.Xr amd 8 Ns 's
-.Fl v
-option.
-.It Fl w
-Translate a full pathname as returned by
-.Xr getcwd 3
-into a short
-.Xr amd 8
-pathname that goes through its mount points.
-This option requires that
-.Xr amd 8
-is running.
-.It Fl x Ar log_options
-Ask the automounter to use the logging options specified in
-.Ar log_options
-from now on. Note that the "fatal" and "error" options cannot be turned
-off.
-.It Fl D Ar debug_options
-.BI \-D " debug_options"
-Ask the automounter to use the debugging options specified in
-.Ar debug_options
-from now on.
-.It Fl H
-Display short usage message.
-.It Fl P Ar program_number
-Contact an alternate running
-.Xr amd 8
-that had registered itself on a different
-.Tn RPC
-.Ar program_number
-and apply all other operations to that instance of the automounter.
-This is
-useful when you run multiple copies of
-.Xr amd 8 ,
-and need to manage each
-one separately.
-If not specified,
-.Nm
-will use the default program number for
-.Xr amd 8 ,
-300019.
-For security reasons, the only alternate program numbers
-.Xr amd 8
-can use range from 300019 to 300029, inclusive.
-.It Fl T
-Contact
-.Xr amd 8
-using the TCP transport only.
-Normally
-.Nm
-will try TCP, and if that failed, will try UDP.
-.It Fl U
-Contact
-.Xr amd 8
-using UDP (connectionless) transport only.
-Normally
-.Nm
-will try TCP, and if that failed, will try UDP.
-.El
-.Sh FILES
-.Bl -tag -width ".Pa amq.x" -compact
-.It Pa amq.x
-.Tn RPC
-protocol description.
-.El
-.Sh CAVEATS
-The
-.Nm
-utility
-uses a Sun registered
-.Tn RPC
-program number (300019 decimal) which may not
-be in the
-.Xr rpc 5
-database.
-.Pp
-If the TCP wrappers library is available, and the
-.Va use_tcpwrappers
-global
-.Xr amd.conf 5
-option is set to
-.Dq Li yes ,
-then
-.Xr amd 8
-will verify that the host running
-.Nm
-is authorized to connect.
-The
-.Dq Li amd
-service name must be used in the
-.Pa /etc/hosts.allow
-and
-.Pa /etc/hosts.deny
-files.
-For example, to allow only localhost to connect to
-.Xr amd 8 ,
-add this line to
-.Pa /etc/hosts.allow :
-.Pp
-.Dl "amd: localhost"
-.Pp
-and this line to
-.Pa /etc/hosts.deny :
-.Pp
-.RS
-.Dl "amd: ALL"
-.Sh SEE ALSO
-.Xr amd.conf 5 ,
-.Xr hosts_access 5 .
-.Xr amd 8 ,
-.\" .Xr ctl-amd 8 ,
-.Pp
-.Dq am-utils
-.Xr info 1
-entry.
-.Rs
-.%A Erez Zadok
-.%B "Linux NFS and Automounter Administration"
-.%O ISBN 0-7821-2739-8
-.%I Sybex
-.%D 2001
-.Re
-.Pp
-.Pa http://www.am-utils.org/
-.Rs
-.%T Amd \- The 4.4 BSD Automounter
-.Re
-.Sh HISTORY
-The
-.Nm
-utility
-first appeared in
-.Bx 4.4 .
-.Sh AUTHORS
-.An Jan-Simon Pendry Aq jsp@doc.ic.ac.uk ,
-Department of Computing, Imperial College, London, UK.
-.Pp
-.An Erez Zadok Aq ezk@cs.sunysb.edu ,
-Computer Science Department, Stony Brook
-University, Stony Brook, New York, USA.
-.Pp
-Other authors and contributors to
-.Nm am-utils
-are listed in the
-.Pa AUTHORS
-file distributed with
-.Nm am-utils .
diff --git a/contrib/amd/amq/amq.c b/contrib/amd/amq/amq.c
deleted file mode 100644
index a1405f985602..000000000000
--- a/contrib/amd/amq/amq.c
+++ /dev/null
@@ -1,851 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amq/amq.c
- *
- */
-
-/*
- * Automounter query tool
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amq.h>
-
-/* locals */
-static int flush_flag;
-static int getpid_flag;
-static int getpwd_flag;
-static int getvers_flag;
-static int minfo_flag;
-static int mapinfo_flag;
-static int quiet_flag;
-static int stats_flag;
-static int unmount_flag;
-static int use_tcp_flag;
-static int use_udp_flag;
-static u_long amd_program_number = AMQ_PROGRAM;
-static char *debug_opts;
-static char *amq_logfile;
-static char *xlog_optstr;
-static char localhost[] = "localhost";
-static char *def_server = localhost;
-
-/* externals */
-extern int optind;
-extern char *optarg;
-
-/* structures */
-enum show_opt {
- Full, Stats, Calc, Short, ShowDone
-};
-
-
-static void
-time_print(time_type tt)
-{
- time_t t = (time_t)(intptr_t)tt;
- struct tm *tp = localtime(&t);
- printf("%02d/%02d/%04d %02d:%02d:%02d",
- tp->tm_mon + 1, tp->tm_mday,
- tp->tm_year < 1900 ? tp->tm_year + 1900 : tp->tm_year,
- tp->tm_hour, tp->tm_min, tp->tm_sec);
-}
-
-/*
- * If (e) is Calc then just calculate the sizes
- * Otherwise display the mount node on stdout
- */
-static void
-show_mti(amq_mount_tree *mt, enum show_opt e, int *mwid, int *dwid, int *twid)
-{
- switch (e) {
- case Calc:
- {
- int mw = strlen(mt->mt_mountinfo);
- int dw = strlen(mt->mt_directory);
- int tw = strlen(mt->mt_type);
- if (mw > *mwid)
- *mwid = mw;
- if (dw > *dwid)
- *dwid = dw;
- if (tw > *twid)
- *twid = tw;
- }
- break;
-
- case Full:
- {
- printf("%-*.*s %-*.*s %-*.*s %s\n\t%-5d %-7d %-6d %-7d %-7d %-6d",
- *dwid, *dwid,
- *mt->mt_directory ? mt->mt_directory : "/", /* XXX */
- *twid, *twid,
- mt->mt_type,
- *mwid, *mwid,
- mt->mt_mountinfo,
- mt->mt_mountpoint,
-
- mt->mt_mountuid,
- mt->mt_getattr,
- mt->mt_lookup,
- mt->mt_readdir,
- mt->mt_readlink,
- mt->mt_statfs);
- time_print(mt->mt_mounttime);
- printf("\n");
- }
- break;
-
- case Stats:
- {
- printf("%-*.*s %-5d %-7d %-6d %-7d %-7d %-6d ",
- *dwid, *dwid,
- *mt->mt_directory ? mt->mt_directory : "/", /* XXX */
-
- mt->mt_mountuid,
- mt->mt_getattr,
- mt->mt_lookup,
- mt->mt_readdir,
- mt->mt_readlink,
- mt->mt_statfs);
- time_print(mt->mt_mounttime);
- printf("\n");
- }
- break;
-
- case Short:
- {
- printf("%-*.*s %-*.*s %-*.*s %s\n",
- *dwid, *dwid,
- *mt->mt_directory ? mt->mt_directory : "/",
- *twid, *twid,
- mt->mt_type,
- *mwid, *mwid,
- mt->mt_mountinfo,
- mt->mt_mountpoint);
- }
- break;
-
- default:
- break;
- }
-}
-
-
-/*
- * Display a pwd data
- */
-static void
-show_pwd(amq_mount_tree *mt, char *path, size_t l, int *flag)
-{
- int len;
-
- while (mt) {
- len = strlen(mt->mt_mountpoint);
- if (NSTREQ(path, mt->mt_mountpoint, len) &&
- !STREQ(mt->mt_directory, mt->mt_mountpoint)) {
- char buf[MAXPATHLEN+1]; /* must be same size as 'path' */
- xstrlcpy(buf, mt->mt_directory, sizeof(buf));
- xstrlcat(buf, &path[len], sizeof(buf));
- xstrlcpy(path, buf, l);
- *flag = 1;
- }
- show_pwd(mt->mt_next, path, l, flag);
- mt = mt->mt_child;
- }
-}
-
-
-/*
- * Display a mount tree.
- */
-static void
-show_mt(amq_mount_tree *mt, enum show_opt e, int *mwid, int *dwid, int *pwid)
-{
- while (mt) {
- show_mti(mt, e, mwid, dwid, pwid);
- show_mt(mt->mt_next, e, mwid, dwid, pwid);
- mt = mt->mt_child;
- }
-}
-
-
-static void
-show_mi(amq_mount_info_list *ml, enum show_opt e, int *mwid, int *dwid, int *twid)
-{
- u_int i;
-
- switch (e) {
-
- case Calc:
- {
- for (i = 0; i < ml->amq_mount_info_list_len; i++) {
- amq_mount_info *mi = &ml->amq_mount_info_list_val[i];
- int mw = strlen(mi->mi_mountinfo);
- int dw = strlen(mi->mi_mountpt);
- int tw = strlen(mi->mi_type);
- if (mw > *mwid)
- *mwid = mw;
- if (dw > *dwid)
- *dwid = dw;
- if (tw > *twid)
- *twid = tw;
- }
- }
- break;
-
- case Full:
- {
- for (i = 0; i < ml->amq_mount_info_list_len; i++) {
- amq_mount_info *mi = &ml->amq_mount_info_list_val[i];
- printf("%-*.*s %-*.*s %-*.*s %-3d %s is %s ",
- *mwid, *mwid, mi->mi_mountinfo,
- *dwid, *dwid, mi->mi_mountpt,
- *twid, *twid, mi->mi_type,
- mi->mi_refc, mi->mi_fserver,
- mi->mi_up > 0 ? "up" :
- mi->mi_up < 0 ? "starting" : "down");
- if (mi->mi_error > 0) {
- printf(" (%s)", strerror(mi->mi_error));
- } else if (mi->mi_error < 0) {
- fputs(" (in progress)", stdout);
- }
- fputc('\n', stdout);
- }
- }
- break;
-
- default:
- break;
- }
-}
-
-static void
-show_map(amq_map_info *mi)
-{
-}
-
-static void
-show_mapinfo(amq_map_info_list *ml, enum show_opt e, int *nwid, int *wwid)
-{
- u_int i;
-
- switch (e) {
-
- case Calc:
- {
- for (i = 0; i < ml->amq_map_info_list_len; i++) {
- amq_map_info *mi = &ml->amq_map_info_list_val[i];
- int nw = strlen(mi->mi_name);
- int ww = strlen(mi->mi_wildcard ? mi->mi_wildcard : "(null");
- if (nw > *nwid)
- *nwid = nw;
- if (ww > *wwid)
- *wwid = ww;
- }
- }
- break;
-
- case Full:
- {
- printf("%-*.*s %-*.*s %-8.8s %-7.7s %-7.7s %-7.7s %-s Modified\n",
- *nwid, *nwid, "Name",
- *wwid, *wwid, "Wild",
- "Flags", "Refcnt", "Entries", "Reloads", "Stat");
- for (i = 0; i < ml->amq_map_info_list_len; i++) {
- amq_map_info *mi = &ml->amq_map_info_list_val[i];
- printf("%-*.*s %*.*s %-8x %-7d %-7d %-7d %s ",
- *nwid, *nwid, mi->mi_name,
- *wwid, *wwid, mi->mi_wildcard,
- mi->mi_flags, mi->mi_refc, mi->mi_nentries, mi->mi_reloads,
- mi->mi_up == -1 ? "root" : (mi->mi_up ? " up" : "down"));
- time_print(mi->mi_modify);
- fputc('\n', stdout);
- }
- }
- break;
-
- default:
- break;
- }
-}
-
-/*
- * Display general mount statistics
- */
-static void
-show_ms(amq_mount_stats *ms)
-{
- printf("\
-requests stale mount mount unmount\n\
-deferred fhandles ok failed failed\n\
-%-9d %-9d %-9d %-9d %-9d\n",
- ms->as_drops, ms->as_stale, ms->as_mok, ms->as_merr, ms->as_uerr);
-}
-
-
-#if defined(HAVE_CLUSTER_H) && defined(HAVE_CNODEID) && defined(HAVE_GETCCENT)
-static char *
-cluster_server(void)
-{
- struct cct_entry *cp;
-
- if (cnodeid() == 0) {
- /*
- * Not clustered
- */
- return def_server;
- }
- while (cp = getccent())
- if (cp->cnode_type == 'r')
- return cp->cnode_name;
-
- return def_server;
-}
-#endif /* defined(HAVE_CLUSTER_H) && defined(HAVE_CNODEID) && defined(HAVE_GETCCENT) */
-
-
-static void
-print_umnt_error(amq_sync_umnt *rv, const char *fs)
-{
-
- switch (rv->au_etype) {
- case AMQ_UMNT_OK:
- break;
- case AMQ_UMNT_FAILED:
- printf("unmount failed: %s\n", strerror(rv->au_errno));
- break;
- case AMQ_UMNT_FORK:
- if (rv->au_errno == 0)
- printf("%s is not mounted\n", fs);
- else
- printf("falling back to asynchronous unmount: %s\n",
- strerror(rv->au_errno));
- break;
- case AMQ_UMNT_READ:
- printf("pipe read error: %s\n", strerror(rv->au_errno));
- break;
- case AMQ_UMNT_SERVER:
- printf("amd server down\n");
- break;
- case AMQ_UMNT_SIGNAL:
- printf("got signal: %d\n", rv->au_signal);
- break;
- /*
- * Omit default so the compiler can check for missing cases.
- *
- default:
- break;
- */
- }
-}
-
-
-static int
-amu_sync_umnt_to_retval(amq_sync_umnt *rv)
-{
- switch (rv->au_etype) {
- case AMQ_UMNT_FORK:
- if (rv->au_errno == 0) {
- /*
- * We allow this error so that things like:
- * amq -uu /l/cd0d && eject cd0
- * will work when /l/cd0d is not mounted.
- * XXX - We still print an error message.
- */
- return 0;
- }
- /*FALLTHROUGH*/
- default:
- return rv->au_etype;
- }
-}
-
-
-static int
-clnt_failed(CLIENT *clnt, char *server)
-{
- fprintf(stderr, "%s: ", am_get_progname());
- clnt_perror(clnt, server);
- return 1;
-}
-
-
-/*
- * MAIN
- */
-int
-main(int argc, char *argv[])
-{
- int opt_ch;
- int errs = 0;
- char *server;
- struct sockaddr_in server_addr;
- CLIENT *clnt = NULL;
- struct hostent *hp;
- int nodefault = 0;
- struct timeval tv;
- char *progname = NULL;
-
- /*
- * Compute program name
- */
- if (argv[0]) {
- progname = strrchr(argv[0], '/');
- if (progname && progname[1])
- progname++;
- else
- progname = argv[0];
- }
- if (!progname)
- progname = "amq";
- am_set_progname(progname);
-
- /*
- * Parse arguments
- */
- while ((opt_ch = getopt(argc, argv, "Hfh:il:mqsuvx:D:pP:TUw")) != -1)
- switch (opt_ch) {
- case 'H':
- goto show_usage;
- break;
-
- case 'f':
- flush_flag = 1;
- nodefault = 1;
- break;
-
- case 'h':
- def_server = optarg;
- break;
-
- case 'i':
- mapinfo_flag = 1;
- nodefault = 1;
- break;
-
- case 'l':
- amq_logfile = optarg;
- nodefault = 1;
- break;
-
- case 'm':
- minfo_flag = 1;
- nodefault = 1;
- break;
-
- case 'p':
- getpid_flag = 1;
- nodefault = 1;
- break;
-
- case 'q':
- quiet_flag = 1;
- nodefault = 1;
- break;
-
- case 's':
- stats_flag = 1;
- nodefault = 1;
- break;
-
- case 'u':
- unmount_flag++;
- nodefault = 1;
- break;
-
- case 'v':
- getvers_flag = 1;
- nodefault = 1;
- break;
-
- case 'x':
- xlog_optstr = optarg;
- nodefault = 1;
- break;
-
- case 'D':
- debug_opts = optarg;
- nodefault = 1;
- break;
-
- case 'P':
- amd_program_number = atoi(optarg);
- break;
-
- case 'T':
- use_tcp_flag = 1;
- break;
-
- case 'U':
- use_udp_flag = 1;
- break;
-
- case 'w':
- getpwd_flag = 1;
- break;
-
- default:
- errs = 1;
- break;
- }
-
- if (optind == argc) {
- if (unmount_flag)
- errs = 1;
- }
- if (errs) {
- show_usage:
- fprintf(stderr, "\
-Usage: %s [-fimpqsvwHTU] [-h hostname] [-l log_file|\"syslog\"]\n\
-\t[-x log_options] [-D debug_options]\n\
-\t[-P program_number] [[-u[u]] directory ...]\n",
- am_get_progname()
- );
- exit(1);
- }
-
-
- /* set use_udp and use_tcp flags both to on if none are defined */
- if (!use_tcp_flag && !use_udp_flag)
- use_tcp_flag = use_udp_flag = 1;
-
-#if defined(HAVE_CLUSTER_H) && defined(HAVE_CNODEID) && defined(HAVE_GETCCENT)
- /*
- * Figure out root server of cluster
- */
- if (def_server == localhost)
- server = cluster_server();
- else
-#endif /* defined(HAVE_CLUSTER_H) && defined(HAVE_CNODEID) && defined(HAVE_GETCCENT) */
- server = def_server;
-
- /*
- * Get address of server
- */
- if ((hp = gethostbyname(server)) == 0 && !STREQ(server, localhost)) {
- fprintf(stderr, "%s: Can't get address of %s\n",
- am_get_progname(), server);
- exit(1);
- }
- memset(&server_addr, 0, sizeof(server_addr));
- /* as per POSIX, sin_len need not be set (used internally by kernel) */
- server_addr.sin_family = AF_INET;
- if (hp) {
- memmove((voidp) &server_addr.sin_addr, (voidp) hp->h_addr,
- sizeof(server_addr.sin_addr));
- } else {
- /* fake "localhost" */
- server_addr.sin_addr.s_addr = htonl(0x7f000001);
- }
-
- /*
- * Create RPC endpoint
- */
- tv.tv_sec = 5; /* 5 seconds for timeout or per retry */
- tv.tv_usec = 0;
-
- if (use_tcp_flag) /* try tcp first */
- clnt = clnt_create(server, amd_program_number, AMQ_VERSION, "tcp");
- if (!clnt && use_udp_flag) { /* try udp next */
- clnt = clnt_create(server, amd_program_number, AMQ_VERSION, "udp");
- /* if ok, set timeout (valid for connectionless transports only) */
- if (clnt)
- clnt_control(clnt, CLSET_RETRY_TIMEOUT, (char *) &tv);
- }
- if (!clnt) {
- fprintf(stderr, "%s: ", am_get_progname());
- clnt_pcreateerror(server);
- exit(1);
- }
-
- /*
- * Control debugging
- */
- if (debug_opts) {
- int *rc;
- amq_setopt opt;
- opt.as_opt = AMOPT_DEBUG;
- opt.as_str = debug_opts;
- rc = amqproc_setopt_1(&opt, clnt);
- if (rc && *rc < 0) {
- fprintf(stderr, "%s: daemon not compiled for debug\n",
- am_get_progname());
- errs = 1;
- } else if (!rc || *rc > 0) {
- fprintf(stderr, "%s: debug setting for \"%s\" failed\n",
- am_get_progname(), debug_opts);
- errs = 1;
- }
- }
-
- /*
- * Control logging
- */
- if (xlog_optstr) {
- int *rc;
- amq_setopt opt;
- opt.as_opt = AMOPT_XLOG;
- opt.as_str = xlog_optstr;
- rc = amqproc_setopt_1(&opt, clnt);
- if (!rc || *rc) {
- fprintf(stderr, "%s: setting log level to \"%s\" failed\n",
- am_get_progname(), xlog_optstr);
- errs = 1;
- }
- }
-
- /*
- * Control log file
- */
- if (amq_logfile) {
- int *rc;
- amq_setopt opt;
- opt.as_opt = AMOPT_LOGFILE;
- opt.as_str = amq_logfile;
- rc = amqproc_setopt_1(&opt, clnt);
- if (!rc || *rc) {
- fprintf(stderr, "%s: setting logfile to \"%s\" failed\n",
- am_get_progname(), amq_logfile);
- errs = 1;
- }
- }
-
- /*
- * Flush map cache
- */
- if (flush_flag) {
- int *rc;
- amq_setopt opt;
- opt.as_opt = AMOPT_FLUSHMAPC;
- opt.as_str = "";
- rc = amqproc_setopt_1(&opt, clnt);
- if (!rc || *rc) {
- fprintf(stderr, "%s: amd on %s cannot flush the map cache\n",
- am_get_progname(), server);
- errs = 1;
- }
- }
-
- /*
- * getpwd info
- */
- if (getpwd_flag) {
- char path[MAXPATHLEN+1];
- char *wd;
- amq_mount_tree_list *mlp;
- amq_mount_tree_p mt;
- u_int i;
- int flag;
-
- wd = getcwd(path, MAXPATHLEN+1);
- if (!wd) {
- fprintf(stderr, "%s: getcwd failed (%s)", am_get_progname(),
- strerror(errno));
- exit(1);
- }
- mlp = amqproc_export_1((voidp) 0, clnt);
- for (i = 0; mlp && i < mlp->amq_mount_tree_list_len; i++) {
- mt = mlp->amq_mount_tree_list_val[i];
- while (1) {
- flag = 0;
- show_pwd(mt, path, sizeof(path), &flag);
- if (!flag) {
- printf("%s\n", path);
- break;
- }
- }
- }
- exit(0);
- }
-
- /*
- * Mount info
- */
- if (minfo_flag) {
- int dummy;
- amq_mount_info_list *ml = amqproc_getmntfs_1(&dummy, clnt);
- if (ml) {
- int mwid = 0, dwid = 0, twid = 0;
- show_mi(ml, Calc, &mwid, &dwid, &twid);
- mwid++;
- dwid++;
- twid++;
- show_mi(ml, Full, &mwid, &dwid, &twid);
-
- } else {
- fprintf(stderr, "%s: amd on %s cannot provide mount info\n",
- am_get_progname(), server);
- }
- }
-
-
- /*
- * Map
- */
- if (mapinfo_flag) {
- int dummy;
- amq_map_info_list *ml = amqproc_getmapinfo_1(&dummy, clnt);
- if (ml) {
- int mwid = 0, wwid = 0;
- show_mapinfo(ml, Calc, &mwid, &wwid);
- mwid++;
- if (wwid)
- wwid++;
- show_mapinfo(ml, Full, &mwid, &wwid);
- } else {
- fprintf(stderr, "%s: amd on %s cannot provide map info\n",
- am_get_progname(), server);
- }
- }
-
- /*
- * Get Version
- */
- if (getvers_flag) {
- amq_string *spp = amqproc_getvers_1((voidp) 0, clnt);
- if (spp && *spp) {
- fputs(*spp, stdout);
- XFREE(*spp);
- } else {
- fprintf(stderr, "%s: failed to get version information\n",
- am_get_progname());
- errs = 1;
- }
- }
-
- /*
- * Get PID of amd
- */
- if (getpid_flag) {
- int *ip = amqproc_getpid_1((voidp) 0, clnt);
- if (ip && *ip) {
- printf("%d\n", *ip);
- } else {
- fprintf(stderr, "%s: failed to get PID of amd\n", am_get_progname());
- errs = 1;
- }
- }
-
- /*
- * Apply required operation to all remaining arguments
- */
- if (optind < argc) {
- do {
- char *fs = argv[optind++];
- if (unmount_flag > 1) {
- amq_sync_umnt *sup;
- /*
- * Synchronous unmount request
- */
- sup = amqproc_sync_umnt_1(&fs, clnt);
- if (sup) {
- if (quiet_flag == 0)
- print_umnt_error(sup, fs);
- errs = amu_sync_umnt_to_retval(sup);
- } else {
- errs = clnt_failed(clnt, server);
- }
- } else if (unmount_flag) {
- /*
- * Unmount request
- */
- amqproc_umnt_1(&fs, clnt);
- } else {
- /*
- * Stats request
- */
- amq_mount_tree_p *mtp = amqproc_mnttree_1(&fs, clnt);
- if (mtp) {
- amq_mount_tree *mt = *mtp;
- if (mt) {
- int mwid = 0, dwid = 0, twid = 0;
- show_mt(mt, Calc, &mwid, &dwid, &twid);
- mwid++;
- dwid++, twid++;
- printf("%-*.*s Uid Getattr Lookup RdDir RdLnk Statfs Mounted@\n",
- dwid, dwid, "What");
- show_mt(mt, Stats, &mwid, &dwid, &twid);
- } else {
- fprintf(stderr, "%s: %s not automounted\n", am_get_progname(), fs);
- }
- xdr_pri_free((XDRPROC_T_TYPE) xdr_amq_mount_tree_p, (caddr_t) mtp);
- } else {
- errs = clnt_failed(clnt, server);
- }
- }
- } while (optind < argc);
-
- } else if (unmount_flag) {
- goto show_usage;
-
- } else if (stats_flag) {
- amq_mount_stats *ms = amqproc_stats_1((voidp) 0, clnt);
- if (ms) {
- show_ms(ms);
- } else {
- errs = clnt_failed(clnt, server);
- }
-
- } else if (!nodefault) {
- amq_mount_tree_list *mlp = amqproc_export_1((voidp) 0, clnt);
- if (mlp) {
- enum show_opt e = Calc;
- int mwid = 0, dwid = 0, pwid = 0;
-
- while (e != ShowDone) {
- u_int i;
- for (i = 0; i < mlp->amq_mount_tree_list_len; i++) {
- show_mt(mlp->amq_mount_tree_list_val[i],
- e, &mwid, &dwid, &pwid);
- }
- mwid++;
- dwid++, pwid++;
- if (e == Calc)
- e = Short;
- else if (e == Short)
- e = ShowDone;
- }
-
- } else {
- errs = clnt_failed(clnt, server);
- }
- }
- exit(errs);
- return errs; /* should never reach here */
-}
diff --git a/contrib/amd/amq/amq.h b/contrib/amd/amq/amq.h
deleted file mode 100644
index 3c894d687f50..000000000000
--- a/contrib/amd/amq/amq.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amq/amq.h
- *
- */
-
-#ifndef _AMQ_H
-#define _AMQ_H
-
-/*
- * external definitions for building amq
- */
-
-extern voidp amqproc_null_1(voidp argp, CLIENT *rqstp);
-extern amq_mount_tree_p *amqproc_mnttree_1(amq_string *argp, CLIENT *rqstp);
-extern voidp amqproc_umnt_1(amq_string *argp, CLIENT *rqstp);
-extern amq_sync_umnt *amqproc_sync_umnt_1(amq_string *argp, CLIENT *rqstp);
-extern amq_mount_stats *amqproc_stats_1(voidp argp, CLIENT *rqstp);
-extern amq_mount_tree_list *amqproc_export_1(voidp argp, CLIENT *rqstp);
-extern int *amqproc_setopt_1(amq_setopt *argp, CLIENT *rqstp);
-extern amq_mount_info_list *amqproc_getmntfs_1(voidp argp, CLIENT *rqstp);
-extern amq_map_info_list *amqproc_getmapinfo_1(voidp argp, CLIENT *rqstp);
-extern int *amqproc_mount_1(voidp argp, CLIENT *rqstp);
-extern amq_string *amqproc_getvers_1(voidp argp, CLIENT *rqstp);
-extern int *amqproc_getpid_1(voidp argp, CLIENT *rqstp);
-extern amq_string *amqproc_pawd_1(amq_string *argp, CLIENT *rqstp);
-
-#endif /* not _AMQ_H */
diff --git a/contrib/amd/amq/amq_clnt.c b/contrib/amd/amq/amq_clnt.c
deleted file mode 100644
index c5f1e87d97f8..000000000000
--- a/contrib/amd/amq/amq_clnt.c
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amq/amq_clnt.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amq.h>
-
-
-static struct timeval TIMEOUT = {ALLOWED_MOUNT_TIME, 0};
-
-
-voidp
-amqproc_null_1(voidp argp, CLIENT *clnt)
-{
- static char res;
-
- memset((char *) &res, 0, sizeof(res));
- if (clnt_call(clnt, AMQPROC_NULL,
- (XDRPROC_T_TYPE) xdr_void, argp,
- (XDRPROC_T_TYPE) xdr_void, &res, TIMEOUT)
- != RPC_SUCCESS) {
- return (NULL);
- }
- return ((voidp) &res);
-}
-
-
-amq_mount_tree_p *
-amqproc_mnttree_1(amq_string *argp, CLIENT *clnt)
-{
- static amq_mount_tree_p res;
-
- memset((char *) &res, 0, sizeof(res));
- if (clnt_call(clnt, AMQPROC_MNTTREE,
- (XDRPROC_T_TYPE) xdr_amq_string, (SVC_IN_ARG_TYPE) argp,
- (XDRPROC_T_TYPE) xdr_amq_mount_tree_p, (SVC_IN_ARG_TYPE) &res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&res);
-}
-
-
-voidp
-amqproc_umnt_1(amq_string *argp, CLIENT *clnt)
-{
- static char res;
-
- memset((char *) &res, 0, sizeof(res));
- if (clnt_call(clnt, AMQPROC_UMNT,
- (XDRPROC_T_TYPE) xdr_amq_string, (SVC_IN_ARG_TYPE) argp,
- (XDRPROC_T_TYPE) xdr_void, &res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return ((voidp) &res);
-}
-
-
-amq_sync_umnt *
-amqproc_sync_umnt_1(amq_string *argp, CLIENT *clnt)
-{
- static amq_sync_umnt res;
- enum clnt_stat rv;
-
- memset((char *) &res, 0, sizeof(res));
- if ((rv = clnt_call(clnt, AMQPROC_SYNC_UMNT,
- (XDRPROC_T_TYPE) xdr_amq_string, (SVC_IN_ARG_TYPE) argp,
- (XDRPROC_T_TYPE) xdr_amq_sync_umnt, (SVC_IN_ARG_TYPE) &res,
- TIMEOUT)) != RPC_SUCCESS) {
- return (NULL);
- }
- return &res;
-}
-
-
-amq_mount_stats *
-amqproc_stats_1(voidp argp, CLIENT *clnt)
-{
- static amq_mount_stats res;
-
- memset((char *) &res, 0, sizeof(res));
- if (clnt_call(clnt, AMQPROC_STATS,
- (XDRPROC_T_TYPE) xdr_void, argp,
- (XDRPROC_T_TYPE) xdr_amq_mount_stats,
- (SVC_IN_ARG_TYPE) &res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&res);
-}
-
-
-amq_mount_tree_list *
-amqproc_export_1(voidp argp, CLIENT *clnt)
-{
- static amq_mount_tree_list res;
-
- memset((char *) &res, 0, sizeof(res));
- if (clnt_call(clnt, AMQPROC_EXPORT,
- (XDRPROC_T_TYPE) xdr_void, argp,
- (XDRPROC_T_TYPE) xdr_amq_mount_tree_list,
- (SVC_IN_ARG_TYPE) &res, TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&res);
-}
-
-
-int *
-amqproc_setopt_1(amq_setopt *argp, CLIENT *clnt)
-{
- static int res;
-
- memset((char *) &res, 0, sizeof(res));
- if (clnt_call(clnt, AMQPROC_SETOPT, (XDRPROC_T_TYPE) xdr_amq_setopt,
- (SVC_IN_ARG_TYPE) argp, (XDRPROC_T_TYPE) xdr_int,
- (SVC_IN_ARG_TYPE) &res, TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&res);
-}
-
-
-amq_mount_info_list *
-amqproc_getmntfs_1(voidp argp, CLIENT *clnt)
-{
- static amq_mount_info_list res;
-
- memset((char *) &res, 0, sizeof(res));
- if (clnt_call(clnt, AMQPROC_GETMNTFS, (XDRPROC_T_TYPE) xdr_void, argp,
- (XDRPROC_T_TYPE) xdr_amq_mount_info_list,
- (SVC_IN_ARG_TYPE) &res, TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&res);
-}
-
-amq_map_info_list *
-amqproc_getmapinfo_1(voidp argp, CLIENT *clnt)
-{
- static amq_map_info_list res;
-
- memset((char *) &res, 0, sizeof(res));
- if (clnt_call(clnt, AMQPROC_GETMAPINFO, (XDRPROC_T_TYPE) xdr_void, argp,
- (XDRPROC_T_TYPE) xdr_amq_map_info_list,
- (SVC_IN_ARG_TYPE) &res, TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&res);
-}
-
-
-int *
-amqproc_mount_1(voidp argp, CLIENT *clnt)
-{
- static int res;
-
- memset((char *) &res, 0, sizeof(res));
- if (clnt_call(clnt, AMQPROC_MOUNT, (XDRPROC_T_TYPE) xdr_amq_string, argp,
- (XDRPROC_T_TYPE) xdr_int, (SVC_IN_ARG_TYPE) &res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&res);
-}
-
-
-amq_string *
-amqproc_getvers_1(voidp argp, CLIENT *clnt)
-{
- static amq_string res;
-
- memset((char *) &res, 0, sizeof(res));
- if (clnt_call(clnt, AMQPROC_GETVERS, (XDRPROC_T_TYPE) xdr_void, argp,
- (XDRPROC_T_TYPE) xdr_amq_string, (SVC_IN_ARG_TYPE) &res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&res);
-}
-
-
-int *
-amqproc_getpid_1(voidp argp, CLIENT *clnt)
-{
- static int res;
-
- memset((char *) &res, 0, sizeof(res));
- if (clnt_call(clnt, AMQPROC_GETPID, (XDRPROC_T_TYPE) xdr_void, argp,
- (XDRPROC_T_TYPE) xdr_int, (SVC_IN_ARG_TYPE) &res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&res);
-}
-
-
-amq_string *
-amqproc_pawd_1(amq_string *argp, CLIENT *clnt)
-{
- static amq_string res;
-
- memset((char *) &res, 0, sizeof(res));
- if (clnt_call(clnt, AMQPROC_PAWD,
- (XDRPROC_T_TYPE) xdr_amq_string, (SVC_IN_ARG_TYPE) argp,
- (XDRPROC_T_TYPE) xdr_amq_string, (SVC_IN_ARG_TYPE) &res,
- TIMEOUT) != RPC_SUCCESS) {
- return (NULL);
- }
- return (&res);
-}
diff --git a/contrib/amd/amq/amq_xdr.c b/contrib/amd/amq/amq_xdr.c
deleted file mode 100644
index b9a1c20fbf11..000000000000
--- a/contrib/amd/amq/amq_xdr.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amq/amq_xdr.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amq.h>
-
-
-bool_t
-xdr_time_type(XDR *xdrs, time_type *objp)
-{
- if (!xdr_long(xdrs, (long *) objp)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_mount_tree(XDR *xdrs, amq_mount_tree *objp)
-{
-
- if (!xdr_amq_string(xdrs, &objp->mt_mountinfo)) {
- return (FALSE);
- }
-
- if (!xdr_amq_string(xdrs, &objp->mt_directory)) {
- return (FALSE);
- }
-
- if (!xdr_amq_string(xdrs, &objp->mt_mountpoint)) {
- return (FALSE);
- }
-
- if (!xdr_amq_string(xdrs, &objp->mt_type)) {
- return (FALSE);
- }
-
- if (!xdr_time_type(xdrs, &objp->mt_mounttime)) {
- return (FALSE);
- }
-
- if (!xdr_u_short(xdrs, &objp->mt_mountuid)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mt_getattr)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mt_lookup)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mt_readdir)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mt_readlink)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mt_statfs)) {
- return (FALSE);
- }
-
- if (!xdr_pointer(xdrs,
- (char **) ((voidp) &objp->mt_next),
- sizeof(amq_mount_tree),
- (XDRPROC_T_TYPE) xdr_amq_mount_tree)) {
- return (FALSE);
- }
-
- if (!xdr_pointer(xdrs,
- (char **) ((voidp) &objp->mt_child),
- sizeof(amq_mount_tree),
- (XDRPROC_T_TYPE) xdr_amq_mount_tree)) {
- return (FALSE);
- }
-
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_mount_tree_p(XDR *xdrs, amq_mount_tree_p *objp)
-{
- if (!xdr_pointer(xdrs,
- (char **) objp,
- sizeof(amq_mount_tree),
- (XDRPROC_T_TYPE) xdr_amq_mount_tree)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_mount_info(XDR *xdrs, amq_mount_info *objp)
-{
-
- if (!xdr_amq_string(xdrs, &objp->mi_type)) {
- return (FALSE);
- }
-
- if (!xdr_amq_string(xdrs, &objp->mi_mountpt)) {
- return (FALSE);
- }
-
- if (!xdr_amq_string(xdrs, &objp->mi_mountinfo)) {
- return (FALSE);
- }
-
- if (!xdr_amq_string(xdrs, &objp->mi_fserver)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mi_error)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mi_refc)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mi_up)) {
- return (FALSE);
- }
-
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_mount_info_list(XDR *xdrs, amq_mount_info_list *objp)
-{
- if (!xdr_array(xdrs,
- (char **) ((voidp) &objp->amq_mount_info_list_val),
- (u_int *) &objp->amq_mount_info_list_len,
- ~0,
- sizeof(amq_mount_info),
- (XDRPROC_T_TYPE) xdr_amq_mount_info)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-bool_t
-xdr_amq_map_info(XDR *xdrs, amq_map_info *objp)
-{
- if (!xdr_amq_string(xdrs, &objp->mi_name)) {
- return (FALSE);
- }
-
- if (!xdr_amq_string(xdrs, &objp->mi_wildcard)) {
- return (FALSE);
- }
-
- if (!xdr_time_type(xdrs, &objp->mi_modify)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mi_flags)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mi_nentries)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mi_reloads)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mi_refc)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->mi_up)) {
- return (FALSE);
- }
-
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_map_info_list(XDR *xdrs, amq_map_info_list *objp)
-{
- if (!xdr_array(xdrs,
- (char **) ((voidp) &objp->amq_map_info_list_val),
- (u_int *) &objp->amq_map_info_list_len,
- ~0,
- sizeof(amq_map_info),
- (XDRPROC_T_TYPE) xdr_amq_map_info)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_mount_tree_list(XDR *xdrs, amq_mount_tree_list *objp)
-{
- if (!xdr_array(xdrs,
- (char **) ((voidp) &objp->amq_mount_tree_list_val),
- (u_int *) &objp->amq_mount_tree_list_len,
- ~0,
- sizeof(amq_mount_tree_p),
- (XDRPROC_T_TYPE) xdr_amq_mount_tree_p)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_mount_stats(XDR *xdrs, amq_mount_stats *objp)
-{
-
- if (!xdr_int(xdrs, &objp->as_drops)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->as_stale)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->as_mok)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->as_merr)) {
- return (FALSE);
- }
-
- if (!xdr_int(xdrs, &objp->as_uerr)) {
- return (FALSE);
- }
-
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_opt(XDR *xdrs, amq_opt *objp)
-{
- if (!xdr_enum(xdrs, (enum_t *) objp)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_setopt(XDR *xdrs, amq_setopt *objp)
-{
-
- if (!xdr_amq_opt(xdrs, &objp->as_opt)) {
- return (FALSE);
- }
-
- if (!xdr_amq_string(xdrs, &objp->as_str)) {
- return (FALSE);
- }
-
- return (TRUE);
-}
-
-
-bool_t
-xdr_pri_free(XDRPROC_T_TYPE xdr_args, caddr_t args_ptr)
-{
- XDR xdr;
-
- xdr.x_op = XDR_FREE;
- return ((*xdr_args) (&xdr, (caddr_t *) args_ptr));
-}
diff --git a/contrib/amd/amq/pawd.1 b/contrib/amd/amq/pawd.1
deleted file mode 100644
index 5e5e84bc0913..000000000000
--- a/contrib/amd/amq/pawd.1
+++ /dev/null
@@ -1,111 +0,0 @@
-.\"
-.\" Copyright (c) 1997-2014 Erez Zadok
-.\" Copyright (c) 1990 Jan-Simon Pendry
-.\" Copyright (c) 1990 Imperial College of Science, Technology & Medicine
-.\" Copyright (c) 1990 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" Jan-Simon Pendry at Imperial College, London.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\"
-.\" File: am-utils/amq/pawd.1
-.\" $FreeBSD$
-.\"
-.Dd February 26, 2016
-.Dt PAWD 1
-.Os
-.Sh NAME
-.Nm pawd
-.Nd print automounter working directory
-.Sh SYNOPSIS
-.Nm
-.Op Ar path ...
-.Sh DESCRIPTION
-.Bf -symbolic
-This command is obsolete.
-Users are advised to use
-.Xr autofs 5
-instead.
-.Ef
-.Pp
-The
-.Nm
-utility
-is used to print the current working directory, adjusted to reflect proper
-paths that can be reused to go through the automounter for the shortest
-possible path.
-In particular, the path printed back does not include any
-of
-.Xr amd 8 Ns 's
-local mount points.
-Using them is unsafe, because
-.Xr amd 8
-may unmount managed file systems from the mount points, and thus including
-them in paths may not always find the files within.
-.Pp
-Without any arguments,
-.Nm
-will print the automounter adjusted current working directory.
-With any
-number of arguments, it will print the adjusted
-.Ar path
-of each one of the
-arguments.
-.Sh SEE ALSO
-.Xr pwd 1 ,
-.Xr amd 8 ,
-.Xr amq 8
-.Pp
-.Dq am-utils
-.Xr info 1
-entry.
-.Rs
-.%A Erez Zadok
-.%B "Linux NFS and Automounter Administration"
-.%O ISBN 0-7821-2739-8
-.%I Sybex
-.%D 2001
-.Re
-.Pp
-.Pa http://www.am-utils.org/
-.Rs
-.%T Amd \- The 4.4 BSD Automounter
-.Re
-.Sh HISTORY
-The
-.Nm
-utility first appeared in
-.Fx 3.0 .
-.Sh AUTHORS
-.An Erez Zadok Aq ezk@cs.sunysb.edu ,
-Computer Science Department, Stony Brook
-University, Stony Brook, New York, USA.
-.Pp
-Other authors and contributors to am-utils are listed in the
-.Pa AUTHORS
-file distributed with am-utils.
diff --git a/contrib/amd/amq/pawd.c b/contrib/amd/amq/pawd.c
deleted file mode 100644
index bab6657521ba..000000000000
--- a/contrib/amd/amq/pawd.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/amq/pawd.c
- *
- */
-
-/*
- * pawd is similar to pwd, except that it returns more "natural" versions of
- * pathnames for directories automounted with the amd automounter. If any
- * arguments are given, the "more natural" form of the given pathnames are
- * printed.
- *
- * Paul Anderson (paul@ed.lfcs)
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amq.h>
-
-
-/* statics */
-static char *localhost = "localhost";
-static char transform[MAXPATHLEN];
-
-
-#ifdef HAVE_CNODEID
-static char *
-cluster_server(void)
-{
-# ifdef HAVE_EXTERN_GETCCENT
- struct cct_entry *cp;
-# endif /* HAVE_EXTERN_GETCCENT */
-
- if (cnodeid() == 0)
- return localhost;
-
-# ifdef HAVE_EXTERN_GETCCENT
- while ((cp = getccent()))
- if (cp->cnode_type == 'r')
- return cp->cnode_name;
-# endif /* HAVE_EXTERN_GETCCENT */
-
- return localhost;
-}
-#endif /* HAVE_CNODEID */
-
-
-/* DISK_HOME_HACK added by gdmr */
-#ifdef DISK_HOME_HACK
-static char *
-hack_name(char *dir)
-{
- char partition[MAXPATHLEN];
- char username[MAXPATHLEN];
- char hesiod_lookup[MAXPATHLEN];
- char *to, *ch, *hes_name, *dot;
- char **hes;
-
-#ifdef DEBUG
- fprintf(stderr, "hack_name(%s)\n", dir);
-#endif /* DEBUG */
-
- if (dir[0] == '/' && dir[1] == 'a' && dir[2] == '/') {
- /* Could be /a/server/disk/home/partition/user... */
- ch = dir + 3;
- while (*ch && *ch != '/') ch++; /* Skip server */
- if (!NSTREQ(ch, "/disk/home/", 11))
- return NULL; /* Nope */
- /* Looking promising, next should be the partition name */
- ch += 11;
- to = partition;
- while (*ch && *ch != '/') *to++ = *ch++;
- to = '\0';
- if (!(*ch))
- return NULL; /* Off the end */
- /* Now the username */
- ch++;
- to = username;
- while (*ch && *ch != '/') *to++ = *ch++;
- to = '\0';
-#ifdef DEBUG
- fprintf(stderr, "partition %s, username %s\n", partition, username);
-#endif /* DEBUG */
-
- xsnprintf(hesiod_lookup, sizeof(hesiod_lookup),
- "%s.homes-remote", username);
- hes = hes_resolve(hesiod_lookup, "amd");
- if (!hes)
- return NULL;
-#ifdef DEBUG
- fprintf(stderr, "hesiod -> <%s>\n", *hes);
-#endif /* DEBUG */
- hes_name = strstr(*hes, "/homes/remote/");
- if (!hes_name) return NULL;
- hes_name += 14;
-#ifdef DEBUG
- fprintf(stderr, "hesiod -> <%s>\n", hes_name);
-#endif /* DEBUG */
- dot = hes_name;
- while (*dot && *dot != '.') dot++;
- *dot = '\0';
-#ifdef DEBUG
- fprintf(stderr, "hesiod -> <%s>\n", hes_name);
-#endif /* DEBUG */
-
- if (strcmp(partition, hes_name)) return NULL;
-#ifdef DEBUG
- fprintf(stderr, "A match, munging....\n");
-#endif /* DEBUG */
- xstrlcpy(transform, "/home/", sizeof(transform));
- xstrlcat(transform, username, sizeof(transform));
- if (*ch)
- xstrlcat(transform, ch, sizeof(transform));
-#ifdef DEBUG
- fprintf(stderr, "Munged to <%s>\n", transform);
-#endif /* DEBUG */
- return transform;
- }
- return NULL;
-}
-#endif /* DISK_HOME_HACK */
-
-
-/*
- * The routine transform_dir(path) transforms pathnames of directories
- * mounted with the amd automounter to produce a more "natural" version.
- * The automount table is obtained from the local amd via the rpc interface
- * and reverse lookups are repeatedly performed on the directory name
- * substituting the name of the automount link for the value of the link
- * whenever it occurs as a prefix of the directory name.
- */
-static char *
-transform_dir(char *dir)
-{
-#ifdef DISK_HOME_HACK
- char *ch;
-#endif /* DISK_HOME_HACK */
- char *server;
- struct sockaddr_in server_addr;
- int s = RPC_ANYSOCK;
- CLIENT *clnt;
- struct hostent *hp;
- struct timeval tmo = {10, 0};
- char *dummystr;
- amq_string *spp;
-
-#ifdef DISK_HOME_HACK
- if (ch = hack_name(dir))
- return ch;
-#endif /* DISK_HOME_HACK */
-
-#ifdef HAVE_CNODEID
- server = cluster_server();
-#else /* not HAVE_CNODEID */
- server = localhost;
-#endif /* not HAVE_CNODEID */
-
- if ((hp = gethostbyname(server)) == NULL)
- return dir;
- memset(&server_addr, 0, sizeof(server_addr));
- /* as per POSIX, sin_len need not be set (used internally by kernel) */
- server_addr.sin_family = AF_INET;
- server_addr.sin_addr = *(struct in_addr *) hp->h_addr;
-
- clnt = clntudp_create(&server_addr, AMQ_PROGRAM, AMQ_VERSION, tmo, &s);
- if (clnt == NULL)
- clnt = clnttcp_create(&server_addr, AMQ_PROGRAM, AMQ_VERSION, &s, 0, 0);
- if (clnt == NULL)
- return dir;
-
- xstrlcpy(transform, dir, sizeof(transform));
- dummystr = transform;
- spp = amqproc_pawd_1((amq_string *) &dummystr, clnt);
- if (spp && *spp && **spp) {
- xstrlcpy(transform, *spp, sizeof(transform));
- XFREE(*spp);
- }
- clnt_destroy(clnt);
- return transform;
-}
-
-
-/* getawd() is a substitute for getwd() which transforms the path */
-static char *
-getawd(char *path, size_t l)
-{
-#ifdef HAVE_GETCWD
- char *wd = getcwd(path, MAXPATHLEN);
-#else /* not HAVE_GETCWD */
- char *wd = getwd(path);
-#endif /* not HAVE_GETCWD */
-
- if (wd == NULL) {
- return NULL;
- }
- xstrlcpy(path, transform_dir(wd), l);
- return path;
-}
-
-
-int
-main(int argc, char *argv[])
-{
- char tmp_buf[MAXPATHLEN], *wd;
-
- if (argc == 1) {
- wd = getawd(tmp_buf, sizeof(tmp_buf));
- if (wd == NULL) {
- fprintf(stderr, "pawd: %s\n", tmp_buf);
- exit(1);
- } else {
- fprintf(stdout, "%s\n", wd);
- }
- } else {
- while (--argc) {
- wd = transform_dir(*++argv);
- fprintf(stdout, "%s\n", wd);
- }
- }
- exit(0);
-}
diff --git a/contrib/amd/aux_conf.h.in b/contrib/amd/aux_conf.h.in
deleted file mode 100644
index 8c38bbfac5f1..000000000000
--- a/contrib/amd/aux_conf.h.in
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * aux_conf.h:
- * This file gets "filled in" for each architecture.
- * @configure_input@
- */
-
-#ifndef _AUX_CONF_H
-#define _AUX_CONF_H
-
-/*
- * The next line is a literal inclusion of a file which includes a
- * definition for the MOUNT_TRAP macro for a particular architecture.
- * If it defines the wrong entry, check the AC_CHECK_MOUNT_TRAP m4 macro
- * in $srcdir/m4/macros.
- */
-@am_utils_mount_trap@
-/* End of included MOUNT_TRAP macro definition file */
-
-/*
- * The next line is a literal replacement of a variable which defines the
- * the UNMOUNT_TRAP macro for a particular architecture.
- * If it defines the wrong entry, check the AC_CHECK_UNMOUNT_CALL m4 macro
- * in $srcdir/aclocal.m4. If the arguments are being defined wrong, check
- * the macro AC_CHECK_UNMOUNT_ARGS in $srcdir/m4/macros.
- */
-#define UNMOUNT_TRAP(mnt) @am_utils_unmount_call@(@am_utils_unmount_args@)
-/* End of replaced UNMOUNT_TRAP macro definition */
-/* umount(8) executable path, for type:=program */
-#define UNMOUNT_PROGRAM "@UNMOUNT_PROGRAM@"
-
-/*
- * The next line is a literal inclusion of a file which includes a
- * definition for the NFS_FH_DREF macro for a particular architecture.
- * If it defines the wrong entry, check the AC_CHECK_NFS_FH_DREF m4 macro
- * in $srcdir/m4/macros.
- */
-@am_utils_nfs_fh_dref@
-/* End of included NFS_FH_DREF macro definition file */
-
-/*
- * The next line is a literal inclusion of a file which includes a
- * definition for the NFS_SA_DREF macro for a particular architecture.
- * If it defines the wrong entry, check the AC_CHECK_NFS_SA_DREF m4 macro
- * in $srcdir/m4/macros.
- */
-@am_utils_nfs_sa_dref@
-/* End of included NFS_SA_DREF macro definition file */
-
-/*
- * The next line is a literal inclusion of a file which includes a
- * definition for the NFS_HN_DREF macro for a particular architecture.
- * If it defines the wrong entry, check the AC_CHECK_NFS_HN_DREF m4 macro
- * in $srcdir/m4/macros.
- */
-@am_utils_nfs_hn_dref@
-/* End of included NFS_HN_DREF macro definition file */
-
-#endif /* not _AUX_CONF_H */
diff --git a/contrib/amd/bootstrap b/contrib/amd/bootstrap
deleted file mode 100755
index 000b01670abf..000000000000
--- a/contrib/amd/bootstrap
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/sh
-#set -x
-# helps bootstrapping am-utils, when checked out from CVS
-# requires GNU autoconf and GNU automake
-# this is not meant to go into the distributions
-# Erez Zadok <ezk@cs.columbia.edu>
-
-validateversion() {
- local v="$(autoreconf --version 2>&1 | head -1)"
- case "$v" in
- *2.69) ;;
- *) echo "am-utils requires autoconf 2.69, you have:"
- echo " $v"
- exit 1;;
- esac
-}
-
-# test cwd
-test -f ../amd/amd.c && cd ..
-if [ ! -f amd/amd.c ]; then
- echo "Must run $0 from the top level source directory."
- exit 1
-fi
-
-# validate macros directory and some macro files
-if [ ! -d m4/macros ]; then
- echo No m4/macros directory found!
- exit 1
-fi
-if [ ! -f m4/macros/HEADER ]; then
- echo No m4/macros/HEADER file found!
- exit 1
-fi
-
-# remove any remaining autom4te.cache directory
-rm -fr autom4te.cache autom4te-*.cache
-
-# generate acinclude.m4 file
-echo "AMU: prepare acinclude.m4..."
-test -f acinclude.m4 && mv -f acinclude.m4 acinclude.m4.old
-(cd m4/macros
- for i in HEADER *.m4; do
- cat $i
- echo
- echo
- done
- cat TRAILER
-) > acinclude.m4
-
-# generate the rest of the scripts
-echo "AMU: autoreconf..."
-validateversion
-if autoreconf -f -i; then
- :
-else
- echo "autoreconf command failed. fix errors and rerun $0."
- exit 2
-fi
-
-# save timestamp
-echo "AMU: save timestamp..."
-echo timestamp > stamp-h.in
-
-exit 0
diff --git a/contrib/amd/conf/checkmount/checkmount_bsd44.c b/contrib/amd/conf/checkmount/checkmount_bsd44.c
deleted file mode 100644
index 6c6b21dcb4a2..000000000000
--- a/contrib/amd/conf/checkmount/checkmount_bsd44.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/conf/checkmount/checkmount_bsd44.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#if __NetBSD_Version__ > 200030000
-#define statfs statvfs
-#endif
-
-extern int is_same_host(char *name1, char *name2, struct in_addr addr2);
-int fixmount_check_mount(char *host, struct in_addr hostaddr, char *path);
-
-int
-fixmount_check_mount(char *host, struct in_addr hostaddr, char *path)
-{
- struct statfs *mntbufp, *mntp;
- int nloc, i;
- char *colon;
-
- /* read mount table from kernel */
- nloc = getmntinfo(&mntbufp, MNT_NOWAIT);
- if (nloc <= 0) {
- perror("getmntinfo");
- exit(1);
- }
-
- mntp = mntbufp;
- for (i=0; i<nloc; ++i) {
- if ((colon = strchr(mntp->f_mntfromname, ':'))) {
- *colon = '\0';
- if (STREQ(colon + 1, path) &&
- is_same_host(mntp->f_mntfromname, host, hostaddr))
- return 1;
- }
- }
-
- return 0;
-}
diff --git a/contrib/amd/conf/fh_dref/fh_dref_freebsd22.h b/contrib/amd/conf/fh_dref/fh_dref_freebsd22.h
deleted file mode 100644
index 989561d267f6..000000000000
--- a/contrib/amd/conf/fh_dref/fh_dref_freebsd22.h
+++ /dev/null
@@ -1,2 +0,0 @@
-/* $srcdir/conf/fh_dref/fh_dref_freebsd22.h */
-#define NFS_FH_DREF(dst, src) (dst) = (u_char *) (src)
diff --git a/contrib/amd/conf/mtab/mtab_bsd.c b/contrib/amd/conf/mtab/mtab_bsd.c
deleted file mode 100644
index 203a265e13af..000000000000
--- a/contrib/amd/conf/mtab/mtab_bsd.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/conf/mtab/mtab_bsd.c
- *
- */
-
-/*
- * BSD 4.4 systems don't write their mount tables on a file. Instead, they
- * use a (better) system where the kernel keeps this state, and you access
- * the mount tables via a known interface.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-
-#if __NetBSD_Version__ > 200030000
-#define statfs statvfs
-#endif
-
-static mntent_t *
-mnt_dup(struct statfs *mp)
-{
- mntent_t *new_mp = ALLOC(mntent_t);
- char *ty;
-
- new_mp->mnt_fsname = xstrdup(mp->f_mntfromname);
- new_mp->mnt_dir = xstrdup(mp->f_mntonname);
-
-#ifdef HAVE_STRUCT_STATFS_F_FSTYPENAME
- ty = mp->f_fstypename;
-#else /* not HAVE_STRUCT_STATFS_F_FSTYPENAME */
- switch (mp->f_type) {
-
-# if defined(MOUNT_UFS) && defined(MNTTAB_TYPE_UFS)
- case MOUNT_UFS:
- ty = MNTTAB_TYPE_UFS;
- break;
-# endif /* defined(MOUNT_UFS) && defined(MNTTAB_TYPE_UFS) */
-
-# if defined(MOUNT_NFS) && defined(MNTTAB_TYPE_NFS)
- case MOUNT_NFS:
- ty = MNTTAB_TYPE_NFS;
- break;
-# endif /* defined(MOUNT_NFS) && defined(MNTTAB_TYPE_NFS) */
-
-# if defined(MOUNT_MFS) && defined(MNTTAB_TYPE_MFS)
- case MOUNT_MFS:
- ty = MNTTAB_TYPE_MFS;
- break;
-# endif /* defined(MOUNT_MFS) && defined(MNTTAB_TYPE_MFS) */
-
- default:
- ty = "unknown";
-
- break;
- }
-#endif /* not HAVE_STRUCT_STATFS_F_FSTYPENAME */
-
- new_mp->mnt_type = xstrdup(ty);
- new_mp->mnt_opts = xstrdup("unset");
- new_mp->mnt_freq = 0;
- new_mp->mnt_passno = 0;
-
- return new_mp;
-}
-
-
-/*
- * Read a mount table into memory
- */
-mntlist *
-read_mtab(char *fs, const char *mnttabname)
-{
- mntlist **mpp, *mhp;
- struct statfs *mntbufp, *mntp;
-
- int nloc = getmntinfo(&mntbufp, MNT_NOWAIT);
-
- if (nloc == 0) {
- plog(XLOG_ERROR, "Can't read mount table");
- return 0;
- }
- mpp = &mhp;
- for (mntp = mntbufp; mntp < mntbufp + nloc; mntp++) {
- /*
- * Allocate a new slot
- */
- *mpp = ALLOC(struct mntlist);
-
- /*
- * Copy the data returned by getmntent
- */
- (*mpp)->mnt = mnt_dup(mntp);
-
- /*
- * Move to next pointer
- */
- mpp = &(*mpp)->mnext;
- }
-
- /*
- * Terminate the list
- */
- *mpp = NULL;
-
- return mhp;
-}
diff --git a/contrib/amd/conf/nfs_prot/nfs_prot_freebsd2.h b/contrib/amd/conf/nfs_prot/nfs_prot_freebsd2.h
deleted file mode 100644
index 73661c9da3d8..000000000000
--- a/contrib/amd/conf/nfs_prot/nfs_prot_freebsd2.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/conf/nfs_prot/nfs_prot_freebsd2.h
- *
- */
-
-#ifndef _AMU_NFS_PROT_H
-#define _AMU_NFS_PROT_H
-
-#ifdef HAVE_RPCSVC_NFS_PROT_H
-# include <rpcsvc/nfs_prot.h>
-#endif /* HAVE_RPCSVC_NFS_PROT_H */
-
-/*
- * MACROS:
- */
-#define dr_drok_u diropres
-#define ca_where where
-#define da_fhandle dir
-#define da_name name
-#define dl_entries entries
-#define dl_eof eof
-#define dr_status status
-#define dr_u diropres_u
-#define drok_attributes attributes
-#define drok_fhandle file
-#define fh_data data
-#define la_fhandle from
-#define la_to to
-#define na_atime atime
-#define na_ctime ctime
-#define na_fileid fileid
-#define na_fsid fsid
-#define na_mode mode
-#define na_mtime mtime
-#define na_nlink nlink
-#define na_size size
-#define na_type type
-#define ne_cookie cookie
-#define ne_fileid fileid
-#define ne_name name
-#define ne_nextentry nextentry
-#define ns_attr_u attributes
-#define ns_status status
-#define ns_u attrstat_u
-#define nt_seconds seconds
-#define nt_useconds useconds
-#define rda_cookie cookie
-#define rda_count count
-#define rda_fhandle dir
-#define rdr_reply_u reply
-#define rdr_status status
-#define rdr_u readdirres_u
-#define rlr_data_u data
-#define rlr_status status
-#define rlr_u readlinkres_u
-#define rna_from from
-#define rna_to to
-#define rr_status status
-#define sag_fhandle file
-#define sfr_reply_u reply
-#define sfr_status status
-#define sfr_u statfsres_u
-#define sfrok_bavail bavail
-#define sfrok_bfree bfree
-#define sfrok_blocks blocks
-#define sfrok_bsize bsize
-#define sfrok_tsize tsize
-#define sla_from from
-#define wra_fhandle file
-
-
-/*
- * TYPEDEFS:
- */
-typedef attrstat nfsattrstat;
-typedef createargs nfscreateargs;
-typedef dirlist nfsdirlist;
-typedef diropargs nfsdiropargs;
-typedef diropres nfsdiropres;
-typedef entry nfsentry;
-typedef fattr nfsfattr;
-typedef ftype nfsftype;
-typedef linkargs nfslinkargs;
-typedef readargs nfsreadargs;
-typedef readdirargs nfsreaddirargs;
-typedef readdirres nfsreaddirres;
-typedef readlinkres nfsreadlinkres;
-typedef readres nfsreadres;
-typedef renameargs nfsrenameargs;
-typedef sattrargs nfssattrargs;
-typedef statfsokres nfsstatfsokres;
-typedef statfsres nfsstatfsres;
-typedef symlinkargs nfssymlinkargs;
-typedef writeargs nfswriteargs;
-
-
-/*
- * FreeBSD 2.2.x has NFS V3, but it does not define enough macros
- * in the headers to automatically detect it.
- * So fake it in the meant time.
- */
-#if 0
-#define MOUNT_NFS3 MOUNT_NFS
-#endif /* 0 */
-
-
-#endif /* not _AMU_NFS_PROT_H */
diff --git a/contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h b/contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h
deleted file mode 100644
index a415b8bab8f5..000000000000
--- a/contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/conf/nfs_prot/nfs_prot_freebsd3.h
- * $Id: nfs_prot_freebsd3.h,v 1.5.2.7 2004/01/06 03:15:19 ezk Exp $
- * $FreeBSD$
- *
- */
-
-#ifndef _AMU_NFS_PROT_H
-#define _AMU_NFS_PROT_H
-
-/* nfs_prot.h defines struct `nfs_fh3', but it is a ``dmr "unwarranted
- * chumminess with the C implementation". We need the more complete
- * structure, which is defined below. So get the stock `nfs_fh3'
- * out of the way.
- */
-struct nfs_fh3;
-#define nfs_fh3 nfs_fh3_fbsd_
-
-#ifdef HAVE_RPCSVC_NFS_PROT_H
-# include <rpcsvc/nfs_prot.h>
-#endif /* HAVE_RPCSVC_NFS_PROT_H */
-
-#undef nfs_fh3
-
-#ifdef HAVE_NFS_RPCV2_H
-# include <nfs/rpcv2.h>
-#endif /* HAVE_NFS_RPCV2_H */
-#ifdef HAVE_NFS_NFS_H
-# include <nfsclient/nfs.h>
-# include <nfsserver/nfs.h>
-#endif /* HAVE_NFS_NFS_H */
-#ifdef HAVE_UFS_UFS_UFSMOUNT_H
-# ifdef HAVE_UFS_UFS_EXTATTR_H
-/*
- * Define a dummy struct ufs_extattr_per_mount, which is used in struct
- * ufsmount in <ufs/ufs/ufsmount.h>.
- */
-struct ufs_extattr_per_mount;
-# endif /* HAVE_UFS_UFS_EXTATTR_H */
-# include <ufs/ufs/ufsmount.h>
-#endif /* HAVE_UFS_UFS_UFSMOUNT_H */
-
-/* nfsclient/nfsargs.h was introduced in FreeBSD 5.0, and is needed */
-#ifdef HAVE_NFSCLIENT_NFSARGS_H
-# include <nfsclient/nfsargs.h>
-#endif /* HAVE_NFSCLIENT_NFSARGS_H */
-
-/*
- * MACROS:
- */
-#define dr_drok_u diropres
-#define ca_where where
-#define da_fhandle dir
-#define da_name name
-#define dl_entries entries
-#define dl_eof eof
-#define dr_status status
-#define dr_u diropres_u
-#define drok_attributes attributes
-#define drok_fhandle file
-#define fh_data data
-#define la_fhandle from
-#define la_to to
-#define na_atime atime
-#define na_ctime ctime
-#define na_fileid fileid
-#define na_fsid fsid
-#define na_gid gid
-#define na_mode mode
-#define na_mtime mtime
-#define na_nlink nlink
-#define na_rdev rdev
-#define na_size size
-#define na_type type
-#define na_uid uid
-#define ne_cookie cookie
-#define ne_fileid fileid
-#define ne_name name
-#define ne_nextentry nextentry
-#define ns_attr_u attributes
-#define ns_status status
-#define ns_u attrstat_u
-#define nt_seconds seconds
-#define nt_useconds useconds
-#define rda_cookie cookie
-#define rda_count count
-#define rda_fhandle dir
-#define rdr_reply_u reply
-#define rdr_status status
-#define rdr_u readdirres_u
-#define rlr_data_u data
-#define rlr_status status
-#define rlr_u readlinkres_u
-#define rna_from from
-#define rna_to to
-#define rr_status status
-#define sag_fhandle file
-#define sfr_reply_u reply
-#define sfr_status status
-#define sfr_u statfsres_u
-#define sfrok_bavail bavail
-#define sfrok_bfree bfree
-#define sfrok_blocks blocks
-#define sfrok_bsize bsize
-#define sfrok_tsize tsize
-#define sla_from from
-#define wra_fhandle file
-
-
-/*
- * TYPEDEFS:
- */
-typedef attrstat nfsattrstat;
-typedef createargs nfscreateargs;
-typedef dirlist nfsdirlist;
-typedef diropargs nfsdiropargs;
-typedef diropres nfsdiropres;
-typedef entry nfsentry;
-typedef fattr nfsfattr;
-typedef ftype nfsftype;
-typedef linkargs nfslinkargs;
-typedef readargs nfsreadargs;
-typedef readdirargs nfsreaddirargs;
-typedef readdirres nfsreaddirres;
-typedef readlinkres nfsreadlinkres;
-typedef readres nfsreadres;
-typedef renameargs nfsrenameargs;
-typedef sattrargs nfssattrargs;
-typedef statfsokres nfsstatfsokres;
-typedef statfsres nfsstatfsres;
-typedef symlinkargs nfssymlinkargs;
-typedef writeargs nfswriteargs;
-
-
-/*
- *
- * FreeBSD-3.0-RELEASE has NFS V3. Older versions had it only defined
- * in the rpcgen source file. If you are on an older system, and you
- * want NFSv3 support, you need to regenerate the rpcsvc header files as
- * follows:
- * cd /usr/include/rpcsvc
- * rpcgen -h -C -DWANT_NFS3 mount.x
- * rpcgen -h -C -DWANT_NFS3 nfs_prot.x
- * If you don't want NFSv3, then you will have to turn off the NFSMNT_NFSV3
- * macro below. If the code doesn't compile, upgrade to the latest 3.0
- * version...
- */
-#ifdef NFSMNT_NFSV3
-
-# define MOUNT_NFS3 "nfs" /* is this right? */
-# define MNTOPT_NFS3 "nfs"
-
-# ifndef HAVE_XDR_LOOKUP3RES
-/*
- * FreeBSD uses different field names than are defined on most other
- * systems.
- */
-# define AMU_LOOKUP3RES_OK(x) ((x)->LOOKUP3res_u.resok)
-# define AMU_LOOKUP3RES_FAIL(x) ((x)->LOOKUP3res_u.resfail)
-# define AMU_LOOKUP3RES_FH_LEN(x) (AMU_LOOKUP3RES_OK(x).object.data.data_len)
-# define AMU_LOOKUP3RES_FH_DATA(x) (AMU_LOOKUP3RES_OK(x).object.data.data_val)
-# endif /* not HAVE_XDR_LOOKUP3RES */
-
-/* since we don't use Am-utils's aux/macros/struct_nfs_fh3.m4, we don't get
- their special searching. So restore the standard name. */
-typedef struct nfs_fh3_freebsd3 nfs_fh3;
-
-#endif /* NFSMNT_NFSV3 */
-
-#endif /* not _AMU_NFS_PROT_H */
diff --git a/contrib/amd/conf/sa_dref/sa_dref_bsd44.h b/contrib/amd/conf/sa_dref/sa_dref_bsd44.h
deleted file mode 100644
index a8075401477e..000000000000
--- a/contrib/amd/conf/sa_dref/sa_dref_bsd44.h
+++ /dev/null
@@ -1,6 +0,0 @@
-/* $srcdir/conf/sa_dref/sa_dref_bsd44.h */
-#define NFS_SA_DREF(dst, src) { \
- (dst)->addr = (struct sockaddr *) (src); \
- (dst)->addrlen = sizeof(*src); \
- }
-#define NFS_ARGS_T_ADDR_IS_POINTER 1
diff --git a/contrib/amd/conf/transp/transp_sockets.c b/contrib/amd/conf/transp/transp_sockets.c
deleted file mode 100644
index b3ad5fc5cbd3..000000000000
--- a/contrib/amd/conf/transp/transp_sockets.c
+++ /dev/null
@@ -1,533 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/conf/transp/transp_sockets.c
- *
- * Socket specific utilities.
- * -Erez Zadok <ezk@cs.columbia.edu>
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-
-
-/*
- * find the IP address that can be used to connect to the local host
- */
-void
-amu_get_myaddress(struct in_addr *iap, const char *preferred_localhost)
-{
- struct hostent *hp;
- char dq[20];
-
-#ifdef DEBUG_off
-#error this code is old and probably not useful any longer.
-#error Erez, Jan 21, 2004.
- struct sockaddr_in sin;
-
- /*
- * Most modern systems should use 127.0.0.1 as the localhost address over
- * which you can do NFS mounts. In the past we found that some NFS
- * clients may not allow mounts from localhost. So we used
- * get_myaddress() and that seemed to work. Alas, on some other systems,
- * get_myaddress() may return one of the interface addresses at random,
- * and thus use a less efficient IP address than 127.0.0.1. The solution
- * is to hard-code 127.0.0.1, but still check if get_myaddress() returns a
- * different value and warn about it.
- */
- memset((char *) &sin, 0, sizeof(sin));
- get_myaddress(&sin);
- if (sin.sin_addr.s_addr != htonl(INADDR_LOOPBACK))
- dlog("amu_get_myaddress: myaddress conflict (0x%x vs. 0x%lx)",
- sin.sin_addr.s_addr, (u_long) htonl(INADDR_LOOPBACK));
-#endif /* DEBUG_off */
-
- if (preferred_localhost == NULL)
- goto out;
-
- /* if specified preferred locahost, then try to use it */
- hp = gethostbyname(preferred_localhost);
- if (hp == NULL) {
- /* XXX: if hstrerror()/h_errno aren't portable, then need to port the next statement */
- plog(XLOG_ERROR, "Unable to resolve localhost_address \"%s\" (%s): using default",
- preferred_localhost, hstrerror(h_errno));
- goto out;
- }
- if (hp->h_addr_list == NULL) {
- plog(XLOG_ERROR, "localhost_address \"%s\" has no IP addresses: using default",
- preferred_localhost);
- goto out;
- }
- if (hp->h_addr_list[1] != NULL) {
- plog(XLOG_ERROR, "localhost_address \"%s\" has more than one IP addresses: using first",
- preferred_localhost);
- goto out;
- }
- memmove((voidp) &iap->s_addr, (voidp) hp->h_addr_list[0], sizeof(iap->s_addr));
- plog(XLOG_INFO, "localhost_address \"%s\" requested, using %s",
- preferred_localhost, inet_dquad(dq, sizeof(dq), iap->s_addr));
- return;
-
- out:
- iap->s_addr = htonl(INADDR_LOOPBACK);
-}
-
-
-/*
- * How to bind to reserved ports.
- * Note: if *pp is non-null and is greater than 0, then *pp will not be modified.
- */
-int
-bind_resv_port(int so, u_short *pp)
-{
- struct sockaddr_in sin;
- int rc;
- u_short port;
-
- memset((voidp) &sin, 0, sizeof(sin));
- sin.sin_family = AF_INET;
-
- if (pp && *pp > 0) {
- sin.sin_port = htons(*pp);
- rc = bind(so, (struct sockaddr *) &sin, sizeof(sin));
- } else {
- port = IPPORT_RESERVED;
-
- do {
- --port;
- sin.sin_port = htons(port);
- rc = bind(so, (struct sockaddr *) &sin, sizeof(sin));
- } while (rc < 0 && (int) port > IPPORT_RESERVED / 2);
-
- if (pp && rc == 0)
- *pp = port;
- }
-
- return rc;
-}
-
-
-/*
- * close a descriptor, Sockets style
- */
-int
-amu_close(int fd)
-{
- return close(fd);
-}
-
-
-/*
- * Create an rpc client attached to the mount daemon.
- */
-CLIENT *
-get_mount_client(char *unused_host, struct sockaddr_in *sin, struct timeval *tv, int *sock, u_long mnt_version)
-{
- CLIENT *client;
-
- /*
- * First try a TCP socket
- */
- if ((*sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) > 0) {
- /*
- * Bind to a privileged port
- */
- if (bind_resv_port(*sock, (u_short *) NULL) < 0)
- plog(XLOG_ERROR, "can't bind privileged port (socket)");
-
- /*
- * Find mountd port to connect to.
- * Connect to mountd.
- * Create a tcp client.
- */
- if ((sin->sin_port = htons(pmap_getport(sin, MOUNTPROG, mnt_version, IPPROTO_TCP))) != 0) {
- if (connect(*sock, (struct sockaddr *) sin, sizeof(*sin)) >= 0
- && ((client = clnttcp_create(sin, MOUNTPROG, mnt_version, sock, 0, 0)) != NULL))
- return client;
- }
- /*
- * Failed so close socket
- */
- (void) close(*sock);
- } /* tcp socket opened */
- /* TCP failed so try UDP */
- if ((*sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
- plog(XLOG_ERROR, "Can't create socket to connect to mountd: %m");
- *sock = RPC_ANYSOCK;
- return NULL;
- }
- /*
- * Bind to a privileged port
- */
- if (bind_resv_port(*sock, (u_short *) NULL) < 0)
- plog(XLOG_ERROR, "can't bind privileged port");
-
- /*
- * Zero out the port - make sure we recompute
- */
- sin->sin_port = 0;
-
- /*
- * Make a UDP client
- */
- if ((client = clntudp_create(sin, MOUNTPROG, mnt_version, *tv, sock)) == NULL) {
- (void) close(*sock);
- *sock = RPC_ANYSOCK;
- return NULL;
- }
- dlog("get_mount_client: Using udp, port %d", sin->sin_port);
- return client;
-}
-
-
-/*
- * find the address of the caller of an RPC procedure.
- */
-struct sockaddr_in *
-amu_svc_getcaller(SVCXPRT *xprt)
-{
- /* glibc 2.2 returns a sockaddr_storage ??? */
- return (struct sockaddr_in *) svc_getcaller(xprt);
-}
-
-
-/*
- * Register an RPC server:
- * return 1 on success, 0 otherwise.
- */
-int
-amu_svc_register(SVCXPRT *xprt, u_long prognum, u_long versnum,
- void (*dispatch)(struct svc_req *rqstp, SVCXPRT *transp),
- u_long protocol, struct netconfig *dummy)
-{
- /* on Sockets: svc_register returns 1 on success, 0 otherwise */
- return svc_register(xprt, prognum, versnum, dispatch, protocol);
-}
-
-
-/*
- * Create the nfs service for amd
- */
-int
-create_nfs_service(int *soNFSp, u_short *nfs_portp, SVCXPRT **nfs_xprtp, void (*dispatch_fxn)(struct svc_req *rqstp, SVCXPRT *transp), u_long nfs_version)
-{
- *soNFSp = socket(AF_INET, SOCK_DGRAM, 0);
-
- if (*soNFSp < 0 || bind_resv_port(*soNFSp, nfs_portp) < 0) {
- plog(XLOG_FATAL, "Can't create privileged nfs port (socket)");
- if (*soNFSp >= 0)
- close(*soNFSp);
- return 1;
- }
- if ((*nfs_xprtp = svcudp_create(*soNFSp)) == NULL) {
- plog(XLOG_FATAL, "cannot create rpc/udp service");
- close(*soNFSp);
- return 2;
- }
- if ((*nfs_portp = (*nfs_xprtp)->xp_port) >= IPPORT_RESERVED) {
- plog(XLOG_FATAL, "Can't create privileged nfs port");
- svc_destroy(*nfs_xprtp);
- close(*soNFSp);
- return 1;
- }
- if (!svc_register(*nfs_xprtp, NFS_PROGRAM, nfs_version, dispatch_fxn, 0)) {
- plog(XLOG_FATAL, "unable to register (%lu, %lu, 0)",
- (u_long) NFS_PROGRAM, nfs_version);
- svc_destroy(*nfs_xprtp);
- close(*soNFSp);
- return 3;
- }
-
- return 0; /* all is well */
-}
-
-
-/*
- * Create the amq service for amd (both TCP and UDP)
- */
-int
-create_amq_service(int *udp_soAMQp,
- SVCXPRT **udp_amqpp,
- struct netconfig **dummy1,
- int *tcp_soAMQp,
- SVCXPRT **tcp_amqpp,
- struct netconfig **dummy2,
- u_short preferred_amq_port)
-{
- /* first create TCP service */
- if (tcp_soAMQp) {
- *tcp_soAMQp = socket(AF_INET, SOCK_STREAM, 0);
- if (*tcp_soAMQp < 0) {
- plog(XLOG_FATAL, "cannot create tcp socket for amq service: %m");
- return 1;
- }
-
- /* next, bind to a specific (TCP) port if asked for */
- if (preferred_amq_port > 0) {
- /*
- * Note: if &preferred_amq_port is non-null and is greater than 0,
- * then the pointer will not be modified. We don't want it to be
- * modified because it was passed down to create_amq_service as a
- * non-pointer (a variable on the stack, not to be modified!)
- */
- if (bind_resv_port(*tcp_soAMQp, &preferred_amq_port) < 0) {
- plog(XLOG_FATAL, "can't bind amq service to requested TCP port %d: %m)", preferred_amq_port);
- return 1;
- }
- }
-
- /* now create RPC service handle for amq */
- if (tcp_amqpp &&
- (*tcp_amqpp = svctcp_create(*tcp_soAMQp, AMQ_SIZE, AMQ_SIZE)) == NULL) {
- plog(XLOG_FATAL, "cannot create tcp service for amq: soAMQp=%d", *tcp_soAMQp);
- return 1;
- }
-
-#ifdef SVCSET_CONNMAXREC
- /*
- * This is *BSD at its best.
- * They just had to do things differently than everyone else
- * so they fixed a library DoS issue by forcing client-side changes...
- */
-# ifndef RPC_MAXDATASIZE
-# define RPC_MAXDATASIZE 9000
-# endif /* not RPC_MAXDATASIZE */
- if (tcp_amqpp) {
- int maxrec = RPC_MAXDATASIZE;
- SVC_CONTROL(*tcp_amqpp, SVCSET_CONNMAXREC, &maxrec);
- }
-#endif /* not SVCSET_CONNMAXREC */
- }
-
- /* next create UDP service */
- if (udp_soAMQp) {
- *udp_soAMQp = socket(AF_INET, SOCK_DGRAM, 0);
- if (*udp_soAMQp < 0) {
- plog(XLOG_FATAL, "cannot create udp socket for amq service: %m");
- return 1;
- }
-
- /* next, bind to a specific (UDP) port if asked for */
- if (preferred_amq_port > 0) {
- /*
- * Note: see comment about using &preferred_amq_port above in this
- * function.
- */
- if (bind_resv_port(*udp_soAMQp, &preferred_amq_port) < 0) {
- plog(XLOG_FATAL, "can't bind amq service to requested UDP port %d: %m)", preferred_amq_port);
- return 1;
- }
- }
-
- /* now create RPC service handle for amq */
- if (udp_amqpp &&
- (*udp_amqpp = svcudp_bufcreate(*udp_soAMQp, AMQ_SIZE, AMQ_SIZE)) == NULL) {
- plog(XLOG_FATAL, "cannot create udp service for amq: soAMQp=%d", *udp_soAMQp);
- return 1;
- }
- }
-
- return 0; /* all is well */
-}
-
-
-/*
- * Check if the portmapper is running and reachable: 0==down, 1==up
- */
-int check_pmap_up(char *host, struct sockaddr_in* sin)
-{
- CLIENT *client;
- enum clnt_stat clnt_stat = RPC_TIMEDOUT; /* assume failure */
- int socket = RPC_ANYSOCK;
- struct timeval timeout;
-
- timeout.tv_sec = 2;
- timeout.tv_usec = 0;
- sin->sin_port = htons(PMAPPORT);
- client = clntudp_create(sin, PMAPPROG, PMAPVERS, timeout, &socket);
-
- if (client == (CLIENT *) NULL) {
- plog(XLOG_ERROR,
- "%s: cannot create connection to contact portmapper on host \"%s\"%s",
- __func__, host, clnt_spcreateerror(""));
- return 0;
- }
-
- timeout.tv_sec = 6;
- /* Ping the portmapper on a remote system by calling the nullproc */
- clnt_stat = clnt_call(client,
- PMAPPROC_NULL,
- (XDRPROC_T_TYPE) xdr_void,
- NULL,
- (XDRPROC_T_TYPE) xdr_void,
- NULL,
- timeout);
- clnt_destroy(client);
- close(socket);
- sin->sin_port = 0;
-
- if (clnt_stat == RPC_TIMEDOUT) {
- plog(XLOG_ERROR,
- "%s: failed to contact portmapper on host \"%s\": %s",
- __func__, host, clnt_sperrno(clnt_stat));
- return 0;
- }
- return 1;
-}
-
-
-/*
- * Find the best NFS version for a host and protocol.
- */
-u_long
-get_nfs_version(char *host, struct sockaddr_in *sin, u_long nfs_version, const char *proto, u_long def)
-{
- CLIENT *clnt;
- int again = 0;
- enum clnt_stat clnt_stat;
- struct timeval tv;
- int sock;
- char *errstr;
-
- /*
- * If not set or set wrong, then try from NFS_VERS_MAX on down. If
- * set, then try from nfs_version on down.
- */
- if (!nfs_valid_version(nfs_version)) {
- if (nfs_valid_version(def))
- nfs_version = def;
- else
- nfs_version = NFS_VERS_MAX;
- again = 1;
- }
- tv.tv_sec = 2; /* retry every 2 seconds, but also timeout */
- tv.tv_usec = 0;
-
- for (; nfs_version >= NFS_VERS_MIN; nfs_version--) {
-
- sock = RPC_ANYSOCK;
- errstr = NULL;
- if (STREQ(proto, "tcp"))
- clnt = clnttcp_create(sin, NFS_PROGRAM, nfs_version, &sock, 0, 0);
- else if (STREQ(proto, "udp"))
- clnt = clntudp_create(sin, NFS_PROGRAM, nfs_version, tv, &sock);
- else
- clnt = NULL;
-
- if (clnt != NULL) {
- /* Try three times (6/2=3) to verify the CLIENT handle. */
- tv.tv_sec = 6;
- clnt_stat = clnt_call(clnt,
- NFSPROC_NULL,
- (XDRPROC_T_TYPE) xdr_void,
- 0,
- (XDRPROC_T_TYPE) xdr_void,
- 0,
- tv);
-
- if (clnt_stat != RPC_SUCCESS)
- errstr = clnt_sperrno(clnt_stat);
-
- close(sock);
- clnt_destroy(clnt);
- if (clnt_stat == RPC_SUCCESS)
- break;
- } else {
- #ifdef HAVE_CLNT_SPCREATEERROR
- errstr = clnt_spcreateerror("");
- #else /* not HAVE_CLNT_SPCREATEERROR */
- errstr = "";
- #endif /* not HAVE_CLNT_SPCREATEERROR */
- }
-
- if (errstr) {
- plog(XLOG_INFO, "%s: NFS(%lu,%s) failed for %s: %s", __func__,
- nfs_version, proto, host, errstr);
- }
- }
-
- if (nfs_version < NFS_VERS_MIN)
- nfs_version = 0;
-
- plog(XLOG_INFO, "%s: returning NFS(%lu,%s) on host %s", __func__,
- nfs_version, proto, host);
- return nfs_version;
-}
-
-
-#if defined(HAVE_FS_AUTOFS) && defined(AUTOFS_PROG)
-/*
- * Register the autofs service for amd
- */
-int
-register_autofs_service(char *autofs_conftype, void (*autofs_dispatch)(struct svc_req *rqstp, SVCXPRT *transp))
-{
- int autofs_socket;
- SVCXPRT *autofs_xprt = NULL;
-
- autofs_socket = socket(AF_INET, SOCK_DGRAM, 0);
-
- if (autofs_socket < 0 || bind_resv_port(autofs_socket, NULL) < 0) {
- plog(XLOG_FATAL, "Can't create privileged autofs port (socket)");
- return 1;
- }
- if ((autofs_xprt = svcudp_create(autofs_socket)) == NULL) {
- plog(XLOG_FATAL, "Can't create autofs rpc/udp service");
- return 2;
- }
- if (autofs_xprt->xp_port >= IPPORT_RESERVED) {
- plog(XLOG_FATAL, "Can't create privileged autofs port");
- return 1;
- }
- if (!svc_register(autofs_xprt, AUTOFS_PROG, AUTOFS_VERS, autofs_dispatch, 0)) {
- plog(XLOG_FATAL, "unable to register (%ld, %ld, 0)",
- (u_long) AUTOFS_PROG, (u_long) AUTOFS_VERS);
- return 3;
- }
-
- return 0; /* all is well */
-}
-
-
-int
-unregister_autofs_service(char *autofs_conftype)
-{
- svc_unregister(AUTOFS_PROG, AUTOFS_VERS);
- return 0;
-}
-#endif /* HAVE_FS_AUTOFS && AUTOFS_PROG */
diff --git a/contrib/amd/conf/trap/trap_default.h b/contrib/amd/conf/trap/trap_default.h
deleted file mode 100644
index f671c419959e..000000000000
--- a/contrib/amd/conf/trap/trap_default.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* $FreeBSD$ */
-/* $srcdir/conf/trap/trap_default.h */
-#define MOUNT_TRAP(type, mnt, flags, mnt_data) mount(type, mnt->mnt_dir, flags, mnt_data)
diff --git a/contrib/amd/conf/umount/umount_bsd44.c b/contrib/amd/conf/umount/umount_bsd44.c
deleted file mode 100644
index da4412977989..000000000000
--- a/contrib/amd/conf/umount/umount_bsd44.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/conf/umount/umount_bsd44.c
- *
- */
-
-/*
- * Unmounting filesystems under BSD 4.4.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-
-
-int
-umount_fs(char *mntdir, const char *mnttabname, u_int unmount_flags)
-{
- int error;
-
-eintr:
- error = unmount(mntdir, 0);
- if (error < 0)
- error = errno;
-
- switch (error) {
- case EINVAL:
- case ENOTBLK:
- case ENOENT:
- plog(XLOG_WARNING, "unmount: %s is not mounted", mntdir);
- error = 0; /* Not really an error */
- break;
-
- case EINTR:
- /* not sure why this happens, but it does. ask kirk one day... */
- dlog("%s: unmount: %m", mntdir);
- goto eintr;
-
-#ifdef MNT2_GEN_OPT_FORCE
- case EBUSY:
- case EIO:
- case ESTALE:
- /* caller determines if forced unmounts should be used */
- if (unmount_flags & AMU_UMOUNT_FORCE) {
- error = umount2_fs(mntdir, unmount_flags);
- if (error < 0)
- error = errno;
- else
- return error;
- }
- /* fallthrough */
-#endif /* MNT2_GEN_OPT_FORCE */
-
- default:
- dlog("%s: unmount: %m", mntdir);
- break;
- }
-
- return error;
-}
-
-
-#ifdef MNT2_GEN_OPT_FORCE
-/* force unmount, no questions asked, without touching mnttab file */
-int
-umount2_fs(const char *mntdir, u_int unmount_flags)
-{
- int error = 0;
-
- if (unmount_flags & AMU_UMOUNT_FORCE) {
- plog(XLOG_INFO, "umount2_fs: trying unmount/forced on %s", mntdir);
- error = unmount(mntdir, MNT2_GEN_OPT_FORCE);
- if (error < 0 && (errno == EINVAL || errno == ENOENT))
- error = 0; /* ignore EINVAL/ENOENT */
- if (error < 0)
- plog(XLOG_WARNING, "%s: unmount/force: %m", mntdir);
- else
- dlog("%s: unmount/force: OK", mntdir);
- }
- return error;
-}
-#endif /* MNT2_GEN_OPT_FORCE */
diff --git a/contrib/amd/doc/am-utils.texi b/contrib/amd/doc/am-utils.texi
deleted file mode 100644
index 2430bafa4821..000000000000
--- a/contrib/amd/doc/am-utils.texi
+++ /dev/null
@@ -1,8745 +0,0 @@
-\input texinfo @c -*-texinfo-*-
-@c
-@c Copyright (c) 1997-2014 Erez Zadok
-@c Copyright (c) 1989 Jan-Simon Pendry
-@c Copyright (c) 1989 Imperial College of Science, Technology & Medicine
-@c Copyright (c) 1989 The Regents of the University of California.
-@c All rights reserved.
-@c
-@c This code is derived from software contributed to Berkeley by
-@c Jan-Simon Pendry at Imperial College, London.
-@c
-@c Redistribution and use in source and binary forms, with or without
-@c modification, are permitted provided that the following conditions
-@c are met:
-@c 1. Redistributions of source code must retain the above copyright
-@c notice, this list of conditions and the following disclaimer.
-@c 2. Redistributions in binary form must reproduce the above copyright
-@c notice, this list of conditions and the following disclaimer in the
-@c documentation and/or other materials provided with the distribution.
-@c 3. Neither the name of the University nor the names of its contributors
-@c may be used to endorse or promote products derived from this software
-@c without specific prior written permission.
-@c
-@c THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-@c ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-@c IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-@c ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-@c FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-@c DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-@c OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-@c HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-@c LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-@c OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-@c
-@c
-@c File: am-utils/doc/am-utils.texi
-@c
-@setfilename am-utils.info
-
-@include version.texi
-
-@c info directory entry
-@dircategory Administration
-@direntry
-* Am-utils: (am-utils). The Amd automounter suite of utilities
-@end direntry
-
-@settitle Am-utils (4.4BSD Automounter Utilities)
-@setchapternewpage odd
-
-@titlepage
-@title Am-utils (4.4BSD Automounter Utilities)
-@subtitle For version @value{VERSION}, @value{UPDATED}
-
-@author Erez Zadok
-(Originally by Jan-Simon Pendry and Nick Williams)
-
-@page
-Copyright @copyright{} 1997-2014 Erez Zadok
-@*
-Copyright @copyright{} 1989 Jan-Simon Pendry
-@*
-Copyright @copyright{} 1989 Imperial College of Science, Technology & Medicine
-@*
-Copyright @copyright{} 1989 The Regents of the University of California.
-@sp 1
-All Rights Reserved.
-@vskip 1ex
-Permission to copy this document, or any portion of it, as
-necessary for use of this software is granted provided this
-copyright notice and statement of permission are included.
-@end titlepage
-@page
-
-@c Define a new index for options.
-@syncodeindex pg cp
-@syncodeindex vr cp
-
-@ifinfo
-
-@c ################################################################
-@node Top, License, , (DIR)
-
-@b{Am-utils (4.4BSD Automounter Utilities) User Manual}
-@*
-For version @value{VERSION}, @value{UPDATED}
-
-@b{Erez Zadok}
-@*
-(Originally by Jan-Simon Pendry and Nick Williams)
-
-Copyright @copyright{} 1997-2014 Erez Zadok
-@*
-Copyright @copyright{} 1989 Jan-Simon Pendry
-@*
-Copyright @copyright{} 1989 Imperial College of Science, Technology & Medicine
-@*
-Copyright @copyright{} 1989 The Regents of the University of California.
-@*
-All Rights Reserved.
-
-Permission to copy this document, or any portion of it, as
-necessary for use of this software is granted provided this
-copyright notice and statement of permission are included.
-
-Am-utils is the 4.4BSD Automounter Tool Suite, which includes the Amd
-automounter, the Amq query and control program, the Hlfsd daemon, and
-other tools. This Info file describes how to use and understand the
-tools within Am-utils.
-@end ifinfo
-
-@menu
-* License:: Explains the terms and conditions for using
- and distributing Am-utils.
-* Distrib:: How to get the latest Am-utils distribution.
-* AddInfo:: How to get additional information.
-* Intro:: An introduction to Automounting concepts.
-* History:: History of am-utils' development.
-* Overview:: An overview of Amd.
-* Supported Platforms:: Machines and Systems supported by Amd.
-* Mount Maps:: Details of mount maps.
-* Amd Command Line Options:: All the Amd command line options explained.
-* Filesystem Types:: The different mount types supported by Amd.
-* Amd Configuration File:: The amd.conf file syntax and meaning.
-* Run-time Administration:: How to start, stop and control Amd.
-* FSinfo:: The FSinfo filesystem management tool.
-* Hlfsd:: The Home-Link Filesystem server.
-* Assorted Tools:: Other tools which come with am-utils.
-* Examples:: Some examples showing how Amd might be used.
-* Internals:: Implementation details.
-* Acknowledgments & Trademarks:: Legal Notes.
-
-Indexes
-* Index:: An item for each concept.
-@end menu
-
-@iftex
-@unnumbered Preface
-
-This manual documents the use of the 4.4BSD automounter tool suite,
-which includes @i{Amd}, @i{Amq}, @i{Hlfsd}, and other programs. This is
-primarily a reference manual. While no tutorial exists, there are
-examples available. @xref{Examples}.
-
-This manual comes in two forms: the published form and the Info form.
-The Info form is for on-line perusal with the INFO program which is
-distributed along with GNU texinfo package (a version of which is
-available for GNU Emacs).@footnote{GNU packages can be found in
-@url{ftp://ftp.gnu.org/pub/gnu/}.} Both forms contain substantially
-the same text and are generated from a common source file, which is
-distributed with the @i{Am-utils} source.
-@end iftex
-
-@c ################################################################
-@node License, Distrib, Top, Top
-@unnumbered License
-@cindex License Information
-
-@i{Am-utils} is not in the public domain; it is copyrighted and there are
-restrictions on its distribution.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-@enumerate
-
-@item
-Redistributions of source code must retain the above copyright notice,
-this list of conditions and the following disclaimer.
-
-@item
-Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-
-@item
-Neither the name of the University nor the names of its contributors may
-be used to endorse or promote products derived from this software
-without specific prior written permission.
-
-@end enumerate
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS
-BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGE.
-
-@c ################################################################
-@node Distrib, AddInfo, License, Top
-@unnumbered Source Distribution
-@cindex Source code distribution
-@cindex Obtaining the source code
-
-The @i{Am-utils} home page is located in
-@example
-@url{http://www.am-utils.org/}
-@end example
-
-You can get the latest distribution version of @i{Am-utils} from
-@example
-@url{ftp://ftp.am-utils.org/pub/am-utils/am-utils.tar.gz}
-@end example
-
-Additional alpha, beta, and release distributions are available in
-@example
-@url{ftp://ftp.am-utils.org/pub/am-utils/}.
-@end example
-
-Revision 5.2 was part of the 4.3BSD Reno distribution.
-
-Revision 5.3bsdnet, a late alpha version of 5.3, was part
-of the BSD network version 2 distribution
-
-Revision 6.0 was made independently by
-Erez Zadok at the Computer Science
-Department of @uref{http://www.cs.columbia.edu/,Columbia University},
-as part of his
-@uref{http://www.fsl.cs.sunysb.edu/docs/zadok-thesis-proposal/,PhD
-thesis work}. Am-utils (especially version 6.1) continues to be
-developed and maintained at the
-@uref{http://www.cs.sunysb.edu/,Computer Science Department} of
-@uref{http://www.stonybrook.edu/,Stony Brook University}, as a service
-to the user community.
-
-
-@xref{History}, for more details.
-
-@c ################################################################
-@node AddInfo, Intro, Distrib, Top
-@unnumbered Getting Additional Information
-@cindex Getting Additional Information
-
-@unnumberedsec Bug Reports
-@cindex Bug reports
-
-Before reporting a bug, see if it is a known one in the
-@uref{http://www.am-utils.org/docs/am-utils/BUGS.txt,bugs} file.
-
-If you find a problem and hopefully you can reproduce it, please
-describe it in detail and
-@uref{https://bugzilla.filesystems.org/,submit a bug report} via
-@uref{http://www.bugzilla.org/,Bugzilla}. Alternatively, you can send
-your bug report to the ``am-utils'' list (see
-@url{http://www.am-utils.org/} under ``Mailing Lists'') quoting the details
-of the release and your configuration. These details can be obtained
-by running the command @samp{amd -v}. It would greatly help if you
-could provide a reproducible procedure for detecting the bug you are
-reporting.
-
-Providing working patches is highly encouraged. Every patch
-incorporated, however small, will get its author an honorable mention in
-the @uref{http://www.am-utils.org/docs/am-utils/AUTHORS.txt,authors
-file}.
-
-@unnumberedsec Mailing Lists
-@cindex Mailing lists
-
-There are several mailing lists for people interested in keeping up-to-date
-with developments.
-
-@c ###############
-
-@enumerate
-
-@item
-The users mailing list, @samp{am-utils} is for
-
-@itemize @minus
-@item
-announcements of alpha and beta releases of am-utils
-@item
-reporting of bugs and patches
-@item
-discussions of new features for am-utils
-@item
-implementation and porting issues
-@end itemize
-
-To subscribe, visit @url{http://www.am-utils.org/} under ``Mailing
-Lists.'' After subscribing, you can post a message to this list. To
-avoid as much spam as possible, only subscribers to this list may post
-to it.
-
-Subscribers of @samp{am-utils} are most helpful if they have the time
-and resources to test new and development versions of amd, on as many
-different platforms as possible. They should also be prepared to
-learn and use the GNU Autoconf, Automake, and Libtool packages, as
-needed; and of course, become familiar with the complex code in the
-am-utils package. In other words, subscribers on this list should
-hopefully be able to contribute meaningfully to the development of
-amd.
-
-Note that this @samp{am-utils} list used to be called @samp{amd-dev}
-before January 1st, 2004. Please use the new name, @samp{am-utils}.
-
-@item
-The announcements mailing list, @samp{am-utils-announce} is for
-announcements only (mostly new releases). To subscribe, visit
-@url{http://www.am-utils.org/} under ``Mailing Lists.''
-This list is read-only: only am-utils developers may post to it.
-
-@item
-We distribute nightly CVS snapshots in
-@url{ftp://ftp.am-utils.org/pub/am-utils/snapshots/daily/}. If you
-like to get email notices of commits to the am-utils CVS repository,
-subscribe to the CVS logs mailing list, @samp{am-utils-cvs} at
-@url{http://www.am-utils.org/} under ``Mailing Lists.''
-
-@item
-The older list which was used to user discussions, @samp{amd-workers},
-is defunct as of January 2004. (Its last address was
-@email{amd-workers AT majordomo.glue.umd.edu}.) Don't use
-@samp{amd-workers}: use the newer, more active @samp{am-utils} list.
-
-@item
-For completeness, there's a developers-only closed list called
-@samp{am-utils-developers} (see @url{http://www.am-utils.org/} under
-``Mailing Lists'').
-
-@end enumerate
-
-@unnumberedsec Am-utils Book
-@cindex Am-utils book
-@cindex Amd book
-@cindex Automounter book
-@cindex book
-
-@uref{http://www.cs.sunysb.edu/~ezk,Erez Zadok} wrote a
-@uref{http://www.fsl.cs.sunysb.edu/docs/amd-book/,book}, titled @i{Linux NFS and
-Automounter Administration}, ISBN 0-7821-2739-8, (Sybex, 2001). The
-book is full of details and examples that go beyond what this manual
-has. The book also covers NFS in great detail. Although the book is
-geared toward Linux users, it is general enough for any Unix
-administrator and contains specific sections for non-Linux systems.
-
-@c ################################################################
-@node Intro, History, AddInfo, Top
-@unnumbered Introduction
-@cindex Introduction
-
-An @dfn{automounter} maintains a cache of mounted filesystems.
-Filesystems are mounted on demand when they are first referenced,
-and unmounted after a period of inactivity.
-
-@i{Amd} may be used as a replacement for Sun's automounter. The choice
-of which filesystem to mount can be controlled dynamically with
-@dfn{selectors}. Selectors allow decisions of the form ``hostname is
-@var{this},'' or ``architecture is not @var{that}.'' Selectors may be
-combined arbitrarily. @i{Amd} also supports a variety of filesystem
-types, including NFS, UFS and the novel @dfn{program} filesystem. The
-combination of selectors and multiple filesystem types allows identical
-configuration files to be used on all machines thus reducing the
-administrative overhead.
-
-@i{Amd} ensures that it will not hang if a remote server goes down.
-Moreover, @i{Amd} can determine when a remote server has become
-inaccessible and then mount replacement filesystems as and when they
-become available.
-
-@i{Amd} contains no proprietary source code and has been ported to
-numerous flavors of Unix.
-
-@c ################################################################
-@node History, Overview, Intro, Top
-@unnumbered History
-@cindex History
-
-The @i{Amd} package has been without an official maintainer since 1992.
-Several people have stepped in to maintain it unofficially. Most
-notable were the `upl' (Unofficial Patch Level) releases of @i{Amd},
-created by me (@uref{http://www.cs.sunysb.edu/~ezk,Erez Zadok}), and available from
-@url{ftp://ftp.am-utils.org/pub/amd/}. The last such unofficial
-release was `upl102'.
-
-Through the process of patching and aging, it was becoming more and more
-apparent that @i{Amd} was in much need of revitalizing. Maintaining
-@i{Amd} had become a difficult task. I took it upon myself to cleanup
-the code, so that it would be easier to port to new platforms, add new
-features, keep up with the many new feature requests, and deal with the
-never ending stream of bug reports.
-
-I have been working on such a release of @i{Amd} on and off since
-January of 1996. The new suite of tools is currently named "am-utils"
-(AutoMounter Utilities), in line with GNU naming conventions, befitting
-the contents of the package. In October of 1996 I had received enough
-offers to help me with this task that I decided to make a mailing list
-for this group of people. Around the same time, @i{Amd} had become a
-necessary part of my PhD thesis work, resulting in more work performed
-on am-utils.
-
-Am-utils version 6.0 was numbered with a major new release number to
-distinguish it from the last official release of @i{Amd} (5.x). Many
-new features have been added such as a GNU @code{configure} system, NFS
-Version 3, a run-time configuration file (`amd.conf'), many new ports,
-more scripts and programs, as well as numerous bug fixes. Another
-reason for the new major release number was to alert users of am-utils
-that user-visible interfaces may have changed. In order to make @i{Amd}
-work well for the next 10 years, and be easier to maintain, it was
-necessary to remove old or unused features, change various syntax files,
-etc. However, great care was taken to ensure the maximum possible
-backwards compatibility.
-
-Am-utils version 6.1 has autofs support for Linux and Solaris 2.5+ as
-@i{the} major new feature, in addition to several other minor new
-features. The autofs support is completely transparent to the
-end-user, aside from the fact that @code{/bin/pwd} now always returns
-the correct amd-ified path. The administrator can easily switch
-between NFS and autofs mounts by changing one parameter in
-@code{amd.conf}. Autofs support and maintenance was developed in
-conjunction with @email{ionut AT badula.org,Ion Badulescu}.
-
-@c ################################################################
-@node Overview, Supported Platforms, History, Top
-@chapter Overview
-
-@i{Amd} maintains a cache of mounted filesystems. Filesystems are
-@dfn{demand-mounted} when they are first referenced, and unmounted after
-a period of inactivity. @i{Amd} may be used as a replacement for Sun's
-@b{automount}(8) program. It contains no proprietary source code and
-has been ported to numerous flavors of Unix. @xref{Supported
-Platforms}.@refill
-
-@i{Amd} was designed as the basis for experimenting with filesystem
-layout and management. Although @i{Amd} has many direct applications it
-is loaded with additional features which have little practical use. At
-some point the infrequently used components may be removed to streamline
-the production system.
-
-@i{Amd} supports the notion of @dfn{replicated} filesystems by evaluating
-each member of a list of possible filesystem locations one by one.
-@i{Amd} checks that each cached mapping remains valid. Should a mapping be
-lost -- such as happens when a fileserver goes down -- @i{Amd} automatically
-selects a replacement should one be available.
-
-@menu
-* Fundamentals::
-* Filesystems and Volumes::
-* Volume Naming::
-* Volume Binding::
-* Operational Principles::
-* Mounting a Volume::
-* Automatic Unmounting::
-* Keep-alives::
-* Non-blocking Operation::
-@end menu
-
-@node Fundamentals, Filesystems and Volumes, Overview, Overview
-@comment node-name, next, previous, up
-@section Fundamentals
-@cindex Automounter fundamentals
-
-The fundamental concept behind @i{Amd} is the ability to separate the
-name used to refer to a file from the name used to refer to its physical
-storage location. This allows the same files to be accessed with the
-same name regardless of where in the network the name is used. This is
-very different from placing @file{/n/hostname} in front of the pathname
-since that includes location dependent information which may change if
-files are moved to another machine.
-
-By placing the required mappings in a centrally administered database,
-filesystems can be re-organized without requiring changes to
-configuration files, shell scripts and so on.
-
-@node Filesystems and Volumes, Volume Naming, Fundamentals, Overview
-@comment node-name, next, previous, up
-@section Filesystems and Volumes
-@cindex Filesystem
-@cindex Volume
-@cindex Fileserver
-@cindex sublink
-
-@i{Amd} views the world as a set of fileservers, each containing one or
-more filesystems where each filesystem contains one or more
-@dfn{volumes}. Here the term @dfn{volume} is used to refer to a
-coherent set of files such as a user's home directory or a @TeX{}
-distribution.@refill
-
-In order to access the contents of a volume, @i{Amd} must be told in
-which filesystem the volume resides and which host owns the filesystem.
-By default the host is assumed to be local and the volume is assumed to
-be the entire filesystem. If a filesystem contains more than one
-volume, then a @dfn{sublink} is used to refer to the sub-directory
-within the filesystem where the volume can be found.
-
-@node Volume Naming, Volume Binding, Filesystems and Volumes, Overview
-@comment node-name, next, previous, up
-@section Volume Naming
-@cindex Volume names
-@cindex Network-wide naming
-@cindex Replicated volumes
-@cindex Duplicated volumes
-@cindex Replacement volumes
-
-Volume names are defined to be unique across the entire network. A
-volume name is the pathname to the volume's root as known by the users
-of that volume. Since this name uniquely identifies the volume
-contents, all volumes can be named and accessed from each host, subject
-to administrative controls.
-
-Volumes may be replicated or duplicated. Replicated volumes contain
-identical copies of the same data and reside at two or more locations in
-the network. Each of the replicated volumes can be used
-interchangeably. Duplicated volumes each have the same name but contain
-different, though functionally identical, data. For example,
-@samp{/vol/tex} might be the name of a @TeX{} distribution which varied
-for each machine architecture.@refill
-
-@i{Amd} provides facilities to take advantage of both replicated and
-duplicated volumes. Configuration options allow a single set of
-configuration data to be shared across an entire network by taking
-advantage of replicated and duplicated volumes.
-
-@i{Amd} can take advantage of replacement volumes by mounting them as
-required should an active fileserver become unavailable.
-
-@node Volume Binding, Operational Principles, Volume Naming, Overview
-@comment node-name, next, previous, up
-@section Volume Binding
-@cindex Volume binding
-@cindex Unix namespace
-@cindex Namespace
-@cindex Binding names to filesystems
-
-Unix implements a namespace of hierarchically mounted filesystems. Two
-forms of binding between names and files are provided. A @dfn{hard
-link} completes the binding when the name is added to the filesystem. A
-@dfn{soft link} delays the binding until the name is accessed. An
-@dfn{automounter} adds a further form in which the binding of name to
-filesystem is delayed until the name is accessed.@refill
-
-The target volume, in its general form, is a tuple (host, filesystem,
-sublink) which can be used to name the physical location of any volume
-in the network.
-
-When a target is referenced, @i{Amd} ignores the sublink element and
-determines whether the required filesystem is already mounted. This is
-done by computing the local mount point for the filesystem and checking
-for an existing filesystem mounted at the same place. If such a
-filesystem already exists then it is assumed to be functionally
-identical to the target filesystem. By default there is a one-to-one
-mapping between the pair (host, filesystem) and the local mount point so
-this assumption is valid.
-
-@node Operational Principles, Mounting a Volume, Volume Binding, Overview
-@comment node-name, next, previous, up
-@section Operational Principles
-@cindex Operational principles
-
-@i{Amd} operates by introducing new mount points into the namespace.
-These are called @dfn{automount} points. The kernel sees these
-automount points as NFS filesystems being served by @i{Amd}. Having
-attached itself to the namespace, @i{Amd} is now able to control the
-view the rest of the system has of those mount points. RPC calls are
-received from the kernel one at a time.
-
-When a @dfn{lookup} call is received @i{Amd} checks whether the name is
-already known. If it is not, the required volume is mounted. A
-symbolic link pointing to the volume root is then returned. Once the
-symbolic link is returned, the kernel will send all other requests
-direct to the mounted filesystem.
-
-If a volume is not yet mounted, @i{Amd} consults a configuration
-@dfn{mount-map} corresponding to the automount point. @i{Amd} then
-makes a runtime decision on what and where to mount a filesystem based
-on the information obtained from the map.
-
-@i{Amd} does not implement all the NFS requests; only those relevant
-to name binding such as @dfn{lookup}, @dfn{readlink} and @dfn{readdir}.
-Some other calls are also implemented but most simply return an error
-code; for example @dfn{mkdir} always returns ``read-only filesystem''.
-
-@node Mounting a Volume, Automatic Unmounting, Operational Principles, Overview
-@comment node-name, next, previous, up
-@section Mounting a Volume
-@cindex Mounting a volume
-@cindex Location lists
-@cindex Alternate locations
-@cindex Mount retries
-@cindex Background mounts
-
-Each automount point has a corresponding mount map. The mount map
-contains a list of key--value pairs. The key is the name of the volume
-to be mounted. The value is a list of locations describing where the
-filesystem is stored in the network. In the source for the map the
-value would look like
-
-@display
-location1 location2 @dots{} locationN
-@end display
-
-@i{Amd} examines each location in turn. Each location may contain
-@dfn{selectors} which control whether @i{Amd} can use that location.
-For example, the location may be restricted to use by certain hosts.
-Those locations which cannot be used are ignored.
-
-@i{Amd} attempts to mount the filesystem described by each remaining
-location until a mount succeeds or @i{Amd} can no longer proceed. The
-latter can occur in three ways:
-
-@itemize @bullet
-@item
-If none of the locations could be used, or if all of the locations
-caused an error, then the last error is returned.
-
-@item
-If a location could be used but was being mounted in the background then
-@i{Amd} marks that mount as being ``in progress'' and continues with
-the next request; no reply is sent to the kernel.
-
-@item
-Lastly, one or more of the mounts may have been @dfn{deferred}. A mount
-is deferred if extra information is required before the mount can
-proceed. When the information becomes available the mount will take
-place, but in the mean time no reply is sent to the kernel. If the
-mount is deferred, @i{Amd} continues to try any remaining locations.
-@end itemize
-
-Once a volume has been mounted, @i{Amd} establishes a @dfn{volume
-mapping} which is used to satisfy subsequent requests.@refill
-
-@node Automatic Unmounting, Keep-alives, Mounting a Volume, Overview
-@comment node-name, next, previous, up
-@section Automatic Unmounting
-
-To avoid an ever increasing number of filesystem mounts, @i{Amd} removes
-volume mappings which have not been used recently. A time-to-live
-interval is associated with each mapping and when that expires the
-mapping is removed. When the last reference to a filesystem is removed,
-that filesystem is unmounted. If the unmount fails, for example the
-filesystem is still busy, the mapping is re-instated and its
-time-to-live interval is extended. The global default for this grace
-period is controlled by the @code{-w} command-line option (@pxref{-w
-Option, -w}) or the @i{amd.conf} parameter @samp{dismount_interval}
-(@pxref{dismount_interval Parameter}). It is also possible to set this
-value on a per-mount basis (@pxref{opts Option, opts, opts}).
-
-Filesystems can be forcefully timed out using the @i{Amq} command.
-@xref{Run-time Administration}. Note that on new enough systems that
-support forced unmounts, such as Linux, @i{Amd} can try to use the
-@b{umount2}(2) system call to force the unmount, if the regular
-@b{umount}(2) system call failed in a way that indicates that the
-mount point is hung or stale. @xref{forced_unmounts Parameter}.
-
-@node Keep-alives, Non-blocking Operation, Automatic Unmounting, Overview
-@comment node-name, next, previous, up
-@section Keep-alives
-@cindex Keep-alives
-@cindex Server crashes
-@cindex NFS ping
-
-Use of some filesystem types requires the presence of a server on
-another machine. If a machine crashes then it is of no concern to
-processes on that machine that the filesystem is unavailable. However,
-to processes on a remote host using that machine as a fileserver this
-event is important. This situation is most widely recognized when an
-NFS server crashes and the behavior observed on client machines is that
-more and more processes hang. In order to provide the possibility of
-recovery, @i{Amd} implements a @dfn{keep-alive} interval timer for some
-filesystem types. Currently only NFS makes use of this service.
-
-The basis of the NFS keep-alive implementation is the observation that
-most sites maintain replicated copies of common system data such as
-manual pages, most or all programs, system source code and so on. If
-one of those servers goes down it would be reasonable to mount one of
-the others as a replacement.
-
-The first part of the process is to keep track of which fileservers are
-up and which are down. @i{Amd} does this by sending RPC requests to the
-servers' NFS @code{NullProc} and checking whether a reply is returned.
-While the server state is uncertain the requests are re-transmitted at
-three second intervals and if no reply is received after four attempts
-the server is marked down. If a reply is received the fileserver is
-marked up and stays in that state for 30 seconds at which time another
-NFS ping is sent. This interval is configurable and can even be
-turned off using the @i{ping} option. @xref{opts Option}.
-
-Once a fileserver is marked down, requests continue to be sent every 30
-seconds in order to determine when the fileserver comes back up. During
-this time any reference through @i{Amd} to the filesystems on that
-server fail with the error ``Operation would block''. If a replacement
-volume is available then it will be mounted, otherwise the error is
-returned to the user.
-
-@c @i{Amd} keeps track of which servers are up and which are down.
-@c It does this by sending RPC requests to the servers' NFS {\sc NullProc} and
-@c checking whether a reply is returned. If no replies are received after a
-@c short period, @i{Amd} marks the fileserver @dfn{down}.
-@c RPC requests continue to be sent so that it will notice when a fileserver
-@c comes back up.
-@c ICMP echo packets \cite{rfc:icmp} are not used because it is the availability
-@c of the NFS service that is important, not the existence of a base kernel.
-@c Whenever a reference to a fileserver which is down is made via @i{Amd}, an alternate
-@c filesystem is mounted if one is available.
-@c
-Although this action does not protect user files, which are unique on
-the network, or processes which do not access files via @i{Amd} or
-already have open files on the hung filesystem, it can prevent most new
-processes from hanging.
-@c
-@c With a suitable combination of filesystem management and mount-maps,
-@c machines can be protected against most server downtime. This can be
-@c enhanced by allocating boot-servers dynamically which allows a diskless
-@c workstation to be quickly restarted if necessary. Once the root filesystem
-@c is mounted, @i{Amd} can be started and allowed to mount the remainder of
-@c the filesystem from whichever fileservers are available.
-
-@node Non-blocking Operation, , Keep-alives, Overview
-@comment node-name, next, previous, up
-@section Non-blocking Operation
-@cindex Non-blocking operation
-@cindex Multiple-threaded server
-@cindex RPC retries
-
-Since there is only one instance of @i{Amd} for each automount point,
-and usually only one instance on each machine, it is important that it
-is always available to service kernel calls. @i{Amd} goes to great
-lengths to ensure that it does not block in a system call. As a last
-resort @i{Amd} will fork before it attempts a system call that may block
-indefinitely, such as mounting an NFS filesystem. Other tasks such as
-obtaining filehandle information for an NFS filesystem, are done using a
-purpose built non-blocking RPC library which is integrated with
-@i{Amd}'s task scheduler. This library is also used to implement NFS
-keep-alives (@pxref{Keep-alives}).
-
-Whenever a mount is deferred or backgrounded, @i{Amd} must wait for it
-to complete before replying to the kernel. However, this would cause
-@i{Amd} to block waiting for a reply to be constructed. Rather than do
-this, @i{Amd} simply @dfn{drops} the call under the assumption that the
-kernel RPC mechanism will automatically retry the request.
-
-@c ################################################################
-@node Supported Platforms, Mount Maps, Overview, Top
-@comment node-name, next, previous, up
-@chapter Supported Platforms
-@cindex Supported Platforms
-@cindex shared libraries
-@cindex NFS V.3 support
-
-@i{Am-utils} has been ported to a wide variety of machines and operating
-systems. @i{Am-utils}'s code works for little-endian and big-endian
-machines, as well as 32 bit and 64 bit architectures. Furthermore, when
-@i{Am-utils} ports to an Operating System on one architecture, it is generally
-readily portable to the same Operating System on all platforms on which
-it is available.
-
-See the @file{INSTALL} in the distribution for more specific details on
-building and/or configuring for some systems.
-
-@c ################################################################
-@node Mount Maps, Amd Command Line Options, Supported Platforms, Top
-@comment node-name, next, previous, up
-@chapter Mount Maps
-@cindex Mount maps
-@cindex Automounter configuration maps
-@cindex Mount information
-
-@i{Amd} has no built-in knowledge of machines or filesystems.
-External @dfn{mount-maps} are used to provide the required information.
-Specifically, @i{Amd} needs to know when and under what conditions it
-should mount filesystems.
-
-The map entry corresponding to the requested name contains a list of
-possible locations from which to resolve the request. Each location
-specifies filesystem type, information required by that filesystem (for
-example the block special device in the case of UFS), and some
-information describing where to mount the filesystem (@pxref{fs Option}). A
-location may also contain @dfn{selectors} (@pxref{Selectors}).@refill
-
-@menu
-* Map Types::
-* Key Lookup::
-* Location Format::
-@end menu
-
-@node Map Types, Key Lookup, Mount Maps, Mount Maps
-@comment node-name, next, previous, up
-@section Map Types
-@cindex Mount map types
-@cindex Map types
-@cindex Configuration map types
-@cindex Types of mount map
-@cindex Types of configuration map
-@cindex Determining the map type
-
-A mount-map provides the run-time configuration information to @i{Amd}.
-Maps can be implemented in many ways. Some of the forms supported by
-@i{Amd} are regular files, ndbm databases, NIS maps, the @dfn{Hesiod}
-name server, and even the password file.
-
-A mount-map @dfn{name} is a sequence of characters. When an automount
-point is created a handle on the mount-map is obtained. For each map
-type configured, @i{Amd} attempts to reference the map of the
-appropriate type. If a map is found, @i{Amd} notes the type for future
-use and deletes the reference, for example closing any open file
-descriptors. The available maps are configured when @i{Amd} is built
-and can be displayed by running the command @samp{amd -v}.
-
-When using an @i{Amd} configuration file (@pxref{Amd Configuration File})
-and the keyword @samp{map_type} (@pxref{map_type Parameter}), you may
-force the map used to any type.
-
-By default, @i{Amd} caches data in a mode dependent on the type of map.
-This is the same as specifying @samp{cache:=mapdefault} and selects a
-suitable default cache mode depending on the map type. The individual
-defaults are described below. The @var{cache} option can be specified
-on automount points to alter the caching behavior (@pxref{Automount
-Filesystem}).@refill
-
-The following map types have been implemented, though some are not
-available on all machines. Run the command @samp{amd -v} to obtain a
-list of map types configured on your machine.
-
-@menu
-* File maps::
-* ndbm maps::
-* NIS maps::
-* NIS+ maps::
-* Hesiod maps::
-* Password maps::
-* Union maps::
-* LDAP maps::
-* Executable maps::
-@end menu
-
-@c ----------------------------------------------------------------
-@node File maps, ndbm maps, Map Types, Map Types
-@comment node-name, next, previous, up
-@subsection File maps
-@cindex File maps
-@cindex Flat file maps
-@cindex File map syntactic conventions
-
-When @i{Amd} searches a file for a map entry it does a simple scan of
-the file and supports both comments and continuation lines.
-
-Continuation lines are indicated by a backslash character (@samp{\}) as
-the last character of a line in the file. The backslash, newline character
-@emph{and any leading white space on the following line} are discarded. A maximum
-line length of 2047 characters is enforced after continuation lines are read
-but before comments are stripped. Each line must end with
-a newline character; that is newlines are terminators, not separators.
-The following examples illustrate this:
-
-@example
-key valA valB; \
- valC
-@end example
-
-specifies @emph{three} locations, and is identical to
-
-@example
-key valA valB; valC
-@end example
-
-However,
-
-@example
-key valA valB;\
- valC
-@end example
-
-specifies only @emph{two} locations, and is identical to
-
-@example
-key valA valB;valC
-@end example
-
-After a complete line has been read from the file, including
-continuations, @i{Amd} determines whether there is a comment on the
-line. A comment begins with a hash (``@samp{#}'') character and
-continues to the end of the line. There is no way to escape or change
-the comment lead-in character.
-
-Note that continuation lines and comment support @dfn{only} apply to
-file maps, or ndbm maps built with the @code{mk-amd-map} program.
-
-When caching is enabled, file maps have a default cache mode of
-@code{all} (@pxref{Automount Filesystem}).
-
-@c ----------------------------------------------------------------
-@node ndbm maps, NIS maps, File maps, Map Types
-@comment node-name, next, previous, up
-@subsection ndbm maps
-@cindex ndbm maps
-
-An ndbm map may be used as a fast access form of a file map. The program,
-@code{mk-amd-map}, converts a normal map file into an ndbm database.
-This program supports the same continuation and comment conventions that
-are provided for file maps. Note that ndbm format files may @emph{not}
-be sharable across machine architectures. The notion of speed generally
-only applies to large maps; a small map, less than a single disk block,
-is almost certainly better implemented as a file map.
-
-ndbm maps have a default cache mode of @samp{all}
-(@pxref{Automount Filesystem}).
-
-@c ----------------------------------------------------------------
-@node NIS maps, NIS+ maps, ndbm maps, Map Types
-@comment node-name, next, previous, up
-@subsection NIS maps
-@cindex NIS (YP) maps
-
-When using NIS (formerly YP), an @i{Amd} map is implemented directly
-by the underlying NIS map. Comments and continuation lines are
-@emph{not} supported in the automounter and must be stripped when
-constructing the NIS server's database.
-
-NIS maps have a default cache mode of @code{all} (@pxref{Automount
-Filesystem}).
-
-The following rule illustrates what could be added to your NIS @file{Makefile},
-in this case causing the @file{amd.home} map to be rebuilt:
-@example
-$(YPTSDIR)/amd.home.time: $(ETCDIR)/amd.home
- -@@sed -e "s/#.*$$//" -e "/^$$/d" $(ETCDIR)/amd.home | \
- awk '@{ \
- for (i = 1; i <= NF; i++) \
- if (i == NF) @{ \
- if (substr($$i, length($$i), 1) == "\\") \
- printf("%s", substr($$i, 1, length($$i) - 1)); \
- else \
- printf("%s\n", $$i); \
- @} \
- else \
- printf("%s ", $$i); \
- @}' | \
- $(MAKEDBM) - $(YPDBDIR)/amd.home; \
- touch $(YPTSDIR)/amd.home.time; \
- echo "updated amd.home"; \
- if [ ! $(NOPUSH) ]; then \
- $(YPPUSH) amd.home; \
- echo "pushed amd.home"; \
- else \
- : ; \
- fi
-@end example
-
-Here @code{$(YPTSDIR)} contains the time stamp files, and
-@code{$(YPDBDIR)} contains the dbm format NIS files.
-
-@c ----------------------------------------------------------------
-@node NIS+ maps, Hesiod maps, NIS maps, Map Types
-@comment node-name, next, previous, up
-@subsection NIS+ maps
-@cindex NIS+ maps
-
-NIS+ maps do not support cache mode @samp{all} and, when caching is
-enabled, have a default cache mode of @samp{inc}.
-
-XXX: FILL IN WITH AN EXAMPLE.
-
-@c ----------------------------------------------------------------
-@node Hesiod maps, Password maps, NIS+ maps, Map Types
-@comment node-name, next, previous, up
-@subsection Hesiod maps
-@cindex Hesiod maps
-
-When the map name begins with the string @samp{hesiod.} lookups are made
-using the @dfn{Hesiod} name server. The string following the dot is
-used as a name qualifier and is prepended with the key being located.
-The entire string is then resolved in the @code{automount} context, or
-the @i{amd.conf} parameter @samp{hesiod_base} (@pxref{hesiod_base
-Parameter}). For example, if the key is @samp{jsp} and map name is
-@samp{hesiod.homes} then @dfn{Hesiod} is asked to resolve
-@samp{jsp.homes.automount}.
-
-Hesiod maps do not support cache mode @samp{all} and, when caching is
-enabled, have a default cache mode of @samp{inc} (@pxref{Automount
-Filesystem}).
-
-The following is an example of a @dfn{Hesiod} map entry:
-
-@example
-jsp.homes.automount HS TXT "rfs:=/home/charm;rhost:=charm;sublink:=jsp"
-njw.homes.automount HS TXT "rfs:=/home/dylan/dk2;rhost:=dylan;sublink:=njw"
-@end example
-
-@c ----------------------------------------------------------------
-@node Password maps, Union maps, Hesiod maps, Map Types
-@comment node-name, next, previous, up
-@subsection Password maps
-@cindex Password file maps
-@cindex /etc/passwd maps
-@cindex User maps, automatic generation
-@cindex Automatic generation of user maps
-@cindex Using the password file as a map
-
-The password map support is unlike the four previous map types. When
-the map name is the string @file{/etc/passwd} @i{Amd} can lookup a user
-name in the password file and re-arrange the home directory field to
-produce a usable map entry.
-
-@i{Amd} assumes the home directory has the format
-`@t{/}@i{anydir}@t{/}@i{dom1}@t{/../}@i{domN}@t{/}@i{login}'.
-@c @footnote{This interpretation is not necessarily exactly what you want.}
-It breaks this string into a map entry where @code{$@{rfs@}} has the
-value `@t{/}@i{anydir}@t{/}@i{domN}', @code{$@{rhost@}} has the value
-`@i{domN}@t{.}@i{...}@t{.}@i{dom1}', and @code{$@{sublink@}} has the
-value @i{login}.@refill
-
-Thus if the password file entry was
-
-@example
-/home/achilles/jsp
-@end example
-
-the map entry used by @i{Amd} would be
-
-@example
-rfs:=/home/achilles;rhost:=achilles;sublink:=jsp
-@end example
-
-Similarly, if the password file entry was
-
-@example
-/home/cc/sugar/mjh
-@end example
-
-the map entry used by @i{Amd} would be
-
-@example
-rfs:=/home/sugar;rhost:=sugar.cc;sublink:=mhj
-@end example
-
-@c ----------------------------------------------------------------
-@node Union maps, LDAP maps, Password maps, Map Types
-@comment node-name, next, previous, up
-@subsection Union maps
-@cindex Union file maps
-
-The union map support is provided specifically for use with the union
-filesystem, @pxref{Union Filesystem}.
-
-It is identified by the string @samp{union:} which is followed by a
-colon separated list of directories. The directories are read in order,
-and the names of all entries are recorded in the map cache. Later
-directories take precedence over earlier ones. The union filesystem
-type then uses the map cache to determine the union of the names in all
-the directories.
-
-@c ----------------------------------------------------------------
-@node LDAP maps, Executable maps, Union maps, Map Types
-@comment node-name, next, previous, up
-@subsection LDAP maps
-@cindex LDAP maps
-@cindex Lightweight Directory Access Protocol
-
-LDAP (Lightweight Directory Access Protocol) maps do not support cache
-mode @samp{all} and, when caching is enabled, have a default cache mode
-of @samp{inc}.
-
-For example, an @i{Amd} map @samp{amd.home} that looks as follows:
-
-@example
-/defaults opts:=rw,intr;type:=link
-
-zing -rhost:=shekel \
- host==shekel \
- host!=shekel;type:=nfs
-@end example
-@noindent
-when converted to LDAP (@pxref{amd2ldif}), will result in the following
-LDAP database:
-@example
-$ amd2ldif amd.home CUCS < amd.home
-dn: cn=amdmap timestamp, CUCS
-cn : amdmap timestamp
-objectClass : amdmapTimestamp
-amdmapTimestamp: 873071363
-
-dn: cn=amdmap amd.home[/defaults], CUCS
-cn : amdmap amd.home[/defaults]
-objectClass : amdmap
-amdmapName : amd.home
-amdmapKey : /defaults
-amdmapValue : opts:=rw,intr;type:=link
-
-dn: cn=amdmap amd.home[], CUCS
-cn : amdmap amd.home[]
-objectClass : amdmap
-amdmapName : amd.home
-amdmapKey :
-amdmapValue :
-
-dn: cn=amdmap amd.home[zing], CUCS
-cn : amdmap amd.home[zing]
-objectClass : amdmap
-amdmapName : amd.home
-amdmapKey : zing
-amdmapValue : -rhost:=shekel host==shekel host!=shekel;type:=nfs
-@end example
-
-@c ----------------------------------------------------------------
-@node Executable maps, , LDAP maps, Map Types
-@comment node-name, next, previous, up
-@subsection Executable maps
-@cindex Executable maps
-
-An executable map is a dynamic map in which the keys and values for
-the maps are generated on the fly by a program or script. The program
-is expected to take a single parameter argument which is the key to
-lookup. If the key is found, the program should print on stdout the
-key-value pair that were found; if the key was not found, nothing
-should be printed out. Below is an sample of such a map script:
-
-@example
-#!/bin/sh
-# executable map example
-case "$1" in
- "/defaults" )
- echo "/defaults type:=nfs;rfs:=filer"
- ;;
- "a" )
- echo "a type:=nfs;fs:=/tmp"
- ;;
- "b" )
- echo "b type:=link;fs:=/usr/local"
- ;;
- * ) # no match, echo nothing
- ;;
-esac
-@end example
-
-@xref{exec_map_timeout Parameter}.
-
-@c ----------------------------------------------------------------
-@c subsection Gdbm
-@c ----------------------------------------------------------------
-@node Key Lookup, Location Format, Map Types, Mount Maps
-@comment node-name, next, previous, up
-@section How keys are looked up
-@cindex Key lookup
-@cindex Map lookup
-@cindex Looking up keys
-@cindex How keys are looked up
-@cindex Wildcards in maps
-
-The key is located in the map whose type was determined when the
-automount point was first created. In general the key is a pathname
-component. In some circumstances this may be modified by variable
-expansion (@pxref{Variable Expansion}) and prefixing. If the automount
-point has a prefix, specified by the @var{pref} option, then that is
-prepended to the search key before the map is searched.
-
-If the map cache is a @samp{regexp} cache then the key is treated as an
-egrep-style regular expression, otherwise a normal string comparison is
-made.
-
-If the key cannot be found then a @dfn{wildcard} match is attempted.
-@i{Amd} repeatedly strips the basename from the key, appends @samp{/*} and
-attempts a lookup. Finally, @i{Amd} attempts to locate the special key @samp{*}.
-
-For example, the following sequence would be checked if @file{home/dylan/dk2} was
-being located:
-
-@example
- home/dylan/dk2
- home/dylan/*
- home/*
- *
-@end example
-
-At any point when a wildcard is found, @i{Amd} proceeds as if an exact
-match had been found and the value field is then used to resolve the
-mount request, otherwise an error code is propagated back to the kernel.
-(@pxref{Filesystem Types}).@refill
-
-@node Location Format, , Key Lookup, Mount Maps
-@comment node-name, next, previous, up
-@section Location Format
-@cindex Location format
-@cindex Map entry format
-@cindex How locations are parsed
-
-The value field from the lookup provides the information required to
-mount a filesystem. The information is parsed according to the syntax
-shown below.
-
-@display
-@i{location-list}:
- @i{location-selection}
- @i{location-list} @i{white-space} @t{||} @i{white-space} @i{location-selection}
-@i{location-selection}:
- @i{location}
- @i{location-selection} @i{white-space} @i{location}
-@i{location}:
- @i{location-info}
- @t{-}@i{location-info}
- @t{-}
-@i{location-info}:
- @i{sel-or-opt}
- @i{location-info}@t{;}@i{sel-or-opt}
- @t{;}
-@i{sel-or-opt}:
- @i{selection}
- @i{opt-ass}
-@i{selection}:
- selector@t{==}@i{value}
- selector@t{!=}@i{value}
-@i{opt-ass}:
- option@t{:=}@i{value}
-@i{white-space}:
- space
- tab
-@end display
-
-Note that unquoted whitespace is not allowed in a location description.
-White space is only allowed, and is mandatory, where shown with non-terminal
-@i{white-space}.
-
-A @dfn{location-selection} is a list of possible volumes with which to
-satisfy the request. Each @dfn{location-selection} is tried
-sequentially, until either one succeeds or all fail. This, by the
-way, is different from the historically documented behavior, which
-claimed (falsely, at least for last 3 years) that @i{Amd} would
-attempt to mount all @dfn{location-selection}s in parallel and the
-first one to succeed would be used.
-
-@dfn{location-selection}s are optionally separated by the @samp{||}
-operator. The effect of this operator is to prevent use of
-location-selections to its right if any of the location-selections on
-its left were selected, whether or not any of them were successfully
-mounted (@pxref{Selectors}).@refill
-
-The location-selection, and singleton @dfn{location-list},
-@samp{type:=ufs;dev:=/dev/xd1g} would inform @i{Amd} to mount a UFS
-filesystem from the block special device @file{/dev/xd1g}.
-
-The @dfn{sel-or-opt} component is either the name of an option required
-by a specific filesystem, or it is the name of a built-in, predefined
-selector such as the architecture type. The value may be quoted with
-double quotes @samp{"}, for example
-@samp{type:="ufs";dev:="/dev/xd1g"}. These quotes are stripped when the
-value is parsed and there is no way to get a double quote into a value
-field. Double quotes are used to get white space into a value field,
-which is needed for the program filesystem (@pxref{Program Filesystem}).@refill
-
-@menu
-* Map Defaults::
-* Variable Expansion::
-* Selectors::
-* Map Options::
-@end menu
-
-@node Map Defaults, Variable Expansion, Location Format, Location Format
-@comment node-name, next, previous, up
-@subsection Map Defaults
-@cindex Map defaults
-@cindex How to set default map parameters
-@cindex Setting default map parameters
-
-A location beginning with a dash @samp{-} is used to specify default
-values for subsequent locations. Any previously specified defaults in
-the location-list are discarded. The default string can be empty in
-which case no defaults apply.
-
-The location @samp{-fs:=/mnt;opts:=ro} would set the local mount point
-to @file{/mnt} and cause mounts to be read-only by default. Defaults
-specified this way are appended to, and so override, any global map
-defaults given with @samp{/defaults}).
-
-@c
-@c A @samp{/defaults} value @dfn{gdef} and a location list
-@c \begin{quote}
-@c $@samp{-}@dfn{def}_a $\verb*+ +$ @dfn{loc}_{a_1} $\verb*+ +$ @dfn{loc}_{a_2} $\verb*+ +$ @samp{-}@dfn{def}_b $\verb*+ +$ @dfn{loc}_{b_1} \ldots$
-@c \end{quote}
-@c is equivalent to
-@c \begin{quote}
-@c $@samp{-}@dfn{gdef}@samp{;}@dfn{def}_a $\verb*+ +$ @dfn{loc}_{a_1} $\verb*+ +$ @dfn{loc}_{a_2} $\verb*+ +$ @samp{-}@dfn{gdef}@samp{;}@dfn{def}_b $\verb*+ +$ @dfn{loc}_{b_1} \ldots$
-@c \end{quote}
-@c which is equivalent to
-@c \begin{quote}
-@c $@dfn{gdef}@samp{;}@dfn{def}_a@samp{;}@dfn{loc}_{a_1} $\verb*+ +$@dfn{gdef}@samp{;}@dfn{def}_a@samp{;}@dfn{loc}_{a_2} $\verb*+ +$@dfn{gdef}@samp{;}@dfn{def}_b@samp{;}@dfn{loc}_{b_1} \ldots$
-@c \end{quote}
-
-@node Variable Expansion, Selectors, Map Defaults, Location Format
-@comment node-name, next, previous, up
-@subsection Variable Expansion
-@cindex Variable expansion
-@cindex How variables are expanded
-@cindex Pathname operators
-@cindex Domain stripping
-@cindex Domainname operators
-@cindex Stripping the local domain name
-@cindex Environment variables
-@cindex How to access environment variables in maps
-
-To allow generic location specifications @i{Amd} does variable expansion
-on each location and also on some of the option strings. Any option or
-selector appearing in the form @code{$@dfn{var}} is replaced by the
-current value of that option or selector. For example, if the value of
-@code{$@{key@}} was @samp{bin}, @code{$@{autodir@}} was @samp{/a} and
-@code{$@{fs@}} was `@t{$@{autodir@}}@t{/local/}@t{$@{key@}}' then
-after expansion @code{$@{fs@}} would have the value @samp{/a/local/bin}.
-Any environment variable can be accessed in a similar way.@refill
-
-Two pathname operators are available when expanding a variable. If the
-variable name begins with @samp{/} then only the last component of the
-pathname is substituted. For example, if @code{$@{path@}} was
-@samp{/foo/bar} then @code{$@{/path@}} would be expanded to @samp{bar}.
-Similarly, if the variable name ends with @samp{/} then all but the last
-component of the pathname is substituted. In the previous example,
-@code{$@{path/@}} would be expanded to @samp{/foo}.@refill
-
-Two domain name operators are also provided. If the variable name
-begins with @samp{.} then only the domain part of the name is
-substituted. For example, if @code{$@{rhost@}} was
-@samp{swan.doc.ic.ac.uk} then @code{$@{.rhost@}} would be expanded to
-@samp{doc.ic.ac.uk}. Similarly, if the variable name ends with @samp{.}
-then only the host component is substituted. In the previous example,
-@code{$@{rhost.@}} would be expanded to @samp{swan}.@refill
-
-Variable expansion is a two phase process. Before a location is parsed,
-all references to selectors, @i{eg} @code{$@{path@}}, are expanded. The
-location is then parsed, selections are evaluated and option assignments
-recorded. If there were no selections or they all succeeded the
-location is used and the values of the following options are expanded in
-the order given: @var{sublink}, @var{rfs}, @var{fs}, @var{opts},
-@var{remopts}, @var{mount} and @var{unmount}.
-
-Note that expansion of option values is done after @dfn{all} assignments
-have been completed and not in a purely left to right order as is done
-by the shell. This generally has the desired effect but care must be
-taken if one of the options references another, in which case the
-ordering can become significant.
-
-There are two special cases concerning variable expansion:
-
-@enumerate
-@item
-before a map is consulted, any selectors in the name received
-from the kernel are expanded. For example, if the request from the
-kernel was for `@t{$@{arch@}}@t{.bin}' and the machine architecture
-was @samp{vax}, the value given to @code{$@{key@}} would be
-@samp{vax.bin}.@refill
-
-@item
-the value of @code{$@{rhost@}} is expanded and normalized before the
-other options are expanded. The normalization process strips any local
-sub-domain components. For example, if @code{$@{domain@}} was
-@samp{Berkeley.EDU} and @code{$@{rhost@}} was initially
-@samp{snow.Berkeley.EDU}, after the normalization it would simply be
-@samp{snow}. Hostname normalization is currently done in a
-@emph{case-dependent} manner.@refill
-@end enumerate
-
-@c======================================================================
-@node Selectors, Map Options, Variable Expansion, Location Format
-@comment node-name, next, previous, up
-@subsection Selectors
-@cindex Selectors
-
-Selectors are used to control the use of a location. It is possible to
-share a mount map between many machines in such a way that filesystem
-location, architecture and operating system differences are hidden from
-the users. A selector of the form @samp{arch==sun3;os==sunos4} would only
-apply on Sun-3s running SunOS 4.x.
-
-Selectors can be negated by using @samp{!=} instead of @samp{==}. For
-example to select a location on all non-Vax machines the selector
-@samp{arch!=vax} would be used.
-
-Selectors are evaluated left to right. If a selector fails then that
-location is ignored. Thus the selectors form a conjunction and the
-locations form a disjunction. If all the locations are ignored or
-otherwise fail then @i{Amd} uses the @dfn{error} filesystem
-(@pxref{Error Filesystem}). This is equivalent to having a location
-@samp{type:=error} at the end of each mount-map entry.@refill
-
-The default value of many of the selectors listed here can be overridden
-by an @i{Amd} command line switch or in an @i{Amd} configuration file.
-@xref{Amd Configuration File}.
-
-The following selectors are currently implemented.
-
-@menu
-* arch Selector Variable::
-* autodir Selector Variable::
-* byte Selector Variable::
-* cluster Selector Variable::
-* domain Selector Variable::
-* dollar Selector Variable::
-* host Selector Variable::
-* hostd Selector Variable::
-* karch Selector Variable::
-* os Selector Variable::
-* osver Selector Variable::
-* full_os Selector Variable::
-* vendor Selector Variable::
-
-* key Selector Variable::
-* map Selector Variable::
-* netnumber Selector Variable::
-* network Selector Variable::
-* path Selector Variable::
-* wire Selector Variable::
-* uid Selector Variable::
-* gid Selector Variable::
-
-* exists Selector Function::
-* false Selector Function::
-* netgrp Selector Function::
-* netgrpd Selector Function::
-* in_network Selector Function::
-* true Selector Function::
-* xhost Selector Function::
-@end menu
-
-@c ----------------------------------------------------------------
-@node arch Selector Variable, autodir Selector Variable, Selectors, Selectors
-@comment node-name, next, previous, up
-@subsubsection arch Selector Variable
-@cindex arch Selector Variable
-@cindex arch, mount selector
-@cindex Mount selector; arch
-@cindex Selector; arch
-
-The machine architecture which was automatically determined at compile
-time. The architecture type can be displayed by running the command
-@samp{amd -v}. You can override this value also using the @code{-A}
-command line option. @xref{Supported Platforms}.@refill
-
-@c ----------------------------------------------------------------
-@node autodir Selector Variable, byte Selector Variable, arch Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection autodir Selector Variable
-@cindex autodir Selector Variable
-@cindex autodir, mount selector
-@cindex Mount selector; autodir
-@cindex Selector; autodir
-
-The default directory under which to mount filesystems. This may be
-changed by the @code{-a} command line option. @xref{fs Option}.
-
-@c ----------------------------------------------------------------
-@node byte Selector Variable, cluster Selector Variable, autodir Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection byte Selector Variable
-@cindex byte Selector Variable
-@cindex byte, mount selector
-@cindex Mount selector; byte
-@cindex Selector; byte
-
-The machine's byte ordering. This is either @samp{little}, indicating
-little-endian, or @samp{big}, indicating big-endian. One possible use
-is to share @samp{rwho} databases (@pxref{rwho servers}). Another is to
-share ndbm databases, however this use can be considered a courageous
-juggling act.
-
-@c ----------------------------------------------------------------
-@node cluster Selector Variable, domain Selector Variable, byte Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection cluster Selector Variable
-@cindex cluster Selector Variable
-@cindex cluster, mount selector
-@cindex Mount selector; cluster
-@cindex Selector; cluster
-
-This is provided as a hook for the name of the local cluster. This can
-be used to decide which servers to use for copies of replicated
-filesystems. @code{$@{cluster@}} defaults to the value of
-@code{$@{domain@}} unless a different value is set with the @code{-C}
-command line option.
-
-@c ----------------------------------------------------------------
-@node domain Selector Variable, dollar Selector Variable, cluster Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection domain Selector Variable
-@cindex domain Selector Variable
-@cindex domain, mount selector
-@cindex Mount selector; domain
-@cindex Selector; domain
-
-The local domain name as specified by the @code{-d} command line option.
-@xref{host Selector Variable}.
-
-@c ----------------------------------------------------------------
-@node dollar Selector Variable, host Selector Variable, domain Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection dollar Selector Variable
-@cindex dollar Selector Variable
-
-This is a special variable, whose sole purpose is to produce a literal
-dollar sign in the value of another variable. For example, if you have
-a remote file system whose name is @samp{/disk$s}, you can mount it by
-setting the remote file system variable as follows:
-
-@example
-rfs:=/disk$@{dollar@}s
-@end example
-
-@c ----------------------------------------------------------------
-@node host Selector Variable, hostd Selector Variable, dollar Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection host Selector Variable
-@cindex host Selector Variable
-@cindex host, mount selector
-@cindex Mount selector; host
-@cindex Selector; host
-
-The local hostname as determined by @b{gethostname}(2). If no domain
-name was specified on the command line and the hostname contains a
-period @samp{.} then the string before the period is used as the host
-name, and the string after the period is assigned to @code{$@{domain@}}.
-For example, if the hostname is @samp{styx.doc.ic.ac.uk} then
-@code{host} would be @samp{styx} and @code{domain} would be
-@samp{doc.ic.ac.uk}. @code{hostd} would be
-@samp{styx.doc.ic.ac.uk}.@refill
-
-@c ----------------------------------------------------------------
-@node hostd Selector Variable, karch Selector Variable, host Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection hostd Selector Variable
-@cindex hostd Selector Variable
-@cindex hostd, mount selector
-@cindex Mount selector; hostd
-@cindex Selector; hostd
-
-This resolves to the @code{$@{host@}} and @code{$@{domain@}}
-concatenated with a @samp{.} inserted between them if required. If
-@code{$@{domain@}} is an empty string then @code{$@{host@}} and
-@code{$@{hostd@}} will be identical.
-
-@c ----------------------------------------------------------------
-@node karch Selector Variable, os Selector Variable, hostd Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection karch Selector Variable
-@cindex karch Selector Variable
-@cindex karch, mount selector
-@cindex Mount selector; karch
-@cindex Selector; karch
-
-This is provided as a hook for the kernel architecture. This is used on
-SunOS 4 and SunOS 5, for example, to distinguish between different
-@samp{/usr/kvm} volumes. @code{$@{karch@}} defaults to the ``machine''
-value gotten from @b{uname}(2). If the @b{uname}(2) system call is not
-available, the value of @code{$@{karch@}} defaults to that of
-@code{$@{arch@}}. Finally, a different value can be set with the @code{-k}
-command line option.
-
-@c ----------------------------------------------------------------
-@node os Selector Variable, osver Selector Variable, karch Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection os Selector Variable
-@cindex os Selector Variable
-@cindex os, mount selector
-@cindex Mount selector; os
-@cindex Selector; os
-
-The operating system. Like the machine architecture, this is
-automatically determined at compile time. The operating system name can
-be displayed by running the command @samp{amd -v}. @xref{Supported
-Platforms}.@refill
-
-@c ----------------------------------------------------------------
-@node osver Selector Variable, full_os Selector Variable, os Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection osver Selector Variable
-@cindex osver Selector Variable
-@cindex osver, mount selector
-@cindex Mount selector; osver
-@cindex Selector; osver
-
-The operating system version. Like the machine architecture, this is
-automatically determined at compile time. The operating system name can
-be displayed by running the command @samp{amd -v}. @xref{Supported
-Platforms}.@refill
-
-@c ----------------------------------------------------------------
-@node full_os Selector Variable, vendor Selector Variable, osver Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection full_os Selector Variable
-@cindex full_os Selector Variable
-@cindex full_os, mount selector
-@cindex Mount selector; full_os
-@cindex Selector; full_os
-
-The full name of the operating system, including its version. This
-value is automatically determined at compile time. The full operating
-system name and version can be displayed by running the command
-@samp{amd -v}. @xref{Supported Platforms}.@refill
-
-@c ----------------------------------------------------------------
-@node vendor Selector Variable, key Selector Variable, full_os Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection vendor Selector Variable
-@cindex vendor Selector Variable
-@cindex vendor, mount selector
-@cindex Mount selector; vendor
-@cindex Selector; vendor
-
-The name of the vendor of the operating system. This value is
-automatically determined at compile time. The name of the vendor can be
-displayed by running the command @samp{amd -v}. @xref{Supported
-Platforms}.@refill
-
-
-@c ----------------------------------------------------------------
-@ifhtml
-<HR>
-@end ifhtml
-@sp 3
-The following selectors are also provided. Unlike the other selectors,
-they vary for each lookup. Note that when the name from the kernel is
-expanded prior to a map lookup, these selectors are all defined as empty
-strings.
-
-@c ----------------------------------------------------------------
-@node key Selector Variable, map Selector Variable, vendor Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection key Selector Variable
-@cindex key Selector Variable
-@cindex key, mount selector
-@cindex Mount selector; key
-@cindex Selector; key
-
-The name being resolved. For example, if @file{/home} is an automount
-point, then accessing @file{/home/foo} would set @code{$@{key@}} to the
-string @samp{foo}. The key is prefixed by the @var{pref} option set in
-the parent mount point. The default prefix is an empty string. If the
-prefix was @file{blah/} then @code{$@{key@}} would be set to
-@file{blah/foo}.@refill
-
-@c ----------------------------------------------------------------
-@node map Selector Variable, netnumber Selector Variable, key Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection map Selector Variable
-@cindex map Selector Variable
-@cindex map, mount selector
-@cindex Mount selector; map
-@cindex Selector; map
-
-The name of the mount map being used.
-
-@c ----------------------------------------------------------------
-@node netnumber Selector Variable, network Selector Variable, map Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection netnumber Selector Variable
-@cindex netnumber Selector Variable
-@cindex netnumber, mount selector
-@cindex Mount selector; netnumber
-@cindex Selector; netnumber
-
-This selector is identical to the @samp{in_network} selector function,
-see @ref{in_network Selector Function}. It will match either the name
-or number of @i{any} network interface on which this host is connected
-to. The names and numbers of all attached interfaces are available from
-the output of @samp{amd -v}.
-
-@c ----------------------------------------------------------------
-@node network Selector Variable, path Selector Variable, netnumber Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection network Selector Variable
-@cindex network Selector Variable
-@cindex network, mount selector
-@cindex Mount selector; network
-@cindex Selector; network
-
-This selector is identical to the @samp{in_network} selector function,
-see @ref{in_network Selector Function}. It will match either the name
-or number of @i{any} network interface on which this host is connected
-to. The names and numbers of all attached interfaces are available from
-the output of @samp{amd -v}.
-
-@c ----------------------------------------------------------------
-@node path Selector Variable, wire Selector Variable, network Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection path Selector Variable
-@cindex path Selector Variable
-@cindex path, mount selector
-@cindex Mount selector; path
-@cindex Selector; path
-
-The full pathname of the name being resolved. For example
-@file{/home/foo} in the example above.
-
-@c ----------------------------------------------------------------
-@node wire Selector Variable, uid Selector Variable, path Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection wire Selector Variable
-@cindex wire Selector Variable
-@cindex wire, mount selector
-@cindex Mount selector; wire
-@cindex Selector; wire
-
-This selector is identical to the @samp{in_network} selector function,
-see @ref{in_network Selector Function}. It will match either the name
-or number of @i{any} network interface on which this host is connected
-to. The names and numbers of all attached interfaces are available from
-the output of @samp{amd -v}.
-
-@c ----------------------------------------------------------------
-@node uid Selector Variable, gid Selector Variable, wire Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection uid Selector Variable
-@cindex uid Selector Variable
-@cindex uid, mount selector
-@cindex Mount selector; uid
-@cindex Selector; uid
-
-This selector provides the numeric effective user ID (UID) of the user
-which last accessed an automounted path name. This simple example shows
-how floppy mounting can be assigned only to machine owners:
-
-@example
-floppy -type:=pcfs \
- uid==2301;host==shekel;dev:=/dev/floppy \
- uid==6712;host==titan;dev=/dev/fd0 \
- uid==0;dev:=/dev/fd0c \
- type:=error
-@end example
-
-The example allows two machine owners to mount floppies on their
-designated workstations, allows the root user to mount on any host, and
-otherwise forces an error.
-
-@c ----------------------------------------------------------------
-@node gid Selector Variable, exists Selector Function, uid Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection gid Selector Variable
-@cindex gid Selector Variable
-@cindex gid, mount selector
-@cindex Mount selector; gid
-@cindex Selector; gid
-
-This selector provides the numeric effective group ID (GID) of the user
-which last accessed an automounted path name.
-
-@c ----------------------------------------------------------------
-@ifhtml
-<HR>
-@end ifhtml
-@sp 2
-The following boolean functions are selectors which take an argument
-@i{ARG}. They return a value of true or false, and thus do not need to
-be compared with a value. Each of these may be negated by prepending
-@samp{!} to their name.
-
-@c ----------------------------------------------------------------
-@node exists Selector Function, false Selector Function, gid Selector Variable, Selectors
-@comment node-name, next, previous, up
-@subsubsection exists Selector Function
-@cindex exists Selector Function
-@cindex exists, boolean mount selector
-@cindex !exists, boolean mount selector
-@cindex Mount selector; exists
-@cindex Selector; exists
-
-If the file listed by @i{ARG} exists (via @b{lstat}(2)), this function
-evaluates to true. Otherwise it evaluates to false.
-
-@c ----------------------------------------------------------------
-@node false Selector Function, netgrp Selector Function, exists Selector Function, Selectors
-@comment node-name, next, previous, up
-@subsubsection false Selector Function
-@cindex false Selector Function
-@cindex false, boolean mount selector
-@cindex !false, boolean mount selector
-@cindex Mount selector; false
-@cindex Selector; false
-
-Always evaluates to false. @i{ARG} is ignored.
-
-@c ----------------------------------------------------------------
-@node netgrp Selector Function, netgrpd Selector Function, false Selector Function, Selectors
-@comment node-name, next, previous, up
-@subsubsection netgrp Selector Function
-@cindex netgrp Selector Function
-@cindex netgrp, boolean mount selector
-@cindex !netgrp, boolean mount selector
-@cindex Mount selector; netgrp
-@cindex Selector; netgrp
-
-The argument @i{ARG} of this selector is a netgroup name followed
-optionally by a comma and a host name. If the host name is not
-specified, it defaults to @code{$@{host@}}. If the host name (short
-name) is a member of the netgroup, this selector evaluates to true.
-Otherwise it evaluates to false.
-
-For example, suppose you have a netgroup @samp{ppp-hosts}, and for
-reasons of performance, these have a local @file{/home} partition,
-while all other clients on the faster network can access a shared home
-directory. A common map to use for both might look like the
-following:
-
-@example
-home/* netgrp(ppp-hosts);type:=link;fs:=/local/$@{key@} \
- !netgrp(ppp-hosts);type:=nfs;rhost:=serv1;rfs:=/remote/$@{key@}
-@end example
-
-A more complex example that takes advantage of the two argument netgrp
-mount selector is given in the following scenario. Suppose one wants
-to mount the local scratch space from a each host under
-@file{scratch/<hostname>} and some hosts have their scratch space in a
-different path than others. Hosts in the netgroup @samp{apple-hosts}
-have their scratch space in the @file{/apple} path, where hosts in the
-netgroup @samp{cherry-hosts} have their scratch space in the
-@file{/cherry} path. For hosts that are neither in the
-@samp{apple-hosts} or @samp{cherry-hosts} netgroups we want to make a
-symlink pointing to nowhere but provide a descriptive error message in
-the link destination:
-
-@example
-scratch/* netgrp(apple-hosts,$@{/key@});type:=nfs;rhost:=$@{/key@};\
- rfs:="/apple" \
- netgrp(cherry-hosts,$@{/key@});type:=nfs;rhost:=$@{/key@};\
- rfs:="/cherry" \
- type:=link;rfs:="no local partition for $@{/key@}"
-@end example
-
-@c ----------------------------------------------------------------
-@node netgrpd Selector Function, in_network Selector Function, netgrp Selector Function, Selectors
-@comment node-name, next, previous, up
-@subsubsection netgrpd Selector Function
-@cindex netgrpd Selector Function
-@cindex netgrpd, boolean mount selector
-@cindex !netgrpd, boolean mount selector
-@cindex Mount selector; netgrpd
-@cindex Selector; netgrpd
-
-The argument @i{ARG} of this selector is a netgroup name followed
-optionally by a comma and a host name. If the host name is not
-specified, it defaults to @code{$@{hostd@}}. If the host name
-(fully-qualified name) is a member of the netgroup, this selector
-evaluates to true. Otherwise it evaluates to false.
-
-The @samp{netgrpd} function uses fully-qualified host names to match
-netgroup names, while the @samp{netgrp} function (@pxref{netgrp
-Selector Function}) uses short host names.
-
-@c ----------------------------------------------------------------
-@node in_network Selector Function, true Selector Function, netgrpd Selector Function, Selectors
-@comment node-name, next, previous, up
-@subsubsection in_network Selector Function
-@cindex in_network Selector Function
-@cindex in_network, boolean mount selector
-@cindex !in_network, boolean mount selector
-@cindex Mount selector; in_network
-@cindex Selector; in_network
-
-This selector matches against any network name or number with an
-optional netmask. First, if the current host has any network interface that is
-locally attached to the network specified in @i{ARG} (either via name or
-number), this selector evaluates to true.
-
-Second, @samp{in_network} supports a network/netmask syntax such as
-@samp{128.59.16.0/255.255.255.0}, @samp{128.59.16.0/24},
-@samp{128.59.16.0/0xffffff00}, or @samp{128.59.16.0/}. Using the last
-form, @i{Amd} will match the specified network number against the
-default netmasks of each of the locally attached interfaces.
-
-If the selector does not match, it evaluates to false.
-
-For example, suppose you have two servers that have an exportable
-@file{/opt} that smaller clients can NFS mount. The two servers are
-say, @samp{serv1} on network @samp{foo-net.site.com} and @samp{serv2} on
-network @samp{123.4.5.0}. You can write a map to be used by all clients
-that will attempt to mount the closest one as follows:
-
-@example
-opt in_network(foo-net.site.com);rhost:=serv1;rfs:=/opt \
- in_network(123.4.5.0);rhost:=serv2;rfs:=/opt \
- rhost:=fallback-server
-@end example
-
-@c ----------------------------------------------------------------
-@node true Selector Function, xhost Selector Function, in_network Selector Function, Selectors
-@comment node-name, next, previous, up
-@subsubsection true Selector Function
-@cindex true Selector Function
-@cindex true, boolean mount selector
-@cindex !true, boolean mount selector
-@cindex Mount selector; true
-@cindex Selector; true
-
-Always evaluates to true. @i{ARG} is ignored.
-
-@c ----------------------------------------------------------------
-@node xhost Selector Function, , true Selector Function, Selectors
-@comment node-name, next, previous, up
-@subsubsection xhost Selector Function
-@cindex xhost Selector Function
-@cindex xhost, boolean mount selector
-@cindex !xhost, boolean mount selector
-@cindex Mount selector; xhost
-@cindex Selector; xhost
-@cindex CNAMEs
-
-This function compares @i{ARG} against the current hostname, similarly
-to the @ref{host Selector Variable}. However, this function will
-also match if @i{ARG} is a CNAME (DNS Canonical Name, or alias) for
-the current host's name.
-
-@c ================================================================
-@node Map Options, , Selectors, Location Format
-@comment node-name, next, previous, up
-@subsection Map Options
-@cindex Map options
-@cindex Setting map options
-
-Options are parsed concurrently with selectors. The difference is that
-when an option is seen the string following the @samp{:=} is
-recorded for later use. As a minimum the @var{type} option must be
-specified. Each filesystem type has other options which must also be
-specified. @xref{Filesystem Types}, for details on the filesystem
-specific options.@refill
-
-Superfluous option specifications are ignored and are not reported
-as errors.
-
-The following options apply to more than one filesystem type.
-
-@menu
-* addopts Option::
-* delay Option::
-* fs Option::
-* opts Option::
-* remopts Option::
-* sublink Option::
-* type Option::
-@end menu
-
-@node addopts Option, delay Option, Map Options, Map Options
-@comment node-name, next, previous, up
-@subsubsection addopts Option
-@cindex Setting additional options on a mount location
-@cindex Overriding or adding options to a mount
-@cindex addopts, mount option
-@cindex Mount option; addopts
-
-This option adds additional options to default options normally
-specified in the @samp{/defaults} entry or the defaults of the key entry
-being processed (@pxref{opts Option}). Normally when you specify
-@samp{opts} in both the @samp{/defaults} and the map entry, the latter
-overrides the former completely. But with @samp{addopts} it will append
-the options and override any conflicting ones.
-
-@samp{addopts} also overrides the value of the @samp{remopts} option
-(@pxref{remopts Option}), which unless specified defaults to the value
-of @samp{opts}.
-
-Options which start with @samp{no} will override those with the same
-name that do not start with @samp{no} and vice verse. Special handling
-is given to inverted options such as @samp{soft} and @samp{hard},
-@samp{bg} and @samp{fg}, @samp{ro} and @samp{rw}, etc.
-
-For example, if the default options specified were
-@example
-opts:=rw,nosuid,intr,rsize=1024,wsize=1024,quota,posix
-@end example
-
-and the ones specified in a map entry were
-
-@example
-addopts:=grpid,suid,ro,rsize=2048,quota,nointr
-@end example
-
-then the actual options used would be
-
-@example
-wsize=1024,posix,grpid,suid,ro,rsize=2048,quota,nointr
-@end example
-
-@node delay Option, fs Option, addopts Option, Map Options
-@comment node-name, next, previous, up
-@subsubsection delay Option
-@cindex Setting a delay on a mount location
-@cindex Delaying mounts from specific locations
-@cindex Primary server
-@cindex Secondary server
-@cindex delay, mount option
-@cindex Mount option; delay
-
-The delay, in seconds, before an attempt will be made to mount from the
-current location. Auxiliary data, such as network address, file handles
-and so on are computed regardless of this value.
-
-A delay can be used to implement the notion of primary and secondary
-file servers. The secondary servers would have a delay of a few
-seconds, thus giving the primary servers a chance to respond first.
-
-@node fs Option, opts Option, delay Option, Map Options
-@comment node-name, next, previous, up
-@subsubsection fs Option
-@cindex Setting the local mount point
-@cindex Overriding the default mount point
-@cindex fs, mount option
-@cindex Mount option; fs
-
-The local mount point. The semantics of this option vary between
-filesystems.
-
-For NFS and UFS filesystems the value of @code{$@{fs@}} is used as the
-local mount point. For other filesystem types it has other meanings
-which are described in the section describing the respective filesystem
-type. It is important that this string uniquely identifies the
-filesystem being mounted. To satisfy this requirement, it should
-contain the name of the host on which the filesystem is resident and the
-pathname of the filesystem on the local or remote host.
-
-The reason for requiring the hostname is clear if replicated filesystems
-are considered. If a fileserver goes down and a replacement filesystem
-is mounted then the @dfn{local} mount point @dfn{must} be different from
-that of the filesystem which is hung. Some encoding of the filesystem
-name is required if more than one filesystem is to be mounted from any
-given host.
-
-If the hostname is first in the path then all mounts from a particular
-host will be gathered below a single directory. If that server goes
-down then the hung mount points are less likely to be accidentally
-referenced, for example when @b{getcwd}(3) traverses the namespace to
-find the pathname of the current directory.
-
-The @samp{fs} option defaults to
-@code{$@{autodir@}/$@{rhost@}$@{rfs@}}. In addition,
-@samp{rhost} defaults to the local host name (@code{$@{host@}}) and
-@samp{rfs} defaults to the value of @code{$@{path@}}, which is the full
-path of the requested file; @samp{/home/foo} in the example above
-(@pxref{Selectors}). @code{$@{autodir@}} defaults to @samp{/a} but may
-be changed with the @code{-a} command line option. Sun's automounter
-defaults to @samp{/tmp_mnt}. Note that there is no @samp{/} between
-the @code{$@{rhost@}} and @code{$@{rfs@}} since @code{$@{rfs@}} begins
-with a @samp{/}.@refill
-
-@node opts Option, remopts Option, fs Option, Map Options
-@comment node-name, next, previous, up
-@subsubsection opts Option
-@cindex Setting system mount options
-@cindex Passing parameters to the mount system call
-@cindex mount system call
-@cindex mount system call flags
-@cindex The mount system call
-@cindex opts, mount option
-@cindex Mount option; opts
-
-The options to pass to the mount system call. A leading @samp{-} is
-silently ignored. The mount options supported generally correspond to
-those used by @b{mount}(8) and are listed below. Some additional
-pseudo-options are interpreted by @i{Amd} and are also listed.
-
-Unless specifically overridden, each of the system default mount options
-applies. Any options not recognized are ignored. If no options list is
-supplied the string @samp{rw,defaults} is used and all the system
-default mount options apply. Options which are not applicable for a
-particular operating system are silently ignored. For example, only 4.4BSD
-is known to implement the @code{compress} and @code{spongy} options.
-
-@table @code
-
-@item acdirmax=@var{n}
-@cindex Mount flags; acdirmax
-Set the maximum directory attribute cache timeout to @var{n}.
-
-@item acdirmin=@var{n}
-@cindex Mount flags; acdirmin
-Set the minimum directory attribute cache timeout to @var{n}.
-
-@item acregmax=@var{n}
-@cindex Mount flags; acregmax
-Set the maximum file attribute cache timeout to @var{n}.
-
-@item acregmin=@var{n}
-@cindex Mount flags; acregmin
-Set the minimum file attribute cache timeout to @var{n}.
-
-@item actimeo=@var{n}
-@cindex Mount flags; actimeo
-Set the overall attribute cache timeout to @var{n}.
-
-@item auto
-@cindex Mount flags; auto
-@itemx ignore
-@cindex Mount flags; ignore
-Ignore this mount by @b{df}(1).
-
-@item cache
-@cindex Mount flags; cache
-Allow data to be cached from a remote server for this mount.
-
-@item closesession
-@cindex Mount flags; closesession
-For UDF mounts, close the session when unmounting.
-
-@item compress
-@cindex Mount flags; compress
-Use NFS compression protocol.
-
-@item defperm
-@cindex Mount flags; defperm
-Ignore the permission mode bits, and default file permissions to 0555,
-UID 0, and GID 0. Useful for CD-ROMs formatted as ISO-9660.
-
-@item dev
-@cindex Mount flags; dev
-Allow local special devices on this filesystem.
-
-@item dirmask=@var{n}
-@cindex Mount flags; dirmask
-For PCFS mounts, specify the maximum file permissions for directories
-in the file system. See the @samp{mask} option's description for more
-details. The mask value of @var{n} can be specified in decimal,
-octal, or hexadecimal.
-
-@item dumbtimr
-@cindex Mount flags; dumbtimr
-Turn off the dynamic retransmit timeout estimator. This may be useful
-for UDP mounts that exhibit high retry rates, since it is possible that
-the dynamically estimated timeout interval is too short.
-
-@item extatt
-@cindex Mount flags; extatt
-Enable extended attributes in ISO-9660 file systems.
-
-@item fsid
-@cindex Mount flags; fsid
-Set ID of filesystem.
-
-@item gens
-@cindex Mount flags; gens
-Enable generations in ISO-9660 file systems. Generations allow you to
-see all versions of a given file.
-
-@item gmtoff=@var{n}
-@cindex Mount flags; gmtoff
-For UDF mounts, set the time zone offset from UTC to @var{n} seconds,
-with positive values indicating east of the Prime Meridian. If not
-set, the user's current time zone will be used.
-
-@item group=@var{n}
-@cindex Mount flags; group
-For PCFS and UDF mounts, set the group of the files in the file system
-to @var{n} (which can either be a group name or a GID number). The
-default group is the group of the directory on which the file system
-is being mounted.
-
-@item grpid
-@cindex Mount flags; grpid
-Use BSD directory group-id semantics.
-
-@item int
-@cindex Mount flags; int
-@itemx intr
-@cindex Mount flags; intr
-Allow keyboard interrupts on hard mounts.
-
-@item lock
-@cindex Mount flags; lock
-Use the NFS locking protocol (default)
-
-@item longname
-@cindex Mount Flags; longname
-For PCFS mounts, force Win95 long names.
-
-@item mask=@var{n}
-@cindex Mount flags; mask
-For PCFS mounts, specify the maximum file permissions for files in the
-file system. For example, a mask of 755 specifies that, by default,
-the owner should have read, write, and execute permissions for files,
-but others should only have read and execute permissions. Only the
-nine low-order bits of mask are used. The default mask is taken from
-the directory on which the file system is being mounted. The mask
-value of @var{n} can be specified in decimal, octal, or hexadecimal.
-
-@item multi
-@cindex Mount flags; multi
-Perform multi-component lookup on files.
-
-@item maxgroups
-@cindex Mount flags; maxgroups
-Set the maximum number of groups to allow for this mount.
-
-@item nfsv3
-@cindex Mount flags; nfsv3
-Use NFS Version 3 for this mount.
-
-@item noac
-@cindex Mount flags; noac
-Turn off the attribute cache.
-
-@item noauto
-@cindex Mount flags; noauto
-This option is used by the mount command in @samp{/etc/fstab} or
-@samp{/etc/vfstab} and means not to mount this file system when mount -a
-is used.
-
-@item nocache
-@cindex Mount flags; nocache
-Do not allow data to be cached from a remote server for this
-mount.
-
-@item nocasetrans
-@cindex Mount flags; nocasetrans
-Don't do case translation. Useful for CD-ROMS formatted as
-ISO-9660.
-
-@item noconn
-@cindex Mount flags; noconn
-Don't make a connection on datagram transports.
-
-@item nocto
-@cindex Mount flags; nocto
-No close-to-open consistency.
-
-@item nodefperm
-@cindex Mount flags; nodefperm
-Do not ignore the permission mode bits. Useful for CD-ROMS formatted as
-ISO-9660.
-
-@item nodev
-@cindex Mount flags; nodev
-@itemx nodevs
-@cindex Mount flags; nodevs
-Don't allow local special devices on this filesystem.
-
-@item noexec
-@cindex Mount flags; noexec
-Don't allow program execution.
-
-@item noint
-@cindex Mount flags; noint
-Do not allow keyboard interrupts for this mount
-
-@item nojoliet
-@cindex Mount flags; nojoliet
-Turn off the Joliet extensions. Useful for CD-ROMS formatted as ISO-9660.
-
-@item nolock
-@cindex Mount flags; nolock
-Do not use the NFS locking protocol
-
-@item nomnttab
-@cindex Mount flags; nomnttab
-This option is used internally to tell Amd that a Solaris 8 system using
-mntfs is in use.
-
-@item norrip
-@cindex Mount flags; norrip
-Turn off using of the Rock Ridge Interchange Protocol (RRIP) extensions
-to ISO-9660.
-
-@item nosub
-@cindex Mount flags; nosub
-Disallow mounts beneath this mount.
-
-@item nosuid
-@cindex Mount flags; nosuid
-Don't allow set-uid or set-gid executables on this filesystem.
-
-@item noversion
-@cindex Mount flags; noversion
-Strip the extension @samp{;#} from the version string of files recorded
-on an ISO-9660 CD-ROM.
-
-@item nowin95
-@cindex Mount Flags; nowin95
-For PCFS mounts, completely ignore Win95 entries.
-
-@item optionstr
-@cindex Mount flags; optionstr
-Under Solaris 8, provide the kernel a string of options to parse and
-show as part of the special in-kernel mount file system.
-
-@item overlay
-@cindex Mount flags; overlay
-Overlay this mount on top of an existing mount, if any.
-
-@item pgthresh=@var{n}
-@cindex Mount flags; pgthresh
-Set the paging threshold to @var{n} kilobytes.
-
-@item port=@var{n}
-@cindex Mount flags; port
-Set the NFS port to @var{n}.
-
-@item posix
-@cindex Mount flags; posix
-Turn on POSIX static pathconf for mounts.
-
-@item private
-@cindex Mount flags; private
-Use local locking instead of the NLM protocol, useful for IRIX 6 only.
-
-@item proplist
-@cindex Mount flags; proplist
-Support property lists (ACLs) for this mount, useful primarily for Tru64
-UNIX.
-
-@item proto=@var{s}
-@cindex Mount flags; proto
-Use transport protocol @var{s} for NFS (can be @code{"tcp"} or @code{"udp"}).
-
-@item quota
-@cindex Mount flags; quota
-Enable quota checking on this mount.
-
-@item rdonly
-@cindex Mount flags; rdonly
-@itemx ro
-@cindex Mount flags; ro
-Mount this filesystem readonly.
-
-@item resvport
-@cindex Mount flags; resvport
-Use a reserved port (smaller than 1024) for remote NFS mounts. Most
-systems assume that, but some allow for mounts to occur on non-reserved
-ports. This causes problems when such a system tries to NFS mount one
-that requires reserved ports. It is recommended that this option always
-be on.
-
-@item retrans=@i{n}
-@cindex Mount flags; retrans
-The number of NFS retransmits made before a user error is generated by a
-@samp{soft} mounted filesystem, and before a @samp{hard} mounted
-filesystem reports @samp{NFS server @dfn{yoyo} not responding still
-trying}.
-
-@item retry
-@cindex Mount flags; retry
-Set the NFS retry counter.
-
-@item rrcaseins
-@cindex Mount flags; rrcaseins
-Enable the Rock Ridge Interchange Protocol (RRIP) case insensitive extensions.
-Useful for CD-ROMS formatted as ISO-9660.
-
-@item rrip
-@cindex Mount flags; rrip
-Uses the Rock Ridge Interchange Protocol (RRIP) extensions to ISO-9660.
-
-@item rsize=@var{n}
-@cindex Mount flags; rsize
-The NFS read packet size. You may need to set this if you are using
-NFS/UDP through a gateway or a slow link.
-
-@item rw
-@cindex Mount flags; rw
-Allow reads and writes on this filesystem.
-
-@item sessionnr=@var{n}
-@cindex Mount Flags; sessionnr
-For multisession UDF mounts, use session number @var{n} when mounting.
-
-@item shortname
-@cindex Mount Flags; longname
-For PCFS mounts, force old DOS short names only.
-
-@item soft
-@cindex Mount flags; soft
-Give up after @dfn{retrans} retransmissions.
-
-@item spongy
-@cindex Mount flags; spongy
-Like @samp{soft} for status requests, and @samp{hard} for data transfers.
-
-@item suid
-@cindex Mount flags; suid
-Allow set-uid programs on this mount.
-
-@item symttl
-@cindex Mount flags; symttl
-Turn off the symbolic link cache time-to-live.
-
-@item sync
-@cindex Mount flags; sync
-Perform synchronous filesystem operations on this mount.
-
-@item tcp
-@cindex Mount flags; tcp
-Use TCP/IP instead of UDP/IP, ignored if the NFS implementation does not
-support TCP/IP mounts.
-
-@item timeo=@var{n}
-@cindex Mount flags; timeo
-The NFS timeout, in tenth-seconds, before a request is retransmitted.
-
-@item user=@var{n}
-@cindex Mount flags; user
-For PCFS and UDF mounts, set the owner of the files in the file system
-to @var{n} (which can either be a user name or a UID number). The
-default owner is the owner of the directory on which the file system
-is being mounted.
-
-@item vers=@var{n}
-@cindex Mount flags; vers
-Use NFS protocol version number @var{n} (can be 2 or 3).
-
-@item wsize=@var{n}
-@cindex Mount flags; wsize
-The NFS write packet size. You may need to set this if you are using
-NFS/UDP through a gateway or a slow link.
-
-@end table
-
-The following options are implemented by @i{Amd}, rather than being
-passed to the kernel.
-
-@table @code
-
-@item nounmount
-@cindex Mount flags; nounmount
-Configures the mount so that its time-to-live will never expire. This
-is the default for non-network based filesystem types (such as
-mounting local disks, floppies, and CD-ROMs). See also the related
-@i{unmount} option.
-@c
-@c Implementation broken:
-
-@item ping=@var{n}
-@cindex Mount flags; ping
-The interval, in seconds, between keep-alive pings. When four
-consecutive pings have failed the mount point is marked as hung. This
-interval defaults to 30 seconds; if the ping interval is set to zero,
-@i{Amd} will use the default 30-second interval. If the interval is
-set to -1 (or any other negative value), no pings are sent and the
-host is assumed to be always up, which can cause unmounts to hang See
-the @i{softlookup} option for a better alternative. Turning pings off
-can be useful in NFS-HA (High-Availability) sites where the NFS
-service rarely goes down. Setting the ping value to a large value can
-reduce the amount of NFS_NULL chatter on your network considerably,
-especially in large sites.
-
-Note that if you have multiple @i{Amd} entries using the same file
-server, and each entry sets a different value of N, then each time Amd
-mounts a new entry, the ping value will be re-evaluated (and updated,
-turned off, or turned back on as needed). Finally, note that NFS_NULL
-pings are sent for both UDP and TCP mounts, because even a hung TCP
-mount can cause user processes to hang.
-
-@item public
-@cindex Mount flags; public
-Use WebNFS multi-component lookup on the public file handle instead of
-the mount protocol to obtain NFS file handles, as documented in the
-WebNFS Client Specification, RFC 2054. This means that @i{Amd} will not
-attempt to contact the remote portmapper or remote mountd daemon, and
-will only connect to the well-known NFS port 2049 or the port specified
-with the @i{port} mount option, thus making it easier to use NFS through
-a firewall.
-
-@item retry=@var{n}
-@cindex Mount flags; retry=@var{n}
-The number of times to retry the mount system call.
-
-@item softlookup
-@cindex Mount flags; softlookup
-Configures @i{Amd}'s behavior with respect to already-mounted shares from
-NFS fileservers that are unreachable. If softlookup is specified,
-trying to access such a share will result in an error (EIO, which is
-changed from the ENOENT 6.0 used to return). If it is not specified, a
-regular symlink is provided and the access will probably hang
-in the NFS filesystem.
-
-The default behavior depends on whether the mount is 'soft' or 'hard';
-softlookup can be used to change this default. This is changed from 6.0
-which always behaved as if softlookup was specified.
-
-@item unmount
-@cindex Mount flags; unmount
-Configures the mount so that its time-to-live will indeed expire (and
-thus may be automatically unmounted). This is also the default for
-network-based filesystem types (e.g., NFS). This option is useful for
-removable local media such as CD-ROMs, USB drives, etc. so they can
-expire when not in use, and get unmounted (such drives can get work
-out when they keep spinning). See also the related @i{nounmount}
-option.
-
-@item utimeout=@var{n}
-@cindex Mount flags; utimeout=@var{n}
-The interval, in seconds, that looked up and mounted map entries are
-cached. After that period of time, @i{Amd} will attempt to unmount
-the entries. If, however, the unmount fails (with EBUSY), then
-@i{Amd} will extend the mount's time-to-live by the @i{utimeout} value
-before the next unmount attempt is made. In fact the interval is
-extended before the unmount is attempted, to avoid thrashing. The
-default value is 120 seconds (two minutes) or as set by the @code{-w}
-command line option.
-
-@item xlatecookie
-@cindex Mount flags; xlatecookie
-Translate directory cookies between 32-long and 64-long lengths.
-
-@end table
-
-@node remopts Option, sublink Option, opts Option, Map Options
-@comment node-name, next, previous, up
-@subsubsection remopts Option
-@cindex Setting system mount options for non-local networks
-@cindex remopts, mount option
-@cindex Mount option; remopts
-
-This option has the same use as @code{$@{opts@}} but applies only when
-the remote host is on a non-local network. For example, when using NFS
-across a gateway it is often necessary to use smaller values for the
-data read and write sizes. This can simply be done by specifying the
-small values in @var{remopts}. When a non-local host is accessed, the
-smaller sizes will automatically be used.
-
-@i{Amd} determines whether a host is local by examining the network
-interface configuration at startup. Any interface changes made after
-@i{Amd} has been started will not be noticed. The likely effect will
-be that a host may incorrectly be declared non-local.
-
-Unless otherwise set, the value of @code{$@{remopts@}} is the same as
-the value of @code{$@{opts@}}.
-
-@node sublink Option, type Option, remopts Option, Map Options
-@comment node-name, next, previous, up
-@subsubsection sublink Option
-@cindex Setting the sublink option
-@cindex sublink, mount option
-@cindex Mount option; sublink
-
-The subdirectory within the mounted filesystem to which the reference
-should point. This can be used to prevent duplicate mounts in cases
-where multiple directories in the same mounted filesystem are used.
-
-@node type Option, , sublink Option, Map Options
-@comment node-name, next, previous, up
-@subsubsection type Option
-@cindex Setting the filesystem type option
-@cindex type, mount option
-@cindex Mount option; type
-
-The filesystem type to be used. @xref{Filesystem Types}, for a full
-description of each type.@refill
-
-@c ################################################################
-@node Amd Command Line Options, Filesystem Types, Mount Maps, Top
-@comment node-name, next, previous, up
-@chapter @i{Amd} Command Line Options
-@cindex Command line options, Amd
-@cindex Amd command line options
-@cindex Overriding defaults on the command line
-
-Many of @i{Amd}'s parameters can be set from the command line. The
-command line is also used to specify automount points and maps.
-
-The general format of a command line is
-
-@example
-amd [@i{options}] [@{ @i{directory} @i{map-name} [-@i{map-options}] @} ...]
-@end example
-
-For each directory and map-name given or specified in the
-@file{amd.conf} file, @i{Amd} establishes an automount point. The
-@dfn{map-options} may be any sequence of options or
-selectors---@pxref{Location Format}. The @dfn{map-options} apply only
-to @i{Amd}'s mount point.
-
-@samp{type:=toplvl;cache:=mapdefault;fs:=$@{map@}} is the default value for the
-map options. Default options for a map are read from a special entry in
-the map whose key is the string @samp{/defaults}. When default options
-are given they are prepended to any options specified in the mount-map
-locations as explained in @ref{Map Defaults}.
-
-The @dfn{options} are any combination of those listed below.
-
-Once the command line has been parsed, the automount points are mounted.
-The mount points are created if they do not already exist, in which case they
-will be removed when @i{Amd} exits.
-Finally, @i{Amd} disassociates itself from its controlling terminal and
-forks into the background.
-
-Note: Even if @i{Amd} has been built with @samp{-DDEBUG} (via
-@code{configure --enable-debug}), it will still background itself and
-disassociate itself from the controlling terminal. To use a debugger it
-is necessary to specify @samp{-D daemon} on the command line.
-However, even with all of this, mounts and unmounts are performed in the
-background, and @i{Amd} will always fork before doing them. Therefore,
-debugging what happens closely during un/mounts is more challenging.
-
-@emph{All} of @i{Amd}'s command options (save @code{-F} and @code{-T})
-can be specified in the @file{amd.conf} file. @xref{Amd Configuration
-File}. If @i{Amd} is invoked without any command line options, it will
-default to using the configuration file @file{/etc/amd.conf}, if one
-exists.
-
-@menu
-* -a Option:: Automount directory.
-* -c Option:: Cache timeout interval.
-* -d Option:: Domain name.
-* -k Option:: Kernel architecture.
-* -l Option:: Log file.
-* -n Option:: Hostname normalization.
-* -o Option:: Operating system version.
-* -p Option:: Output process id.
-* -r Option:: Restart existing mounts.
-* -t Option:: Kernel RPC timeout.
-* -v Option:: Version information.
-* -w Option:: Wait interval after failed unmount.
-* -x Option:: Log options.
-* -y Option:: NIS domain.
-* -A Option:: Operating system Architecture.
-* -C Option:: Cluster name.
-* -D Option:: Debug flags.
-* -F Option:: Amd configuration file.
-* -H Option:: Show brief help.
-* -O Option:: Operating system name.
-* -S Option:: Lock executable pages in memory.
-* -T Option:: Set tag for configuration file.
-@end menu
-
-@c ----------------------------------------------------------------
-@node -a Option, -c Option, Amd Command Line Options, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-a} @var{directory}
-@cindex Automount directory
-@cindex Setting the default mount directory
-
-Specifies the default mount directory. This option changes the variable
-@code{$@{autodir@}} which otherwise defaults to @file{/a}. For example,
-some sites prefer @file{/amd} or @file{/n}.
-
-@example
-amd -a /amd ...
-@end example
-
-@c ----------------------------------------------------------------
-@node -c Option, -d Option, -a Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-c} @var{cache-interval}
-@cindex Cache interval
-@cindex Interval before a filesystem times out
-@cindex Setting the interval before a filesystem times out
-@cindex Changing the interval before a filesystem times out
-
-Selects the period, in seconds, for which a name is cached by @i{Amd}.
-If no reference is made to the volume in this period, @i{Amd} discards
-the volume name to filesystem mapping.
-
-Once the last reference to a filesystem has been removed, @i{Amd}
-attempts to unmount the filesystem. If the unmount fails the interval
-is extended by a further period as specified by the @samp{-w} command
-line option or by the @samp{utimeout} mount option.
-
-The default @dfn{cache-interval} is 300 seconds (five minutes).
-
-@c ----------------------------------------------------------------
-@node -d Option, -k Option, -c Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-d} @var{domain}
-@cindex Domain name
-@cindex Setting the local domain name
-@cindex Overriding the local domain name
-
-Specifies the host's domain. This sets the internal variable
-@code{$@{domain@}} and affects the @code{$@{hostd@}} variable.
-
-If this option is not specified and the hostname already contains the
-local domain then that is used, otherwise the default value of
-@code{$@{domain@}} is @samp{unknown.domain}.
-
-For example, if the local domain was @samp{doc.ic.ac.uk}, @i{Amd} could
-be started as follows:
-
-@example
-amd -d doc.ic.ac.uk ...
-@end example
-
-@c ----------------------------------------------------------------
-@node -k Option, -l Option, -d Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-k} @var{kernel-architecture}
-@cindex Setting the Kernel architecture
-
-Specifies the kernel architecture of the system. This is usually the
-output of @samp{uname -m} (the ``machine'' value gotten from
-@b{uname}(2)). If the @b{uname}(2) system call is not available, the
-value of @code{$@{karch@}} defaults to that of @code{$@{arch@}}.
-
-The only effect of this option is to set the variable @code{$@{karch@}}.
-
-This option would be used as follows:
-
-@example
-amd -k `arch -k` ...
-@end example
-
-@c ----------------------------------------------------------------
-@node -l Option, -n Option, -k Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-l} @var{log-option}
-@cindex Log filename
-@cindex Setting the log file
-@cindex Using syslog to log errors
-@cindex syslog
-
-Selects the form of logging to be made. Several special @dfn{log-options}
-are recognized.
-
-@enumerate
-@item
-If @dfn{log-option} is the string @samp{syslog}, @i{Amd} will use the
-@b{syslog}(3) mechanism. If your system supports syslog facilities, then
-the default facility used is @samp{LOG_DAEMON}.
-
-@item
-@cindex syslog facility; specifying an alternate
-When using syslog, if you wish to change the facility, append its name
-to the log option name, delimited by a single colon. For example, if
-@dfn{log-options} is the string @samp{syslog:local7} then @b{Amd} will
-log messages via @b{syslog}(3) using the @samp{LOG_LOCAL7} facility. If
-the facility name specified is not recognized, @i{Amd} will default to
-@samp{LOG_DAEMON}. Note: while you can use any syslog facility
-available on your system, it is generally a bad idea to use those
-reserved for other services such as @samp{kern}, @samp{lpr},
-@samp{cron}, etc.
-
-@item
-If @dfn{log-option} is the string @samp{/dev/stderr}, @i{Amd} will use
-standard error, which is also the default target for log messages. To
-implement this, @i{Amd} simulates the effect of the @samp{/dev/fd}
-driver.
-@end enumerate
-
-Any other string is taken as a filename to use for logging. Log
-messages are appended to the file if it already exists, otherwise a new
-file is created. The file is opened once and then held open, rather
-than being re-opened for each message.
-
-Normally, when long-running daemons hold an open file descriptor on a
-log file, it is impossible to ``rotate'' the log file and compress older
-logs on a daily basis. The daemon needs to be told to discard (via
-@b{close}(2)) its file handle, and re-open the log file. This is done
-using @code{amq -l} @i{log-option}. @xref{Amq -l option}.
-
-If the @samp{syslog} option is specified but the system does not support
-syslog or if the named file cannot be opened or created, @i{Amd} will
-use standard error. Error messages generated before @i{Amd} has
-finished parsing the command line are printed on standard error.
-
-Since @i{Amd} tends to generate a lot of logging information (especially
-if debugging was turned on), and due to it being an important program
-running on the system, it is usually best to log to a separate disk
-file. In that case @i{Amd} would be started as follows:
-
-@example
-amd -l /var/log/amd ...
-@end example
-
-@c ----------------------------------------------------------------
-@node -n Option, -o Option, -l Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-n}
-@cindex Hostname normalization
-@cindex Aliased hostnames
-@cindex Resolving aliased hostnames
-@cindex Normalizing hostnames
-
-Normalizes the remote hostname before using it. Normalization is done
-by replacing the value of @code{$@{rhost@}} with the (generally fully
-qualified) primary name returned by a hostname lookup.
-
-This option should be used if several names are used to refer to a
-single host in a mount map.
-
-@c ----------------------------------------------------------------
-@node -o Option, -p Option, -n Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-o} @var{op-sys-ver}
-@cindex Operating System version
-@cindex Setting the Operating System version
-
-Overrides the compiled-in version number of the operating system, with
-@var{op-sys-ver}. Useful when the built-in version is not desired for
-backward compatibility reasons. For example, if the built-in version is
-@samp{2.5.1}, you can override it to @samp{5.5.1}, and use older maps
-that were written with the latter in mind.
-
-@c ----------------------------------------------------------------
-@node -p Option, -r Option, -o Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-p}
-@cindex Process id
-@cindex Displaying the process id
-@cindex process id of Amd daemon
-@cindex pid file, creating with -p option
-@cindex Creating a pid file
-
-Causes @i{Amd}'s process id to be printed on standard output.
-This can be redirected to a suitable file for use with kill:
-
-@example
-amd -p > /var/run/amd.pid ...
-@end example
-
-This option only has an affect if @i{Amd} is running in daemon mode.
-If @i{Amd} is started with the @code{-D daemon} debug flag, this
-option is ignored.
-
-@c ----------------------------------------------------------------
-@node -r Option, -t Option, -p Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-r}
-@cindex Restarting existing mounts
-@cindex Picking up existing mounts
-
-Tells @i{Amd} to restart existing mounts (@pxref{Inheritance Filesystem}).
-@c @dfn{This option will be made the default in the next release.}
-
-@c ----------------------------------------------------------------
-@node -t Option, -v Option, -r Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-t} @var{timeout.retransmit}
-@cindex Setting Amd's RPC parameters
-
-Specifies the RPC @dfn{timeout} interval and the @dfn{retransmit}
-counter used by the kernel to communicate to @i{Amd}. These are used to
-set the @samp{timeo} and @samp{retrans} mount options, respectively.
-The default timeout is 0.8 seconds, and the default number of
-retransmissions is 11.
-
-@i{Amd} relies on the kernel RPC retransmit mechanism to trigger mount
-retries. The values of these parameters change the overall retry
-interval. Too long an interval gives poor interactive response; too
-short an interval causes excessive retries.
-
-@c ----------------------------------------------------------------
-@node -v Option, -w Option, -t Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-v}
-@cindex Version information
-@cindex Discovering version information
-@cindex How to discover your version of Amd
-
-Print version information on standard error and then exit. The output
-is of the form:
-
-@example
-Copyright (c) 1997-1999 Erez Zadok
-Copyright (c) 1990 Jan-Simon Pendry
-Copyright (c) 1990 Imperial College of Science, Technology & Medicine
-Copyright (c) 1990 The Regents of the University of California.
-am-utils version 6.0a15 (build 61).
-Built by ezk@@example.com on date Wed Oct 22 15:21:03 EDT 1997.
-cpu=sparc (big-endian), arch=sun4, karch=sun4u.
-full_os=solaris2.5.1, os=sos5, osver=5.5.1, vendor=sun.
-Map support for: root, passwd, union, nisplus, nis, ndbm, file, error.
-AMFS: nfs, link, nfsx, nfsl, host, linkx, program, union, inherit,
- ufs, lofs, hsfs, pcfs, auto, direct, toplvl, error.
-FS: autofs, cachefs, cdfs, lofs, nfs, nfs3, pcfs, tfs, tmpfs, udf, ufs.
-Network 1: wire="mcl-lab-net.cs.columbia.edu" (netnumber=128.59.13).
-Network 2: wire="14-net.cs.columbia.edu" (netnumber=128.59.14).
-Network 3: wire="old-net.cs.columbia.edu" (netnumber=128.59.16).
-@end example
-
-The information includes the version number, number of times @i{Amd} was
-compiled on the local system, release date and name of the release.
-Following come the cpu type, byte ordering, and the architecture and
-kernel architecture as @code{$@{arch@}} and @code{$@{karch@}},
-respectively. The next line lists the operating system full name, short
-name, version, and vendor. These four values correspond to the
-variables @code{$@{full_os@}}, @code{$@{os@}}, @code{$@{osver@}}, and
-@code{$@{vendor@}}, respectively. @xref{Supported Platforms}.
-
-Then come a list of map types supported, filesystems internally
-supported by @i{Amd} (AMFS), and generic filesystems available (FS).
-Finally all known networks (if any) of this host are listed by name
-and number. They are available via the variables
-@code{$@{wire@}} or @code{$@{network@}}, and
-@code{$@{netnumber@}} (@pxref{Selectors}) or the @samp{in_network}
-selector function (@pxref{in_network Selector Function}).
-
-@c ----------------------------------------------------------------
-@node -w Option, -x Option, -v Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-w} @var{wait-timeout}
-@cindex Setting the interval between unmount attempts
-@cindex unmount attempt backoff interval
-
-Selects the interval in seconds between unmount attempts after the
-initial time-to-live has expired.
-
-This defaults to 120 seconds (two minutes).
-
-@c ----------------------------------------------------------------
-@node -x Option, -y Option, -w Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-x} @var{opts}
-@cindex Log message selection
-@cindex Selecting specific log messages
-@cindex How to select log messages
-@cindex syslog priorities
-
-Specifies the type and verbosity of log messages. @dfn{opts} is
-a comma separated list selected from the following options:
-
-@table @code
-@item fatal
-Fatal errors (cannot be turned off)
-@item error
-Non-fatal errors (cannot be turned off)
-@item user
-Non-fatal user errors
-@item warn
-Recoverable errors
-@item warning
-Alias for @code{warn}
-@item info
-Information messages
-@item map
-Mount map usage
-@item stats
-Additional statistics
-@item all
-All of the above
-@item defaults
-An alias for "fatal,error,user,warning,info".
-@end table
-
-Initially a set of default logging flags is enabled. This is as if
-@samp{-x defaults}
-or
-@samp{-x fatal,error,user,warning,info}
-had been selected. The command line is
-parsed and logging is controlled by the @code{-x} option. The very first
-set of logging flags is saved and can not be subsequently disabled using
-@i{Amq}. This default set of options is useful for general production
-use.@refill
-
-The @samp{info} messages include details of what is mounted and
-unmounted and when filesystems have timed out. If you want to have the
-default set of messages without the @samp{info} messages then you simply
-need @samp{-x noinfo}. The messages given by @samp{user} relate to
-errors in the mount maps, so these are useful when new maps are
-installed. The following table lists the syslog priorities used for each
-of the message types.@refill
-
-@table @code
-@item fatal
-@samp{LOG_CRIT}
-@item error
-@samp{LOG_ERR}
-@item user
-@samp{LOG_WARNING}
-@item warning
-@samp{LOG_WARNING}
-@item info
-@samp{LOG_INFO}
-@item debug
-@samp{LOG_DEBUG}
-@item map
-@samp{LOG_DEBUG}
-@item stats
-@samp{LOG_INFO}
-@end table
-
-The options can be prefixed by the string @samp{no} to indicate
-that this option should be turned off. For example, to obtain all
-but @samp{info} messages the option @samp{-x all,noinfo} would be used.
-
-If @i{Amd} was built with debugging enabled the @code{debug} option is
-automatically enabled regardless of the command line options.
-
-@c ----------------------------------------------------------------
-@node -y Option, -A Option, -x Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-y} @var{NIS-domain}
-@cindex NIS (YP) domain name
-@cindex Overriding the NIS (YP) domain name
-@cindex Setting the NIS (YP) domain name
-@cindex YP domain name
-
-Selects an alternate NIS domain. This is useful for debugging and
-cross-domain shared mounting. If this flag is specified, @i{Amd}
-immediately attempts to bind to a server for this domain.
-@c @i{Amd} refers to NIS maps when it starts, unless the @code{-m} option
-@c is specified, and whenever required in a mount map.
-
-@c ----------------------------------------------------------------
-@node -A Option, -C Option, -y Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-A} @var{architecture}
-@cindex Setting the operating system architecture
-
-Specifies the OS architecture of the system.
-The only effect of this option is to set the variable @code{$@{arch@}}.
-
-This option would be used as follows:
-
-@example
-amd -A i386 ...
-@end example
-
-@c ----------------------------------------------------------------
-@node -C Option, -D Option, -A Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-C} @var{cluster-name}
-@cindex Cluster names
-@cindex Setting the cluster name
-
-Specifies the name of the cluster of which the local machine is a member.
-The only effect is to set the variable @code{$@{cluster@}}.
-The @dfn{cluster-name} is will usually obtained by running another command which uses
-a database to map the local hostname into a cluster name.
-@code{$@{cluster@}} can then be used as a selector to restrict mounting of
-replicated data.
-If this option is not given, @code{$@{cluster@}} has the same value as @code{$@{domain@}}.
-This would be used as follows:
-
-@example
-amd -C `clustername` ...
-@end example
-
-@c ----------------------------------------------------------------
-@node -D Option, -F Option, -C Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-D} @var{opts}
-@cindex Debug options
-@cindex Setting debug flags
-
-Controls the verbosity and coverage of the debugging trace; @dfn{opts}
-is a comma separated list of debugging options. The @code{-D} option is
-only available if @i{Amd} was compiled with @samp{-DDEBUG}, or
-configured with @code{configure --enable-debug}. The memory debugging
-facilities (@samp{mem}) are only available if @i{Amd} was compiled with
-@samp{-DDEBUG_MEM} (in addition to @samp{-DDEBUG}), or configured with
-@code{configure --enable-debug=mem}.
-
-The most common options to use are @samp{-D trace} and @samp{-D test}
-(which turns on all the useful debug options). As usual, every option
-can be prefixed with @samp{no} to turn it off.
-
-@table @code
-@item all
-all options (excluding hrtime and mtab)
-@item defaults
-``sensible'' default options (all--excluding hrtime, mtab, and xdrtrace)
-@item test
-full debug options plus mtab,nodaemon,nofork,noamq
-@item amq
-register @i{Amd} with the RPC portmapper, for @i{Amq}
-@item daemon
-enter daemon mode
-@item fork
-fork child worker (hlfsd only)
-@item full
-program trace
-@item hrtime
-print high resolution time stamps (only if @b{syslog}(3) is not used)
-@item info
-@cindex debugging hesiod resolver service
-@cindex Hesiod; turning on RES_DEBUG
-info service specific debugging (hesiod, nis, etc.) In the case of
-hesiod maps, turns on the hesiod RES_DEBUG internal debugging option.
-@item mem
-trace memory allocations. Needs to be explicitly enabled at compile
-time with --enable-debug=mem.
-@item mtab
-use local mount-table file (defaults to @file{/tmp/mtab}, @pxref{debug_mtab_file Parameter})
-@item readdir
-show readdir progress
-@item str
-debug string munging
-@item trace
-trace RPC protocol and NFS mount arguments
-@item xdrtrace
-trace XDR routines
-@end table
-
-You may also refer to the program source for a more detailed explanation
-of the available options.
-
-@c ----------------------------------------------------------------
-@node -F Option, -H Option, -D Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-F} @var{conf-file}
-@cindex Amd configuration file; specifying name
-@cindex Amd configuration file
-@cindex amd.conf file
-
-Specify an @i{Amd} configuration file @var{conf-file} to use. For a
-description of the format and syntax, @pxref{Amd Configuration File}.
-This configuration file is used to specify any options in lieu of typing
-many of them on the command line. The @file{amd.conf} file includes
-directives for every command line option @i{Amd} has, and many more that
-are only available via the configuration file facility. The
-configuration file specified by this option is processed after all other
-options had been processed, regardless of the actual location of this
-option on the command line.
-
-@c ----------------------------------------------------------------
-@node -H Option, -O Option, -F Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-H}
-@cindex Displaying brief help
-@cindex Help; showing from Amd
-
-Print a brief help and usage string.
-
-@c ----------------------------------------------------------------
-@node -O Option, -S Option, -H Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-O} @var{op-sys-name}
-@cindex Operating System name
-@cindex Setting the Operating System name
-
-Overrides the compiled-in name of the operating system, with
-@var{op-sys-name}. Useful when the built-in name is not desired for
-backward compatibility reasons. For example, if the build in name is
-@samp{sunos5}, you can override it to the old name @samp{sos5}, and use
-older maps which were written with the latter in mind.
-
-@c ----------------------------------------------------------------
-@node -S Option, -T Option, -O Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-S}
-@cindex plock; using
-@cindex mlockall; using
-@cindex locking executable pages in memory
-
-Do @emph{not} lock the running executable pages of @i{Amd} into memory.
-To improve @i{Amd}'s performance, systems that support the @b{plock}(3)
-or @b{mlockall}(2)
-call lock the @i{Amd} process into memory. This way there is less
-chance the operating system will schedule, page out, and swap the
-@i{Amd} process as needed. This tends to improve @i{Amd}'s performance,
-at the cost of reserving the memory used by the @i{Amd} process (making
-it unavailable for other processes). If this behavior is not desired,
-use the @code{-S} option.
-
-@c ----------------------------------------------------------------
-@node -T Option, , -S Option, Amd Command Line Options
-@comment node-name, next, previous, up
-@section @code{-T} @var{tag}
-@cindex Tags for Amd configuration file
-@cindex Configuration file; tags
-
-Specify a tag to use with @file{amd.conf}. All map entries tagged with
-@var{tag} will be processed. Map entries that are not tagged are always
-processed. Map entries that are tagged with a tag other than @var{tag}
-will not be processed.
-
-@c ################################################################
-@node Filesystem Types, Amd Configuration File, Amd Command Line Options, Top
-@comment node-name, next, previous, up
-@chapter Filesystem Types
-@cindex Filesystem types
-@cindex Mount types
-@cindex Types of filesystem
-
-To mount a volume, @i{Amd} must be told the type of filesystem to be
-used. Each filesystem type typically requires additional information
-such as the fileserver name for NFS.
-
-From the point of view of @i{Amd}, a @dfn{filesystem} is anything that
-can resolve an incoming name lookup. An important feature is support
-for multiple filesystem types. Some of these filesystems are
-implemented in the local kernel and some on remote fileservers, whilst
-the others are implemented internally by @i{Amd}.@refill
-
-The two common filesystem types are UFS and NFS. Four other user
-accessible filesystems (@samp{link}, @samp{program}, @samp{auto} and
-@samp{direct}) are also implemented internally by @i{Amd} and these are
-described below. There are two additional filesystem types internal to
-@i{Amd} which are not directly accessible to the user (@samp{inherit}
-and @samp{error}). Their use is described since they may still have an
-effect visible to the user.@refill
-
-@menu
-* Network Filesystem:: A single NFS filesystem.
-* Network Host Filesystem:: NFS mount a host's entire export tree.
-* Network Filesystem Group:: An atomic group of NFS filesystems.
-* Unix Filesystem:: Native disk filesystem.
-* Caching Filesystem:: Caching from remote server filesystem.
-* CD-ROM Filesystem:: ISO9660 CD ROM.
-* UDF Filesystem:: Universal Disk Format filesystem.
-* Loopback Filesystem:: Local loopback-mount filesystem.
-* Memory/RAM Filesystem:: A memory or RAM-based filesystem.
-* Null Filesystem:: 4.4BSD's loopback-mount filesystem.
-* Floppy Filesystem:: MS-DOS Floppy filesystem.
-* Translucent Filesystem:: The directory merging filesystem.
-* Shared Memory+Swap Filesystem:: Sun's tmpfs filesystem.
-* User ID Mapping Filesystem:: 4.4BSD's umapfs filesystem.
-* Program Filesystem:: Generic Program mounts.
-* Symbolic Link Filesystem:: Local link.
-* Symbolic Link Filesystem II:: Local link referencing existing filesystem.
-* NFS-Link Filesystem:: Link if path exists, NFS otherwise.
-* Automount Filesystem::
-* Direct Automount Filesystem::
-* Union Filesystem::
-* Error Filesystem::
-* Top-level Filesystem::
-* Root Filesystem::
-* Inheritance Filesystem::
-@end menu
-
-@c ----------------------------------------------------------------
-@node Network Filesystem, Network Host Filesystem, Filesystem Types, Filesystem Types
-@comment node-name, next, previous, up
-@section Network Filesystem (@samp{nfs})
-@cindex NFS
-@cindex Mounting an NFS filesystem
-@cindex How to mount and NFS filesystem
-@cindex nfs, filesystem type
-@cindex Filesystem type; nfs
-
-The @dfn{nfs} (@samp{type:=nfs}) filesystem type provides access to Sun's NFS.
-
-@noindent
-The following options must be specified:
-
-@table @code
-@cindex rhost, mount option
-@cindex Mount option; rhost
-@item rhost
-the remote fileserver. This must be an entry in the hosts database. IP
-addresses are not accepted. The default value is taken
-from the local host name (@code{$@{host@}}) if no other value is
-specified.
-
-@cindex rfs, mount option
-@cindex Mount option; rfs
-@item rfs
-the remote filesystem.
-If no value is specified for this option, an internal default of
-@code{$@{path@}} is used.
-@end table
-
-NFS mounts require a two stage process. First, the @dfn{file handle} of
-the remote file system must be obtained from the server. Then a mount
-system call must be done on the local system. @i{Amd} keeps a cache
-of file handles for remote file systems. The cache entries have a
-lifetime of a few minutes.
-
-If a required file handle is not in the cache, @i{Amd} sends a request
-to the remote server to obtain it.
-@c @i{Amd} @dfn{does not} wait for
-@c a response; it notes that one of the locations needs retrying, but
-@c continues with any remaining locations. When the file handle becomes
-@c available, and assuming none of the other locations was successfully
-@c mounted, @i{Amd} will retry the mount. This mechanism allows several
-@c NFS filesystems to be mounted in parallel.
-@c @footnote{The mechanism
-@c is general, however NFS is the only filesystem
-@c for which the required hooks have been written.}
-@c The first one which responds with a valid file handle will be used.
-
-Historically, this documentation has maintained that @i{Amd} will try
-all the locations in parallel and use the first one which responds
-with a valid file handle. This has not been the case for quite some
-time, however. Instead, @i{Amd} will go through each location, one by
-one, and will only skip to the next one if the previous one either
-fails or times out.
-
-@noindent
-An NFS entry might be:
-
-@example
-jsp host!=charm;type:=nfs;rhost:=charm;rfs:=/home/charm;sublink:=jsp
-@end example
-
-The mount system call and any unmount attempts are always done
-in a new task to avoid the possibility of blocking @i{Amd}.
-
-@c ----------------------------------------------------------------
-@node Network Host Filesystem, Network Filesystem Group, Network Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Network Host Filesystem (@samp{host})
-@cindex Network host filesystem
-@cindex Mounting entire export trees
-@cindex How to mount all NFS exported filesystems
-@cindex host, filesystem type
-@cindex Filesystem type; host
-
-@c NOTE: the current implementation of the @dfn{host} filesystem type
-@c sometimes fails to maintain a consistent view of the remote mount tree.
-@c This happens when the mount times out and only some of the remote mounts
-@c are successfully unmounted. To prevent this from occurring, use the
-@c @samp{nounmount} mount option.
-
-The @dfn{host} (@samp{type:=host}) filesystem allows access to the entire export tree of an
-NFS server. The implementation is layered above the @samp{nfs}
-implementation so keep-alives work in the same way. The only option
-which needs to be specified is @samp{rhost} which is the name of the
-fileserver to mount.
-
-The @samp{host} filesystem type works by querying the mount daemon on
-the given fileserver to obtain its export list. @i{Amd} then obtains
-filehandles for each of the exported filesystems. Any errors at this
-stage cause that particular filesystem to be ignored. Finally each
-filesystem is mounted. Again, errors are logged but ignored. One
-common reason for mounts to fail is that the mount point does not exist.
-Although @i{Amd} attempts to automatically create the mount point, it
-may be on a remote filesystem to which @i{Amd} does not have write
-permission.
-
-When an attempt to unmount a @samp{host} filesystem mount fails, @i{Amd}
-remounts any filesystems which had successfully been unmounted. To do
-this @i{Amd} queries the mount daemon again and obtains a fresh copy of
-the export list. @i{Amd} then tries to mount any exported filesystems
-which are not currently mounted.
-
-Sun's automounter provides a special @samp{-hosts} map. To achieve the
-same effect with @i{Amd} requires two steps. First a mount map must
-be created as follows:
-
-@example
-* type:=host;rhost:=$@{key@};fs:=$@{autodir@}/$@{rhost@}/root
-@end example
-
-@noindent
-and then start @i{Amd} with the following command
-
-@example
-amd /net net.map
-@end example
-
-@noindent
-where @samp{net.map} is the name of map described above. Note that the
-value of @code{$@{fs@}} is overridden in the map. This is done to avoid
-a clash between the mount tree and any other filesystem already mounted
-from the same fileserver.
-
-If different mount options are needed for different hosts then
-additional entries can be added to the map, for example
-
-@example
-host2 opts:=ro,nosuid,soft
-@end example
-
-@noindent
-would soft mount @samp{host2} read-only.
-
-@c ----------------------------------------------------------------
-@node Network Filesystem Group, Unix Filesystem, Network Host Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Network Filesystem Group (@samp{nfsx})
-@cindex Network filesystem group
-@cindex Atomic NFS mounts
-@cindex Mounting an atomic group of NFS filesystems
-@cindex How to mount an atomic group of NFS filesystems
-@cindex nfsx, filesystem type
-@cindex Filesystem type; nfsx
-
-The @dfn{nfsx} (@samp{type:=nfsx}) filesystem allows a group of filesystems to be mounted
-from a single NFS server. The implementation is layered above the
-@samp{nfs} implementation so keep-alives work in the same way.
-
-@emph{WARNING}: @samp{nfsx} is meant to be a ``last resort'' kind of
-solution. It is racy and poorly supported. The authors @emph{highly}
-recommend that other solutions be considered before relying on it.
-
-The options are the same as for the @samp{nfs} filesystem with one
-difference for @samp{rfs}, as explained below.
-
-@noindent
-The following options should be specified:
-
-@table @code
-@item rhost
-the remote fileserver. The default value is taken from the local
-host name (@code{$@{host@}}) if no other value is specified.
-
-@item rfs
-is a list of filesystems to mount, and must be specified.
-The list is in the form of a comma separated strings.
-@end table
-
-@noindent
-For example:
-
-@example
-pub type:=nfsx;rhost:=gould;\
- rfs:=/public,/,graphics,usenet;fs:=$@{autodir@}/$@{rhost@}/root
-@end example
-
-The first string defines the root of the tree, and is applied as a
-prefix to the remaining members of the list which define the individual
-filesystems. The first string is @emph{not} used as a filesystem name.
-A serial operation is used to determine the local mount points to
-ensure a consistent layout of a tree of mounts.
-
-Here, the @emph{three} filesystems, @samp{/public},
-@samp{/public/graphics} and @samp{/public/usenet}, would be mounted.@refill
-
-A local mount point, @code{$@{fs@}}, @emph{must} be specified. The
-default local mount point will not work correctly in the general case.
-A suggestion is to use @samp{fs:=$@{autodir@}/$@{rhost@}/root}.@refill
-
-@c ----------------------------------------------------------------
-@node Unix Filesystem, Caching Filesystem, Network Filesystem Group, Filesystem Types
-@comment node-name, next, previous, up
-@section Unix Filesystem (@samp{ufs}, @samp{xfs}, or @samp{efs})
-@cindex Unix filesystem
-@cindex UFS
-@cindex XFS
-@cindex EFS
-@cindex Mounting a UFS filesystem
-@cindex Mounting a local disk
-@cindex How to mount a UFS filesystems
-@cindex How to mount a local disk
-@cindex Disk filesystems
-@cindex ufs, filesystem type
-@cindex Filesystem type; ufs
-@cindex xfs, filesystem type
-@cindex Filesystem type; xfs
-@cindex efs, filesystem type
-@cindex Filesystem type; efs
-
-The @dfn{ufs} (@samp{type:=ufs}) filesystem type provides access to the system's standard
-disk filesystem---usually a derivative of the Berkeley Fast Filesystem.
-
-@noindent
-The following option must be specified:
-
-@table @code
-@cindex dev, mount option
-@cindex Mount option; dev
-@item dev
-the block special device to be mounted.
-@end table
-
-A UFS entry might be:
-
-@example
-jsp host==charm;type:=ufs;dev:=/dev/sd0d;sublink:=jsp
-@end example
-
-UFS is the default Unix disk-based file system, which Am-utils picks up
-during the autoconfiguration phase. Some systems have more than one
-type, such as IRIX, that comes with EFS (Extent File System) and XFS
-(Extended File System). In those cases, you may explicitly set the file
-system type, by using entries such:
-
-@example
-ez1 type:=efs;dev:=/dev/xd0a
-ez2 type:=xfs;dev:=/dev/sd3c
-@end example
-
-The UFS/XFS/EFS filesystems are never timed out by default, i.e. they
-will never be unmounted by @i{Amd}. If automatic unmounting is
-desired, the ``unmount'' option should be added to the mount options
-for the entry.
-
-@c ----------------------------------------------------------------
-@node Caching Filesystem, CD-ROM Filesystem, Unix Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Caching Filesystem (@samp{cachefs})
-@cindex Caching Filesystem
-@cindex cachefs, filesystem type
-@cindex Filesystem type; cachefs
-
-The @dfn{cachefs} (@samp{type:=cachefs}) filesystem caches files from
-one location onto another, presumably providing faster access. It is
-particularly useful to cache from a larger and remote (slower) NFS
-partition to a smaller and local (faster) UFS directory.
-
-@noindent
-The following options must be specified:
-
-@table @code
-@cindex cachedir, mount option
-@cindex Mount option; cachedir
-@item cachedir
-the directory where the cache is stored.
-@item rfs
-the path name to the ``back file system'' to be cached from.
-@item fs
-the ``front file system'' mount point to the cached files, where @i{Amd}
-will set a symbolic link pointing to.
-@end table
-
-A CacheFS entry for, say, the @file{/import} @i{Amd} mount point, might
-be:
-
-@example
-copt type:=cachefs;cachedir:=/cache;rfs:=/import/opt;fs:=/n/import/copt
-@end example
-
-Access to the pathname @file{/import/copt} will follow a symbolic link
-to @file{/n/import/copt}. The latter is the mount point for a caching
-file system, that caches from @file{/import/opt} to @file{/cache}.
-
-The cachefs filesystem is never timed out by default, i.e. it will
-never be unmounted by @i{Amd}. If automatic unmounting is desired, the
-``unmount'' option should be added to the mount options for the entry.
-
-@b{Caveats}:
-@enumerate
-@item This file system is currently only implemented for Solaris 2.x!
-@item Before being used for the first time, the cache directory @i{must} be
-initialized with @samp{cfsadmin -c @var{cachedir}}. See the manual page for
-@b{cfsadmin}(1M) for more information.
-@item The ``back file system'' mounted must be a complete file system, not
-a subdirectory thereof; otherwise you will get an error ``Invalid Argument''.
-@item If @i{Amd} aborts abnormally, the state of the cache may be
-inconsistent, requiring running the command @file{fsck -F cachefs
-@var{cachedir}}. Otherwise you will get the error ``No Space Left on Device''.
-@end enumerate
-
-@c ----------------------------------------------------------------
-@node CD-ROM Filesystem, UDF Filesystem, Caching Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section CD-ROM Filesystem (@samp{cdfs})
-@cindex CD-ROM Filesystem
-@cindex cdfs, filesystem type
-@cindex Filesystem type; cdfs
-
-The @dfn{cdfs} (@samp{type:=cdfs}) filesystem mounts a CD-ROM with an
-ISO9660 format filesystem on it.
-
-@noindent
-The following option must be specified:
-
-@table @code
-@cindex dev, mount option
-@cindex Mount option; dev
-@item dev
-the block special device to be mounted.
-@end table
-
-Some operating systems will fail to mount read-only CDs unless the
-@samp{ro} option is specified. A cdfs entry might be:
-
-@example
-cdfs os==sunos4;type:=cdfs;dev:=/dev/sr0 \
- os==sunos5;addopts:=ro;type:=cdfs;dev:=/dev/dsk/c0t6d0s2
-@end example
-
-@c ----------------------------------------------------------------
-@node UDF Filesystem, Loopback Filesystem, CD-ROM Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section CD-ROM Filesystem (@samp{udf})
-@cindex CD-ROM Filesystem
-@cindex udf, filesystem type
-@cindex Filesystem type; udf
-
-The @dfn{udf} (@samp{type:=udf}) filesystem mounts media with a
-Universal Disk Format (UDF) filesystem on it, e.g., a video DVD.
-
-@noindent
-The following option must be specified:
-
-@table @code
-@cindex dev, mount option
-@cindex Mount option; dev
-@item dev
-the block special device to be mounted.
-@end table
-
-Some operating systems will fail to mount read-only media unless the
-@samp{ro} option is specified. A udf entry might be:
-
-@example
-udf os==sunos4;type:=udf;dev:=/dev/sr0 \
- os==sunos5;addopts:=ro;type:=udf;dev:=/dev/dsk/c0t6d0s2
-@end example
-
-@c ----------------------------------------------------------------
-@node Loopback Filesystem, Memory/RAM Filesystem, UDF Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Loopback Filesystem (@samp{lofs})
-@cindex Loopback Filesystem
-@cindex lofs, filesystem type
-@cindex Filesystem type; lofs
-
-The @dfn{lofs} (@samp{type:=lofs}) filesystem is also called the
-loopback filesystem. It mounts a local directory on another, thus
-providing mount-time binding to another location (unlike symbolic
-links).
-
-The loopback filesystem is particularly useful within the context of a
-chroot-ed directory (via @b{chroot}(2)), to provide access to
-directories otherwise inaccessible.
-
-@noindent
-The following option must be specified:
-
-@table @code
-@cindex rfs, mount option
-@cindex Mount option; rfs
-@item rfs
-the pathname to be mounted on top of @code{$@{fs@}}.
-@end table
-
-Usually, the FTP server runs in a chroot-ed environment, for security
-reasons. In this example, lofs is used to provide a subdirectory within
-a user's home directory, also available for public ftp.
-
-@example
-lofs type:=lofs;rfs:=/home/ezk/myftpdir;fs:=/usr/ftp/pub/ezk
-@end example
-
-@c ----------------------------------------------------------------
-@node Memory/RAM Filesystem, Null Filesystem, Loopback Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Memory/RAM Filesystem (@samp{mfs})
-@cindex Memory/RAM Filesystem
-@cindex mfs, filesystem type
-@cindex Filesystem type; mfs
-
-The @dfn{mfs} (@samp{type:=mfs}) filesystem is available in 4.4BSD,
-Linux, and other systems. It creates a filesystem in a portion of the
-system's memory, thus providing very fast file (volatile) access.
-
-XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
-
-@c ----------------------------------------------------------------
-@node Null Filesystem, Floppy Filesystem, Memory/RAM Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Null Filesystem (@samp{nullfs})
-@cindex Null Filesystem
-@cindex nullfs, filesystem type
-@cindex Filesystem type; nullfs
-
-The @dfn{nullfs} (@samp{type:=nullfs}) filesystem is available from 4.4BSD,
-and is very similar to the loopback filesystem, @dfn{lofs}.
-
-XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
-
-@c ----------------------------------------------------------------
-@node Floppy Filesystem, Translucent Filesystem, Null Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Floppy Filesystem (@samp{pcfs})
-@cindex Floppy Filesystem
-@cindex pcfs, filesystem type
-@cindex Filesystem type; pcfs
-
-The @dfn{pcfs} (@samp{type:=pcfs}) filesystem mounts a floppy previously
-formatted for the MS-DOS format.
-
-@noindent
-The following option must be specified:
-
-@table @code
-@cindex dev, mount option
-@cindex Mount option; dev
-@item dev
-the block special device to be mounted.
-@end table
-
-A pcfs entry might be:
-
-@example
-pcfs os==sunos4;type:=pcfs;dev:=/dev/fd0 \
- os==sunos5;type:=pcfs;dev:=/dev/diskette
-@end example
-
-@c ----------------------------------------------------------------
-@node Translucent Filesystem, Shared Memory+Swap Filesystem, Floppy Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Translucent Filesystem (@samp{tfs})
-@cindex Translucent Filesystem
-@cindex tfs, filesystem type
-@cindex Filesystem type; tfs
-
-The @dfn{tfs} (@samp{type:=tfs}) filesystem is an older version of the
-4.4BSD @dfn{unionfs}.
-
-XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
-
-@c ----------------------------------------------------------------
-@node Shared Memory+Swap Filesystem, User ID Mapping Filesystem, Translucent Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Shared Memory+Swap Filesystem (@samp{tmpfs})
-@cindex Shared Memory and Swap Filesystem
-@cindex tmpfs, filesystem type
-@cindex Filesystem type; tmpfs
-
-The @dfn{tmpfs} (@samp{type:=tmpfs}) filesystem shares memory between a
-the swap device and the rest of the system. It is generally used to
-provide a fast access @file{/tmp} directory, one that uses memory that
-is otherwise unused. This filesystem is available in SunOS 4.x and 5.x.
-
-XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
-
-@c ----------------------------------------------------------------
-@node User ID Mapping Filesystem, Program Filesystem, Shared Memory+Swap Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section User ID Mapping Filesystem (@samp{umapfs})
-@cindex User ID Mapping Filesystem
-@cindex umapfs, filesystem type
-@cindex Filesystem type; umapfs
-
-The @dfn{umapfs} (@samp{type:=umapfs}) filesystem maps User IDs of file
-ownership, and is available from 4.4BSD.
-
-XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET!
-
-@c ----------------------------------------------------------------
-@node Program Filesystem, Symbolic Link Filesystem, User ID Mapping Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Program Filesystem (@samp{program})
-@cindex Program filesystem
-@cindex Mount a filesystem under program control
-@cindex program, filesystem type
-@cindex Filesystem type; program
-
-The @dfn{program} (@samp{type:=program}) filesystem type allows a
-program to be run whenever a mount or unmount is required. This allows
-easy addition of support for other filesystem types, such as MIT's
-Remote Virtual Disk (RVD) which has a programmatic interface via the
-commands @samp{rvdmount} and @samp{rvdunmount}.
-
-@noindent
-Both of the following options must be specified:
-
-@table @code
-@cindex mount, mount option
-@cindex Mount option; mount
-@item mount
-the program which will perform the mount.
-
-@cindex unmount, mount option
-@cindex umount, mount option
-@cindex Mount option; unmount
-@cindex Mount option; umount
-@item unmount
-@item umount
-the program which will perform the unmount. For convenience, you may
-use either @samp{unmount} or @samp{umount} but not both. If neither
-is defined, @i{Amd} will default to @samp{umount $@{fs@}} (the actual
-unmount program pathname will be automatically determined at the time
-GNU @code{configure} runs.)
-@end table
-
-The exit code from these two programs is interpreted as a Unix error
-code. As usual, exit code zero indicates success. To execute the
-program, @i{Amd} splits the string on whitespace to create an array of
-substrings. Single quotes @samp{'} can be used to quote whitespace
-if that is required in an argument. There is no way to escape or change
-the single quote character.
-
-To run e.g. the program @samp{rvdmount} with a host name and filesystem as
-arguments, it would be specified by
-@samp{fs:=$@{autodir@}$@{path@};type:=program;mount:="/etc/rvdmount
-rvdmount fserver $@{fs@}";unmount:="/etc/rdvumount rvdumount $@{fs@}"}.
-
-The first element in the array is taken as the pathname of the program
-to execute. The other members of the array form the argument vector
-to be passed to the program, @dfn{including argument zero}. The array
-is exactly the same as the array passed to the execv() system call
-(man execv for details). The split string must have at least two
-elements. The programs are directly executed by @i{Amd}, not via a
-shell. Therefore, if a script is to be used as a mount/umount
-program, it @dfn{must} begin with a @code{#!} interpreter specification.
-
-Often, this program mount type is used for Samba mounts, where you
-need a double slash in pathnames. However, @i{Amd} normalizes
-sequences of slashes into one slash. Therefore, you must use an
-escaped slash, preceded by an escaped backslash. So to get a double
-slash in the mount command, you need the eight character sequence
-@samp{\\\/\\\/} in your map. For example:
-
-@samp{mount="/sbin/mount mount -r -t smbfs -o-N,-Ihostname \\\/\\\/guest@@venus/mp3"}
-
-If a filesystem type is to be heavily used, it may be worthwhile adding
-a new filesystem type into @i{Amd}, but for most uses the program
-filesystem should suffice.
-
-When the program is run, standard input and standard error are inherited
-from the current values used by @i{Amd}. Standard output is a
-duplicate of standard error. The value specified with the @code{-l}
-command line option has no effect on standard error.
-
-@i{Amd} guarantees that the mountpoint will be created before calling
-the mount program, and that it will be removed after the umount
-program returns success.
-
-@c ----------------------------------------------------------------
-@node Symbolic Link Filesystem, Symbolic Link Filesystem II, Program Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Symbolic Link Filesystem (@samp{link})
-@cindex Symbolic link filesystem
-@cindex Referencing part of the local name space
-@cindex Mounting part of the local name space
-@cindex How to reference part of the local name space
-@cindex link, filesystem type
-@cindex symlink, link filesystem type
-@cindex Filesystem type; link
-
-Each filesystem type creates a symbolic link to point from the volume
-name to the physical mount point. The @samp{link} filesystem does the
-same without any other side effects. This allows any part of the
-machines name space to be accessed via @i{Amd}.
-
-One common use for the symlink filesystem is @file{/homes} which can be
-made to contain an entry for each user which points to their
-(auto-mounted) home directory. Although this may seem rather expensive,
-it provides a great deal of administrative flexibility.
-
-@noindent
-The following option must be defined:
-
-@table @code
-@item fs
-The value of @var{fs} option specifies the destination of the link, as
-modified by the @var{sublink} option. If @var{sublink} is non-null, it
-is appended to @code{$@{fs@}}@code{/} and the resulting string is used
-as the target.
-@end table
-
-The @samp{link} filesystem can be thought of as identical to the
-@samp{ufs} filesystem but without actually mounting anything.
-
-An example entry might be:
-
-@example
-jsp host==charm;type:=link;fs:=/home/charm;sublink:=jsp
-@end example
-which would return a symbolic link pointing to @file{/home/charm/jsp}.
-
-@c ----------------------------------------------------------------
-@node Symbolic Link Filesystem II, NFS-Link Filesystem, Symbolic Link Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Symbolic Link Filesystem II (@samp{linkx})
-@cindex Symbolic link filesystem II
-@cindex Referencing an existing part of the local name space
-@cindex Mounting an existing part of the local name space
-@cindex How to reference an existing part of the local name space
-@cindex linkx, filesystem type
-@cindex symlink, linkx filesystem type
-@cindex Filesystem type; linkx
-
-The @dfn{linkx} (@samp{type:=linkx}) filesystem type is identical to @samp{link} with the
-exception that the target of the link must exist. Existence is checked
-with the @b{lstat}(2) system call.
-
-The @samp{linkx} filesystem type is particularly useful for wildcard map
-entries. In this case, a list of possible targets can be given and
-@i{Amd} will choose the first one which exists on the local machine.
-
-@c ----------------------------------------------------------------
-@node NFS-Link Filesystem, Automount Filesystem, Symbolic Link Filesystem II, Filesystem Types
-@comment node-name, next, previous, up
-@section NFS-Link Filesystem (@samp{nfsl})
-@cindex NFS-Link filesystem II
-@cindex Referencing an existing part of the name space if target exists
-@cindex Mounting a remote part of the name space if target is missing
-@cindex Symlink if target exists, NFS otherwise
-@cindex nfsl, filesystem type
-@cindex symlink, nfsl filesystem type
-@cindex Filesystem type; nfsl
-
-The @dfn{nfsl} (@samp{type:=nfsl}) filesystem type is a combination of two others:
-@samp{link} and @samp{nfs}. If the local host name is equal to the
-value of @code{$@{rhost@}} @emph{and} the target pathname listed in
-@code{$@{fs@}} exists, @samp{nfsl} will behave exactly as
-@samp{type:=link}, and refer to the target as a symbolic link. If the
-local host name is not equal to the value of @code{$@{rhost@}}, or if
-the target of the link does not exist, @i{Amd} will treat it as
-@samp{type:=nfs}, and will mount a remote pathname for it.
-
-The @samp{nfsl} filesystem type is particularly useful as a shorthand
-for the more cumbersome and yet one of the most popular @i{Amd}
-entries. For example, you can simplify all map entries that look like:
-
-@example
-zing -fs:=/n/shekel/u/zing \
- host!=shekel;type:=nfs;rhost:=shekel;rfs:=$@{fs@} \
- host==shekel;type:=link
-@end example
-
-or
-
-@example
-zing -fs:=/n/shekel/u/zing \
- exists($@{fs@});type:=link \
- !exists($@{fs@});type:=nfs;rhost:=shekel;rfs:=$@{fs@}
-@end example
-
-into a shorter form
-
-@example
-zing type:=nfsl;fs:=/n/shekel/u/zing;rhost:=shekel;rfs:=$@{fs@}
-@end example
-
-Not just does it make the maps smaller and simpler, but it avoids
-possible mistakes that often happen when forgetting to set up the two
-entries (one for @samp{type:=nfs} and the other for @samp{type:=link})
-necessary to perform transparent mounts of existing or remote mounts.
-
-@c ----------------------------------------------------------------
-@node Automount Filesystem, Direct Automount Filesystem, NFS-Link Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Automount Filesystem (@samp{auto})
-@cindex Automount filesystem
-@cindex Map cache types
-@cindex Setting map cache parameters
-@cindex How to set map cache parameters
-@cindex How to start an indirect automount point
-@cindex auto, filesystem type
-@cindex Filesystem type; auto
-@cindex SIGHUP signal
-@cindex Map cache synchronizing
-@cindex Synchronizing the map cache
-@cindex Map cache options
-@cindex Regular expressions in maps
-
-The @dfn{auto} (@samp{type:=auto}) filesystem type creates a new automount point below an
-existing automount point. Top-level automount points appear as system
-mount points. An automount mount point can also appear as a
-sub-directory of an existing automount point. This allows some
-additional structure to be added, for example to mimic the mount tree of
-another machine.
-
-The following options may be specified:
-
-@table @code
-@cindex cache, mount map option
-@cindex Mount map option; cache
-@item cache
-specifies whether the data in this mount-map should be
-cached. The default value is @samp{none}, in which case
-no caching is done in order to conserve memory.
-
-However, better performance and reliability can be obtained by caching
-some or all of a mount-map.
-
-If the cache option specifies @samp{all},
-the entire map is enumerated when the mount point is created.
-
-If the cache option specifies @samp{inc}, caching is done incrementally
-as and when data is required.
-Some map types do not support cache mode @samp{all}, in which case @samp{inc}
-is used whenever @samp{all} is requested.
-
-Caching can be entirely disabled by using cache mode @samp{none}.
-
-If the cache option specifies @samp{regexp} then the entire map will be
-enumerated and each key will be treated as an egrep-style regular
-expression. The order in which a cached map is searched does not
-correspond to the ordering in the source map so the regular expressions
-should be mutually exclusive to avoid confusion.
-
-Each mount map type has a default cache type, usually @samp{inc}, which
-can be selected by specifying @samp{mapdefault}.
-
-The cache mode for a mount map can only be selected on the command line.
-Starting @i{Amd} with the command:
-
-@example
-amd /homes hesiod.homes -cache:=inc
-@end example
-
-will cause @samp{/homes} to be automounted using the @dfn{Hesiod} name
-server with local incremental caching of all successfully resolved names.
-
-All cached data is forgotten whenever @i{Amd} receives a @samp{SIGHUP}
-signal and, if cache @samp{all} mode was selected, the cache will be
-reloaded. This can be used to inform @i{Amd} that a map has been
-updated. In addition, whenever a cache lookup fails and @i{Amd} needs
-to examine a map, the map's modify time is examined. If the cache is
-out of date with respect to the map then it is flushed as if a
-@samp{SIGHUP} had been received.
-
-An additional option (@samp{sync}) may be specified to force @i{Amd} to
-check the map's modify time whenever a cached entry is being used. For
-example, an incremental, synchronized cache would be created by the
-following command:
-
-@example
-amd /homes hesiod.homes -cache:=inc,sync
-@end example
-
-@item fs
-specifies the name of the mount map to use for the new mount point.
-
-Arguably this should have been specified with the @code{$@{rfs@}} option but
-we are now stuck with it due to historical accident.
-
-@c %If the string @samp{.} is used then the same map is used;
-@c %in addition the lookup prefix is set to the name of the mount point followed
-@c %by a slash @samp{/}.
-@c %This is the same as specifying @samp{fs:=\$@{map@};pref:=\$@{key@}/}.
-@c
-
-@item pref
-alters the name that is looked up in the mount map. If
-@code{$@{pref@}}, the @dfn{prefix}, is non-null then it is prepended
-to the name requested by the kernel @dfn{before} the map is
-searched. The default prefix is the prefix of the parent map (if any)
-with name of the auto node appended to it. That means if you want no
-prefix you must say so in the map: @samp{pref:=null}.
-
-@item opts
-Normally, @samp{auto} style maps are not browsable even if you turn on
-directory browsability (@pxref{browsable_dirs Parameter}). To enable
-browsing entries in @samp{auto} maps, specify @samp{opts:=browsable}
-or @samp{opts:=fullybrowsable} in
-the description of this map.
-
-@end table
-
-The server @samp{dylan.doc.ic.ac.uk} has two user disks:
-@samp{/dev/dsk/2s0} and @samp{/dev/dsk/5s0}. These are accessed as
-@samp{/home/dylan/dk2} and @samp{/home/dylan/dk5} respectively. Since
-@samp{/home} is already an automount point, this naming is achieved with
-the following map entries:@refill
-
-@example
-dylan type:=auto;fs:=$@{map@};pref:=$@{key@}/
-dylan/dk2 type:=ufs;dev:=/dev/dsk/2s0
-dylan/dk5 type:=ufs;dev:=/dev/dsk/5s0
-@end example
-
-@c ----------------------------------------------------------------
-@node Direct Automount Filesystem, Union Filesystem, Automount Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Direct Automount Filesystem (@samp{direct})
-@cindex Direct automount filesystem
-@cindex How to start a direct automount point
-@cindex direct, filesystem type
-@cindex Filesystem type; direct
-
-The @dfn{direct} (@samp{type:=direct}) filesystem is almost identical to
-the automount filesystem. Instead of appearing to be a directory of
-mount points, it appears as a symbolic link to a mounted filesystem.
-The mount is done at the time the link is accessed. @xref{Automount
-Filesystem}, for a list of required options.
-
-Direct automount points are created by specifying the @samp{direct}
-filesystem type on the command line:
-
-@example
-amd ... /usr/man auto.direct -type:=direct
-@end example
-
-where @samp{auto.direct} would contain an entry such as:
-
-@example
-usr/man -type:=nfs;rfs:=/usr/man \
- rhost:=man-server1 rhost:=man-server2
-@end example
-
-In this example, @samp{man-server1} and @samp{man-server2} are file
-servers which export copies of the manual pages. Note that the key
-which is looked up is the name of the automount point without the
-leading @samp{/}.
-
-Note that the implementation of the traditional @dfn{direct} filesystem is
-essentially a hack (pretending that the root of an NFS filesystem is a
-symlink) and many modern operating systems get very unhappy about
-it. For example, Linux kernel 2.4+ completely disallows it, and Solaris
-2.8 fails to unmount it when @i{Amd} shuts down. Therefore, the use of
-the traditional @dfn{direct} filesystem is strongly discouraged; it is
-only semi-supported, at best.
-
-The autofs implementations that permit direct mounts are fully
-supported, however. That currently includes all versions of
-Solaris. Linux autofs does NOT support direct mounts at all.
-
-@c ----------------------------------------------------------------
-@node Union Filesystem, Error Filesystem, Direct Automount Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Union Filesystem (@samp{union})
-@cindex Union filesystem
-@cindex union, filesystem type
-@cindex Filesystem type; union
-
-The @dfn{union} (@samp{type:=union}) filesystem type allows the contents of several
-directories to be merged and made visible in a single directory. This
-can be used to overcome one of the major limitations of the Unix mount
-mechanism which only allows complete directories to be mounted.
-
-For example, supposing @file{/tmp} and @file{/var/tmp} were to be merged
-into a new directory called @file{/mtmp}, with files in @file{/var/tmp}
-taking precedence. The following command could be used to achieve this
-effect:
-
-@example
-amd ... /mtmp union:/tmp:/var/tmp -type:=union
-@end example
-
-Currently, the unioned directories must @emph{not} be automounted. That
-would cause a deadlock. This seriously limits the current usefulness of
-this filesystem type and the problem will be addressed in a future
-release of @i{Amd}.
-
-Files created in the union directory are actually created in the last
-named directory. This is done by creating a wildcard entry which points
-to the correct directory. The wildcard entry is visible if the union
-directory is listed, so allowing you to see which directory has
-priority.
-
-The files visible in the union directory are computed at the time
-@i{Amd} is started, and are not kept up-to-date with respect to the
-underlying directories. Similarly, if a link is removed, for example
-with the @samp{rm} command, it will be lost forever.
-
-@c ----------------------------------------------------------------
-@node Error Filesystem, Top-level Filesystem, Union Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Error Filesystem (@samp{error})
-@cindex Error filesystem
-@cindex error, filesystem type
-@cindex Filesystem type; error
-
-The @dfn{error} (@samp{type:=error}) filesystem type is used internally as a catch-all in the
-case where none of the other filesystems was selected, or some other
-error occurred. Lookups and mounts always fail with ``No such file or
-directory''. All other operations trivially succeed.
-
-The error filesystem is not directly accessible.
-
-@c ----------------------------------------------------------------
-@node Top-level Filesystem, Root Filesystem, Error Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Top-level Filesystem (@samp{toplvl})
-@cindex Top level filesystem
-@cindex toplvl, filesystem type
-@cindex Filesystem type; toplvl
-
-The @dfn{toplvl} (@samp{type:=toplvl}) filesystems is derived from the @samp{auto} filesystem
-and is used to mount the top-level automount nodes. Requests of this
-type are automatically generated from the command line arguments.
-
-@c ----------------------------------------------------------------
-@node Root Filesystem, Inheritance Filesystem, Top-level Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Root Filesystem (@samp{root})
-@cindex Root filesystem
-@cindex root, filesystem type
-@cindex Filesystem type; root
-
-The @dfn{root} (@samp{type:=root}) filesystem type acts as an internal
-placeholder onto which @i{Amd} can pin @samp{toplvl} mounts. Only one
-node of this type need ever exist and one is created automatically
-during startup. The effect of having more than one root node is
-undefined.
-
-The root filesystem is not directly accessible.
-
-@c ----------------------------------------------------------------
-@node Inheritance Filesystem, , Root Filesystem, Filesystem Types
-@comment node-name, next, previous, up
-@section Inheritance Filesystem (@samp{inherit})
-@cindex Inheritance filesystem
-@cindex Nodes generated on a restart
-@cindex inherit, filesystem type
-@cindex Filesystem type; inherit
-
-The @dfn{inheritance} (@samp{type:=inherit}) filesystem is not directly
-accessible. Instead, internal mount nodes of this type are
-automatically generated when @i{Amd} is started with the @code{-r} option.
-At this time the system mount table is scanned to locate any filesystems
-which are already mounted. If any reference to these filesystems is
-made through @i{Amd} then instead of attempting to mount it, @i{Amd}
-simulates the mount and @dfn{inherits} the filesystem. This allows a
-new version of @i{Amd} to be installed on a live system simply by
-killing the old daemon with @samp{SIGTERM} and starting the new one.@refill
-
-This filesystem type is not generally visible externally, but it is
-possible that the output from @samp{amq -m} may list @samp{inherit} as
-the filesystem type. This happens when an inherit operation cannot
-be completed for some reason, usually because a fileserver is down.
-
-@c ################################################################
-@node Amd Configuration File, Run-time Administration, Filesystem Types, Top
-@comment node-name, next, previous, up
-@chapter Amd Configuration File
-@cindex Amd Configuration File
-@cindex amd.conf
-
-The @samp{amd.conf} file is the configuration file for @i{Amd}, as part
-of the am-utils suite. This file contains runtime configuration
-information for the @i{Amd} automounter program.
-
-@menu
-* File Format::
-* The Global Section::
-* Regular Map Sections::
-* Common Parameters::
-* Global Parameters::
-* Regular Map Parameters::
-* amd.conf Examples::
-@end menu
-
-@c ================================================================
-@node File Format, The Global Section, Amd Configuration File, Amd Configuration File
-@comment node-name, next, previous, up
-@section File Format
-@cindex amd.conf file format
-
-The @samp{amd.conf} file consists of sections and parameters. A section
-begins with the name of the section in square brackets @samp{[]} and
-continues until the next section begins or the end of the file is reached.
-Sections contain parameters of the form @samp{name = value}.
-
-The file is line-based --- that is, each newline-terminated line
-represents either a comment, a section name or a parameter. No
-line-continuation syntax is available.
-
-Section names, parameter names and their values are case sensitive.
-
-Only the first equals sign in a parameter is significant. Whitespace
-before or after the first equals sign is discarded. Leading, trailing
-and internal whitespace in section and parameter names is irrelevant.
-Leading and trailing whitespace in a parameter value is discarded.
-Internal whitespace within a parameter value is not allowed, unless the
-whole parameter value is quoted with double quotes as in @samp{name =
-"some value"}.
-
-Any line beginning with a pound sign @samp{#} is ignored, as are lines
-containing only whitespace.
-
-The values following the equals sign in parameters are all either a
-string (no quotes needed if string does not include spaces) or a
-boolean, which may be given as @samp{yes}/@samp{no}. Case is significant in all
-values. Some items such as cache timeouts are numeric.
-
-@c ================================================================
-@node The Global Section, Regular Map Sections, File Format, Amd Configuration File
-@comment node-name, next, previous, up
-@section The Global Section
-@cindex amd.conf global section
-
-The global section must be specified as @samp{[global]}. Parameters in
-this section either apply to @i{Amd} as a whole, or to all other regular map
-sections which follow. There should be only one global section defined
-in one configuration file.
-
-It is highly recommended that this section be specified first in the
-configuration file. If it is not, then regular map sections which
-precede it will not use global values defined later.
-
-@c ================================================================
-@node Regular Map Sections, Common Parameters, The Global Section, Amd Configuration File
-@comment node-name, next, previous, up
-@section Regular Map Sections
-@cindex amd.conf regular map sections
-
-Parameters in regular (non-global) sections apply to a single map entry.
-For example, if the map section @samp{[/homes]} is defined, then all
-parameters following it will be applied to the @file{/homes}
-@i{Amd}-managed mount point.
-
-@c ================================================================
-@node Common Parameters, Global Parameters, Regular Map Sections, Amd Configuration File
-@comment node-name, next, previous, up
-@section Common Parameters
-@cindex amd.conf common parameters
-
-These parameters can be specified either in the global or a map-specific
-section. Entries specified in a map-specific section override the default
-value or one defined in the global section. If such a common parameter is
-specified only in the global section, it is applicable to all regular map
-sections that follow.
-
-@menu
-* autofs_use_lofs Parameter::
-* browsable_dirs Parameter::
-* map_defaults Parameter::
-* map_options Parameter::
-* map_type Parameter::
-* mount_type Parameter::
-* search_path Parameter::
-* selectors_in_defaults Parameter::
-* sun_map_syntax Parameter::
-@end menu
-
-@c ----------------------------------------------------------------
-@node autofs_use_lofs Parameter, browsable_dirs Parameter, Common Parameters, Common Parameters
-@comment node-name, next, previous, up
-@subsection @t{autofs_use_lofs} Parameter
-@cindex autofs_use_lofs Parameter
-
-(type=string, default=@samp{yes}).
-When set to @samp{yes}, @i{Amd}'s autofs code will use lofs-type
-(loopback) mounts for @code{type:=link} mounts, as well as several
-other cases that require local references. This has the advantage
-that @i{Amd} does not use a secondary mount point and users do not see
-external pathnames (the infamous @code{/bin/pwd} problem, where it
-reports a different path than the user chdir'ed into). One of the
-disadvantages of using this option is that the autofs code is
-relatively new and the in-place mounts have not been throughly tested.
-
-If this option is set to @samp{no}, then @i{Amd}'s autofs code will
-use symlinks instead of lofs-type mounts for local references. This
-has the advantage of using simpler (more stable) code, but at the
-expense of negating one of autofs's big advantages: the hiding of
-@i{Amd}'s internal paths. Note that symlinks are not supported in all
-autofs implementations, especially those derived from Solaris Autofs
-v1. Also, on Solaris 2.6 and newer, autofs symlinks are not cached,
-resulting in repeated up-call requests to @i{Amd}.
-
-@c ----------------------------------------------------------------
-@node browsable_dirs Parameter, map_defaults Parameter, autofs_use_lofs Parameter, Common Parameters
-@comment node-name, next, previous, up
-@subsection @t{browsable_dirs} Parameter
-@cindex browsable_dirs Parameter
-
-(type=string, default=@samp{no}). If @samp{yes}, then @i{Amd}'s top-level
-mount points will be browsable to @b{readdir}(3) calls. This means you
-could run for example @b{ls}(1) and see what keys are available to mount
-in that directory. Not all entries are made visible to @b{readdir}(3):
-the @samp{/defaults} entry, wildcard entries, and those with a @file{/}
-in them are not included. If you specify @samp{full} to this option,
-all but the @samp{/defaults} entry will be visible. Note that if you run
-a command which will attempt to @b{stat}(2) the entries, such as often
-done by @samp{ls -l} or @samp{ls -F}, @i{Amd} will attempt to mount
-@i{every} entry in that map. This is often called a ``mount storm''.
-
-Note that mount storms are mostly avoided by using autofs mounts
-(@samp{mount_type = autofs}).
-
-@c ----------------------------------------------------------------
-@node map_defaults Parameter, map_options Parameter, browsable_dirs Parameter, Common Parameters
-@comment node-name, next, previous, up
-@subsection @t{map_defaults} Parameter
-@cindex map_defaults Parameter
-
-(type=string, default to empty). This option sets a string to be used
-as the map's @code{/defaults} entry, overriding any @code{/defaults}
-specified in the map. This allows local users to override a given
-map's defaults without modifying maps globally (which is impossible in
-sites where the maps are managed by a different administrative group).
-
-@c ----------------------------------------------------------------
-@node map_options Parameter, map_type Parameter, map_defaults Parameter, Common Parameters
-@comment node-name, next, previous, up
-@subsection @t{map_options} Parameter
-@cindex map_options Parameter
-
-(type=string, default no options). This option is the same as
-specifying map options on the command line to @i{Amd}, such as
-@samp{cache:=all}.
-
-@c ----------------------------------------------------------------
-@node map_type Parameter, mount_type Parameter, map_options Parameter, Common Parameters
-@comment node-name, next, previous, up
-@subsection @t{map_type} Parameter
-@cindex map_type Parameter
-
-(type=string, default search all map types). If specified, @i{Amd} will
-initialize the map only for the type given. This is useful to avoid the
-default map search type used by @i{Amd} which takes longer and can have
-undesired side-effects such as initializing NIS even if not used.
-Possible values are
-
-@table @samp
-@item file
-plain files
-@item hesiod
-Hesiod name service from MIT
-@item ldap
-Lightweight Directory Access Protocol
-@item ndbm
-(New) dbm style hash files
-@item nis
-Network Information Services (version 2)
-@item nisplus
-Network Information Services Plus (version 3)
-@item passwd
-local password files
-@item union
-union maps
-@end table
-
-@c ----------------------------------------------------------------
-@node mount_type Parameter, search_path Parameter, map_type Parameter, Common Parameters
-@comment node-name, next, previous, up
-@subsection @t{mount_type} Parameter
-@cindex mount_type Parameter
-
-(type=string, default=@samp{nfs}). All @i{Amd} mount types default to NFS.
-That is, @i{Amd} is an NFS server on the map mount points, for the local
-host it is running on. If @samp{autofs} is specified, @i{Amd} will be
-an autofs server for those mount points.
-
-@c ----------------------------------------------------------------
-@node search_path Parameter, selectors_in_defaults Parameter, mount_type Parameter, Common Parameters
-@comment node-name, next, previous, up
-@subsection @t{search_path} Parameter
-@cindex search_path Parameter
-
-(type=string, default no search path). This provides a
-(colon-delimited) search path for file maps. Using a search path,
-sites can allow for local map customizations and overrides, and can
-distributed maps in several locations as needed.
-
-@c ----------------------------------------------------------------
-@node selectors_in_defaults Parameter, sun_map_syntax Parameter, search_path Parameter, Common Parameters
-@comment node-name, next, previous, up
-@subsection @t{selectors_in_defaults} Parameter
-@cindex selectors_in_defaults Parameter
-
-(type=boolean, default=@samp{no}). If @samp{yes}, then the
-@samp{/defaults} entry of maps will search for and process any
-selectors before setting defaults for all other keys in that map.
-Useful when you want to set different options for a complete map based
-on some parameters. For example, you may want to better the NFS
-performance over slow slip-based networks as follows:
-
-@example
-/defaults \
- wire==slip-net;opts:=intr,rsize=1024,wsize=1024 \
- wire!=slip-net;opts:=intr,rsize=8192,wsize=8192
-@end example
-
-Deprecated form: selectors_on_default.
-
-@c ----------------------------------------------------------------
-@node sun_map_syntax Parameter, , selectors_in_defaults Parameter, Common Parameters
-@comment node-name, next, previous, up
-@subsection @t{sun_map_syntax} Parameter
-@cindex sun_map_syntax Parameter
-
-(type=boolean, default=@samp{no}). If @samp{yes}, then @i{Amd} will
-parse the map according to the Sun Automount syntax.
-
-
-@c ================================================================
-@node Global Parameters, Regular Map Parameters, Common Parameters, Amd Configuration File
-@comment node-name, next, previous, up
-@section Global Parameters
-@cindex amd.conf global parameters
-
-The following parameters are applicable to the @samp{[global]} section only.
-
-@menu
-* arch Parameter::
-* auto_attrcache Parameter::
-* auto_dir Parameter::
-* cache_duration Parameter::
-* cluster Parameter::
-* debug_mtab_file Parameter::
-* debug_options Parameter::
-* dismount_interval Parameter::
-* domain_strip Parameter::
-* exec_map_timeout Parameter::
-* forced_unmounts Parameter::
-* full_os Parameter::
-* fully_qualified_hosts Parameter::
-* hesiod_base Parameter::
-* karch Parameter::
-* ldap_base Parameter::
-* ldap_cache_maxmem Parameter::
-* ldap_cache_seconds Parameter::
-* ldap_hostports Parameter::
-* ldap_proto_version Parameter::
-* local_domain Parameter::
-* localhost_address Parameter::
-* log_file Parameter::
-* log_options Parameter::
-* map_reload_interval Parameter::
-* nfs_allow_any_interface Parameter::
-* nfs_allow_insecure_port Parameter::
-* nfs_proto Parameter::
-* nfs_retransmit_counter Parameter::
-* nfs_retransmit_counter_udp Parameter::
-* nfs_retransmit_counter_tcp Parameter::
-* nfs_retransmit_counter_toplvl Parameter::
-* nfs_retry_interval Parameter::
-* nfs_retry_interval_udp Parameter::
-* nfs_retry_interval_tcp Parameter::
-* nfs_retry_interval_toplvl Parameter::
-* nfs_vers Parameter::
-* nis_domain Parameter::
-* normalize_hostnames Parameter::
-* normalize_slashes Parameter::
-* os Parameter::
-* osver Parameter::
-* pid_file Parameter::
-* plock Parameter::
-* portmap_program Parameter::
-* preferred_amq_port Parameter::
-* print_pid Parameter::
-* print_version Parameter::
-* restart_mounts Parameter::
-* show_statfs_entries Parameter::
-* truncate_log Parameter::
-* unmount_on_exit Parameter::
-* use_tcpwrappers Parameter::
-* vendor Parameter::
-@end menu
-
-@c ----------------------------------------------------------------
-@node arch Parameter, auto_attrcache Parameter, Global Parameters, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{arch} Parameter
-@cindex arch Parameter
-
-(type=string, default to compiled in value). Same as the @code{-A}
-option to @i{Amd}. Allows you to override the value of the @i{arch}
-@i{Amd} variable.
-
-@c ----------------------------------------------------------------
-@node auto_attrcache Parameter, auto_dir Parameter, arch Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{auto_attrcache} Parameter
-@cindex auto_attrcache Parameter
-
-(type=numeric, default=0). Specify in seconds (or units of 0.1
-seconds, depending on the OS), what is the (kernel-side) NFS attribute
-cache timeout for @i{Amd}'s own automount points. A value of 0 is
-supposed to turn off attribute caching, meaning that @i{Amd} will be
-consulted via a kernel-RPC each time someone stat()'s the mount point
-(which could be abused as a denial-of-service attack).
-
-@emph{WARNING}: @i{Amd} depends on being able to turn off the NFS
-attribute cache of the client OS. If it cannot be turned off, then
-users may get ESTALE errors or symlinks that point to the wrong
-places. This is more likely under heavy use of @i{Amd}, for example
-if your system is experiencing frequent map changes or frequent
-mounts/unmounts. Therefore, under normal circumstances, this
-parameter should remain set to 0, to ensure that the attribute cache
-is indeed off.
-
-Unfortunately, some kernels (e.g., certain BSDs) don't have a way to
-turn off the NFS attribute cache. Setting this parameter to 0 is
-supposed to turn off attribute caching entirely, but unfortunately it
-does not; instead, the attribute cache is set to some internal
-hard-coded default (usually anywhere from 5-30 seconds). If you
-suspect that your OS doesn't have a reliable way of turning off the
-attribute cache, then it is better to set this parameter to the
-smallest possible non-zero value (set @samp{auto_attrcache=1} in your
-@code{amd.conf}). This will not eliminate the problem, but reduce the
-risk window somewhat. The best solutions are (1) to use @i{Amd} in
-Autofs mode, if it's supported in your OS, and (2) talk to your OS
-vendor to support a true @samp{noac} flag. See the
-@uref{http://www.am-utils.org/docs/am-utils/attrcache.txt,README.attrcache}
-document for more details.
-
-If you are able to turn off the attribute cache on your OS, alas,
-@i{Amd}'s performance may degrade (when not using Autofs) because
-every traversal of an automounter-controlled pathname will result in a
-lookup request from the kernel to @i{Amd}. Under heavy loads, for
-example when using recursive tools like @samp{find}, @samp{rdist}, or
-@samp{rsync}, this performance degradation can be noticeable. There
-are two possible solutions that some administrators have chosen to
-improve performance:
-
-@enumerate
-
-@item
-First, you can turn off unmounting using the @samp{nounmount} mount
-option. This will ensure that no @i{Amd} symlink could ever change,
-thereby the kernel's attribute cache and @i{Amd} will always be in
-sync. However, this method will cause the number of mounts to keep
-growing, even if some are no longer in use; this has the disadvantage
-that your system could be more susceptible to hangs if even one of
-those accumulating mounts hangs due to a downed server.
-
-@item
-Second, you can turn on attribute caching carefully by setting a small
-automounter attribute cache value (say, one second), and a relatively
-large dismount interval (say, one hour). (@xref{dismount_interval
-Parameter}.) For example, you can set this in your @code{amd.conf}:
-
-@example
-[global]
-auto_attrcache = 1
-dismount_interval = 3600
-@end example
-
-This has the benefit of using the kernel's attribute cache and thus
-improving performance. The disadvantage with this option is that the
-window of vulnerability is not eliminated entirely: it is only made
-smaller.
-
-@end enumerate
-
-@c ----------------------------------------------------------------
-@node auto_dir Parameter, cache_duration Parameter, auto_attrcache Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{auto_dir} Parameter
-@cindex auto_dir Parameter
-
-(type=string, default=@samp{/a}). Same as the @code{-a} option to @i{Amd}.
-This sets the private directory where @i{Amd} will create
-sub-directories for its real mount points.
-
-@c ----------------------------------------------------------------
-@node cache_duration Parameter, cluster Parameter, auto_dir Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{cache_duration} Parameter
-@cindex cache_duration Parameter
-
-(type=numeric, default=300). Same as the @code{-c} option to @i{Amd}.
-Sets the duration in seconds that looked-up or mounted map entries
-remain in the cache.
-
-@c ----------------------------------------------------------------
-@node cluster Parameter, debug_mtab_file Parameter, cache_duration Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{cluster} Parameter
-@cindex cluster Parameter
-
-(type=string, default no cluster). Same as the @code{-C} option to
-@i{Amd}. Specifies the alternate HP-UX cluster to use.
-
-@c ----------------------------------------------------------------
-@node debug_mtab_file Parameter, debug_options Parameter, cluster Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{debug_mtab_file} Parameter
-@cindex debug_mtab_file Parameter
-
-(type=string, default="/tmp/mtab"). Path to mtab file that is used
-by @i{Amd} to store a list of mounted file systems during debug-mtab mode.
-This option only applies to systems that store mtab information on disk.
-
-@c ----------------------------------------------------------------
-@node debug_options Parameter, dismount_interval Parameter, debug_mtab_file Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{debug_options} Parameter
-@cindex debug_options Parameter
-
-(type=string, default no debug options). Same as the @code{-D} option
-to @i{Amd}. Specify any debugging options for @i{Amd}. Works only if
-am-utils was configured for debugging using the @code{--enable-debug}
-option. The additional @samp{mem} option can be turned on via
-@code{--enable-debug=mem}. Otherwise debugging options are ignored.
-Options are comma delimited, and can be preceded by the string
-@samp{no} to negate their meaning. You can get the list of supported
-debugging and logging options by running @code{amd -H}. Possible
-values those listed for the -D option. @xref{-D Option}.
-
-@c ----------------------------------------------------------------
-@node dismount_interval Parameter, domain_strip Parameter, debug_options Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{dismount_interval} Parameter
-@cindex dismount_interval Parameter
-
-(type=numeric, default=120). Same as the @code{-w} option to
-@i{Amd}. Specify in seconds, the time between attempts to dismount file
-systems that have exceeded their cached times.
-
-@c ----------------------------------------------------------------
-@node domain_strip Parameter, exec_map_timeout Parameter, dismount_interval Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{domain_strip} Parameter
-@cindex domain_strip Parameter
-
-(type=boolean, default=@samp{yes}). If @samp{yes}, then the domain
-name part referred to by @code{$@{rhost@}} is stripped off. This is
-useful to keep logs and smaller. If @samp{no}, then the domain name
-part is left changed. This is useful when using multiple domains with
-the same maps (as you may have hosts whose domain-stripped name is
-identical).
-
-@c ----------------------------------------------------------------
-@node exec_map_timeout Parameter, forced_unmounts Parameter, domain_strip Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{exec_map_timeout} Parameter
-@cindex exec_map_timeout Parameter
-
-(type=numeric, default=10). The timeout in seconds that @i{Amd} will
-wait for an executable map program before an answer is returned from
-that program (or script). This value should be set to as small as
-possible while still allowing normal replies to be returned before the
-timer expires, because during the time that the executable map program
-is queried, @i{Amd} is essentially waiting and is thus not responding
-to any other queries. @xref{Executable maps}.
-
-@c ----------------------------------------------------------------
-@node forced_unmounts Parameter, full_os Parameter, exec_map_timeout Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{forced_unmounts} Parameter
-@cindex forced_unmounts Parameter
-
-(type=boolean, default=@samp{no}).
-Sometimes, mount points are hung due to unrecoverable conditions, such
-as when NFS servers migrate, change their IP address, are down
-permanently, or due to hardware failures, and more. In this case,
-attempting to unmount an existing mount point, or even just to
-@b{stat}(2) it, results in one of three fatal errors: EIO, ESTALE, or
-EBUSY. At that point, @i{Amd} can do little to recover that hung
-point (in fact, the OS cannot automatically recover either). For that
-reason, some OSs support special kinds of forced unmounts, which must
-be used very carefully: they will force an unmount immediately (or
-lazily on Linux), which could result in application data loss.
-However, that may be the only way to recover the entire host (without
-rebooting). Once a hung mount point is forced out, @i{Amd} can then
-re-mount a replacement one (if available), bringing a mostly-hung
-system back to operation and avoiding a potentially costly reboot.
-
-If the @samp{forced_unmounts} option is set to @samp{yes}, and the
-client OS supports forced or lazy unmounts, then @i{Amd} will attempt
-to use them if it gets any of the three serious error conditions
-listed above. Note that @i{Amd} will force the unmount of mount
-points that returned EBUSY only for @samp{type:=toplvl} mounts
-(@pxref{Top-level Filesystem}): that is, @i{Amd}'s own mount points.
-This is useful to recover from a previously hung @i{Amd}, and to
-ensure that an existing @i{Amd} can shutdown cleanly even if some
-processes are keeping its mount points busy (i.e., when a user's shell
-process uses @code{cd} to set its CWD to @i{Amd}'s own mount point).
-
-If this option is set to @samp{no} (the default), then @i{Amd} will
-not attempt this special recovery procedure.
-
-@c ----------------------------------------------------------------
-@node full_os Parameter, fully_qualified_hosts Parameter, forced_unmounts Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{full_os} Parameter
-@cindex full_os Parameter
-
-(type=string, default to compiled in value). The full name of the
-operating system, along with its version. Allows you to override the
-compiled-in full name and version of the operating system. Useful when
-the compiled-in name is not desired. For example, the full operating
-system name on linux comes up as @samp{linux}, but you can override it
-to @samp{linux-2.2.5}.
-
-@c ----------------------------------------------------------------
-@node fully_qualified_hosts Parameter, hesiod_base Parameter, full_os Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{fully_qualified_hosts} Parameter
-@cindex fully_qualified_hosts Parameter
-
-(type=string, default=@samp{no}). If @samp{yes}, @i{Amd} will perform RPC
-authentication using fully-qualified host names. This is necessary for
-some systems, and especially when performing cross-domain mounting. For
-this function to work, the @i{Amd} variable @samp{$@{hostd@}} is used,
-requiring that @samp{$@{domain@}} not be null.
-
-@c ----------------------------------------------------------------
-@node hesiod_base Parameter, karch Parameter, fully_qualified_hosts Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{hesiod_base} Parameter
-@cindex hesiod_base Parameter
-
-(type=string, default=@samp{automount}). Specify the base name for
-hesiod maps.
-
-@c ----------------------------------------------------------------
-@node karch Parameter, ldap_base Parameter, hesiod_base Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{karch} Parameter
-@cindex karch Parameter
-
-(type=string, default to karch of the system). Same as the @code{-k}
-option to @i{Amd}. Allows you to override the kernel-architecture of
-your system. Useful for example on Sun (Sparc) machines, where you can
-build one @i{Amd} binary, and run it on multiple machines, yet you want
-each one to get the correct @i{karch} variable set (for example, sun4c,
-sun4m, sun4u, etc.) Note that if not specified, @i{Amd} will use
-@b{uname}(2) to figure out the kernel architecture of the machine.
-
-@c ----------------------------------------------------------------
-@node ldap_base Parameter, ldap_cache_maxmem Parameter, karch Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{ldap_base} Parameter
-@cindex ldap_base Parameter
-
-(type=string, default not set).
-Specify the base name for LDAP. This often includes LDAP-specific
-values such as country and organization.
-
-@c ----------------------------------------------------------------
-@node ldap_cache_maxmem Parameter, ldap_cache_seconds Parameter, ldap_base Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{ldap_cache_maxmem} Parameter
-@cindex ldap_cache_maxmem Parameter
-
-(type=numeric, default=131072). Specify the maximum memory @i{Amd}
-should use to cache LDAP entries.
-
-@c ----------------------------------------------------------------
-@node ldap_cache_seconds Parameter, ldap_hostports Parameter, ldap_cache_maxmem Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{ldap_cache_seconds} Parameter
-@cindex ldap_cache_seconds Parameter
-
-(type=numeric, default=0). Specify the number of seconds to keep
-entries in the cache.
-
-@c ----------------------------------------------------------------
-@node ldap_hostports Parameter, ldap_proto_version Parameter, ldap_cache_seconds Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{ldap_hostports} Parameter
-@cindex ldap_hostports Parameter
-
-(type=string, default not set).
-Specify the LDAP host and port values.
-
-@c ----------------------------------------------------------------
-@node ldap_proto_version Parameter, local_domain Parameter, ldap_hostports Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{ldap_proto_version} Parameter
-@cindex ldap_proto_version Parameter
-
-(type=numeric, default=2). Specify the LDAP protocol version to use.
-With a value of 3 will use LDAPv3 protocol.
-
-@c ----------------------------------------------------------------
-@node local_domain Parameter, localhost_address Parameter, ldap_proto_version Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{local_domain} Parameter
-@cindex local_domain Parameter
-
-(type=string, default no sub-domain). Same as the @code{-d} option
-to @i{Amd}. Specify the local domain name. If this option is not given
-the domain name is determined from the hostname, by removing the first
-component of the fully-qualified host name.
-
-@c ----------------------------------------------------------------
-@node localhost_address Parameter, log_file Parameter, local_domain Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{localhost_address} Parameter
-@cindex localhost_address Parameter
-
-(type=string, default to localhost or 127.0.0.1). Specify the name or
-IP address for @i{Amd} to use when connecting the sockets for the
-local NFS server and the RPC server. This defaults to 127.0.0.1 or
-whatever the host reports as its local address. This parameter is
-useful on hosts with multiple addresses where you want to force
-@i{Amd} to connect to a specific address.
-
-@c ----------------------------------------------------------------
-@node log_file Parameter, log_options Parameter, localhost_address Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{log_file} Parameter
-@cindex log_file Parameter
-
-(type=string, default=@samp{stderr}). Same as the @code{-l} option to
-@i{Amd}. Specify a file name to log @i{Amd} events to.
-If the string @samp{/dev/stderr} is specified,
-@i{Amd} will send its events to the standard error file descriptor.
-
-If the string @samp{syslog} is given, @i{Amd} will record its events
-with the system logger @b{syslogd}(8). If your system supports syslog
-facilities, then the default facility used is @samp{LOG_DAEMON}.
-
-When using syslog, if you wish to change the facility, append its name
-to the option name, delimited by a single colon. For example, if it is
-the string @samp{syslog:local7} then @i{Amd} will log messages via
-@b{syslog}(3) using the @samp{LOG_LOCAL7} facility. If the facility
-name specified is not recognized, @i{Amd} will default to @samp{LOG_DAEMON}.
-Note: while you can use any syslog facility available on your system, it
-is generally a bad idea to use those reserved for other services such as
-@samp{kern}, @samp{lpr}, @samp{cron}, etc.
-
-@c ----------------------------------------------------------------
-@node log_options Parameter, map_reload_interval Parameter, log_file Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{log_options} Parameter
-@cindex log_options Parameter
-
-(type=string, default=``defaults''). Same as the @code{-x}
-option to @i{Amd}. Specify any logging options for @i{Amd}. Options
-are comma delimited, and can be preceded by the string @samp{no} to
-negate their meaning. The @samp{debug} logging option is only available
-if am-utils was configured with @code{--enable-debug}. You can get the
-list of supported debugging options by running @code{amd -H}. Possible
-values are:
-
-@table @samp
-@item all
-all messages
-@item defaults
-an alias for "fatal,error,user,warning,info"
-@item debug
-debug messages
-@item error
-non-fatal system errors (cannot be turned off)
-@item fatal
-fatal errors (cannot be turned off)
-@item info
-information
-@item map
-map errors
-@item stats
-additional statistical information
-@item user
-non-fatal user errors
-@item warn
-warnings
-@item warning
-warnings
-@end table
-
-@c ----------------------------------------------------------------
-@node map_reload_interval Parameter, nfs_allow_any_interface Parameter, log_options Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{map_reload_interval} Parameter
-@cindex map_reload_interval Parameter
-
-(type=numeric, default=3600). The number of seconds that @i{Amd} will
-wait before it checks to see if any maps have changed at their source
-(NIS servers, LDAP servers, files, etc.). @i{Amd} will reload only
-those maps that have changed.
-
-@c ----------------------------------------------------------------
-@node nfs_allow_any_interface Parameter, nfs_allow_insecure_port Parameter, map_reload_interval Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nfs_allow_any_interface} Parameter
-@cindex nfs_allow_any_interface Parameter
-
-(type=string, default=@samp{no}). Normally @i{Amd} accepts local NFS
-packets only from 127.0.0.1. If this parameter is set to @samp{yes},
-then @i{amd} will accept local NFS packets from any local interface;
-this is useful on hosts that may have multiple interfaces where the
-system is forced to send all outgoing packets (even those bound to the
-same host) via an address other than 127.0.0.1.
-
-@c ----------------------------------------------------------------
-@node nfs_allow_insecure_port Parameter, nfs_proto Parameter, nfs_allow_any_interface Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nfs_allow_insecure_port} Parameter
-@cindex nfs_allow_insecure_port Parameter
-
-(type=string, default=@samp{no}). Normally @i{Amd} will refuse requests
-coming from unprivileged ports (i.e., ports >= 1024 on Unix systems),
-so that only privileged users and the kernel can send NFS requests to
-it. However, some kernels (certain versions of Darwin, MacOS X, and
-Linux) have bugs that cause them to use unprivileged ports in certain
-situations, which causes @i{Amd} to stop dead in its tracks. This
-parameter allows @i{Amd} to operate normally even on such systems, at the
-expense of a slight decrease in the security of its operations. If
-you see messages like ``ignoring request from foo:1234, port not
-reserved'' in your @i{Amd} log, try enabling this parameter and give it
-another go.
-
-@c ----------------------------------------------------------------
-@node nfs_proto Parameter, nfs_retransmit_counter Parameter, nfs_allow_insecure_port Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nfs_proto} Parameter
-@cindex nfs_proto Parameter
-
-(type=string, default to trying version tcp then udp). By default,
-@i{Amd} tries @code{tcp} and then @code{udp}. This option forces the
-overall NFS protocol used to TCP or UDP. It overrides what is in the
-@i{Amd} maps, and is useful when @i{Amd} is compiled with TCP support
-in NFSv2/NFSv3 that may not be stable. With this option you can turn
-off the complete usage of TCP for NFS dynamically (without having to
-recompile @i{Amd}), and use UDP only, until such time as TCP support
-is desired again.
-
-@c ----------------------------------------------------------------
-@node nfs_retransmit_counter Parameter, nfs_retransmit_counter_udp Parameter, nfs_proto Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nfs_retransmit_counter} Parameter
-@cindex nfs_retransmit_counter Parameter
-
-(type=numeric, default=11). Same as the @i{retransmit} part of the
-@code{-t} @i{timeout.retransmit} option to @i{Amd}. Specifies the
-number of NFS retransmissions that the kernel will use to communicate
-with @i{Amd} using either UDP or TCP mounts. @xref{-t Option}.
-
-@c ----------------------------------------------------------------
-@node nfs_retransmit_counter_udp Parameter, nfs_retransmit_counter_tcp Parameter, nfs_retransmit_counter Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nfs_retransmit_counter_udp} Parameter
-@cindex nfs_retransmit_counter_udp Parameter
-@cindex nfs_retransmit_counter Parameter
-@cindex UDP
-
-(type=numeric, default=11). Same as the @i{nfs_retransmit_counter}
-parameter, but applied globally only to UDP mounts.
-@xref{nfs_retransmit_counter Parameter}.
-
-@c ----------------------------------------------------------------
-@node nfs_retransmit_counter_tcp Parameter, nfs_retransmit_counter_toplvl Parameter, nfs_retransmit_counter_udp Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nfs_retransmit_counter_tcp} Parameter
-@cindex nfs_retransmit_counter_tcp Parameter
-@cindex nfs_retransmit_counter Parameter
-@cindex TCP
-
-(type=numeric, default=11). Same as the @i{nfs_retransmit_counter}
-parameter, but applied globally only to TCP mounts.
-@xref{nfs_retransmit_counter Parameter}.
-
-@c ----------------------------------------------------------------
-@node nfs_retransmit_counter_toplvl Parameter, nfs_retry_interval Parameter, nfs_retransmit_counter_tcp Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nfs_retransmit_counter_toplvl} Parameter
-@cindex nfs_retransmit_counter_toplvl Parameter
-@cindex nfs_retransmit_counter Parameter
-@cindex UDP
-
-(type=numeric, default=11). Same as the @i{nfs_retransmit_counter}
-parameter, applied only for @i{Amd}'s top-level UDP mounts. On some
-systems it is useful to set this differently than the OS default, so
-as to better tune @i{Amd}'s responsiveness under heavy scheduler
-loads. @xref{nfs_retransmit_counter Parameter}.
-
-@c ----------------------------------------------------------------
-@node nfs_retry_interval Parameter, nfs_retry_interval_udp Parameter, nfs_retransmit_counter_toplvl Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nfs_retry_interval} Parameter
-@cindex nfs_retry_interval Parameter
-
-(type=numeric, default=8). Same as the @i{timeout} part of the
-@code{-t} @i{timeout.retransmit} option to @i{Amd}. Specifies the NFS
-timeout interval, in @emph{tenths} of seconds, between NFS/RPC retries
-(for UDP or TCP). This is the value that the kernel will use to
-communicate with @i{Amd}. @xref{-t Option}.
-
-@i{Amd} relies on the kernel RPC retransmit mechanism to trigger mount
-retries. The values of the @i{nfs_retransmit_counter} and the
-@i{nfs_retry_interval} parameters change the overall retry interval.
-Too long an interval gives poor interactive response; too short an
-interval causes excessive retries.
-
-@c ----------------------------------------------------------------
-@node nfs_retry_interval_udp Parameter, nfs_retry_interval_tcp Parameter, nfs_retry_interval Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nfs_retry_interval_udp} Parameter
-@cindex nfs_retry_interval_udp Parameter
-@cindex nfs_retry_interval Parameter
-@cindex UDP
-
-(type=numeric, default=8). Same as the @i{nfs_retry_interval}
-parameter, but applied globally only to UDP mounts.
-@xref{nfs_retry_interval Parameter}.
-
-@c ----------------------------------------------------------------
-@node nfs_retry_interval_tcp Parameter, nfs_retry_interval_toplvl Parameter, nfs_retry_interval_udp Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nfs_retry_interval_tcp} Parameter
-@cindex nfs_retry_interval_tcp Parameter
-@cindex nfs_retry_interval Parameter
-@cindex TCP
-
-(type=numeric, default=8). Same as the @i{nfs_retry_interval}
-parameter, but applied globally only to TCP mounts.
-@xref{nfs_retry_interval Parameter}.
-
-@c ----------------------------------------------------------------
-@node nfs_retry_interval_toplvl Parameter, nfs_vers Parameter, nfs_retry_interval_tcp Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nfs_retry_interval_toplvl} Parameter
-@cindex nfs_retry_interval_toplvl Parameter
-@cindex nfs_retry_interval Parameter
-@cindex UDP
-
-(type=numeric, default=8). Same as the @i{nfs_retry_interval}
-parameter, applied only for @i{Amd}'s top-level UDP mounts. On some
-systems it is useful to set this differently than the OS default, so
-as to better tune @i{Amd}'s responsiveness under heavy scheduler
-loads. @xref{nfs_retry_interval Parameter}.
-
-@c ----------------------------------------------------------------
-@node nfs_vers Parameter, nis_domain Parameter, nfs_retry_interval_toplvl Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nfs_vers} Parameter
-@cindex nfs_vers Parameter
-
-(type=numeric, default to trying version 3 then 2). By default,
-@i{Amd} tries version 3 and then version 2. This option forces the
-overall NFS protocol used to version 3 or 2. It overrides what is in
-the @i{Amd} maps, and is useful when @i{Amd} is compiled with NFSv3
-support that may not be stable. With this option you can turn off the
-complete usage of NFSv3 dynamically (without having to recompile
-@i{Amd}), and use NFSv2 only, until such time as NFSv3 support is
-desired again.
-
-@c ----------------------------------------------------------------
-@node nis_domain Parameter, normalize_hostnames Parameter, nfs_vers Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{nis_domain} Parameter
-@cindex nis_domain Parameter
-
-(type=string, default to local NIS domain name). Same as the
-@code{-y} option to @i{Amd}. Specify an alternative NIS domain from
-which to fetch the NIS maps. The default is the system domain name.
-This option is ignored if NIS support is not available.
-
-@c ----------------------------------------------------------------
-@node normalize_hostnames Parameter, normalize_slashes Parameter, nis_domain Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{normalize_hostnames} Parameter
-@cindex normalize_hostnames Parameter
-
-(type=boolean, default=@samp{no}). Same as the @code{-n} option to @i{Amd}.
-If @samp{yes}, then the name referred to by @code{$@{rhost@}} is normalized
-relative to the host database before being used. The effect is to
-translate aliases into ``official'' names.
-
-@c ----------------------------------------------------------------
-@node normalize_slashes Parameter, os Parameter, normalize_hostnames Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{normalize_slashes} Parameter
-@cindex normalize_slashes Parameter
-
-(type=boolean, default=@samp{yes}). If @samp{yes} then amd will
-condense all multiple @code{/} (slash) characters into one and remove
-all trailing slashes. If @samp{no}, then amd will not touch strings
-that may contain repeated or trailing slashes. The latter is
-sometimes useful with SMB mounts, which often require multiple slash
-characters in pathnames.
-
-@c ----------------------------------------------------------------
-@node os Parameter, osver Parameter, normalize_slashes Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{os} Parameter
-@cindex os Parameter
-
-(type=string, default to compiled in value). Same as the @code{-O}
-option to @i{Amd}. Allows you to override the compiled-in name of the
-operating system. Useful when the built-in name is not desired for
-backward compatibility reasons. For example, if the built-in name is
-@samp{sunos5}, you can override it to @samp{sos5}, and use older maps
-which were written with the latter in mind.
-
-
-@c ----------------------------------------------------------------
-@node osver Parameter, pid_file Parameter, os Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{osver} Parameter
-@cindex osver Parameter
-
-(type=string, default to compiled in value). Same as the @code{-o}
-option to @i{Amd}. Allows you to override the compiled-in version
-number of the operating system. Useful when the built-in version is not
-desired for backward compatibility reasons. For example, if the build
-in version is @samp{2.5.1}, you can override it to @samp{5.5.1}, and use
-older maps that were written with the latter in mind.
-
-@c ----------------------------------------------------------------
-@node pid_file Parameter, plock Parameter, osver Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{pid_file} Parameter
-@cindex pid_file Parameter
-
-(type=string, default=@samp{/dev/stdout}). Specify a file to store the process
-ID of the running daemon into. If not specified, @i{Amd} will print its
-process id onto the standard output. Useful for killing @i{Amd} after
-it had run. Note that the PID of a running @i{Amd} can also be
-retrieved via @i{Amq} (@pxref{Amq -p option}).
-
-This file is used only if the @samp{print_pid} option is on
-(@pxref{print_pid Parameter}).
-
-@c ----------------------------------------------------------------
-@node plock Parameter, portmap_program Parameter, pid_file Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{plock} Parameter
-@cindex plock Parameter
-
-(type=boolean, default=@samp{yes}). Same as the @code{-S} option to @i{Amd}.
-If @samp{yes}, lock the running executable pages of @i{Amd} into memory.
-To improve @i{Amd}'s performance, systems that support the @b{plock}(3)
-or @b{mlockall}(2)
-call can lock the @i{Amd} process into memory. This way there is less
-chance the operating system will schedule, page out, and swap the
-@i{Amd} process as needed. This improves @i{Amd}'s performance, at the
-cost of reserving the memory used by the @i{Amd} process (making it
-unavailable for other processes).
-
-@c ----------------------------------------------------------------
-@node portmap_program Parameter, preferred_amq_port Parameter, plock Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{portmap_program} Parameter
-@cindex portmap_program Parameter
-
-(type=numeric, default=300019). Specify an alternate Port-mapper RPC
-program number, other than the official number. This is useful when
-running multiple @i{Amd} processes. For example, you can run another
-@i{Amd} in ``test'' mode, without affecting the primary @i{Amd} process
-in any way. For safety reasons, the alternate program numbers that can
-be specified must be in the range 300019-300029, inclusive. @i{Amq} has
-an option @code{-P} which can be used to specify an alternate program
-number of an @i{Amd} to contact. In this way, amq can fully control any
-number of @i{Amd} processes running on the same host.
-
-@c ----------------------------------------------------------------
-@node preferred_amq_port Parameter, print_pid Parameter, portmap_program Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{preferred_amq_port} Parameter
-@cindex preferred_amq_port Parameter
-
-(type=numeric, default=0). Specify an alternate Port-mapper RPC port
-number for @i{Amd}'s @i{Amq} service. This is used for both UDP and
-TCP. Setting this value to 0 (or not defining it) will cause @i{Amd}
-to select an arbitrary port number. Setting the @i{Amq} RPC service
-port to a specific number is useful in firewalled or NAT'ed
-environments, where you need to know which port @i{Amd} will listen
-on.
-
-@c ----------------------------------------------------------------
-@node print_pid Parameter, print_version Parameter, preferred_amq_port Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{print_pid} Parameter
-@cindex print_pid Parameter
-
-(type=boolean, default=@samp{no}). Same as the @code{-p} option to @i{Amd}.
-If @samp{yes}, @i{Amd} will print its process ID upon starting.
-
-@c ----------------------------------------------------------------
-@node print_version Parameter, restart_mounts Parameter, print_pid Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{print_version} Parameter
-@cindex print_version Parameter
-
-(type=boolean, default=@samp{no}). Same as the @code{-v} option to @i{Amd},
-but the version prints and @i{Amd} continues to run. If @samp{yes}, @i{Amd}
-will print its version information string, which includes some
-configuration and compilation values.
-
-@c ----------------------------------------------------------------
-@node restart_mounts Parameter, show_statfs_entries Parameter, print_version Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{restart_mounts} Parameter
-@cindex restart_mounts Parameter
-
-(type=boolean, default=@samp{no}). Same as the @code{-r} option to @i{Amd}.
-If @samp{yes} @i{Amd} will scan the mount table to determine which file
-systems are currently mounted. Whenever one of these would have been
-auto-mounted, @i{Amd} inherits it.
-
-@c ----------------------------------------------------------------
-@node show_statfs_entries Parameter, truncate_log Parameter, restart_mounts Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{show_statfs_entries} Parameter
-@cindex show_statfs_entries Parameter
-
-(type=boolean), default=@samp{no}). If @samp{yes}, then all maps which are
-browsable will also show the number of entries (keys) they have when
-@b{df}(1) runs. (This is accomplished by returning non-zero values to
-the @b{statfs}(2) system call).
-
-@c ----------------------------------------------------------------
-@node truncate_log Parameter, unmount_on_exit Parameter, show_statfs_entries Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{truncate_log} Parameter
-@cindex truncate_log Parameter
-
-(type=boolean), default=@samp{no}). If @samp{yes}, then @i{Amd} will
-truncate the log file (if it's a regular file) on startup. This could
-be useful when conducting extensive testing on @i{Amd} maps (or
-@i{Amd} itself) and you don't want to see log data from a previous run
-in the same file.
-
-@c ----------------------------------------------------------------
-@node unmount_on_exit Parameter, use_tcpwrappers Parameter, truncate_log Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{unmount_on_exit} Parameter
-@cindex unmount_on_exit Parameter
-
-(type=boolean, default=@samp{no}). If @samp{yes}, then @i{Amd} will attempt
-to unmount all file systems which it knows about. Normally it leaves
-all (esp. NFS) mounted file systems intact. Note that @i{Amd} does not
-know about file systems mounted before it starts up, unless the
-@samp{restart_mounts} option is used (@pxref{restart_mounts Parameter}).
-
-@c ----------------------------------------------------------------
-@node use_tcpwrappers Parameter, vendor Parameter, unmount_on_exit Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{use_tcpwrappers} Parameter
-@cindex use_tcpwrappers Parameter
-
-(type=boolean), default=@samp{yes}). If @samp{yes}, then amd will use
-the tcpwrappers (tcpd/librwap) library (if available) to control
-access to @i{Amd} via the @code{/etc/hosts.allow} and
-@code{/etc/hosts.deny} files. @i{Amd} will verify that the host
-running @i{Amq} is authorized to connect. The @code{amd} service name
-must used in the @code{/etc/hosts.allow} and @code{/etc/hosts.deny}
-files. For example, to allow only localhost to connect to @i{Amd},
-add this line to @code{/etc/hosts.allow}:
-
-@example
-amd: localhost
-@end example
-
-and this line to @code{/etc/hosts.deny}:
-
-@example
-amd: ALL
-@end example
-
-Consult the man pages for @b{hosts_access}(5) for more information on using
-the tcpwrappers access-control library.
-
-Note that in particular, you should not configure your @code{hosts.allow}
-file to spawn a command for @i{Amd}: that will cause @i{Amd} to not be able
-to @code{waitpid} on the child process ID of any background un/mount that
-@i{Amd} issued, resulting in a confused @i{Amd} that does not know what
-happened to those background un/mount requests.
-
-@c ----------------------------------------------------------------
-@node vendor Parameter, , use_tcpwrappers Parameter, Global Parameters
-@comment node-name, next, previous, up
-@subsection @t{vendor} Parameter
-@cindex vendor Parameter
-
-(type=string, default to compiled in value). The name of the vendor of
-the operating system. Overrides the compiled-in vendor name. Useful
-when the compiled-in name is not desired. For example, most Intel based
-systems set the vendor name to @samp{unknown}, but you can set it to
-@samp{redhat}.
-
-@c ================================================================
-@node Regular Map Parameters, amd.conf Examples, Global Parameters, Amd Configuration File
-@comment node-name, next, previous, up
-@section Regular Map Parameters
-@cindex amd.conf regular map parameters
-
-The following parameters are applicable only to regular map sections.
-
-@menu
-* map_name Parameter::
-* tag Parameter::
-@end menu
-
-@c ----------------------------------------------------------------
-@node map_name Parameter, tag Parameter, Regular Map Parameters, Regular Map Parameters
-@comment node-name, next, previous, up
-@subsection map_name Parameter
-@cindex map_name Parameter
-
-(type=string, must be specified). Name of the map where the keys are
-located.
-
-@c ----------------------------------------------------------------
-@node tag Parameter, , map_name Parameter, Regular Map Parameters
-@comment node-name, next, previous, up
-@subsection tag Parameter
-@cindex tag Parameter
-
-(type=string, default no tag). Each map entry in the configuration file
-can be tagged. If no tag is specified, that map section will always be
-processed by @i{Amd}. If it is specified, then @i{Amd} will process the map
-if the @code{-T} option was given to @i{Amd}, and the value given to that
-command-line option matches that in the map section.
-
-@c ================================================================
-@node amd.conf Examples, , Regular Map Parameters, Amd Configuration File
-@comment node-name, next, previous, up
-@section amd.conf Examples
-@cindex amd.conf examples
-
-The following is the actual @code{amd.conf} file I used at the
-Computer Science Department of Columbia University.
-
-@example
-# GLOBAL OPTIONS SECTION
-[ global ]
-normalize_hostnames = no
-print_pid = no
-#pid_file = /var/run/amd.pid
-restart_mounts = yes
-#unmount_on_exit = yes
-auto_dir = /n
-log_file = /var/log/amd
-log_options = all
-#debug_options = defaults
-plock = no
-selectors_in_defaults = yes
-# config.guess picks up "sunos5" and I don't want to edit my maps yet
-os = sos5
-# if you print_version after setting up "os", it will show it.
-print_version = no
-map_type = file
-search_path = /etc/amdmaps:/usr/lib/amd:/usr/local/AMD/lib
-browsable_dirs = yes
-fully_qualified_hosts = no
-
-# DEFINE AN AMD MOUNT POINT
-[ /u ]
-map_name = amd.u
-
-[ /proj ]
-map_name = amd.proj
-
-[ /src ]
-map_name = amd.src
-
-[ /misc ]
-map_name = amd.misc
-
-[ /import ]
-map_name = amd.import
-
-[ /tftpboot/.amd ]
-tag = tftpboot
-map_name = amd.tftpboot
-@end example
-
-@c ################################################################
-@node Run-time Administration, FSinfo, Amd Configuration File, Top
-@comment node-name, next, previous, up
-@chapter Run-time Administration
-@cindex Run-time administration
-@cindex Amq command
-
-@menu
-* Starting Amd::
-* Stopping Amd::
-* Restarting Amd::
-* Controlling Amd::
-@end menu
-
-@node Starting Amd, Stopping Amd, Run-time Administration, Run-time Administration
-@comment node-name, next, previous, up
-@section Starting @i{Amd}
-@cindex Starting Amd
-@cindex Additions to /etc/rc.local
-@cindex /etc/rc.local additions
-@cindex ctl-amd
-
-@i{Amd} is best started from @samp{/etc/rc.local} on BSD systems, or
-from the appropriate start-level script in @samp{/etc/init.d} on System V
-systems.
-
-@example
-if [ -f /usr/local/sbin/ctl-amd ]; then
- /usr/local/sbin/ctl-amd start; (echo -n ' amd') > /dev/console
-fi
-@end example
-
-@noindent
-The shell script, @samp{ctl-amd} is used to start, stop, or restart
-@i{Amd}. It is a relatively generic script. All options you want to
-set should not be made in this script, but rather updated in the
-@file{amd.conf} file. @xref{Amd Configuration File}.
-
-If you do not wish to use an @i{Amd} configuration file, you may start
-@i{Amd} manually. For example, getting the map entries via NIS:
-
-@example
-amd -r -l /var/log/amd `ypcat -k auto.master`
-@end example
-
-@node Stopping Amd, Restarting Amd, Starting Amd, Run-time Administration
-@comment node-name, next, previous, up
-@section Stopping @i{Amd}
-@cindex Stopping Amd
-@cindex SIGTERM signal
-@cindex SIGINT signal
-
-@i{Amd} stops in response to two signals.
-
-@table @samp
-@item SIGTERM
-causes the top-level automount points to be unmounted and then @i{Amd}
-to exit. Any automounted filesystems are left mounted. They can be
-recovered by restarting @i{Amd} with the @code{-r} command line option.@refill
-
-@item SIGINT
-causes @i{Amd} to attempt to unmount any filesystems which it has
-automounted, in addition to the actions of @samp{SIGTERM}. This signal
-is primarily used for debugging.@refill
-@end table
-
-Actions taken for other signals are undefined.
-
-The easiest and safest way to stop @i{Amd}, without having to find its
-process ID by hand, is to use the @file{ctl-amd} script, as with:
-
-@example
-ctl-amd stop
-@end example
-
-@node Restarting Amd, Controlling Amd, Stopping Amd, Run-time Administration
-@comment node-name, next, previous, up
-@section Restarting @i{Amd}
-@cindex Restarting Amd
-@cindex Killing and starting Amd
-
-Before @i{Amd} can be started, it is vital to ensure that no other
-@i{Amd} processes are managing any of the mount points, and that the
-previous process(es) have terminated cleanly. When a terminating signal
-is set to @i{Amd}, the automounter does @emph{not} terminate right then.
-Rather, it starts by unmounting all of its managed mount mounts in the
-background, and then terminates. It usually takes a few seconds for
-this process to happen, but it can take an arbitrarily longer time. If
-two or more @i{Amd} processes attempt to manage the same mount point, it
-usually will result in a system lockup.
-
-The easiest and safest way to restart @i{Amd}, without having to find
-its process ID by hand, sending it the @samp{SIGTERM} signal, waiting for @i{Amd}
-to die cleanly, and verifying so, is to use the @file{ctl-amd} script,
-as with:
-
-@example
-ctl-amd restart
-@end example
-
-The script will locate the process ID of @i{Amd}, kill it, and wait for
-it to die cleanly before starting a new instance of the automounter.
-@file{ctl-amd} will wait for a total of 30 seconds for @i{Amd} to die,
-and will check once every 5 seconds if it had.
-
-@node Controlling Amd, , Restarting Amd, Run-time Administration
-@comment node-name, next, previous, up
-@section Controlling @i{Amd}
-@cindex Controlling Amd
-@cindex Discovering what is going on at run-time
-@cindex Listing currently mounted filesystems
-
-It is sometimes desirable or necessary to exercise external control
-over some of @i{Amd}'s internal state. To support this requirement,
-@i{Amd} implements an RPC interface which is used by the @dfn{Amq} program.
-A variety of information is available.
-
-@i{Amq} generally applies an operation, specified by a single letter option,
-to a list of mount points. The default operation is to obtain statistics
-about each mount point. This is similar to the output shown above
-but includes information about the number and type of accesses to each
-mount point.
-
-@menu
-* Amq default:: Default command behavior.
-* Amq -f option:: Flushing the map cache.
-* Amq -h option:: Controlling a non-local host.
-* Amq -H option:: Print help message.
-* Amq -l option:: Controlling the log file.
-* Amq -m option:: Obtaining mount statistics.
-* Amq -p option:: Getting Amd's process ID.
-* Amq -P option:: Contacting alternate Amd processes.
-* Amq -q option:: Suppress synchronous unmounting errors.
-* Amq -s option:: Obtaining global statistics.
-* Amq -T option:: Use TCP transport.
-* Amq -U option:: Use UDP transport.
-* Amq -u option:: Forcing volumes to time out.
-* Amq -v option:: Version information.
-* Amq -w option:: Print Amd current working directory.
-* Other Amq options:: Three other special options.
-@end menu
-
-@c ----------------------------------------------------------------
-@node Amq default, Amq -f option, Controlling Amd, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} default information
-
-With no arguments, @dfn{Amq} obtains a brief list of all existing
-mounts created by @i{Amd}. This is different from the list displayed by
-@b{df}(1) since the latter only includes system mount points.
-
-@noindent
-The output from this option includes the following information:
-
-@itemize @bullet
-@item
-the automount point,
-@item
-the filesystem type,
-@item
-the mount map or mount information,
-@item
-the internal, or system mount point.
-@end itemize
-
-@noindent
-For example:
-
-@example
-/ root "root" sky:(pid75)
-/homes toplvl /usr/local/etc/amd.homes /homes
-/home toplvl /usr/local/etc/amd.home /home
-/homes/jsp nfs charm:/home/charm /a/charm/home/charm/jsp
-/homes/phjk nfs toytown:/home/toytown /a/toytown/home/toytown/ai/phjk
-@end example
-
-@noindent
-If an argument is given then statistics for that volume name will
-be output. For example:
-
-@example
-What Uid Getattr Lookup RdDir RdLnk Statfs Mounted@@
-/homes 0 1196 512 22 0 30 90/09/14 12:32:55
-/homes/jsp 0 0 0 0 1180 0 90/10/13 12:56:58
-@end example
-
-@table @code
-@item What
-the volume name.
-
-@item Uid
-ignored.
-
-@item Getattr
-the count of NFS @dfn{getattr} requests on this node. This should only be
-non-zero for directory nodes.
-
-@item Lookup
-the count of NFS @dfn{lookup} requests on this node. This should only be
-non-zero for directory nodes.
-
-@item RdDir
-the count of NFS @dfn{readdir} requests on this node. This should only
-be non-zero for directory nodes.
-
-@item RdLnk
-the count of NFS @dfn{readlink} requests on this node. This should be
-zero for directory nodes.
-
-@item Statfs
-the count of NFS @dfn{statfs} requests on this node. This should only
-be non-zero for top-level automount points.
-
-@item Mounted@@
-the date and time the volume name was first referenced.
-@end table
-
-@c ----------------------------------------------------------------
-@node Amq -f option, Amq -h option, Amq default, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-f} option
-@cindex Flushing the map cache
-@cindex Map cache, flushing
-
-The @code{-f} option causes @i{Amd} to flush the internal mount map cache.
-This is useful for example in Hesiod maps since @i{Amd} will not
-automatically notice when they have been updated. The map cache can
-also be synchronized with the map source by using the @samp{sync} option
-(@pxref{Automount Filesystem}).@refill
-
-@c ----------------------------------------------------------------
-@node Amq -h option, Amq -H option, Amq -f option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-h} option
-@cindex Querying an alternate host
-
-By default the local host is used. In an HP-UX cluster the root server
-is used since that is the only place in the cluster where @i{Amd} will
-be running. To query @i{Amd} on another host the @code{-h} option should
-be used.
-
-@c ----------------------------------------------------------------
-@node Amq -H option, Amq -l option, Amq -h option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-H} option
-@cindex Displaying brief help
-@cindex Help; showing from Amq
-
-Print a brief help and usage string.
-
-@c ----------------------------------------------------------------
-@node Amq -l option, Amq -m option, Amq -H option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-l} option
-@cindex Resetting the Amd log file
-@cindex Setting the Amd log file via Amq
-@cindex Log file, resetting
-
-Tell @i{Amd} to use @i{log_file} as the log file name. For security
-reasons, this @emph{must} be the same log file which @i{Amd} used when
-started. This option is therefore only useful to refresh @i{Amd}'s open
-file handle on the log file, so that it can be rotated and compressed
-via daily cron jobs.
-
-@c ----------------------------------------------------------------
-@node Amq -m option, Amq -p option, Amq -l option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-m} option
-
-The @code{-m} option displays similar information about mounted
-filesystems, rather than automount points. The output includes the
-following information:
-
-@itemize @bullet
-@item
-the mount information,
-@item
-the mount point,
-@item
-the filesystem type,
-@item
-the number of references to this filesystem,
-@item
-the server hostname,
-@item
-the state of the file server,
-@item
-any error which has occurred.
-@end itemize
-
-For example:
-
-@example
-"root" truth:(pid602) root 1 localhost is up
-hesiod.home /home toplvl 1 localhost is up
-hesiod.vol /vol toplvl 1 localhost is up
-hesiod.homes /homes toplvl 1 localhost is up
-amy:/home/amy /a/amy/home/amy nfs 5 amy is up
-swan:/home/swan /a/swan/home/swan nfs 0 swan is up (Permission denied)
-ex:/home/ex /a/ex/home/ex nfs 0 ex is down
-@end example
-
-When the reference count is zero the filesystem is not mounted but
-the mount point and server information is still being maintained
-by @i{Amd}.
-
-@c ----------------------------------------------------------------
-@ignore
-@comment Retained for future consideration: from the description of the
-@comment amq -M option removed in amd 6.0.5.
-
-A future release of @i{Amd} will include code to allow the @b{mount}(8)
-command to mount automount points:
-
-@example
-mount -t amd /vol hesiod.vol
-@end example
-
-This will then allow @i{Amd} to be controlled from the standard system
-filesystem mount list.
-
-@end ignore
-
-@c ----------------------------------------------------------------
-@node Amq -p option, Amq -P option, Amq -m option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-p} option
-@cindex Process ID; Amd
-@cindex Amd's process ID
-@cindex Amd's PID
-@cindex PID; Amd
-
-Return the process ID of the remote or locally running @i{Amd}. Useful
-when you need to send a signal to the local @i{Amd} process, and would
-rather not have to search through the process table. This option is
-used in the @file{ctl-amd} script.
-
-@c ----------------------------------------------------------------
-@node Amq -P option, Amq -q option, Amq -p option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-P} option
-@cindex Multiple Amd processes
-@cindex Running multiple Amd
-@cindex Debugging a new Amd configuration
-@cindex RPC Program numbers; Amd
-
-Contact an alternate running @i{Amd} that had registered itself on a
-different RPC @var{program_number} and apply all other operations to
-that instance of the automounter. This is useful when you run multiple
-copies of @i{Amd}, and need to manage each one separately. If not
-specified, @i{Amq} will use the default program number for @i{Amd}, 300019.
-For security reasons, the only alternate program numbers @i{Amd} can use
-range from 300019 to 300029, inclusive.
-
-For example, to kill an alternate running @i{Amd}:
-
-@example
-kill `amq -p -P 300020`
-@end example
-
-@c ----------------------------------------------------------------
-@node Amq -q option, Amq -s option, Amq -P option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-q} option
-@cindex Unmounting a filesystem
-
-Suppress any error messages produced when a synchronous unmount fails.
-See @ref{Amq -u option}.
-
-@c ----------------------------------------------------------------
-@node Amq -s option, Amq -T option, Amq -q option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-s} option
-@cindex Global statistics
-@cindex Statistics
-
-The @code{-s} option displays global statistics. If any other options are specified
-or any filesystems named then this option is ignored. For example:
-
-@example
-requests stale mount mount unmount
-deferred fhandles ok failed failed
-1054 1 487 290 7017
-@end example
-
-@table @samp
-@item Deferred requests
-are those for which an immediate reply could not be constructed. For
-example, this would happen if a background mount was required.
-
-@item Stale filehandles
-counts the number of times the kernel passes a stale filehandle to @i{Amd}.
-Large numbers indicate problems.
-
-@item Mount ok
-counts the number of automounts which were successful.
-
-@item Mount failed
-counts the number of automounts which failed.
-
-@item Unmount failed
-counts the number of times a filesystem could not be unmounted. Very
-large numbers here indicate that the time between unmount attempts
-should be increased.
-@end table
-
-@c ----------------------------------------------------------------
-@node Amq -T option, Amq -U option, Amq -s option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-T} option
-@cindex Forcing Amq to use a TCP transport
-@cindex TCP; using with Amq
-
-The @code{-T} option causes the @i{Amq} to contact @i{Amd} using the TCP
-transport only (connection oriented). Normally, @i{Amq} will use TCP
-first, and if that failed, will try UDP.
-
-@c ----------------------------------------------------------------
-@node Amq -U option, Amq -u option, Amq -T option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-U} option
-@cindex Forcing Amq to use a UDP transport
-@cindex UDP; using with Amq
-
-The @code{-U} option causes the @i{Amq} to contact @i{Amd} using the UDP
-transport only (connectionless). Normally, @i{Amq} will use TCP first,
-and if that failed, will try UDP.
-
-@c ----------------------------------------------------------------
-@node Amq -u option, Amq -v option, Amq -U option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-u} option
-@cindex Forcing filesystem to time out
-@cindex Unmounting a filesystem
-
-The @code{-u} option causes the time-to-live interval of the named
-mount points to be expired, thus causing an unmount attempt. This is
-the only safe way to unmount an automounted filesystem. If @code{-u}
-is repeated, then @i{Amd} will attempt to unmount the filesystem
-synchronously. This makes things like
-
-@example
-amq -uu /t/cd0d && eject cd0
-@end example
-
-@noindent
-work as expected. Any error messages this might produce can be
-suppressed with the @code{-q} option. See @ref{Amq -q option}.
-
-@c The @code{-H} option informs @i{Amd} that the specified mount point
-@c has hung - as if its keepalive timer had expired.
-
-@c ----------------------------------------------------------------
-@node Amq -v option, Amq -w option, Amq -u option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-v} option
-@cindex Version information at run-time
-
-The @code{-v} option displays the version of @i{Amd} in a similar way to
-@i{Amd}'s @code{-v} option.
-
-@c ----------------------------------------------------------------
-@node Amq -w option, Other Amq options, Amq -v option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection @i{Amq} @code{-w} option
-@cindex Getting real working directory
-
-The @code{-w} option translates a full pathname as returned by
-@b{getpwd}(3) into a short @i{Amd} pathname that goes through its mount
-points. This option requires that @i{Amd} is running.
-
-@c ----------------------------------------------------------------
-@node Other Amq options, , Amq -w option, Controlling Amd
-@comment node-name, next, previous, up
-@subsection Other @i{Amq} options
-@cindex Logging options via Amq
-@cindex Debugging options via Amq
-
-Two other operations are implemented. These modify the state of @i{Amd}
-as a whole, rather than any particular filesystem. The @code{-x} and
-@code{-D} options have exactly the same effect as @i{Amd}'s corresponding
-command line options.
-
-When @i{Amd} receives the @code{-x} flag, it disallows turning off the
-@samp{fatal} or @samp{error} flags. Both are on by default. They are
-mandatory so that @i{Amd} could report important errors, including
-errors relating to turning flags on/off.
-
-@c ################################################################
-@node FSinfo, Hlfsd, Run-time Administration, Top
-@comment node-name, next, previous, up
-@chapter FSinfo
-@cindex FSinfo
-@cindex Filesystem info package
-
-XXX: this chapter should be reviewed by someone knowledgeable with
-fsinfo.
-
-@menu
-* FSinfo Overview:: Introduction to FSinfo.
-* Using FSinfo:: Basic concepts.
-* FSinfo Grammar:: Language syntax, semantics and examples.
-* FSinfo host definitions:: Defining a new host.
-* FSinfo host attributes:: Definable host attributes.
-* FSinfo filesystems:: Defining locally attached filesystems.
-* FSinfo static mounts:: Defining additional static mounts.
-* FSinfo automount definitions::
-* FSinfo Command Line Options::
-* FSinfo errors::
-@end menu
-
-@node FSinfo Overview, Using FSinfo, FSinfo, FSinfo
-@comment node-name, next, previous, up
-@section @i{FSinfo} overview
-@cindex FSinfo overview
-
-@i{FSinfo} is a filesystem management tool. It has been designed to
-work with @i{Amd} to help system administrators keep track of the ever
-increasing filesystem namespace under their control.
-
-The purpose of @i{FSinfo} is to generate all the important standard
-filesystem data files from a single set of input data. Starting with a
-single data source guarantees that all the generated files are
-self-consistent. One of the possible output data formats is a set of
-@i{Amd} maps which can be used among the set of hosts described in the
-input data.
-
-@i{FSinfo} implements a declarative language. This language is
-specifically designed for describing filesystem namespace and physical
-layouts. The basic declaration defines a mounted filesystem including
-its device name, mount point, and all the volumes and access
-permissions. @i{FSinfo} reads this information and builds an internal
-map of the entire network of hosts. Using this map, many different data
-formats can be produced including @file{/etc/fstab},
-@file{/etc/exports}, @i{Amd} mount maps and
-@file{/etc/bootparams}.@refill
-
-@node Using FSinfo, FSinfo Grammar, FSinfo Overview, FSinfo
-@comment node-name, next, previous, up
-@section Using @i{FSinfo}
-@cindex Using FSinfo
-
-The basic strategy when using @i{FSinfo} is to gather all the
-information about all disks on all machines into one set of
-declarations. For each machine being managed, the following data is
-required:
-
-@itemize @bullet
-@item
-Hostname
-@item
-List of all filesystems and, optionally, their mount points.
-@item
-Names of volumes stored on each filesystem.
-@item
-NFS export information for each volume.
-@item
-The list of static filesystem mounts.
-@end itemize
-
-The following information can also be entered into the same
-configuration files so that all data can be kept in one place.
-
-@itemize @bullet
-@item
-List of network interfaces
-@item
-IP address of each interface
-@item
-Hardware address of each interface
-@item
-Dumpset to which each filesystem belongs
-@item
-and more @dots{}
-@end itemize
-
-To generate @i{Amd} mount maps, the automount tree must also be defined
-(@pxref{FSinfo automount definitions}). This will have been designed at
-the time the volume names were allocated. Some volume names will not be
-automounted, so @i{FSinfo} needs an explicit list of which volumes
-should be automounted.@refill
-
-Hostnames are required at several places in the @i{FSinfo} language. It
-is important to stick to either fully qualified names or unqualified
-names. Using a mixture of the two will inevitably result in confusion.
-
-Sometimes volumes need to be referenced which are not defined in the set
-of hosts being managed with @i{FSinfo}. The required action is to add a
-dummy set of definitions for the host and volume names required. Since
-the files generated for those particular hosts will not be used on them,
-the exact values used is not critical.
-
-@node FSinfo Grammar, FSinfo host definitions, Using FSinfo, FSinfo
-@comment node-name, next, previous, up
-@section @i{FSinfo} grammar
-@cindex FSinfo grammar
-@cindex Grammar, FSinfo
-
-@i{FSinfo} has a relatively simple grammar. Distinct syntactic
-constructs exist for each of the different types of data, though they
-share a common flavor. Several conventions are used in the grammar
-fragments below.
-
-The notation, @i{list(}@t{xxx}@i{)}, indicates a list of zero or more
-@t{xxx}'s. The notation, @i{opt(}@t{xxx}@i{)}, indicates zero or one
-@t{xxx}. Items in double quotes, @i{eg} @t{"host"}, represent input
-tokens. Items in angle brackets, @i{eg} @var{<hostname>}, represent
-strings in the input. Strings need not be in double quotes, except to
-differentiate them from reserved words. Quoted strings may include the
-usual set of C ``@t{\}'' escape sequences with one exception: a
-backslash-newline-whitespace sequence is squashed into a single space
-character. To defeat this feature, put a further backslash at the start
-of the second line.
-
-At the outermost level of the grammar, the input consists of a
-sequence of host and automount declarations. These declarations are
-all parsed before they are analyzed. This means they can appear in
-any order and cyclic host references are possible.
-
-@example
-fsinfo : @i{list(}fsinfo_attr@i{)} ;
-
-fsinfo_attr : host | automount ;
-@end example
-
-@menu
-* FSinfo host definitions::
-* FSinfo automount definitions::
-@end menu
-
-@node FSinfo host definitions, FSinfo host attributes, FSinfo Grammar, FSinfo
-@comment node-name, next, previous, up
-@section @i{FSinfo} host definitions
-@cindex FSinfo host definitions
-@cindex Defining a host, FSinfo
-
-A host declaration consists of three parts: a set of machine attribute
-data, a list of filesystems physically attached to the machine, and a
-list of additional statically mounted filesystems.
-
-@example
-host : "host" host_data @i{list(}filesystem@i{@i{)}} @i{list(}mount@i{@i{)}} ;
-@end example
-
-Each host must be declared in this way exactly once. Such things as the
-hardware address, the architecture and operating system types and the
-cluster name are all specified within the @dfn{host data}.
-
-All the disks the machine has should then be described in the @dfn{list
-of filesystems}. When describing disks, you can specify what
-@dfn{volname} the disk/partition should have and all such entries are
-built up into a dictionary which can then be used for building the
-automounter maps.
-
-The @dfn{list of mounts} specifies all the filesystems that should be
-statically mounted on the machine.
-
-@menu
-* FSinfo host attributes::
-* FSinfo filesystems::
-* FSinfo static mounts::
-@end menu
-
-@node FSinfo host attributes, FSinfo filesystems, FSinfo host definitions , FSinfo host definitions
-@comment node-name, next, previous, up
-@section @i{FSinfo} host attributes
-@cindex FSinfo host attributes
-@cindex Defining host attributes, FSinfo
-
-The host data, @dfn{host_data}, always includes the @dfn{hostname}. In
-addition, several other host attributes can be given.
-
-@example
-host_data : @var{<hostname>}
- | "@{" @i{list(}host_attrs@i{)} "@}" @var{<hostname>}
- ;
-
-host_attrs : host_attr "=" @var{<string>}
- | netif
- ;
-
-host_attr : "config"
- | "arch"
- | "os"
- | "cluster"
- ;
-@end example
-
-The @dfn{hostname} is, typically, the fully qualified hostname of the
-machine.
-
-Examples:
-
-@example
-host dylan.doc.ic.ac.uk
-
-host @{
- os = hpux
- arch = hp300
-@} dougal.doc.ic.ac.uk
-@end example
-
-The options that can be given as host attributes are shown below.
-
-@menu
-* FSinfo netif Option:: FSinfo host netif.
-* FSinfo config Option:: FSinfo host config.
-* FSinfo arch Option:: FSinfo host arch.
-* FSinfo os Option:: FSinfo host os.
-* FSinfo cluster Option:: FSinfo host cluster.
-@end menu
-
-@node FSinfo netif Option, FSinfo config Option, , FSinfo host attributes
-@comment node-name, next, previous, up
-@subsection netif Option
-
-This defines the set of network interfaces configured on the machine.
-The interface attributes collected by @i{FSinfo} are the IP address,
-subnet mask and hardware address. Multiple interfaces may be defined
-for hosts with several interfaces by an entry for each interface. The
-values given are sanity checked, but are currently unused for anything
-else.
-
-@example
-netif : "netif" @var{<string>} "@{" @i{list(}netif_attrs@i{)} "@}" ;
-
-netif_attrs : netif_attr "=" @var{<string>} ;
-
-netif_attr : "inaddr" | "netmask" | "hwaddr" ;
-@end example
-
-Examples:
-
-@example
-netif ie0 @{
- inaddr = 129.31.81.37
- netmask = 0xfffffe00
- hwaddr = "08:00:20:01:a6:a5"
-@}
-
-netif ec0 @{ @}
-@end example
-
-@node FSinfo config Option, FSinfo arch Option, FSinfo netif Option, FSinfo host attributes
-@comment node-name, next, previous, up
-@subsection config Option
-@cindex FSinfo config host attribute
-@cindex config, FSinfo host attribute
-
-This option allows you to specify configuration variables for the
-startup scripts (@file{rc} scripts). A simple string should immediately
-follow the keyword.
-
-Example:
-
-@example
-config "NFS_SERVER=true"
-config "ZEPHYR=true"
-@end example
-
-This option is currently unsupported.
-
-@node FSinfo arch Option, FSinfo os Option, FSinfo config Option, FSinfo host attributes
-@comment node-name, next, previous, up
-@subsection arch Option
-@cindex FSinfo arch host attribute
-@cindex arch, FSinfo host attribute
-
-This defines the architecture of the machine. For example:
-
-@example
-arch = hp300
-@end example
-
-This is intended to be of use when building architecture specific
-mountmaps, however, the option is currently unsupported.
-
-@node FSinfo os Option, FSinfo cluster Option, FSinfo arch Option, FSinfo host attributes
-@comment node-name, next, previous, up
-@subsection os Option
-@cindex FSinfo os host attribute
-@cindex os, FSinfo host attribute
-
-This defines the operating system type of the host. For example:
-
-@example
-os = hpux
-@end example
-
-This information is used when creating the @file{fstab} files, for
-example in choosing which format to use for the @file{fstab} entries
-within the file.
-
-@node FSinfo cluster Option, , FSinfo os Option, FSinfo host attributes
-@comment node-name, next, previous, up
-@subsection cluster Option
-@cindex FSinfo cluster host attribute
-@cindex cluster, FSinfo host attribute
-
-This is used for specifying in which cluster the machine belongs. For
-example:
-
-@example
-cluster = "theory"
-@end example
-
-The cluster is intended to be used when generating the automount maps,
-although it is currently unsupported.
-
-@node FSinfo filesystems, FSinfo static mounts, FSinfo host attributes, FSinfo host definitions
-@comment node-name, next, previous, up
-@section @i{FSinfo} filesystems
-@cindex FSinfo filesystems
-
-The list of physically attached filesystems follows the machine
-attributes. These should define all the filesystems available from this
-machine, whether exported or not. In addition to the device name,
-filesystems have several attributes, such as filesystem type, mount
-options, and @samp{fsck} pass number which are needed to generate
-@file{fstab} entries.
-
-@example
-filesystem : "fs" @var{<device>} "@{" @i{list(}fs_data@i{)} "@}" ;
-
-fs_data : fs_data_attr "=" @var{<string>}
- | mount
- ;
-
-fs_data_attr
- : "fstype" | "opts" | "passno"
- | "freq" | "dumpset" | "log"
- ;
-@end example
-
-Here, @var{<device>} is the device name of the disk (for example,
-@file{/dev/dsk/2s0}). The device name is used for building the mount
-maps and for the @file{fstab} file. The attributes that can be
-specified are shown in the following section.
-
-The @i{FSinfo} configuration file for @code{dylan.doc.ic.ac.uk} is listed below.
-
-@example
-host dylan.doc.ic.ac.uk
-
-fs /dev/dsk/0s0 @{
- fstype = swap
-@}
-
-fs /dev/dsk/0s0 @{
- fstype = hfs
- opts = rw,noquota,grpid
- passno = 0;
- freq = 1;
- mount / @{ @}
-@}
-
-fs /dev/dsk/1s0 @{
- fstype = hfs
- opts = defaults
- passno = 1;
- freq = 1;
- mount /usr @{
- local @{
- exportfs "dougal eden dylan zebedee brian"
- volname /nfs/hp300/local
- @}
- @}
-@}
-
-fs /dev/dsk/2s0 @{
- fstype = hfs
- opts = defaults
- passno = 1;
- freq = 1;
- mount default @{
- exportfs "toytown_clients hangers_on"
- volname /home/dylan/dk2
- @}
-@}
-
-fs /dev/dsk/3s0 @{
- fstype = hfs
- opts = defaults
- passno = 1;
- freq = 1;
- mount default @{
- exportfs "toytown_clients hangers_on"
- volname /home/dylan/dk3
- @}
-@}
-
-fs /dev/dsk/5s0 @{
- fstype = hfs
- opts = defaults
- passno = 1;
- freq = 1;
- mount default @{
- exportfs "toytown_clients hangers_on"
- volname /home/dylan/dk5
- @}
-@}
-@end example
-
-@menu
-* FSinfo fstype Option:: FSinfo filesystems fstype.
-* FSinfo opts Option:: FSinfo filesystems opts.
-* FSinfo passno Option:: FSinfo filesystems passno.
-* FSinfo freq Option:: FSinfo filesystems freq.
-* FSinfo mount Option:: FSinfo filesystems mount.
-* FSinfo dumpset Option:: FSinfo filesystems dumpset.
-* FSinfo log Option:: FSinfo filesystems log.
-@end menu
-
-@node FSinfo fstype Option, FSinfo opts Option, , FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection fstype Option
-@cindex FSinfo fstype filesystems option
-@cindex fstype, FSinfo filesystems option
-@cindex export, FSinfo special fstype
-
-This specifies the type of filesystem being declared and will be placed
-into the @file{fstab} file as is. The value of this option will be
-handed to @code{mount} as the filesystem type---it should have such
-values as @code{4.2}, @code{nfs} or @code{swap}. The value is not
-examined for correctness.
-
-There is one special case. If the filesystem type is specified as
-@samp{export} then the filesystem information will not be added to the
-host's @file{fstab} information, but it will still be visible on the
-network. This is useful for defining hosts which contain referenced
-volumes but which are not under full control of @i{FSinfo}.
-
-Example:
-
-@example
-fstype = swap
-@end example
-
-@node FSinfo opts Option, FSinfo passno Option, FSinfo fstype Option, FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection opts Option
-@cindex FSinfo opts filesystems option
-@cindex opts, FSinfo filesystems option
-
-This defines any options that should be given to @b{mount}(8) in the
-@file{fstab} file. For example:
-
-@example
-opts = rw,nosuid,grpid
-@end example
-
-@node FSinfo passno Option, FSinfo freq Option, FSinfo opts Option, FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection passno Option
-@cindex FSinfo passno filesystems option
-@cindex passno, FSinfo filesystems option
-
-This defines the @b{fsck}(8) pass number in which to check the
-filesystem. This value will be placed into the @file{fstab} file.
-
-Example:
-
-@example
-passno = 1
-@end example
-
-@node FSinfo freq Option, FSinfo mount Option, FSinfo passno Option, FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection freq Option
-@cindex FSinfo freq filesystems option
-@cindex freq, FSinfo filesystems option
-
-This defines the interval (in days) between dumps. The value is placed
-as is into the @file{fstab} file.
-
-Example:
-
-@example
-freq = 3
-@end example
-
-@node FSinfo mount Option, FSinfo dumpset Option, FSinfo freq Option, FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection mount Option
-@cindex FSinfo mount filesystems option
-@cindex mount, FSinfo filesystems option
-@cindex exportfs, FSinfo mount option
-@cindex volname, FSinfo mount option
-@cindex sel, FSinfo mount option
-
-This defines the mountpoint at which to place the filesystem. If the
-mountpoint of the filesystem is specified as @code{default}, then the
-filesystem will be mounted in the automounter's tree under its volume
-name and the mount will automatically be inherited by the automounter.
-
-Following the mountpoint, namespace information for the filesystem may
-be described. The options that can be given here are @code{exportfs},
-@code{volname} and @code{sel}.
-
-The format is:
-
-@example
-mount : "mount" vol_tree ;
-
-vol_tree : @i{list(}vol_tree_attr@i{)} ;
-
-vol_tree_attr
- : @var{<string>} "@{" @i{list(}vol_tree_info@i{)} vol_tree "@}" ;
-
-vol_tree_info
- : "exportfs" @var{<export-data>}
- | "volname" @var{<volname>}
- | "sel" @var{<selector-list>}
- ;
-@end example
-
-Example:
-
-@example
-mount default @{
- exportfs "dylan dougal florence zebedee"
- volname /vol/andrew
-@}
-@end example
-
-In the above example, the filesystem currently being declared will have
-an entry placed into the @file{exports} file allowing the filesystem to
-be exported to the machines @code{dylan}, @code{dougal}, @code{florence}
-and @code{zebedee}. The volume name by which the filesystem will be
-referred to remotely, is @file{/vol/andrew}. By declaring the
-mountpoint to be @code{default}, the filesystem will be mounted on the
-local machine in the automounter tree, where @i{Amd} will automatically
-inherit the mount as @file{/vol/andrew}.@refill
-
-@table @samp
-@item exportfs
-a string defining which machines the filesystem may be exported to.
-This is copied, as is, into the @file{exports} file---no sanity checking
-is performed on this string.@refill
-
-@item volname
-a string which declares the remote name by which to reference the
-filesystem. The string is entered into a dictionary and allows you to
-refer to this filesystem in other places by this volume name.@refill
-
-@item sel
-a string which is placed into the automounter maps as a selector for the
-filesystem.@refill
-
-@end table
-
-@node FSinfo dumpset Option, FSinfo log Option, FSinfo mount Option, FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection dumpset Option
-@cindex FSinfo dumpset filesystems option
-@cindex dumpset, FSinfo filesystems option
-
-This provides support for Imperial College's local file backup tools and
-is not documented further here.
-
-@node FSinfo log Option, , FSinfo dumpset Option, FSinfo filesystems
-@comment node-name, next, previous, up
-@subsection log Option
-@cindex FSinfo log filesystems option
-@cindex log, FSinfo filesystems option
-
-Specifies the log device for the current filesystem. This is ignored if
-not required by the particular filesystem type.
-
-@node FSinfo static mounts, FSinfo automount definitions , FSinfo filesystems, FSinfo host definitions
-@comment node-name, next, previous, up
-@section @i{FSinfo} static mounts
-@cindex FSinfo static mounts
-@cindex Statically mounts filesystems, FSinfo
-
-Each host may also have a number of statically mounted filesystems. For
-example, the host may be a diskless workstation in which case it will
-have no @code{fs} declarations. In this case the @code{mount}
-declaration is used to determine from where its filesystems will be
-mounted. In addition to being added to the @file{fstab} file, this
-information can also be used to generate a suitable @file{bootparams}
-file.@refill
-
-@example
-mount : "mount" @var{<volname>} @i{list(}localinfo@i{)} ;
-
-localinfo : localinfo_attr @var{<string>} ;
-
-localinfo_attr
- : "as"
- | "from"
- | "fstype"
- | "opts"
- ;
-@end example
-
-The filesystem specified to be mounted will be searched for in the
-dictionary of volume names built when scanning the list of hosts'
-definitions.
-
-The attributes have the following semantics:
-@table @samp
-@item from @var{machine}
-mount the filesystem from the machine with the hostname of
-@dfn{machine}.@refill
-
-@item as @var{mountpoint}
-mount the filesystem locally as the name given, in case this is
-different from the advertised volume name of the filesystem.
-
-@item opts @var{options}
-native @b{mount}(8) options.
-
-@item fstype @var{type}
-type of filesystem to be mounted.
-@end table
-
-An example:
-
-@example
-mount /export/exec/hp300/local as /usr/local
-@end example
-
-If the mountpoint specified is either @file{/} or @file{swap}, the
-machine will be considered to be booting off the net and this will be
-noted for use in generating a @file{bootparams} file for the host which
-owns the filesystems.
-
-@node FSinfo automount definitions, FSinfo Command Line Options, FSinfo static mounts, FSinfo
-@comment node-name, next, previous, up
-@section Defining an @i{Amd} Mount Map in @i{FSinfo}
-@cindex FSinfo automount definitions
-@cindex Defining an Amd mount map, FSinfo
-
-The maps used by @i{Amd} can be constructed from @i{FSinfo} by defining
-all the automount trees. @i{FSinfo} takes all the definitions found and
-builds one map for each top level tree.
-
-The automount tree is usually defined last. A single automount
-configuration will usually apply to an entire management domain. One
-@code{automount} declaration is needed for each @i{Amd} automount point.
-@i{FSinfo} determines whether the automount point is @dfn{direct}
-(@pxref{Direct Automount Filesystem}) or @dfn{indirect}
-(@pxref{Top-level Filesystem}). Direct automount points are
-distinguished by the fact that there is no underlying
-@dfn{automount_tree}.@refill
-
-@example
-automount : "automount" @i{opt(}auto_opts@i{)} automount_tree ;
-
-auto_opts : "opts" @var{<mount-options>} ;
-
-automount_tree
- : @i{list(}automount_attr@i{)}
- ;
-
-automount_attr
- : @var{<string>} "=" @var{<volname>}
- | @var{<string>} "->" @var{<symlink>}
- | @var{<string>} "@{" automount_tree "@}"
- ;
-@end example
-
-If @var{<mount-options>} is given, then it is the string to be placed in
-the maps for @i{Amd} for the @code{opts} option.
-
-A @dfn{map} is typically a tree of filesystems, for example @file{home}
-normally contains a tree of filesystems representing other machines in
-the network.
-
-A map can either be given as a name representing an already defined
-volume name, or it can be a tree. A tree is represented by placing
-braces after the name. For example, to define a tree @file{/vol}, the
-following map would be defined:
-
-@example
-automount /vol @{ @}
-@end example
-
-Within a tree, the only items that can appear are more maps.
-For example:
-
-@example
-automount /vol @{
- andrew @{ @}
- X11 @{ @}
-@}
-@end example
-
-In this case, @i{FSinfo} will look for volumes named @file{/vol/andrew}
-and @file{/vol/X11} and a map entry will be generated for each. If the
-volumes are defined more than once, then @i{FSinfo} will generate
-a series of alternate entries for them in the maps.@refill
-
-Instead of a tree, either a link (@var{name} @code{->}
-@var{destination}) or a reference can be specified (@var{name} @code{=}
-@var{destination}). A link creates a symbolic link to the string
-specified, without further processing the entry. A reference will
-examine the destination filesystem and optimize the reference. For
-example, to create an entry for @code{njw} in the @file{/homes} map,
-either of the two forms can be used:@refill
-
-@example
-automount /homes @{
- njw -> /home/dylan/njw
-@}
-@end example
-
-or
-
-@example
-automount /homes @{
- njw = /home/dylan/njw
-@}
-@end example
-
-In the first example, when @file{/homes/njw} is referenced from @i{Amd},
-a link will be created leading to @file{/home/dylan/njw} and the
-automounter will be referenced a second time to resolve this filename.
-The map entry would be:
-
-@example
-njw type:=link;fs:=/home/dylan/njw
-@end example
-
-In the second example, the destination directory is analyzed and found
-to be in the filesystem @file{/home/dylan} which has previously been
-defined in the maps. Hence the map entry will look like:
-
-@example
-njw rhost:=dylan;rfs:=/home/dylan;sublink:=njw
-@end example
-
-Creating only one symbolic link, and one access to @i{Amd}.
-
-@node FSinfo Command Line Options, FSinfo errors, FSinfo automount definitions, FSinfo
-@comment node-name, next, previous, up
-@section @i{FSinfo} Command Line Options
-@cindex FSinfo command line options
-@cindex Command line options, FSinfo
-
-@i{FSinfo} is started from the command line by using the command:
-
-@example
-fsinfo [@i{options}] @i{files} ...
-@end example
-
-The input to @i{FSinfo} is a single set of definitions of machines and
-automount maps. If multiple files are given on the command-line, then
-the files are concatenated together to form the input source. The files
-are passed individually through the C pre-processor before being parsed.
-
-Several options define a prefix for the name of an output file. If the
-prefix is not specified no output of that type is produced. The suffix
-used will correspond either to the hostname to which a file belongs, or
-to the type of output if only one file is produced. Dumpsets and the
-@file{bootparams} file are in the latter class. To put the output into
-a subdirectory simply put a @file{/} at the end of the prefix, making
-sure that the directory has already been made before running
-@i{Fsinfo}.
-
-@menu
-* -a FSinfo Option:: Amd automount directory:
-* -b FSinfo Option:: Prefix for bootparams files.
-* -d FSinfo Option:: Prefix for dumpset data files.
-* -e FSinfo Option:: Prefix for exports files.
-* -f FSinfo Option:: Prefix for fstab files.
-* -h FSinfo Option:: Local hostname.
-* -m FSinfo Option:: Prefix for automount maps.
-* -q FSinfo Option:: Ultra quiet mode.
-* -v FSinfo Option:: Verbose mode.
-* -I FSinfo Option:: Define new #include directory.
-* -D-FSinfo Option:: Define macro.
-* -U FSinfo Option:: Undefine macro.
-@end menu
-
-@node -a FSinfo Option, -b FSinfo Option, FSinfo Command Line Options, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-a} @var{autodir}
-
-Specifies the directory name in which to place the automounter's
-mountpoints. This defaults to @file{/a}. Some sites have the autodir set
-to be @file{/amd}, and this would be achieved by:
-
-@example
-fsinfo -a /amd ...
-@end example
-
-@node -b FSinfo Option, -d FSinfo Option, -a FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-b} @var{bootparams}
-@cindex bootparams, FSinfo prefix
-
-This specifies the prefix for the @file{bootparams} filename. If it is
-not given, then the file will not be generated. The @file{bootparams}
-file will be constructed for the destination machine and will be placed
-into a file named @file{bootparams} and prefixed by this string. The
-file generated contains a list of entries describing each diskless
-client that can boot from the destination machine.
-
-As an example, to create a @file{bootparams} file in the directory
-@file{generic}, the following would be used:
-
-@example
-fsinfo -b generic/ ...
-@end example
-
-@node -d FSinfo Option, -e FSinfo Option, -b FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-d} @var{dumpsets}
-@cindex dumpset, FSinfo prefix
-
-This specifies the prefix for the @file{dumpsets} file. If it is not
-specified, then the file will not be generated. The file will be for
-the destination machine and will be placed into a filename
-@file{dumpsets}, prefixed by this string. The @file{dumpsets} file is
-for use by Imperial College's local backup system.
-
-For example, to create a @file{dumpsets} file in the directory @file{generic},
-then you would use the following:
-
-@example
-fsinfo -d generic/ ...
-@end example
-
-@node -e FSinfo Option, -f FSinfo Option, -d FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-e} @var{exportfs}
-@cindex exports, FSinfo prefix
-
-Defines the prefix for the @file{exports} files. If it is not given,
-then the file will not be generated. For each machine defined in the
-configuration files as having disks, an @file{exports} file is
-constructed and given a filename determined by the name of the machine,
-prefixed with this string. If a machine is defined as diskless, then no
-@file{exports} file will be created for it. The files contain entries
-for directories on the machine that may be exported to clients.
-
-Example: To create the @file{exports} files for each diskfull machine
-and place them into the directory @file{exports}:
-
-@example
-fsinfo -e exports/ ...
-@end example
-
-@node -f FSinfo Option, -h FSinfo Option, -e FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-f} @var{fstab}
-@cindex fstab, FSinfo prefix
-
-This defines the prefix for the @file{fstab} files. The files will only
-be created if this prefix is defined. For each machine defined in the
-configuration files, a @file{fstab} file is created with the filename
-determined by prefixing this string with the name of the machine. These
-files contain entries for filesystems and partitions to mount at boot
-time.
-
-Example, to create the files in the directory @file{fstabs}:
-
-@example
-fsinfo -f fstabs/ ...
-@end example
-
-@node -h FSinfo Option, -m FSinfo Option, -f FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-h} @var{hostname}
-@cindex hostname, FSinfo command line option
-
-Defines the hostname of the destination machine to process for. If this
-is not specified, it defaults to the local machine name, as returned by
-@b{gethostname}(2).
-
-Example:
-
-@example
-fsinfo -h dylan.doc.ic.ac.uk ...
-@end example
-
-@node -m FSinfo Option, -q FSinfo Option, -h FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-m} @var{mount-maps}
-@cindex maps, FSinfo command line option
-
-Defines the prefix for the automounter files. The maps will only be
-produced if this prefix is defined. The mount maps suitable for the
-network defined by the configuration files will be placed into files
-with names calculated by prefixing this string to the name of each map.
-
-For example, to create the automounter maps and place them in the
-directory @file{automaps}:
-
-@example
-fsinfo -m automaps/ ...
-@end example
-
-@node -q FSinfo Option, -v FSinfo Option, -m FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-q}
-@cindex quiet, FSinfo command line option
-
-Selects quiet mode. @i{FSinfo} suppress the ``running commentary'' and
-only outputs any error messages which are generated.
-
-@node -v FSinfo Option, -D-FSinfo Option, -q FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-v}
-@cindex verbose, FSinfo command line option
-
-Selects verbose mode. When this is activated, the program will display
-more messages, and display all the information discovered when
-performing the semantic analysis phase. Each verbose message is output
-to @file{stdout} on a line starting with a @samp{#} character.
-
-@node -D-FSinfo Option, -I FSinfo Option, -v FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-D} @var{name}@i{[=defn]}
-
-Defines a symbol @dfn{name} for the preprocessor when reading the
-configuration files. Equivalent to @code{#define} directive.
-
-@node -I FSinfo Option, -U FSinfo Option, -D-FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-I} @var{directory}
-
-This option is passed into the preprocessor for the configuration files.
-It specifies directories in which to find include files
-
-@node -U FSinfo Option, , -I FSinfo Option, FSinfo Command Line Options
-@comment node-name, next, previous, up
-@subsection @code{-U} @var{name}
-
-Removes any initial definition of the symbol @dfn{name}. Inverse of the
-@code{-D} option.
-
-@node FSinfo errors, , FSinfo Command Line Options, FSinfo
-@comment node-name, next, previous, up
-@section Errors produced by @i{FSinfo}
-@cindex FSinfo error messages
-
-The following table documents the errors and warnings which @i{FSinfo} may produce.
-
-@table @t
-
-@item " expected
-Occurs if an unescaped newline is found in a quoted string.
-
-@item ambiguous mount: @var{volume} is a replicated filesystem
-If several filesystems are declared as having the same volume name, they
-will be considered replicated filesystems. To mount a replicated
-filesystem statically, a specific host will need to be named, to say
-which particular copy to try and mount, else this error will
-result.
-
-@item can't open @var{filename} for writing
-Occurs if any errors are encountered when opening an output file.
-
-@item cannot determine localname since volname @var{volume} is not uniquely defined
-If a volume is replicated and an attempt is made to mount the filesystem
-statically without specifying a local mountpoint, @i{FSinfo} cannot
-calculate a mountpoint, as the desired pathname would be
-ambiguous.
-
-@item @var{device} has duplicate exportfs data
-Produced if the @samp{exportfs} option is used multiple times within the
-same branch of a filesystem definition. For example, if you attempt to
-set the @samp{exportfs} data at different levels of the mountpoint
-directory tree.
-
-@item dump frequency for @var{host}:@var{device} is non-zero
-Occurs if @var{device} has its @samp{fstype} declared to be @samp{swap}
-or @samp{export} and the @samp{dump} option is set to a value greater
-than zero. Swap devices should not be dumped.
-
-@item duplicate host @var{hostname}!
-If a host has more than one definition.
-
-@item end of file within comment
-A comment was unterminated before the end of one of the configuration
-files.
-
-@item @var{filename}: cannot open for reading
-If a file specified on the command line as containing configuration data
-could not be opened.
-
-@item @var{filesystem} has a volname but no exportfs data
-Occurs when a volume name is declared for a file system, but the string
-specifying what machines the filesystem can be exported to is
-missing.
-
-@item fs field "@var{field-name}" already set
-Occurs when multiple definitions are given for one of the attributes of a
-host's filesystem.
-
-@item host field "@var{field-name}" already set
-If duplicate definitions are given for any of the fields with a host
-definition.
-
-@item @var{host}:@var{device} has more than one mount point
-Occurs if the mount option for a host's filesystem specifies multiple
-trees at which to place the mountpoint.
-
-@item @var{host}:@var{device} has no mount point
-Occurs if the @samp{mount} option is not specified for a host's
-filesystem.
-
-@item @var{host}:@var{device} needs field "@var{field-name}"
-Occurs when a filesystem is missing a required field. @var{field-name} could
-be one of @samp{fstype}, @samp{opts}, @samp{passno} or
-@samp{mount}.
-
-@item @var{host}:mount field specified for swap partition
-Occurs if a mountpoint is given for a filesystem whose type is declared
-to be @samp{swap}.
-
-@item malformed IP dotted quad: @var{address}
-If the Internet address of an interface is incorrectly specified. An
-Internet address definition is handled to @b{inet_addr}(3N) to see if it
-can cope. If not, then this message will be displayed.
-
-@item malformed netmask: @var{netmask}
-If the netmask cannot be decoded as though it were a hexadecimal number,
-then this message will be displayed. It will typically be caused by
-incorrect characters in the @var{netmask} value.
-
-@item mount field "@var{field-name}" already set
-Occurs when a static mount has multiple definitions of the same field.
-
-@item mount tree field "@var{field-name}" already set
-Occurs when the @var{field-name} is defined more than once during the
-definition of a filesystems mountpoint.
-
-@item netif field @var{field-name} already set
-Occurs if you attempt to define an attribute of an interface more than
-once.
-
-@item network booting requires both root and swap areas
-Occurs if a machine has mount declarations for either the root partition
-or the swap area, but not both. You cannot define a machine to only
-partially boot via the network.
-
-@item no disk mounts on @var{hostname}
-If there are no static mounts, nor local disk mounts specified for a
-machine, this message will be displayed.
-
-@item no volname given for @var{host}:@var{device}
-Occurs when a filesystem is defined to be mounted on @file{default}, but
-no volume name is given for the file system, then the mountpoint cannot
-be determined.
-
-@item not allowed '/' in a directory name
-Occurs when a pathname with multiple directory elements is specified as
-the name for an automounter tree. A tree should only have one name at
-each level.
-
-@item pass number for @var{host}:@var{device} is non-zero
-Occurs if @var{device} has its @samp{fstype} declared to be @samp{swap}
-or @samp{export} and the @b{fsck}(8) pass number is set. Swap devices
-should not be fsck'd. @xref{FSinfo fstype Option}.
-
-@item sub-directory @var{directory} of @var{directory-tree} starts with '/'
-Within the filesystem specification for a host, if an element
-@var{directory} of the mountpoint begins with a @samp{/} and it is not
-the start of the tree.
-
-@item sub-directory of @var{directory-tree} is named "default"
-@samp{default} is a keyword used to specify if a mountpoint should be
-automatically calculated by @i{FSinfo}. If you attempt to specify a
-directory name as this, it will use the filename of @file{default} but
-will produce this warning.
-
-@item unknown \ sequence
-Occurs if an unknown escape sequence is found inside a string. Within a
-string, you can give the standard C escape sequences for strings, such
-as newlines and tab characters.
-
-@item unknown directory attribute
-If an unknown keyword is found while reading the definition of a host's
-filesystem mount option.
-
-@item unknown filesystem attribute
-Occurs if an unrecognized keyword is used when defining a host's
-filesystems.
-
-@item unknown host attribute
-Occurs if an unrecognized keyword is used when defining a host.
-
-@item unknown mount attribute
-Occurs if an unrecognized keyword is found while parsing the list of
-static mounts.
-
-@item unknown volname @var{volume} automounted @i{[} on @i{name} @i{]}
-Occurs if @var{volume} is used in a definition of an automount map but the volume
-name has not been declared during the host filesystem definitions.
-
-@item volname @var{volume} is unknown
-Occurs if an attempt is made to mount or reference a volume name which
-has not been declared during the host filesystem definitions.
-
-@item volname @var{volume} not exported from @var{machine}
-Occurs if you attempt to mount the volume @var{volume} from a machine
-which has not declared itself to have such a filesystem
-available.
-
-@end table
-
-@c ################################################################
-@node Hlfsd, Assorted Tools, FSinfo, Top
-@comment node-name, next, previous, up
-@chapter Hlfsd
-@pindex Hlfsd
-@cindex Home-Link Filesystem
-
-@i{Hlfsd} is a daemon which implements a filesystem containing a
-symbolic link to subdirectory within a user's home directory, depending
-on the user which accessed that link. It was primarily designed to
-redirect incoming mail to users' home directories, so that it can be read
-from anywhere. It was designed and implemented by
-@uref{http://www.cs.sunysb.edu/~ezk,Erez Zadok} and
-@email{dupuy AT cs.columbia.edu,Alexander Dupuy}, at the
-@uref{http://www.cs.columbia.edu/,Computer Science Department} of
-@uref{http://www.columbia.edu/,Columbia University}. A
-@uref{http://www.fsl.cs.sunysb.edu/docs/hlfsd/hlfsd.html,paper}
-on @i{Hlfsd} was presented at the Usenix LISA VII conference in 1993.
-
-@i{Hlfsd} operates by mounting itself as an NFS server for the directory
-containing @i{linkname}, which defaults to @file{/hlfs/home}. Lookups
-within that directory are handled by @i{Hlfsd}, which uses the
-password map to determine how to resolve the lookup. The directory will
-be created if it doesn't already exist. The symbolic link will be to
-the accessing user's home directory, with @i{subdir} appended to it. If
-not specified, @i{subdir} defaults to @file{.hlfsdir}. This directory
-will also be created if it does not already exist.
-
-A @samp{SIGTERM} sent to @i{Hlfsd} will cause it to shutdown. A
-@samp{SIGHUP} will flush the internal caches, and reload the password
-map. It will also close and reopen the log file, to enable the original
-log file to be removed or rotated. A @samp{SIGUSR1} will cause it to
-dump its internal table of user IDs and home directories to the file
-@file{/tmp/hlfsddump}.
-
-@menu
-* Introduction to Hlfsd::
-* Background to Mail Delivery::
-* Using Hlfsd::
-@end menu
-
-@c ================================================================
-@node Introduction to Hlfsd, Background to Mail Delivery, Hlfsd, Hlfsd
-@comment node-name, next, previous, up
-@section Introduction to Hlfsd
-@cindex Introduction to Hlfsd
-@cindex Hlfsd; introduction
-
-Electronic mail has become one of the major applications for many
-computer networks, and use of this service is expected to increase over
-time, as networks proliferate and become faster. Providing a convenient
-environment for users to read, compose, and send electronic mail has
-become a requirement for systems administrators (SAs).
-
-Widely used methods for handling mail usually require users to be logged
-into a designated ``home'' machine, where their mailbox files reside.
-Only on that one machine can they read newly arrived mail. Since users
-have to be logged into that system to read their mail, they often find
-it convenient to run all of their other processes on that system as
-well, including memory and CPU-intensive jobs. For example, in our
-department, we have allocated and configured several multi-processor
-servers to handle such demanding CPU/memory applications, but these were
-underutilized, in large part due to the inconvenience of not being able
-to read mail on those machines. (No home directories were located on
-these designated CPU-servers, since we did not want NFS service for
-users' home directories to have to compete with CPU-intensive jobs. At the
-same time, we discouraged users from running demanding applications on
-their home machines.)
-
-Many different solutions have been proposed to allow users to read their
-mail on any host. However, all of these solutions fail in one or more
-of several ways:
-
-@itemize @bullet
-
-@item
-they introduce new single points of failure
-
-@item
-they require using different mail transfer agents (MTAs) or user agents
-(UAs)
-
-@item
-they do not solve the problem for all cases, i.e. the solution is only
-partially successful for a particular environment.
-
-@end itemize
-
-We have designed a simple filesystem, called the @dfn{Home-Link File
-System}, to provide the ability to deliver mail to users' home
-directories, without modification to mail-related applications. We have
-endeavored to make it as stable as possible. Of great importance to us
-was to make sure the HLFS daemon, @file{hlfsd} , would not hang under
-any circumstances, and would take the next-best action when faced with
-problems. Compared to alternative methods, @i{Hlfsd} is a stable, more
-general solution, and easier to install/use. In fact, in some ways, we
-have even managed to improve the reliability and security of mail
-service.
-
-Our server implements a small filesystem containing a symbolic link
-to a subdirectory of the invoking user's home directory, and named symbolic
-links to users' mailbox files.
-
-The @i{Hlfsd} server finds out the @var{uid} of the process that is
-accessing its mount point, and resolves the pathname component @samp{home} as a
-symbolic link to a subdirectory within the home directory given by the
-@var{uid}'s entry in the password file. If the @var{gid} of the process
-that attempts to access a mailbox file is a special one (called
-HLFS_GID), then the server maps the name of the @emph{next} pathname
-component directly to the user's mailbox. This is necessary so that
-access to a mailbox file by users other than the owner can succeed. The
-server has safety features in case of failures such as hung filesystems
-or home directory filesystems that are inaccessible or full.
-
-On most of our machines, mail gets delivered to the directory
-@file{/var/spool/mail}. Many programs, including UAs, depend on that
-path. @i{Hlfsd} creates a directory @file{/mail}, and mounts itself on
-top of that directory. @i{Hlfsd} implements the path name component
-called @samp{home}, pointing to a subdirectory of the user's home directory.
-We have made @file{/var/spool/mail} a symbolic link to
-@file{/mail/home}, so that accessing @file{/var/spool/mail} actually
-causes access to a subdirectory within a user's home directory.
-
-The following table shows an example of how resolving the pathname
-@file{/var/mail/@i{NAME}} to @file{/users/ezk/.mailspool/@i{NAME}} proceeds.
-
-@multitable {Resolving Component} {Pathname left to resolve} {Value if symbolic link}
-
-@item @b{Resolving Component}
-@tab @b{Pathname left to resolve}
-@tab @b{Value if symbolic link}
-
-@item @t{/}
-@tab @t{var/mail/}@i{NAME}
-
-@item @t{var/}
-@tab @t{mail/}@i{NAME}
-
-@item @t{mail}@@
-@tab @t{/mail/home/}@i{NAME}
-@tab @t{mail}@@ -> @t{/mail/home}
-
-@item @t{/}
-@tab @t{mail/home/}@i{NAME}
-
-@item @t{mail/}
-@tab @t{home/}@i{NAME}
-
-@item @t{home}@@
-@tab @i{NAME}
-@tab @t{home}@@ -> @t{/users/ezk/.mailspool}
-
-@item @t{/}
-@tab @t{users/ezk/.mailspool/}@i{NAME}
-
-@item @t{users/}
-@tab @t{ezk/.mailspool/}@i{NAME}
-
-@item @t{ezk/}
-@tab @t{.mailspool/}@i{NAME}
-
-@item @t{.mailspool/}
-@tab @i{NAME}
-
-@item @i{NAME}
-
-@end multitable
-
-@c ================================================================
-@node Background to Mail Delivery, Using Hlfsd, Introduction to Hlfsd, Hlfsd
-@comment node-name, next, previous, up
-@section Background to Mail Delivery
-@cindex Background to Mail Delivery
-@cindex Hlfsd; background
-
-This section provides an in-depth discussion of why available methods
-for delivering mail to home directories are not as good as the one used
-by @i{Hlfsd}.
-
-@menu
-* Single-Host Mail Spool Directory::
-* Centralized Mail Spool Directory::
-* Distributed Mail Spool Service::
-* Why Deliver Into the Home Directory?::
-@end menu
-
-@c ----------------------------------------------------------------
-@node Single-Host Mail Spool Directory, Centralized Mail Spool Directory, Background to Mail Delivery, Background to Mail Delivery
-@comment node-name, next, previous, up
-@subsection Single-Host Mail Spool Directory
-@cindex Single-Host Mail Spool Directory
-
-The most common method for mail delivery is for mail to be appended to a
-mailbox file in a standard spool directory on the designated ``mail
-home'' machine of the user. The greatest advantage of this method is
-that it is the default method most vendors provide with their systems,
-thus very little (if any) configuration is required on the SA's part.
-All they need to set up are mail aliases directing mail to the host on
-which the user's mailbox file is assigned. (Otherwise, mail is
-delivered locally, and users find mailboxes on many machines.)
-
-As users become more sophisticated, and aided by windowing systems, they
-find themselves logging in on multiple hosts at once, performing several
-tasks concurrently. They ask to be able to read their mail on any host
-on the network, not just the one designated as their ``mail home''.
-
-@c ----------------------------------------------------------------
-@node Centralized Mail Spool Directory, Distributed Mail Spool Service, Single-Host Mail Spool Directory, Background to Mail Delivery
-@comment node-name, next, previous, up
-@subsection Centralized Mail Spool Directory
-@cindex Centralized Mail Spool Directory
-
-A popular method for providing mail readability from any host is to have
-all mail delivered to a mail spool directory on a designated
-``mail-server'' which is exported via NFS to all of the hosts on the
-network. Configuring such a system is relatively easy. On most
-systems, the bulk of the work is a one-time addition to one or two
-configuration files in @file{/etc}. The file-server's spool directory
-is then hard-mounted across every machine on the local network. In
-small environments with only a handful of hosts this can be an
-acceptable solution. In our department, with a couple of hundred active
-hosts and thousands of mail messages processed daily, this was deemed
-completely unacceptable, as it introduced several types of problems:
-
-@table @b
-
-@item Scalability and Performance
-
-As more and more machines get added to the network, more mail traffic
-has to go over NFS to and from the mail-server. Users like to run
-mail-watchers, and read their mail often. The stress on the shared
-infrastructure increases with every user and host added; loads on the
-mail server would most certainly be high since all mail delivery goes
-through that one machine.@footnote{ Delivery via NFS-mounted filesystems
-may require usage of @samp{rpc.lockd} and @samp{rpc.statd} to provide
-distributed file-locking, both of which are widely regarded as unstable
-and unreliable. Furthermore, this will degrade performance, as local
-processes as well as remote @samp{nfsd} processes are kept busy.} This
-leads to lower reliability and performance. To reduce the number of
-concurrent connections between clients and the server host, some SAs
-have resorted to automounting the mail-spool directory. But this
-solution only makes things worse: since users often run mail watchers,
-and many popular applications such as @samp{trn}, @samp{emacs},
-@samp{csh} or @samp{ksh} check periodically for new mail, the
-automounted directory would be effectively permanently mounted. If it
-gets unmounted automatically by the automounter program, it is most
-likely to get mounted shortly afterwards, consuming more I/O resources
-by the constant cycle of mount and umount calls.
-
-@item Reliability
-
-The mail-server host and its network connectivity must be very reliable.
-Worse, since the spool directory has to be hard-mounted,@footnote{No SA
-in their right minds would soft-mount read/write partitions --- the
-chances for data loss are too great.} many processes which access the
-spool directory (various shells, @samp{login}, @samp{emacs}, etc.)
-would be hung as long as connectivity to the mail-server is severed. To
-improve reliability, SAs may choose to backup the mail-server's spool
-partition several times a day. This may make things worse since reading
-or delivering mail while backups are in progress may cause backups to be
-inconsistent; more backups consume more backup-media resources, and
-increase the load on the mail-server host.
-
-@end table
-
-@c ----------------------------------------------------------------
-@node Distributed Mail Spool Service, Why Deliver Into the Home Directory?, Centralized Mail Spool Directory, Background to Mail Delivery
-@comment node-name, next, previous, up
-@subsection Distributed Mail Spool Service
-@cindex Distributed Mail Spool Service
-
-Despite the existence of a few systems that support delivery to users'
-home directories, mail delivery to home directories hasn't caught on.
-We believe the main reason is that there are too many programs that
-``know'' where mailbox files reside. Besides the obvious (the delivery
-program @file{/bin/mail} and mail readers like @file{/usr/ucb/Mail},
-@samp{mush}, @samp{mm}, etc.), other programs that know mailbox location
-are login, from, almost every shell, @samp{xbiff}, @samp{xmailbox}, and
-even some programs not directly related to mail, such as @samp{emacs}
-and @samp{trn}. Although some of these programs can be configured to
-look in different directories with the use of environment variables and
-other resources, many of them cannot. The overall porting work is
-significant.
-
-Other methods that have yet to catch on require the use of a special
-mail-reading server, such as IMAP or POP. The main disadvantage of
-these systems is that UAs need to be modified to use these services ---
-a long and involved task. That is why they are not popular at this
-time.
-
-Several other ideas have been proposed and even used in various
-environments. None of them is robust. They are mostly very
-specialized, inflexible, and do not extend to the general case. Some of
-the ideas are plain bad, potentially leading to lost or corrupt mail:
-
-@table @b
-
-@item automounters
-
-Using an automounter such as @i{Amd} to provide a set of symbolic links
-from the normal spool directory to user home directories is not
-sufficient. UAs rename, unlink, and recreate the mailbox as a regular
-file, therefore it must be a real file, not a symbolic link.
-Furthermore, it must reside in a real directory which is writable by the
-UAs and MTAs. This method may also require populating
-@file{/var/spool/mail} with symbolic links and making sure they are
-updated. Making @i{Amd} manage that directory directly fails, since
-many various lock files need to be managed as well. Also, @i{Amd} does
-not provide all of the NFS operations which are required to write mail
-such as write, create, remove, and unlink.
-
-@item @code{$MAIL}
-
-Setting this variable to an automounted directory pointing to the user's
-mail spool host only solves the problem for those programs which know
-and use @code{$MAIL}. Many programs don't, therefore this solution is partial
-and of limited flexibility. Also, it requires the SAs or the users to
-set it themselves --- an added level of inconvenience and possible
-failures.
-
-@item @t{/bin/mail}
-
-Using a different mail delivery agent could be the solution. One such
-example is @samp{hdmail}. However, @samp{hdmail} still requires
-modifying all UAs, the MTA's configuration, installing new daemons, and
-changing login scripts. This makes the system less upgradable or
-compatible with others, and adds one more complicated system for SAs to
-deal with. It is not a complete solution because it still requires each
-user have their @code{$MAIL} variable setup correctly, and that every program
-use this variable.
-
-@end table
-
-@c ----------------------------------------------------------------
-@node Why Deliver Into the Home Directory?, , Distributed Mail Spool Service, Background to Mail Delivery
-@comment node-name, next, previous, up
-@subsection Why Deliver Into the Home Directory?
-@cindex Why Deliver Into the Home Directory?
-@cindex Hlfsd; Why Deliver Into the Home Directory?
-
-There are several major reasons why SAs might want to deliver mail
-directly into the users' home directories:
-
-@table @b
-
-@item Location
-
-Many mail readers need to move mail from the spool directory to the
-user's home directory. It speeds up this operation if the two are on
-the same filesystem. If for some reason the user's home directory is
-inaccessible, it isn't that useful to be able to read mail, since there
-is no place to move it to. In some cases, trying to move mail to a
-non-existent or hung filesystem may result in mail loss.
-
-@item Distribution
-
-Having all mail spool directories spread among the many more filesystems
-minimizes the chances that complete environments will grind to a halt
-when a single server is down. It does increase the chance that there
-will be someone who is not able to read their mail when a machine is
-down, but that is usually preferred to having no one be able to read
-their mail because a centralized mail server is down. The problem of
-losing some mail due to the (presumably) higher chances that a user's
-machine is down is minimized in HLFS.
-
-@item Security
-
-Delivering mail to users' home directories has another advantage ---
-enhanced security and privacy. Since a shared system mail spool
-directory has to be world-readable and searchable, any user can see
-whether other users have mail, when they last received new mail, or when
-they last read their mail. Programs such as @samp{finger} display this
-information, which some consider an infringement of privacy. While it
-is possible to disable this feature of @samp{finger} so that remote
-users cannot see a mailbox file's status, this doesn't prevent local
-users from getting the information. Furthermore, there are more
-programs which make use of this information. In shared environments,
-disabling such programs has to be done on a system-wide basis, but with
-mail delivered to users' home directories, users less concerned with
-privacy who do want to let others know when they last received or read
-mail can easily do so using file protection bits.
-
-@c Lastly, on systems that do not export their NFS filesystem with
-@c @t{anon=0}, superusers are less likely to snoop around others' mail, as
-@c they become ``nobodies'' across NFS.
-
-@end table
-
-In summary, delivering mail to home directories provides users the
-functionality sought, and also avoids most of the problems just
-discussed.
-
-@c ================================================================
-@node Using Hlfsd, , Background to Mail Delivery, Hlfsd
-@comment node-name, next, previous, up
-@section Using Hlfsd
-@cindex Using Hlfsd
-@cindex Hlfsd; using
-
-@menu
-* Controlling Hlfsd::
-* Hlfsd Options::
-* Hlfsd Files::
-@end menu
-
-@c ----------------------------------------------------------------
-@node Controlling Hlfsd, Hlfsd Options, Using Hlfsd, Using Hlfsd
-@comment node-name, next, previous, up
-@subsection Controlling Hlfsd
-@cindex Controlling Hlfsd
-@cindex Hlfsd; controlling
-@pindex ctl-hlfsd
-
-Much the same way @i{Amd} is controlled by @file{ctl-amd}, so does
-@i{Hlfsd} get controlled by the @file{ctl-hlfsd} script:
-
-@table @t
-
-@item ctl-hlfsd start
-Start a new @i{Hlfsd}.
-
-@item ctl-hlfsd stop
-Stop a running @i{Hlfsd}.
-
-@item ctl-hlfsd restart
-Stop a running @i{Hlfsd}, wait for 10 seconds, and then start a new
-one. It is hoped that within 10 seconds, the previously running
-@i{Hlfsd} terminate properly; otherwise, starting a second one could
-cause system lockup.
-
-@end table
-
-For example, on our systems, we start @i{Hlfsd} within @file{ctl-hlfsd}
-as follows on Solaris 2 systems:
-
-@example
-hlfsd -a /var/alt_mail -x all -l /var/log/hlfsd /mail/home .mailspool
-@end example
-
-The directory @file{/var/alt_mail} is a directory in the root partition
-where alternate mail will be delivered into, when it cannot be delivered
-into the user's home directory.
-
-Normal mail gets delivered into @file{/var/mail}, but on our systems,
-that is a symbolic link to @file{/mail/home}. @file{/mail} is managed
-by @i{Hlfsd}, which creates a dynamic symlink named @samp{home},
-pointing to the subdirectory @file{.mailspool} @emph{within} the
-accessing user's home directory. This results in mail which normally
-should go to @file{/var/mail/@code{$USER}}, to go to
-@file{@code{$HOME}/.mailspool/@code{$USER}}.
-
-@i{Hlfsd} does not create the @file{/var/mail} symlink. This needs to
-be created (manually) once on each host, by the system administrators,
-as follows:
-
-@example
-mv /var/mail /var/alt_mail
-ln -s /mail/home /var/mail
-@end example
-
-@i{Hlfsd} also responds to the following signals:
-
-A @samp{SIGHUP} signal sent to @i{Hlfsd} will force it to reload the
-password map immediately.
-
-A @samp{SIGUSR1} signal sent to @i{Hlfsd} will cause it to dump its
-internal password map to the file @file{/usr/tmp/hlfsd.dump.XXXXXX},
-where @samp{XXXXXX} will be replaced by a random string generated by
-@b{mktemp}(3) or (the more secure) @b{mkstemp}(3).
-
-@c ----------------------------------------------------------------
-@node Hlfsd Options, Hlfsd Files, Controlling Hlfsd, Using Hlfsd
-@comment node-name, next, previous, up
-@subsection Hlfsd Options
-@cindex Hlfsd Options
-@cindex Hlfsd; Options
-
-@table @t
-
-@item -a @var{alt_dir}
-Alternate directory. The name of the directory to which the symbolic
-link returned by @i{Hlfsd} will point, if it cannot access the home
-directory of the user. This defaults to @file{/var/hlfs}. This
-directory will be created if it doesn't exist. It is expected that
-either users will read these files, or the system administrators will
-run a script to resend this ``lost mail'' to its owner.
-
-@item -c @var{cache-interval}
-Caching interval. @i{Hlfsd} will cache the validity of home directories
-for this interval, in seconds. Entries which have been verified within
-the last @var{cache-interval} seconds will not be verified again, since
-the operation could be expensive, and the entries are most likely still
-valid. After the interval has expired, @i{Hlfsd} will re-verify the
-validity of the user's home directory, and reset the cache time-counter.
-The default value for @var{cache-interval} is 300 seconds (5 minutes).
-
-@item -f
-Force fast startup. This option tells @i{Hlfsd} to skip startup-time
-consistency checks such as existence of mount directory, alternate spool
-directory, symlink to be hidden under the mount directory, their
-permissions and validity.
-
-@item -g @var{group}
-Set the special group HLFS_GID to @var{group}. Programs such as
-@file{/usr/ucb/from} or @file{/usr/sbin/in.comsat}, which access the
-mailboxes of other users, must be setgid @samp{HLFS_GID} to work properly. The
-default group is @samp{hlfs}. If no group is provided, and there is no
-group @samp{hlfs}, this feature is disabled.
-
-@item -h
-Help. Print a brief help message, and exit.
-
-@item -i @var{reload-interval}
-Map-reloading interval. Each @var{reload-interval} seconds, @i{Hlfsd}
-will reload the password map. @i{Hlfsd} needs the password map for the
-UIDs and home directory pathnames. @i{Hlfsd} schedules a @samp{SIGALRM} to
-reload the password maps. A @samp{SIGHUP} sent to @i{Hlfsd} will force it to
-reload the maps immediately. The default value for
-@var{reload-interval} is 900 seconds (15 minutes.)
-
-@item -l @var{logfile}
-Specify a log file to which @i{Hlfsd} will record events. If
-@var{logfile} is the string @samp{syslog} then the log messages will be
-sent to the system log daemon by @b{syslog}(3), using the @samp{LOG_DAEMON}
-facility. This is also the default.
-
-@item -n
-No verify. @i{Hlfsd} will not verify the validity of the symbolic link
-it will be returning, or that the user's home directory contains
-sufficient disk-space for spooling. This can speed up @i{Hlfsd} at the
-cost of possibly returning symbolic links to home directories which are
-not currently accessible or are full. By default, @i{Hlfsd} validates
-the symbolic-link in the background. The @code{-n} option overrides the
-meaning of the @code{-c} option, since no caching is necessary.
-
-@item -o @var{mount-options}
-Mount options which @i{Hlfsd} will use to mount itself on top of
-@var{dirname}. By default, @var{mount-options} is set to @samp{ro}. If
-the system supports symbolic-link caching, default options are set
-to @samp{ro,nocache}.
-
-@item -p
-Print PID. Outputs the process-id of @i{Hlfsd} to standard output where
-it can be saved into a file.
-
-@item -v
-Version. Displays version information to standard error.
-
-@item -x @var{log-options}
-Specify run-time logging options. The options are a comma separated
-list chosen from: @samp{fatal}, @samp{error}, @samp{user}, @samp{warn}, @samp{info}, @samp{map}, @samp{stats}, @samp{all}.
-
-@item -C
-Force @i{Hlfsd} to run on systems that cannot turn off the NFS
-attribute-cache. Use of this option on those systems is discouraged, as
-it may result in loss or misdelivery of mail. The option is ignored on
-systems that can turn off the attribute-cache.
-
-@item -D @var{log-options}
-Select from a variety of debugging options. Prefixing an option with
-the string @samp{no} reverses the effect of that option. Options are
-cumulative. The most useful option is @samp{all}. Since this option is
-only used for debugging other options are not documented here. A fuller
-description is available in the program source.
-
-@item -P @var{password-file}
-Read the user-name, user-id, and home directory information from the
-file @var{password-file}. Normally, @i{Hlfsd} will use @b{getpwent}(3)
-to read the password database. This option allows you to override the
-default database, and is useful if you want to map users' mail files to
-a directory other than their home directory. Only the username, uid,
-and home-directory fields of the file @var{password-file} are read and
-checked. All other fields are ignored. The file @var{password-file}
-must otherwise be compliant with Unix Version 7 colon-delimited format
-@b{passwd}(4).
-
-@end table
-
-@c ----------------------------------------------------------------
-@node Hlfsd Files, , Hlfsd Options, Using Hlfsd
-@comment node-name, next, previous, up
-@subsection Hlfsd Files
-@cindex Hlfsd Files
-@cindex Hlfsd; Files
-
-The following files are used by @i{Hlfsd}:
-
-@table @file
-
-@item /hlfs
-directory under which @i{Hlfsd} mounts itself and manages the symbolic
-link @file{home}.
-
-@item .hlfsdir
-default sub-directory in the user's home directory, to which the
-@file{home} symbolic link returned by @i{Hlfsd} points.
-
-@item /var/hlfs
-directory to which @file{home} symbolic link returned by @i{Hlfsd}
-points if it is unable to verify the that user's home directory is
-accessible.
-
-@item /usr/tmp/hlfsd.dump.XXXXXX
-file to which @i{Hlfsd} will dump its internal password map when it
-receives the @samp{SIGUSR1} signal. @samp{XXXXXX} will be replaced by
-a random string generated by @b{mktemp}(3) or (the more secure)
-@b{mkstemp}(3).
-
-@end table
-
-For discussion on other files used by @i{Hlfsd}, see @xref{lostaltmail}, and
-@ref{lostaltmail.conf-sample}.
-
-@c ################################################################
-@node Assorted Tools, Examples, Hlfsd, Top
-@comment node-name, next, previous, up
-@chapter Assorted Tools
-@cindex Assorted Tools
-
-The following are additional utilities and scripts included with
-am-utils, and get installed.
-
-@menu
-* am-eject::
-* amd.conf-sample::
-* amd2ldif::
-* amd2sun::
-* automount2amd::
-* ctl-amd::
-* ctl-hlfsd::
-* fix-amd-map::
-* fixmount::
-* fixrmtab::
-* lostaltmail::
-* lostaltmail.conf-sample::
-* mk-amd-map::
-* pawd::
-* redhat-ctl-amd::
-* wait4amd::
-* wait4amd2die::
-* wire-test::
-@end menu
-
-@c ----------------------------------------------------------------
-@node am-eject, amd.conf-sample, Assorted Tools, Assorted Tools
-@comment node-name, next, previous, up
-@section am-eject
-@pindex am-eject
-
-A shell script unmounts a floppy or CD-ROM that is automounted, and
-then attempts to eject the removable device.
-
-@c ----------------------------------------------------------------
-@node amd.conf-sample, amd2ldif, am-eject, Assorted Tools
-@comment node-name, next, previous, up
-@section amd.conf-sample
-@pindex amd.conf-sample
-
-A sample @i{Amd} configuration file. @xref{Amd Configuration File}.
-
-@c ----------------------------------------------------------------
-@node amd2ldif, amd2sun, amd.conf-sample, Assorted Tools
-@comment node-name, next, previous, up
-@section amd2ldif
-@pindex amd2ldif
-
-A script to convert @i{Amd} maps to LDAP input files. Use it as follows:
-
-@example
-amd2ldif @i{mapname} @i{base} < @i{amd.mapfile} > @i{mapfile.ldif}
-@end example
-
-@c ----------------------------------------------------------------
-@node amd2sun, automount2amd, amd2ldif, Assorted Tools
-@comment node-name, next, previous, up
-@section amd2sun
-@pindex amd2sun
-
-A script to convert @i{Amd} maps to Sun Automounter maps. Use it as
-follows
-
-@example
-amd2sun < @i{amd.mapfile} > @i{auto_mapfile}
-@end example
-
-@c ----------------------------------------------------------------
-@node automount2amd, ctl-amd, amd2sun, Assorted Tools
-@comment node-name, next, previous, up
-@section automount2amd
-@pindex automount2amd
-
-A script to convert old Sun Automounter maps to @i{Amd} maps.
-
-Say you have the Sun automount file @i{auto.foo}, with these two lines:
-@example
-home earth:/home
-moon -ro,intr server:/proj/images
-@end example
-Running
-@example
-automount2amd auto.foo > amd.foo
-@end example
-
-will produce the @i{Amd} map @i{amd.foo} with this content:
-
-@example
-# generated by automount2amd on Sat Aug 14 17:59:32 US/Eastern 1999
-
-/defaults \\
- type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
-
-home \
- host==earth;type:=link;fs:=/home \\
- rhost:=earth;rfs:=/home
-
-moon \
- -addopts:=ro,intr \\
- host==server;type:=link;fs:=/proj/images \\
- rhost:=server;rfs:=/proj/images
-@end example
-
-This perl script will use the following @i{/default} entry
-@example
-type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
-@end example
-If you wish to override that, define the @b{$DEFAULTS} environment
-variable, or modify the script.
-
-If you wish to generate Amd maps using the @i{hostd} (@pxref{hostd
-Selector Variable}) @i{Amd} map syntax, then define the environment
-variable @b{$DOMAIN} or modify the script.
-
-Note that automount2amd does not understand the syntax in newer Sun
-Automount maps, those used with autofs.
-
-@c ----------------------------------------------------------------
-@node ctl-amd, ctl-hlfsd, automount2amd, Assorted Tools
-@comment node-name, next, previous, up
-@section ctl-amd
-@pindex ctl-amd
-
-A script to start, stop, or restart @i{Amd}. Use it as follows:
-
-@table @t
-@item ctl-amd start
-Start a new @i{Amd} process.
-@item ctl-amd stop
-Stop the running @i{Amd}.
-@item ctl-amd restart
-Stop the running @i{Amd} (if any), safely wait for it to terminate, and
-then start a new process --- only if the previous one died cleanly.
-@end table
-
-@xref{Run-time Administration}, for more details.
-
-@c ----------------------------------------------------------------
-@node ctl-hlfsd, fix-amd-map, ctl-amd, Assorted Tools
-@comment node-name, next, previous, up
-@section ctl-hlfsd
-@pindex ctl-hlfsd
-
-A script for controlling @i{Hlfsd}, much the same way @file{ctl-amd}
-controls @i{Amd}. Use it as follows:
-
-@table @t
-@item ctl-hlfsd start
-Start a new @i{Hlfsd} process.
-@item ctl-hlfsd stop
-Stop the running @i{Hlfsd}.
-@item ctl-hlfsd restart
-Stop the running @i{Hlfsd} (if any), wait for 10 seconds for it to
-terminate, and then start a new process --- only if the previous one
-died cleanly.
-@end table
-
-@xref{Hlfsd}, for more details.
-
-@c ----------------------------------------------------------------
-@node fix-amd-map, fixmount, ctl-hlfsd, Assorted Tools
-@comment node-name, next, previous, up
-@section fix-amd-map
-@pindex fix-amd-map
-
-Am-utils changed some of the syntax and default values of some
-variables. For example, the default value for @samp{$@{os@}} for
-Solaris 2.x (aka SunOS 5.x) systems used to be @samp{sos5}, it is now
-more automatically generated from @file{config.guess} and its value is
-@samp{sunos5}.
-
-This script converts older @i{Amd} maps to new ones. Use it as follows:
-
-@example
-fix-amd-map < @i{old.map} > @i{new.map}
-@end example
-
-@c ----------------------------------------------------------------
-@node fixmount, fixrmtab, fix-amd-map, Assorted Tools
-@comment node-name, next, previous, up
-@section fixmount
-@pindex fixmount
-
-@samp{fixmount} is a variant of @b{showmount}(8) that can delete bogus
-mount entries in remote @b{mountd}(8) daemons. This is useful to
-cleanup otherwise ever-accumulating ``junk''. Use it for example:
-
-@example
-fixmount -r @i{host}
-@end example
-
-See the online manual page for @samp{fixmount} for more details of its
-usage.
-
-@c ----------------------------------------------------------------
-@node fixrmtab, lostaltmail, fixmount, Assorted Tools
-@comment node-name, next, previous, up
-@section fixrmtab
-@pindex fixrmtab
-
-A script to invalidate @file{/etc/rmtab} entries for hosts named. Also
-restart mountd for changes to take effect. Use it for example:
-
-@example
-fixrmtab @i{host1} @i{host2} @i{...}
-@end example
-
-@c ----------------------------------------------------------------
-@node lostaltmail, lostaltmail.conf-sample, fixrmtab, Assorted Tools
-@comment node-name, next, previous, up
-@section lostaltmail
-@pindex lostaltmail
-
-A script used with @i{Hlfsd} to resend any ``lost'' mail. @i{Hlfsd}
-redirects mail which cannot be written into the user's home directory to
-an alternate directory. This is useful to continue delivering mail,
-even if the user's file system was unavailable, full, or over quota.
-But, the mail which gets delivered to the alternate directory needs to
-be resent to its respective users. This is what the @samp{lostaltmail}
-script does.
-
-Use it as follows:
-
-@example
-lostaltmail
-@end example
-
-This script needs a configuration file @samp{lostaltmail.conf} set up
-with the right parameters to properly work. @xref{Hlfsd}, for more
-details.
-
-@c ----------------------------------------------------------------
-@node lostaltmail.conf-sample, mk-amd-map, lostaltmail, Assorted Tools
-@comment node-name, next, previous, up
-@section lostaltmail.conf-sample
-@pindex lostaltmail.conf-sample
-@cindex lostaltmail; configuration file
-
-This is a text file with configuration parameters needed for the
-@samp{lostaltmail} script. The script includes comments explaining each
-of the configuration variables. See it for more information. Also
-@pxref{Hlfsd} for general information.
-
-@c ----------------------------------------------------------------
-@node mk-amd-map, pawd, lostaltmail.conf-sample, Assorted Tools
-@comment node-name, next, previous, up
-@section mk-amd-map
-@pindex mk-amd-map
-
-This program converts a normal @i{Amd} map file into an ndbm database
-with the same prefix as the named file. Use it as follows:
-
-@example
-mk-amd-map @i{mapname}
-@end example
-
-@c ----------------------------------------------------------------
-@node pawd, redhat-ctl-amd, mk-amd-map, Assorted Tools
-@comment node-name, next, previous, up
-@section pawd
-@pindex pawd
-
-@i{Pawd} is used to print the current working directory, adjusted to
-reflect proper paths that can be reused to go through the automounter
-for the shortest possible path. In particular, the path printed back
-does not include any of @i{Amd}'s local mount points. Using them is
-unsafe, because @i{Amd} may unmount managed file systems from the mount
-points, and thus including them in paths may not always find the files
-within.
-
-Without any arguments, @i{Pawd} will print the automounter adjusted
-current working directory. With any number of arguments, it will print
-the adjusted path of each one of the arguments.
-
-@c ----------------------------------------------------------------
-@node redhat-ctl-amd, wait4amd, pawd, Assorted Tools
-@comment node-name, next, previous, up
-@section redhat-ctl-amd
-@pindex redhat-ctl-amd
-
-This script is similar to @i{ctl-amd} (@pxref{ctl-amd}) but is intended
-for Red Hat Linux systems. You can safely copy @i{redhat-ctl-amd} onto
-@file{/etc/rc.d/init.d/amd}. The script supplied by @i{Am-utils} is
-usually better than the one provided by Red Hat, because the Red Hat
-script does not correctly kill @i{Amd} processes: it is too quick to
-kill the wrong processes, leaving stale or hung mount points behind.
-
-@c ----------------------------------------------------------------
-@node wait4amd, wait4amd2die, redhat-ctl-amd, Assorted Tools
-@comment node-name, next, previous, up
-@section wait4amd
-@pindex wait4amd
-
-A script to wait for @i{Amd} to start on a particular host before
-performing an arbitrary command. The command is executed repeatedly,
-with 1 second intervals in between. You may interrupt the script using
-@samp{^C} (or whatever keyboard sequence your terminal's @samp{intr} function
-is bound to).
-
-Examples:
-
-@table @t
-@item wait4amd saturn amq -p -h saturn
-When @i{Amd} is up on host @samp{saturn}, get the process ID of that
-running @i{Amd}.
-@item wait4amd pluto rlogin pluto
-Remote login to host @samp{pluto} when @i{Amd} is up on that host. It
-is generally necessary to wait for @i{Amd} to properly start and
-initialize on a remote host before logging in to it, because otherwise
-user home directories may not be accessible across the network.
-@item wait4amd pluto
-A short-hand version of the previous command, since the most useful
-reason for this script is to login to a remote host. I use it very
-often when testing out new versions of @i{Amd}, and need to reboot hung
-hosts.
-@end table
-
-@c ----------------------------------------------------------------
-@node wait4amd2die, wire-test, wait4amd, Assorted Tools
-@comment node-name, next, previous, up
-@section wait4amd2die
-@pindex wait4amd2die
-
-This script is used internally by @samp{ctl-amd} when used to restart
-@i{Amd}. It waits for @i{Amd} to terminate. If it detected that
-@i{Amd} terminated cleanly, this script will return an exist status of
-zero. Otherwise, it will return a non-zero exit status.
-
-The script tests for @i{Amd}'s existence once every 5 seconds, six
-times, for a total of 30 seconds. It will return a zero exist status as
-soon as it detects that @i{Amd} dies.
-
-@c ----------------------------------------------------------------
-@node wire-test, , wait4amd2die, Assorted Tools
-@comment node-name, next, previous, up
-@section wire-test
-@pindex wire-test
-
-A simple program to test if some of the most basic networking functions
-in am-util's library @file{libamu} work. It also tests the combination
-of NFS protocol and version number that are supported from the current
-host, to a remote one.
-
-For example, in this test a machine which only supports NFS Version 2 is
-contacting a remote host that can support the same version, but using
-both UDP and TCP. If no host name is specified, @samp{wire-test} will
-try @file{localhost}.
-
-@example
-$ wire-test moisil
-Network name is "mcl-lab-net.cs.columbia.edu"
-Network number is "128.59.13"
-Network name is "old-net.cs.columbia.edu"
-Network number is "128.59.16"
-My IP address is 0x7f000001.
-NFS Version and protocol tests to host "moisil"...
- testing vers=2, proto="udp" -> found version 2.
- testing vers=3, proto="udp" -> failed!
- testing vers=2, proto="tcp" -> found version 2.
- testing vers=3, proto="tcp" -> failed!
-@end example
-
-@c ################################################################
-@node Examples, Internals, Assorted Tools, Top
-@comment node-name, next, previous, up
-@chapter Examples
-
-@menu
-* User Filesystems::
-* Home Directories::
-* Architecture Sharing::
-* Wildcard Names::
-* rwho servers::
-* /vol::
-* /defaults with selectors::
-* /tftpboot in a chroot-ed environment::
-
-@end menu
-
-@node User Filesystems, Home Directories, Examples, Examples
-@comment node-name, next, previous, up
-@section User Filesystems
-@cindex User filesystems
-@cindex Mounting user filesystems
-
-With more than one fileserver, the directories most frequently
-cross-mounted are those containing user home directories. A common
-convention used at Imperial College is to mount the user disks under
-@t{/home/}@i{machine}.
-
-Typically, the @samp{/etc/fstab} file contained a long list of entries
-such as:
-
-@example
-@i{machine}:/home/@i{machine} /home/@i{machine} nfs ...
-@end example
-
-for each fileserver on the network.
-
-There are numerous problems with this system. The mount list can become
-quite large and some of the machines may be down when a system is
-booted. When a new fileserver is installed, @samp{/etc/fstab} must be
-updated on every machine, the mount directory created and the filesystem
-mounted.
-
-In many environments most people use the same few workstations, but
-it is convenient to go to a colleague's machine and access your own
-files. When a server goes down, it can cause a process on a client
-machine to hang. By minimizing the mounted filesystems to only include
-those actively being used, there is less chance that a filesystem will
-be mounted when a server goes down.
-
-The following is a short extract from a map taken from a research fileserver
-at Imperial College.
-
-Note the entry for @samp{localhost} which is used for users such as
-the operator (@samp{opr}) who have a home directory on most machine as
-@samp{/home/localhost/opr}.
-
-@example
-/defaults opts:=rw,intr,grpid,nosuid
-charm host!=$@{key@};type:=nfs;rhost:=$@{key@};rfs:=/home/$@{key@} \
- host==$@{key@};type:=ufs;dev:=/dev/xd0g
-#
-...
-
-#
-localhost type:=link;fs:=$@{host@}
-...
-#
-# dylan has two user disks so have a
-# top directory in which to mount them.
-#
-dylan type:=auto;fs:=$@{map@};pref:=$@{key@}/
-#
-dylan/dk2 host!=dylan;type:=nfs;rhost:=dylan;rfs:=/home/$@{key@} \
- host==dylan;type:=ufs;dev:=/dev/dsk/2s0
-#
-dylan/dk5 host!=dylan;type:=nfs;rhost:=dylan;rfs:=/home/$@{key@} \
- host==dylan;type:=ufs;dev:=/dev/dsk/5s0
-...
-#
-toytown host!=$@{key@};type:=nfs;rhost:=$@{key@};rfs:=/home/$@{key@} \
- host==$@{key@};type:=ufs;dev:=/dev/xy1g
-...
-#
-zebedee host!=$@{key@};type:=nfs;rhost:=$@{key@};rfs:=/home/$@{key@} \
- host==$@{key@};type:=ufs;dev:=/dev/dsk/1s0
-#
-# Just for access...
-#
-gould type:=auto;fs:=$@{map@};pref:=$@{key@}/
-gould/staff host!=gould;type:=nfs;rhost:=gould;rfs:=/home/$@{key@}
-#
-gummo host!=$@{key@};type:=nfs;rhost:=$@{key@};rfs:=/home/$@{key@}
-...
-@end example
-
-This map is shared by most of the machines listed so on those
-systems any of the user disks is accessible via a consistent name.
-@i{Amd} is started with the following command
-
-@example
-amd /home amd.home
-@end example
-
-Note that when mounting a remote filesystem, the @dfn{automounted}
-mount point is referenced, so that the filesystem will be mounted if
-it is not yet (at the time the remote @samp{mountd} obtains the file handle).
-
-@node Home Directories, Architecture Sharing, User Filesystems, Examples
-@comment node-name, next, previous, up
-@section Home Directories
-@cindex Home directories
-@cindex Example of mounting home directories
-@cindex Mount home directories
-
-One convention for home directories is to locate them in @samp{/homes}
-so user @samp{jsp}'s home directory is @samp{/homes/jsp}. With more
-than a single fileserver it is convenient to spread user files across
-several machines. All that is required is a mount-map which converts
-login names to an automounted directory.
-
-Such a map might be started by the command:
-
-@example
-amd /homes amd.homes
-@end example
-
-where the map @samp{amd.homes} contained the entries:
-
-@example
-/defaults type:=link # All the entries are of type:=link
-jsp fs:=/home/charm/jsp
-njw fs:=/home/dylan/dk5/njw
-...
-phjk fs:=/home/toytown/ai/phjk
-sjv fs:=/home/ganymede/sjv
-@end example
-
-Whenever a login name is accessed in @samp{/homes} a symbolic link
-appears pointing to the real location of that user's home directory. In
-this example, @samp{/homes/jsp} would appear to be a symbolic link
-pointing to @samp{/home/charm/jsp}. Of course, @samp{/home} would also
-be an automount point.
-
-This system causes an extra level of symbolic links to be used.
-Although that turns out to be relatively inexpensive, an alternative is
-to directly mount the required filesystems in the @samp{/homes}
-map. The required map is simple, but long, and its creation is best automated.
-The entry for @samp{jsp} could be:
-
-@example
-jsp -sublink:=$@{key@};rfs:=/home/charm \
- host==charm;type:=ufs;dev:=/dev/xd0g \
- host!=charm;type:=nfs;rhost:=charm
-@end example
-
-This map can become quite big if it contains a large number of entries.
-By combining two other features of @i{Amd} it can be greatly simplified.
-
-First the UFS partitions should be mounted under the control of
-@samp{/etc/fstab}, taking care that they are mounted in the same place
-that @i{Amd} would have automounted them. In most cases this would be
-something like @samp{/a/@dfn{host}/home/@dfn{host}} and
-@samp{/etc/fstab} on host @samp{charm} would have a line:@refill
-
-@example
-/dev/xy0g /a/charm/home/charm 4.2 rw,nosuid,grpid 1 5
-@end example
-
-The map can then be changed to:
-
-@example
-/defaults type:=nfs;sublink:=$@{key@};opts:=rw,intr,nosuid,grpid
-jsp rhost:=charm;rfs:=/home/charm
-njw rhost:=dylan;rfs:=/home/dylan/dk5
-...
-phjk rhost:=toytown;rfs:=/home/toytown;sublink:=ai/$@{key@}
-sjv rhost:=ganymede;rfs:=/home/ganymede
-@end example
-
-This map operates as usual on a remote machine (@i{ie} @code{$@{host@}}
-not equal to @code{$@{rhost@}}). On the machine where the filesystem is
-stored (@i{ie} @code{$@{host@}} equal to @code{$@{rhost@}}), @i{Amd}
-will construct a local filesystem mount point which corresponds to the
-name of the locally mounted UFS partition. If @i{Amd} is started with
-the @code{-r} option then instead of attempting an NFS mount, @i{Amd} will
-simply inherit the UFS mount (@pxref{Inheritance Filesystem}). If
-@code{-r} is not used then a loopback NFS mount will be made. This type of
-mount is known to cause a deadlock on many systems.
-
-@node Architecture Sharing, Wildcard Names, Home Directories, Examples
-@comment node-name, next, previous, up
-@section Architecture Sharing
-@cindex Architecture sharing
-@cindex Sharing a fileserver between architectures
-@cindex Architecture dependent volumes
-
-@c %At the moment some of the research machines have sets of software
-@c %mounted in @samp{/vol}. This contains subdirectories for \TeX,
-@c %system sources, local sources, prolog libraries and so on.
-Often a filesystem will be shared by machines of different architectures.
-Separate trees can be maintained for the executable images for each
-architecture, but it may be more convenient to have a shared tree,
-with distinct subdirectories.
-
-A shared tree might have the following structure on the fileserver (called
-@samp{fserver} in the example):
-
-@example
-local/tex
-local/tex/fonts
-local/tex/lib
-local/tex/bin
-local/tex/bin/sun3
-local/tex/bin/sun4
-local/tex/bin/hp9000
-...
-@end example
-
-In this example, the subdirectories of @samp{local/tex/bin} should be
-hidden when accessed via the automount point (conventionally @samp{/vol}).
-A mount-map for @samp{/vol} to achieve this would look like:
-
-@example
-/defaults sublink:=$@{/key@};rhost:=fserver;type:=link
-tex type:=auto;fs:=$@{map@};pref:=$@{key@}/
-tex/fonts host!=fserver;type:=nfs;rfs:=/vol/tex \
- host==fserver;fs:=/usr/local/tex
-tex/lib host!=fserver;type:=nfs;rfs:=/vol/tex \
- host==fserver;fs:=/usr/local/tex
-tex/bin -sublink:=$@{/key@}/$@{arch@} \
- host!=fserver;type:=nfs;rfs:=/vol/tex \
- host:=fserver;fs:=/usr/local/tex
-@end example
-
-When @samp{/vol/tex/bin} is referenced, the current machine architecture
-is automatically appended to the path by the @code{$@{sublink@}}
-variable. This means that users can have @samp{/vol/tex/bin} in their
-@samp{PATH} without concern for architecture dependencies.
-
-@node Wildcard Names, rwho servers, Architecture Sharing, Examples
-@comment node-name, next, previous, up
-@section Wildcard Names & Replicated Servers
-
-By using the wildcard facility, @i{Amd} can @dfn{overlay} an existing
-directory with additional entries.
-The system files are usually mounted under @samp{/usr}. If instead,
-@i{Amd} is mounted on @samp{/usr}, additional
-names can be overlayed to augment or replace names in the ``master'' @samp{/usr}.
-A map to do this would have the form:
-
-@example
-local type:=auto;fs:=local-map
-share type:=auto;fs:=share-map
-* -type:=nfs;rfs:=/export/exec/$@{arch@};sublink:="$@{key@}" \
- rhost:=fserv1 rhost:=fserv2 rhost:=fserv3
-@end example
-
-Note that the assignment to @code{$@{sublink@}} is surrounded by double
-quotes to prevent the incoming key from causing the map to be
-misinterpreted. This map has the effect of directing any access to
-@samp{/usr/local} or @samp{/usr/share} to another automount point.
-
-In this example, it is assumed that the @samp{/usr} files are replicated
-on three fileservers: @samp{fserv1}, @samp{fserv2} and @samp{fserv3}.
-For any references other than to @samp{local} and @samp{share} one of
-the servers is used and a symbolic link to
-@t{$@{autodir@}/$@{rhost@}/export/exec/$@{arch@}/@i{whatever}} is
-returned once an appropriate filesystem has been mounted.@refill
-
-@node rwho servers, /vol, Wildcard Names, Examples
-@comment node-name, next, previous, up
-@section @samp{rwho} servers
-@cindex rwho servers
-@cindex Architecture specific mounts
-@cindex Example of architecture specific mounts
-
-The @samp{/usr/spool/rwho} directory is a good candidate for automounting.
-For efficiency reasons it is best to capture the rwho data on a small
-number of machines and then mount that information onto a large number
-of clients. The data written into the rwho files is byte order dependent
-so only servers with the correct byte ordering can be used by a client:
-
-@example
-/defaults type:=nfs
-usr/spool/rwho -byte==little;rfs:=/usr/spool/rwho \
- rhost:=vaxA rhost:=vaxB \
- || -rfs:=/usr/spool/rwho \
- rhost:=sun4 rhost:=hp300
-@end example
-
-@node /vol, /defaults with selectors, rwho servers, Examples
-@comment node-name, next, previous, up
-@section @samp{/vol}
-@cindex /vol
-@cindex Catch-all mount point
-@cindex Generic volume name
-
-@samp{/vol} is used as a catch-all for volumes which do not have other
-conventional names.
-
-Below is part of the @samp{/vol} map for the domain @samp{doc.ic.ac.uk}.
-The @samp{r+d} tree is used for new or experimental software that needs
-to be available everywhere without installing it on all the fileservers.
-Users wishing to try out the new software then simply include
-@samp{/vol/r+d/@{bin,ucb@}} in their path.@refill
-
-The main tree resides on one host @samp{gould.doc.ic.ac.uk}, which has
-different @samp{bin}, @samp{etc}, @samp{lib} and @samp{ucb}
-sub-directories for each machine architecture. For example,
-@samp{/vol/r+d/bin} for a Sun-4 would be stored in the sub-directory
-@samp{bin/sun4} of the filesystem @samp{/usr/r+d}. When it was accessed
-a symbolic link pointing to @samp{/a/gould/usr/r+d/bin/sun4} would be
-returned.@refill
-
-@example
-/defaults type:=nfs;opts:=rw,grpid,nosuid,intr,soft
-wp -opts:=rw,grpid,nosuid;rhost:=charm \
- host==charm;type:=link;fs:=/usr/local/wp \
- host!=charm;type:=nfs;rfs:=/vol/wp
-...
-#
-src -opts:=rw,grpid,nosuid;rhost:=charm \
- host==charm;type:=link;fs:=/usr/src \
- host!=charm;type:=nfs;rfs:=/vol/src
-#
-r+d type:=auto;fs:=$@{map@};pref:=r+d/
-# per architecture bin,etc,lib&ucb...
-r+d/bin rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}/$@{arch@}
-r+d/etc rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}/$@{arch@}
-r+d/include rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}
-r+d/lib rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}/$@{arch@}
-r+d/man rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}
-r+d/src rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}
-r+d/ucb rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=$@{/key@}/$@{arch@}
-# hades pictures
-pictures -opts:=rw,grpid,nosuid;rhost:=thpfs \
- host==thpfs;type:=link;fs:=/nbsd/pictures \
- host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=pictures
-# hades tools
-hades -opts:=rw,grpid,nosuid;rhost:=thpfs \
- host==thpfs;type:=link;fs:=/nbsd/hades \
- host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=hades
-# bsd tools for hp.
-bsd -opts:=rw,grpid,nosuid;arch==hp9000;rhost:=thpfs \
- host==thpfs;type:=link;fs:=/nbsd/bsd \
- host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=bsd
-@end example
-
-@node /defaults with selectors, /tftpboot in a chroot-ed environment, /vol, Examples
-@comment node-name, next, previous, up
-@section @samp{/defaults} with selectors
-@cindex /defaults with selectors
-@cindex selectors on default
-
-It is sometimes useful to have different defaults for a given map. To
-achieve this, the @samp{/defaults} entry must be able to process normal
-selectors. This feature is turned on by setting
-@samp{selectors_in_defaults = yes} in the @file{amd.conf} file.
-@xref{selectors_in_defaults Parameter}.
-
-In this example, I set different default NFS mount options for hosts
-which are running over a slower network link. By setting a smaller size
-for the NFS read and write buffer sizes, you can greatly improve remote
-file service performance.
-
-@example
-/defaults \
- wire==slip-net;opts:=rw,intr,rsize=1024,wsize=1024,timeo=20,retrans=10 \
- wire!=slip-net;opts:=rw,intr
-@end example
-
-@node /tftpboot in a chroot-ed environment, , /defaults with selectors, Examples
-@comment node-name, next, previous, up
-@section @samp{/tftpboot} in a chroot-ed environment
-@cindex /tftpboot in a chroot-ed environment
-@cindex chroot; /tftpboot example
-
-In this complex example, we attempt to run an @i{Amd} process
-@emph{inside} a chroot-ed environment. @samp{tftpd} (Trivial FTP) is
-used to trivially retrieve files used to boot X-Terminals, Network
-Printers, Network routers, diskless workstations, and other such
-devices. For security reasons, @samp{tftpd} (and also @samp{ftpd})
-processes are run using the @b{chroot}(2) system call. This provides an
-environment for these processes, where access to any files outside the
-directory where the chroot-ed process runs is denied.
-
-For example, if you start @samp{tftpd} on your system with
-
-@example
-chroot /tftpboot /usr/sbin/tftpd
-@end example
-
-@noindent
-then the @samp{tftpd} process will not be able to access any files
-outside @file{/tftpboot}. This ensures that no one can retrieve files
-such as @file{/etc/passwd} and run password crackers on it.
-
-Since the TFTP service works by broadcast, it is necessary to have at
-least one TFTP server running on each subnet. If you have lots of files
-that you need to make available for @samp{tftp}, and many subnets, it
-could take significant amounts of disk space on each host serving them.
-
-A solution we implemented at Columbia University was to have every host
-run @samp{tftpd}, but have those servers retrieve the boot files from
-two replicated servers. Those replicated servers have special
-partitions dedicated to the many network boot files.
-
-We start @i{Amd} as follows:
-
-@example
-amd /tftpboot/.amd amd.tftpboot
-@end example
-
-That is, @i{Amd} is serving the directory @file{/tftpboot/.amd}. The
-@samp{tftp} server runs inside @file{/tftpboot} and is chroot-ed in that
-directory too. The @file{amd.tftpboot} map looks like:
-
-@example
-#
-# Amd /tftpboot directory -> host map
-#
-
-/defaults opts:=nosuid,ro,intr,soft;fs:=/tftpboot/import;type:=nfs
-
-tp host==lol;rfs:=/n/lol/import/tftpboot;type:=lofs \
- host==ober;rfs:=/n/ober/misc/win/tftpboot;type:=lofs \
- rhost:=ober;rfs:=/n/ober/misc/win/tftpboot \
- rhost:=lol;rfs:=/n/lol/import/tftpboot
-@end example
-
-To help understand this example, I list a few of the file entries that
-are created inside @file{/tftpboot}:
-
-@example
-$ ls -la /tftpboot
-dr-xr-xr-x 2 root 512 Aug 30 23:11 .amd
-drwxrwsr-x 12 root 512 Aug 30 08:00 import
-lrwxrwxrwx 1 root 33 Feb 27 1997 adminpr.cfg -> ./.amd/tp/hplj/adminpr.cfg
-lrwxrwxrwx 1 root 22 Dec 5 1996 tekxp -> ./.amd/tp/xterms/tekxp
-lrwxrwxrwx 1 root 1 Dec 5 1996 tftpboot -> .
-@end example
-
-Here is an explanation of each of the entries listed above:
-
-@table @code
-
-@item .amd
-This is the @i{Amd} mount point. Note that you do not need to run a
-separate @i{Amd} process for the TFTP service. The @b{chroot}(2) system
-call only protects against file access, but the same process can still
-serve files and directories inside and outside the chroot-ed
-environment, because @i{Amd} itself was not run in chroot-ed mode.
-
-@item import
-This is the mount point where @i{Amd} will mount the directories
-containing the boot files. The map is designed so that remote
-directories will be NFS mounted (even if they are already mounted
-elsewhere), and local directories are loopback mounted (since they are
-not accessible outside the chroot-ed @file{/tftpboot} directory).
-
-@item adminpr.cfg
-@itemx tekxp
-Two manually created symbolic links to directories @emph{inside} the
-@i{Amd}-managed directory. The crossing of the component @file{tp} will
-cause @i{Amd} to automount one of the remote replicas. Once crossed,
-access to files inside proceeds as usual. The @samp{adminpr.cfg} is a
-configuration file for an HP Laser-Jet 4si printer, and the @samp{tekxp}
-is a directory for Tektronix X-Terminal boot files.
-
-@item tftpboot
-This innocent looking symlink is important. Usually, when devices boot
-via the TFTP service, they perform the @samp{get file} command to
-retrieve @var{file}. However, some devices assume that @samp{tftpd}
-does not run in a chroot-ed environment, but rather ``unprotected'', and
-thus use a full pathname for files to retrieve, as in @samp{get
-/tftpboot/file}. This symlink effectively strips out the leading
-@file{/tftpboot/}.
-
-@end table
-
-@c ################################################################
-@node Internals, Acknowledgments & Trademarks, Examples, Top
-@comment node-name, next, previous, up
-@chapter Internals
-
-Note that there are more error and logging messages possible than are
-listed here. Most of them are self-explanatory. Refer to the program
-sources for more details on the rest.
-
-@menu
-* Log Messages::
-@end menu
-
-@node Log Messages, , Internals, Internals
-@comment node-name, next, previous, up
-@section Log Messages
-
-In the following sections a brief explanation is given of some of the
-log messages made by @i{Amd}. Where the message is in @samp{typewriter}
-font, it corresponds exactly to the message produced by @i{Amd}. Words
-in @dfn{italic} are replaced by an appropriate string. Variables,
-@code{$@{@i{var}@}}, indicate that the value of the appropriate variable is
-output.
-
-Log messages are either sent directly to a file,
-or logged via the @b{syslog}(3) mechanism. @xref{log_file Parameter}.
-In either case, entries in the file are of the form:
-@example
-@i{date-string} @i{hostname} @t{amd[}@i{pid}@t{]} @i{message}
-@end example
-
-@menu
-* Fatal errors::
-* Info messages::
-@end menu
-
-@node Fatal errors, Info messages, Log Messages, Log Messages
-@comment node-name, next, previous, up
-@subsection Fatal errors
-
-@i{Amd} attempts to deal with unusual events. Whenever it is not
-possible to deal with such an error, @i{Amd} will log an appropriate
-message and, if it cannot possibly continue, will either exit or abort.
-These messages are selected by @samp{-x fatal} on the command line.
-When @b{syslog}(3) is being used, they are logged with level
-@samp{LOG_FATAL}. Even if @i{Amd} continues to operate it is likely to
-remain in a precarious state and should be restarted at the earliest
-opportunity.
-
-@table @t
-
-@item Attempting to inherit not-a-filesystem
-The prototype mount point created during a filesystem restart did not
-contain a reference to the restarted filesystem. This error ``should
-never happen''.
-
-@item Can't bind to domain "@i{NIS-domain}"
-A specific NIS domain was requested on the command line, but no server
-for that domain is available on the local net.
-
-@item Can't determine IP address of this host (@i{hostname})
-When @i{Amd} starts it determines its own IP address. If this lookup
-fails then @i{Amd} cannot continue. The hostname it looks up is that
-obtained returned by @b{gethostname}(2) system call.
-
-@item Can't find root file handle for @i{automount point}
-@i{Amd} creates its own file handles for the automount points. When it
-mounts itself as a server, it must pass these file handles to the local
-kernel. If the filehandle is not obtainable the mount point is ignored.
-This error ``should never happen''.
-
-@item Must be root to mount filesystems (euid = @i{euid})
-To prevent embarrassment, @i{Amd} makes sure it has appropriate system
-privileges. This amounts to having an euid of 0. The check is made
-after argument processing complete to give non-root users a chance to
-access the @code{-v} option.
-
-@item No work to do - quitting
-No automount points were given on the command line and so there is no
-work to do.
-
-@item Out of memory
-While attempting to malloc some memory, the memory space available to
-@i{Amd} was exhausted. This is an unrecoverable error.
-
-@item Out of memory in realloc
-While attempting to realloc some memory, the memory space available to
-@i{Amd} was exhausted. This is an unrecoverable error.
-
-@item cannot create rpc/udp service
-Either the NFS or AMQ endpoint could not be created.
-
-@item gethostname: @i{description}
-The @b{gethostname}(2) system call failed during startup.
-
-@item host name is not set
-The @b{gethostname}(2) system call returned a zero length host name.
-This can happen if @i{Amd} is started in single user mode just after
-booting the system.
-
-@item ifs_match called!
-An internal error occurred while restarting a pre-mounted filesystem.
-This error ``should never happen''.
-
-@item mount_afs: @i{description}
-An error occurred while @i{Amd} was mounting itself.
-
-@item run_rpc failed
-Somehow the main NFS server loop failed. This error ``should never
-happen''.
-
-@item unable to free rpc arguments in amqprog_1
-The incoming arguments to the AMQ server could not be free'ed.
-
-@item unable to free rpc arguments in nfs_program_1
-The incoming arguments to the NFS server could not be free'ed.
-
-@item unable to register (AMQ_PROGRAM, AMQ_VERSION, udp)
-The AMQ server could not be registered with the local portmapper or the
-internal RPC dispatcher.
-
-@item unable to register (NFS_PROGRAM, NFS_VERSION, 0)
-The NFS server could not be registered with the internal RPC dispatcher.
-
-@end table
-
-XXX: This section needs to be updated
-
-@node Info messages, , Fatal errors, Log Messages
-@comment node-name, next, previous, up
-@subsection Info messages
-
-@i{Amd} generates information messages to record state changes. These
-messages are selected by @samp{-x info} on the command line. When
-@b{syslog}(3) is being used, they are logged with level @samp{LOG_INFO}.
-
-The messages listed below can be generated and are in a format suitable
-for simple statistical analysis. @dfn{mount-info} is the string
-that is displayed by @dfn{Amq} in its mount information column and
-placed in the system mount table.
-
-@table @t
-
-@item "@t{$@{@i{path}@}}" forcibly timed out
-An automount point has been timed out by the @i{Amq} command.
-
-@item "@t{$@{@i{path}@}}" has timed out
-No access to the automount point has been made within the timeout
-period.
-
-@item Filehandle denied for "$@{@i{rhost}@}:$@{@i{rfs}@}"
-The mount daemon refused to return a file handle for the requested filesystem.
-
-@item Filehandle error for "$@{@i{rhost}@}:$@{@i{rfs}@}": @i{description}
-The mount daemon gave some other error for the requested filesystem.
-
-@item Finishing with status @i{exit-status}
-@i{Amd} is about to exit with the given exit status.
-
-@item Re-synchronizing cache for map @t{$@{@i{map}@}}
-The named map has been modified and the internal cache is being re-synchronized.
-
-@item file server @t{$@{@i{rhost}@}} is down - timeout of "@t{$@{@i{path}@}}" ignored
-An automount point has timed out, but the corresponding file server is
-known to be down. This message is only produced once for each mount
-point for which the server is down.
-
-@item file server @t{$@{@i{rhost}@}} type nfs is down
-An NFS file server that was previously up is now down.
-
-@item file server @t{$@{@i{rhost}@}} type nfs is up
-An NFS file server that was previously down is now up.
-
-@item file server @t{$@{@i{rhost}@}} type nfs starts down
-A new NFS file server has been referenced and is known to be down.
-
-@item file server @t{$@{@i{rhost}@}} type nfs starts up
-A new NFS file server has been referenced and is known to be up.
-
-@item mount of "@t{$@{@i{path}@}}" on @t{$@{@i{fs}@}} timed out
-Attempts to mount a filesystem for the given automount point have failed
-to complete within 30 seconds.
-
-@item @i{mount-info} mounted fstype @t{$@{@i{type}@}} on @t{$@{@i{fs}@}}
-A new file system has been mounted.
-
-@item @i{mount-info} restarted fstype @t{$@{@i{type}@}} on @t{$@{@i{fs}@}}
-@i{Amd} is using a pre-mounted filesystem to satisfy a mount request.
-
-@item @i{mount-info} unmounted fstype @t{$@{@i{type}@}} from @t{$@{@i{fs}@}}
-A file system has been unmounted.
-
-@item @i{mount-info} unmounted fstype @t{$@{@i{type}@}} from @t{$@{@i{fs}@}} link @t{$@{@i{fs}@}}/@t{$@{@i{sublink}@}}
-A file system of which only a sub-directory was in use has been unmounted.
-
-@item restarting @i{mount-info} on @t{$@{@i{fs}@}}
-A pre-mounted file system has been noted.
-
-@end table
-
-XXX: This section needs to be updated
-
-@c ################################################################
-@node Acknowledgments & Trademarks, Index, Internals, Top
-@comment node-name, next, previous, up
-@unnumbered Acknowledgments & Trademarks
-
-Many thanks to the Am-Utils Users
-mailing list through the months developing am-utils. These members
-have contributed to the discussions, ideas, code and documentation,
-and subjected their systems to alpha quality code. Special thanks go
-to those @uref{http://www.am-utils.org/docs/am-utils/AUTHORS.txt,authors} who have
-submitted patches, and especially to the maintainers:
-
-@itemize @bullet
-@item @uref{http://www.cs.sunysb.edu/~ezk,Erez Zadok}
-@item @email{ionut AT badula.org,Ion Badulescu}
-@item @email{ro AT techfak.uni-bielefeld.de,Rainer Orth}
-@item @email{nick.williams AT morganstanley.com,Nick Williams}
-@end itemize
-
-Thanks to the Formal Methods Group at Imperial College for suffering
-patiently while @i{Amd} was being developed on their machines.
-
-Thanks to the many people who have helped with the development of
-@i{Amd}, especially Piete Brooks at the Cambridge University Computing
-Lab for many hours of testing, experimentation and discussion.
-
-Thanks to the older @email{amd-workers AT majordomo.glue.umd.edu,Amd
-Workers} mailing list (now defunct) members for many suggestions and
-bug reports to @i{Amd}.
-
-@itemize @bullet
-@item
-@b{DEC}, @b{VAX} and @b{Ultrix} are registered trademarks of Digital
-Equipment Corporation.
-@item
-@b{AIX} and @b{IBM} are registered trademarks of International Business
-Machines Corporation.
-@item
-@b{Sun}, @b{NFS} and @b{SunOS} are registered trademarks of Sun
-Microsystems, Inc.
-@item
-@b{UNIX} is a registered trademark in the USA and other countries,
-exclusively licensed through X/Open Company, Ltd.
-@item
-All other registered trademarks are owned by their respective owners.
-@end itemize
-
-@c ################################################################
-@node Index, , Acknowledgments & Trademarks, Top
-@comment node-name, next, previous, up
-@unnumbered Index
-
-@printindex cp
-
-@contents
-@bye
-
-@c ====================================================================
-@c ISPELL LOCAL WORDS:
-@c LocalWords: setfilename amdref overfullrule settitle titlepage titlefont nz
-@c LocalWords: authorfont vskip ifinfo iftex cindex unnumberedsec dfn xref vol
-@c LocalWords: locationN pxref jpo nott concentrix Sjoerd sjoerd cwi Eitan vuw
-@c LocalWords: Mizrotsky eitan shumuji dgux fpx scp hcx metcalf masala hlh OTS
-@c LocalWords: Presnell srp cgl Trost trost ogi pyrOSx OSx tubsibr riscix iX
-@c LocalWords: Piete pb Lindblad cjl ai umax utek xinu Mitchum D'Souza dsouza
-@c LocalWords: mrc apu alliant aviion AViiON fps macII multimax tahoe vax emph
-@c LocalWords: mapdefault valA valB valC YPTSDIR ETCDIR substr MAKEDBM YPDBDIR
-@c LocalWords: NOPUSH njw dylan dk dylan njw anydir domN achilles mjh pref sel
-@c LocalWords: gdef loc loc loc ldots autodir remopts rwho rwho styx styx yoyo
-@c LocalWords: noindent gould rvdmount rvdunmount fserver mtmp unioned logfile
-@c LocalWords: dmn esac phjk toytown toytown toytown toytown phjk RdDir RdLnk
-@c LocalWords: volname attrs netif dougal inaddr hwaddr ec mountmaps passno xy
-@c LocalWords: freq dumpset hfs brian florence localinfo fstabs automaps defn
-@c LocalWords: localname fsck'd opr gummo sjv ganymede sjv fserv fserv fserv
-@c LocalWords: vaxA vaxB wp thpfs nbsd asis ifs amqprog free'ed printindex gov
-@c LocalWords: LocalWords syncodeindex Distrib bsdnet lanl AutoMounter acis ic
-@c LocalWords: ac uk aix bsd Mullender nl il DG lcs hpux irix ucsf NeXT cse cl
-@c LocalWords: mt FX hp ibm mips utils def def Domainname eg hostd getwd tmp
-@c LocalWords: subsubsection rw grpid intr noconn nocto nodevs nosuid retrans
-@c LocalWords: rsize tcp timeo nounmount utimeout DDEBUG nodaemon fd hostnames
-@c LocalWords: pid Amd's pendry vangogh nfsx backoff stats nomap nostats CRIT
-@c LocalWords: noinfo clustername RVD dsk dsk amq hostports osver statfs str
-@c LocalWords: ou counter's amdmaps proj src tftpboot sh mv cd sbin ypcat inet
-@c LocalWords: Getattr getattr localhost fhandles netmask fstype noquota addr
-@c LocalWords: exportfs Dumpsets dumpsets pindex ldif fixmount fixrmtab euid
-@c LocalWords: lostaltmail realloc netnumber itemx primnetnum primnetname ARG
-@c LocalWords: subsnetname subsnetnum netgrp netgroup multitable Shlib dec osf
-@c LocalWords: hppa pc bsdi freebsd netbsd openbsd ncr sysv rs acdirmax fsid
-@c LocalWords: acdirmin acregmax acregmin actimeo dumbtimr nfsv noac noauto sd
-@c LocalWords: nocache nodev noint nosub pgthresh posix rdonly suid symttl mfs
-@c LocalWords: AMFS umapfs myftpdir unionfs es mapname mapfile mapfile slocal
-@c LocalWords: mailspool saturn saturn notknown lol ober dr xr xr drwxrwsr cfg
-@c LocalWords: lrwxrwxrwx adminpr hplj adminpr cfg tekxp xterms tekxp Dupuy tp
-@c LocalWords: linkname hlfsddump dirname rmtab pluto rlogin direntry pg vr dn
-@c LocalWords: maxmem hlfsdir xmailbox showmount cn amdmap amdmapName resvport
-@c LocalWords: objectClass amdmapKey amdmapValue ln powerpc amdmapTimestamp ez
-@c LocalWords: moisil FSinfo Libtool Unmounting sublink fileservers NullProc
-@c LocalWords: gethostname mount's unmounts linkx remounts unmounting UAs SA's
-@c LocalWords: mountpoint mountpoints unescaped UIDs util's overlayed uref EFS
-@c LocalWords: serv maxgroups nfsl cachedir copt cfsadmin efs addopts fg ROMs
-@c LocalWords: nointr extatt setchapternewpage columnfractions alphaev gnulibc
-@c LocalWords: freebsdelf gnuoldld ifhtml defperm nodefperm norrip RRIP rrip
-@c LocalWords: noversion attr XXXXXX netgrpd rh mkstemp uid gid noexec mntfs
-@c LocalWords: nomnttab optionstr hrtime xdrtrace getpwd proplist redhat ctl
-@c LocalWords: texinfo texi ib sp cartouche ified xlatecookie dircategory sc
-@c LocalWords: AddInfo suse Novell softlookup ENOENT USB fullybrowsable LDAPv
-@c LocalWords: amy ie xfffffe zebedee andrew diskfull hdmail searchable si
-@c LocalWords: Orth ESTALE
diff --git a/contrib/amd/doc/stamp-vti b/contrib/amd/doc/stamp-vti
deleted file mode 100644
index 9a4feda60f57..000000000000
--- a/contrib/amd/doc/stamp-vti
+++ /dev/null
@@ -1,4 +0,0 @@
-@set UPDATED 28 October 2014
-@set UPDATED-MONTH October 2014
-@set EDITION 6.2
-@set VERSION 6.2
diff --git a/contrib/amd/doc/texinfo.tex b/contrib/amd/doc/texinfo.tex
deleted file mode 100644
index 85f184cc4cbb..000000000000
--- a/contrib/amd/doc/texinfo.tex
+++ /dev/null
@@ -1,10079 +0,0 @@
-% texinfo.tex -- TeX macros to handle Texinfo files.
-%
-% Load plain if necessary, i.e., if running under initex.
-\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
-%
-\def\texinfoversion{2013-02-01.11}
-%
-% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
-%
-% This texinfo.tex 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 3 of the
-% License, or (at your option) any later version.
-%
-% This texinfo.tex file is distributed in the hope that it will be
-% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-% General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this program. If not, see <http://www.gnu.org/licenses/>.
-%
-% As a special exception, when this file is read by TeX when processing
-% a Texinfo source document, you may use the result without
-% restriction. This Exception is an additional permission under section 7
-% of the GNU General Public License, version 3 ("GPLv3").
-%
-% Please try the latest version of texinfo.tex before submitting bug
-% reports; you can get the latest version from:
-% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
-% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
-% http://www.gnu.org/software/texinfo/ (the Texinfo home page)
-% The texinfo.tex in any given distribution could well be out
-% of date, so if that's what you're using, please check.
-%
-% Send bug reports to bug-texinfo@gnu.org. Please include including a
-% complete document in each bug report with which we can reproduce the
-% problem. Patches are, of course, greatly appreciated.
-%
-% To process a Texinfo manual with TeX, it's most reliable to use the
-% texi2dvi shell script that comes with the distribution. For a simple
-% manual foo.texi, however, you can get away with this:
-% tex foo.texi
-% texindex foo.??
-% tex foo.texi
-% tex foo.texi
-% dvips foo.dvi -o # or whatever; this makes foo.ps.
-% The extra TeX runs get the cross-reference information correct.
-% Sometimes one run after texindex suffices, and sometimes you need more
-% than two; texi2dvi does it as many times as necessary.
-%
-% It is possible to adapt texinfo.tex for other languages, to some
-% extent. You can get the existing language-specific files from the
-% full Texinfo distribution.
-%
-% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
-
-
-\message{Loading texinfo [version \texinfoversion]:}
-
-% If in a .fmt file, print the version number
-% and turn on active characters that we couldn't do earlier because
-% they might have appeared in the input file name.
-\everyjob{\message{[Texinfo version \texinfoversion]}%
- \catcode`+=\active \catcode`\_=\active}
-
-\chardef\other=12
-
-% We never want plain's \outer definition of \+ in Texinfo.
-% For @tex, we can use \tabalign.
-\let\+ = \relax
-
-% Save some plain tex macros whose names we will redefine.
-\let\ptexb=\b
-\let\ptexbullet=\bullet
-\let\ptexc=\c
-\let\ptexcomma=\,
-\let\ptexdot=\.
-\let\ptexdots=\dots
-\let\ptexend=\end
-\let\ptexequiv=\equiv
-\let\ptexexclam=\!
-\let\ptexfootnote=\footnote
-\let\ptexgtr=>
-\let\ptexhat=^
-\let\ptexi=\i
-\let\ptexindent=\indent
-\let\ptexinsert=\insert
-\let\ptexlbrace=\{
-\let\ptexless=<
-\let\ptexnewwrite\newwrite
-\let\ptexnoindent=\noindent
-\let\ptexplus=+
-\let\ptexraggedright=\raggedright
-\let\ptexrbrace=\}
-\let\ptexslash=\/
-\let\ptexstar=\*
-\let\ptext=\t
-\let\ptextop=\top
-{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
-
-% If this character appears in an error message or help string, it
-% starts a new line in the output.
-\newlinechar = `^^J
-
-% Use TeX 3.0's \inputlineno to get the line number, for better error
-% messages, but if we're using an old version of TeX, don't do anything.
-%
-\ifx\inputlineno\thisisundefined
- \let\linenumber = \empty % Pre-3.0.
-\else
- \def\linenumber{l.\the\inputlineno:\space}
-\fi
-
-% Set up fixed words for English if not already set.
-\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
-\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
-\ifx\putworderror\undefined \gdef\putworderror{error}\fi
-\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
-\ifx\putwordin\undefined \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
-\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
-\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
-\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
-\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi
-\ifx\putwordof\undefined \gdef\putwordof{of}\fi
-\ifx\putwordon\undefined \gdef\putwordon{on}\fi
-\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
-\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
-\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
-\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
-\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
-\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi
-\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi
-%
-\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
-\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
-\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
-\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
-\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
-\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
-\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
-\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
-\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
-\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
-\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
-\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
-%
-\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi
-\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
-\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
-\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
-\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
-
-% Since the category of space is not known, we have to be careful.
-\chardef\spacecat = 10
-\def\spaceisspace{\catcode`\ =\spacecat}
-
-% sometimes characters are active, so we need control sequences.
-\chardef\ampChar = `\&
-\chardef\colonChar = `\:
-\chardef\commaChar = `\,
-\chardef\dashChar = `\-
-\chardef\dotChar = `\.
-\chardef\exclamChar= `\!
-\chardef\hashChar = `\#
-\chardef\lquoteChar= `\`
-\chardef\questChar = `\?
-\chardef\rquoteChar= `\'
-\chardef\semiChar = `\;
-\chardef\slashChar = `\/
-\chardef\underChar = `\_
-
-% Ignore a token.
-%
-\def\gobble#1{}
-
-% The following is used inside several \edef's.
-\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
-
-% Hyphenation fixes.
-\hyphenation{
- Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
- ap-pen-dix bit-map bit-maps
- data-base data-bases eshell fall-ing half-way long-est man-u-script
- man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
- par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
- spell-ing spell-ings
- stand-alone strong-est time-stamp time-stamps which-ever white-space
- wide-spread wrap-around
-}
-
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen\bindingoffset
-\newdimen\normaloffset
-\newdimen\pagewidth \newdimen\pageheight
-
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
-%
-\def\finalout{\overfullrule=0pt }
-
-% Sometimes it is convenient to have everything in the transcript file
-% and nothing on the terminal. We don't just call \tracingall here,
-% since that produces some useless output on the terminal. We also make
-% some effort to order the tracing commands to reduce output in the log
-% file; cf. trace.sty in LaTeX.
-%
-\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\def\loggingall{%
- \tracingstats2
- \tracingpages1
- \tracinglostchars2 % 2 gives us more in etex
- \tracingparagraphs1
- \tracingoutput1
- \tracingmacros2
- \tracingrestores1
- \showboxbreadth\maxdimen \showboxdepth\maxdimen
- \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
- \tracingscantokens1
- \tracingifs1
- \tracinggroups1
- \tracingnesting2
- \tracingassigns1
- \fi
- \tracingcommands3 % 3 gives us more in etex
- \errorcontextlines16
-}%
-
-% @errormsg{MSG}. Do the index-like expansions on MSG, but if things
-% aren't perfect, it's not the end of the world, being an error message,
-% after all.
-%
-\def\errormsg{\begingroup \indexnofonts \doerrormsg}
-\def\doerrormsg#1{\errmessage{#1}}
-
-% add check for \lastpenalty to plain's definitions. If the last thing
-% we did was a \nobreak, we don't want to insert more space.
-%
-\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
- \removelastskip\penalty-50\smallskip\fi\fi}
-\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
- \removelastskip\penalty-100\medskip\fi\fi}
-\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
- \removelastskip\penalty-200\bigskip\fi\fi}
-
-% Do @cropmarks to get crop marks.
-%
-\newif\ifcropmarks
-\let\cropmarks = \cropmarkstrue
-%
-% Dimensions to add cropmarks at corners.
-% Added by P. A. MacKay, 12 Nov. 1986
-%
-\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
-\newdimen\cornerlong \cornerlong=1pc
-\newdimen\cornerthick \cornerthick=.3pt
-\newdimen\topandbottommargin \topandbottommargin=.75in
-
-% Output a mark which sets \thischapter, \thissection and \thiscolor.
-% We dump everything together because we only have one kind of mark.
-% This works because we only use \botmark / \topmark, not \firstmark.
-%
-% A mark contains a subexpression of the \ifcase ... \fi construct.
-% \get*marks macros below extract the needed part using \ifcase.
-%
-% Another complication is to let the user choose whether \thischapter
-% (\thissection) refers to the chapter (section) in effect at the top
-% of a page, or that at the bottom of a page. The solution is
-% described on page 260 of The TeXbook. It involves outputting two
-% marks for the sectioning macros, one before the section break, and
-% one after. I won't pretend I can describe this better than DEK...
-\def\domark{%
- \toks0=\expandafter{\lastchapterdefs}%
- \toks2=\expandafter{\lastsectiondefs}%
- \toks4=\expandafter{\prevchapterdefs}%
- \toks6=\expandafter{\prevsectiondefs}%
- \toks8=\expandafter{\lastcolordefs}%
- \mark{%
- \the\toks0 \the\toks2
- \noexpand\or \the\toks4 \the\toks6
- \noexpand\else \the\toks8
- }%
-}
-% \topmark doesn't work for the very first chapter (after the title
-% page or the contents), so we use \firstmark there -- this gets us
-% the mark with the chapter defs, unless the user sneaks in, e.g.,
-% @setcolor (or @url, or @link, etc.) between @contents and the very
-% first @chapter.
-\def\gettopheadingmarks{%
- \ifcase0\topmark\fi
- \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
-}
-\def\getbottomheadingmarks{\ifcase1\botmark\fi}
-\def\getcolormarks{\ifcase2\topmark\fi}
-
-% Avoid "undefined control sequence" errors.
-\def\lastchapterdefs{}
-\def\lastsectiondefs{}
-\def\prevchapterdefs{}
-\def\prevsectiondefs{}
-\def\lastcolordefs{}
-
-% Main output routine.
-\chardef\PAGE = 255
-\output = {\onepageout{\pagecontents\PAGE}}
-
-\newbox\headlinebox
-\newbox\footlinebox
-
-% \onepageout takes a vbox as an argument. Note that \pagecontents
-% does insertions, but you have to call it yourself.
-\def\onepageout#1{%
- \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
- %
- \ifodd\pageno \advance\hoffset by \bindingoffset
- \else \advance\hoffset by -\bindingoffset\fi
- %
- % Do this outside of the \shipout so @code etc. will be expanded in
- % the headline as they should be, not taken literally (outputting ''code).
- \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
- \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
- \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
- \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
- %
- {%
- % Have to do this stuff outside the \shipout because we want it to
- % take effect in \write's, yet the group defined by the \vbox ends
- % before the \shipout runs.
- %
- \indexdummies % don't expand commands in the output.
- \normalturnoffactive % \ in index entries must not stay \, e.g., if
- % the page break happens to be in the middle of an example.
- % We don't want .vr (or whatever) entries like this:
- % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
- % "\acronym" won't work when it's read back in;
- % it needs to be
- % {\code {{\tt \backslashcurfont }acronym}
- \shipout\vbox{%
- % Do this early so pdf references go to the beginning of the page.
- \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
- %
- \ifcropmarks \vbox to \outervsize\bgroup
- \hsize = \outerhsize
- \vskip-\topandbottommargin
- \vtop to0pt{%
- \line{\ewtop\hfil\ewtop}%
- \nointerlineskip
- \line{%
- \vbox{\moveleft\cornerthick\nstop}%
- \hfill
- \vbox{\moveright\cornerthick\nstop}%
- }%
- \vss}%
- \vskip\topandbottommargin
- \line\bgroup
- \hfil % center the page within the outer (page) hsize.
- \ifodd\pageno\hskip\bindingoffset\fi
- \vbox\bgroup
- \fi
- %
- \unvbox\headlinebox
- \pagebody{#1}%
- \ifdim\ht\footlinebox > 0pt
- % Only leave this space if the footline is nonempty.
- % (We lessened \vsize for it in \oddfootingyyy.)
- % The \baselineskip=24pt in plain's \makefootline has no effect.
- \vskip 24pt
- \unvbox\footlinebox
- \fi
- %
- \ifcropmarks
- \egroup % end of \vbox\bgroup
- \hfil\egroup % end of (centering) \line\bgroup
- \vskip\topandbottommargin plus1fill minus1fill
- \boxmaxdepth = \cornerthick
- \vbox to0pt{\vss
- \line{%
- \vbox{\moveleft\cornerthick\nsbot}%
- \hfill
- \vbox{\moveright\cornerthick\nsbot}%
- }%
- \nointerlineskip
- \line{\ewbot\hfil\ewbot}%
- }%
- \egroup % \vbox from first cropmarks clause
- \fi
- }% end of \shipout\vbox
- }% end of group with \indexdummies
- \advancepageno
- \ifnum\outputpenalty>-20000 \else\dosupereject\fi
-}
-
-\newinsert\margin \dimen\margin=\maxdimen
-
-\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
-{\catcode`\@ =11
-\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
-% marginal hacks, juha@viisa.uucp (Juha Takala)
-\ifvoid\margin\else % marginal info is present
- \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1\relax \unvbox#1\relax
-\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
-\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
-}
-
-% Here are the rules for the cropmarks. Note that they are
-% offset so that the space between them is truly \outerhsize or \outervsize
-% (P. A. MacKay, 12 November, 1986)
-%
-\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
-\def\nstop{\vbox
- {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
-\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
-\def\nsbot{\vbox
- {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
-
-% Parse an argument, then pass it to #1. The argument is the rest of
-% the input line (except we remove a trailing comment). #1 should be a
-% macro which expects an ordinary undelimited TeX argument.
-%
-\def\parsearg{\parseargusing{}}
-\def\parseargusing#1#2{%
- \def\argtorun{#2}%
- \begingroup
- \obeylines
- \spaceisspace
- #1%
- \parseargline\empty% Insert the \empty token, see \finishparsearg below.
-}
-
-{\obeylines %
- \gdef\parseargline#1^^M{%
- \endgroup % End of the group started in \parsearg.
- \argremovecomment #1\comment\ArgTerm%
- }%
-}
-
-% First remove any @comment, then any @c comment.
-\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
-\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
-
-% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
-%
-% \argremovec might leave us with trailing space, e.g.,
-% @end itemize @c foo
-% This space token undergoes the same procedure and is eventually removed
-% by \finishparsearg.
-%
-\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
-\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
-\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
- \def\temp{#3}%
- \ifx\temp\empty
- % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
- \let\temp\finishparsearg
- \else
- \let\temp\argcheckspaces
- \fi
- % Put the space token in:
- \temp#1 #3\ArgTerm
-}
-
-% If a _delimited_ argument is enclosed in braces, they get stripped; so
-% to get _exactly_ the rest of the line, we had to prevent such situation.
-% We prepended an \empty token at the very beginning and we expand it now,
-% just before passing the control to \argtorun.
-% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
-% either the null string, or it ends with \^^M---thus there is no danger
-% that a pair of braces would be stripped.
-%
-% But first, we have to remove the trailing space token.
-%
-\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
-
-% \parseargdef\foo{...}
-% is roughly equivalent to
-% \def\foo{\parsearg\Xfoo}
-% \def\Xfoo#1{...}
-%
-% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
-% favourite TeX trick. --kasal, 16nov03
-
-\def\parseargdef#1{%
- \expandafter \doparseargdef \csname\string#1\endcsname #1%
-}
-\def\doparseargdef#1#2{%
- \def#2{\parsearg#1}%
- \def#1##1%
-}
-
-% Several utility definitions with active space:
-{
- \obeyspaces
- \gdef\obeyedspace{ }
-
- % Make each space character in the input produce a normal interword
- % space in the output. Don't allow a line break at this space, as this
- % is used only in environments like @example, where each line of input
- % should produce a line of output anyway.
- %
- \gdef\sepspaces{\obeyspaces\let =\tie}
-
- % If an index command is used in an @example environment, any spaces
- % therein should become regular spaces in the raw index file, not the
- % expansion of \tie (\leavevmode \penalty \@M \ ).
- \gdef\unsepspaces{\let =\space}
-}
-
-
-\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
-
-% Define the framework for environments in texinfo.tex. It's used like this:
-%
-% \envdef\foo{...}
-% \def\Efoo{...}
-%
-% It's the responsibility of \envdef to insert \begingroup before the
-% actual body; @end closes the group after calling \Efoo. \envdef also
-% defines \thisenv, so the current environment is known; @end checks
-% whether the environment name matches. The \checkenv macro can also be
-% used to check whether the current environment is the one expected.
-%
-% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
-% are not treated as environments; they don't open a group. (The
-% implementation of @end takes care not to call \endgroup in this
-% special case.)
-
-
-% At run-time, environments start with this:
-\def\startenvironment#1{\begingroup\def\thisenv{#1}}
-% initialize
-\let\thisenv\empty
-
-% ... but they get defined via ``\envdef\foo{...}'':
-\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
-\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
-
-% Check whether we're in the right environment:
-\def\checkenv#1{%
- \def\temp{#1}%
- \ifx\thisenv\temp
- \else
- \badenverr
- \fi
-}
-
-% Environment mismatch, #1 expected:
-\def\badenverr{%
- \errhelp = \EMsimple
- \errmessage{This command can appear only \inenvironment\temp,
- not \inenvironment\thisenv}%
-}
-\def\inenvironment#1{%
- \ifx#1\empty
- outside of any environment%
- \else
- in environment \expandafter\string#1%
- \fi
-}
-
-% @end foo executes the definition of \Efoo.
-% But first, it executes a specialized version of \checkenv
-%
-\parseargdef\end{%
- \if 1\csname iscond.#1\endcsname
- \else
- % The general wording of \badenverr may not be ideal.
- \expandafter\checkenv\csname#1\endcsname
- \csname E#1\endcsname
- \endgroup
- \fi
-}
-
-\newhelp\EMsimple{Press RETURN to continue.}
-
-
-% Be sure we're in horizontal mode when doing a tie, since we make space
-% equivalent to this in @example-like environments. Otherwise, a space
-% at the beginning of a line will start with \penalty -- and
-% since \penalty is valid in vertical mode, we'd end up putting the
-% penalty on the vertical list instead of in the new paragraph.
-{\catcode`@ = 11
- % Avoid using \@M directly, because that causes trouble
- % if the definition is written into an index file.
- \global\let\tiepenalty = \@M
- \gdef\tie{\leavevmode\penalty\tiepenalty\ }
-}
-
-% @: forces normal size whitespace following.
-\def\:{\spacefactor=1000 }
-
-% @* forces a line break.
-\def\*{\unskip\hfil\break\hbox{}\ignorespaces}
-
-% @/ allows a line break.
-\let\/=\allowbreak
-
-% @. is an end-of-sentence period.
-\def\.{.\spacefactor=\endofsentencespacefactor\space}
-
-% @! is an end-of-sentence bang.
-\def\!{!\spacefactor=\endofsentencespacefactor\space}
-
-% @? is an end-of-sentence query.
-\def\?{?\spacefactor=\endofsentencespacefactor\space}
-
-% @frenchspacing on|off says whether to put extra space after punctuation.
-%
-\def\onword{on}
-\def\offword{off}
-%
-\parseargdef\frenchspacing{%
- \def\temp{#1}%
- \ifx\temp\onword \plainfrenchspacing
- \else\ifx\temp\offword \plainnonfrenchspacing
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
- \fi\fi
-}
-
-% @w prevents a word break. Without the \leavevmode, @w at the
-% beginning of a paragraph, when TeX is still in vertical mode, would
-% produce a whole line of output instead of starting the paragraph.
-\def\w#1{\leavevmode\hbox{#1}}
-
-% @group ... @end group forces ... to be all on one page, by enclosing
-% it in a TeX vbox. We use \vtop instead of \vbox to construct the box
-% to keep its height that of a normal line. According to the rules for
-% \topskip (p.114 of the TeXbook), the glue inserted is
-% max (\topskip - \ht (first item), 0). If that height is large,
-% therefore, no glue is inserted, and the space between the headline and
-% the text is small, which looks bad.
-%
-% Another complication is that the group might be very large. This can
-% cause the glue on the previous page to be unduly stretched, because it
-% does not have much material. In this case, it's better to add an
-% explicit \vfill so that the extra space is at the bottom. The
-% threshold for doing this is if the group is more than \vfilllimit
-% percent of a page (\vfilllimit can be changed inside of @tex).
-%
-\newbox\groupbox
-\def\vfilllimit{0.7}
-%
-\envdef\group{%
- \ifnum\catcode`\^^M=\active \else
- \errhelp = \groupinvalidhelp
- \errmessage{@group invalid in context where filling is enabled}%
- \fi
- \startsavinginserts
- %
- \setbox\groupbox = \vtop\bgroup
- % Do @comment since we are called inside an environment such as
- % @example, where each end-of-line in the input causes an
- % end-of-line in the output. We don't want the end-of-line after
- % the `@group' to put extra space in the output. Since @group
- % should appear on a line by itself (according to the Texinfo
- % manual), we don't worry about eating any user text.
- \comment
-}
-%
-% The \vtop produces a box with normal height and large depth; thus, TeX puts
-% \baselineskip glue before it, and (when the next line of text is done)
-% \lineskip glue after it. Thus, space below is not quite equal to space
-% above. But it's pretty close.
-\def\Egroup{%
- % To get correct interline space between the last line of the group
- % and the first line afterwards, we have to propagate \prevdepth.
- \endgraf % Not \par, as it may have been set to \lisppar.
- \global\dimen1 = \prevdepth
- \egroup % End the \vtop.
- % \dimen0 is the vertical size of the group's box.
- \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox
- % \dimen2 is how much space is left on the page (more or less).
- \dimen2 = \pageheight \advance\dimen2 by -\pagetotal
- % if the group doesn't fit on the current page, and it's a big big
- % group, force a page break.
- \ifdim \dimen0 > \dimen2
- \ifdim \pagetotal < \vfilllimit\pageheight
- \page
- \fi
- \fi
- \box\groupbox
- \prevdepth = \dimen1
- \checkinserts
-}
-%
-% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
-% message, so this ends up printing `@group can only ...'.
-%
-\newhelp\groupinvalidhelp{%
-group can only be used in environments such as @example,^^J%
-where each line of input produces a line of output.}
-
-% @need space-in-mils
-% forces a page break if there is not space-in-mils remaining.
-
-\newdimen\mil \mil=0.001in
-
-\parseargdef\need{%
- % Ensure vertical mode, so we don't make a big box in the middle of a
- % paragraph.
- \par
- %
- % If the @need value is less than one line space, it's useless.
- \dimen0 = #1\mil
- \dimen2 = \ht\strutbox
- \advance\dimen2 by \dp\strutbox
- \ifdim\dimen0 > \dimen2
- %
- % Do a \strut just to make the height of this box be normal, so the
- % normal leading is inserted relative to the preceding line.
- % And a page break here is fine.
- \vtop to #1\mil{\strut\vfil}%
- %
- % TeX does not even consider page breaks if a penalty added to the
- % main vertical list is 10000 or more. But in order to see if the
- % empty box we just added fits on the page, we must make it consider
- % page breaks. On the other hand, we don't want to actually break the
- % page after the empty box. So we use a penalty of 9999.
- %
- % There is an extremely small chance that TeX will actually break the
- % page at this \penalty, if there are no other feasible breakpoints in
- % sight. (If the user is using lots of big @group commands, which
- % almost-but-not-quite fill up a page, TeX will have a hard time doing
- % good page breaking, for example.) However, I could not construct an
- % example where a page broke at this \penalty; if it happens in a real
- % document, then we can reconsider our strategy.
- \penalty9999
- %
- % Back up by the size of the box, whether we did a page break or not.
- \kern -#1\mil
- %
- % Do not allow a page break right after this kern.
- \nobreak
- \fi
-}
-
-% @br forces paragraph break (and is undocumented).
-
-\let\br = \par
-
-% @page forces the start of a new page.
-%
-\def\page{\par\vfill\supereject}
-
-% @exdent text....
-% outputs text on separate line in roman font, starting at standard page margin
-
-% This records the amount of indent in the innermost environment.
-% That's how much \exdent should take out.
-\newskip\exdentamount
-
-% This defn is used inside fill environments such as @defun.
-\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
-
-% This defn is used inside nofill environments such as @example.
-\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
- \leftline{\hskip\leftskip{\rm#1}}}}
-
-% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
-% paragraph. For more general purposes, use the \margin insertion
-% class. WHICH is `l' or `r'. Not documented, written for gawk manual.
-%
-\newskip\inmarginspacing \inmarginspacing=1cm
-\def\strutdepth{\dp\strutbox}
-%
-\def\doinmargin#1#2{\strut\vadjust{%
- \nobreak
- \kern-\strutdepth
- \vtop to \strutdepth{%
- \baselineskip=\strutdepth
- \vss
- % if you have multiple lines of stuff to put here, you'll need to
- % make the vbox yourself of the appropriate size.
- \ifx#1l%
- \llap{\ignorespaces #2\hskip\inmarginspacing}%
- \else
- \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
- \fi
- \null
- }%
-}}
-\def\inleftmargin{\doinmargin l}
-\def\inrightmargin{\doinmargin r}
-%
-% @inmargin{TEXT [, RIGHT-TEXT]}
-% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
-% else use TEXT for both).
-%
-\def\inmargin#1{\parseinmargin #1,,\finish}
-\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0 > 0pt
- \def\lefttext{#1}% have both texts
- \def\righttext{#2}%
- \else
- \def\lefttext{#1}% have only one text
- \def\righttext{#1}%
- \fi
- %
- \ifodd\pageno
- \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
- \else
- \def\temp{\inleftmargin\lefttext}%
- \fi
- \temp
-}
-
-% @| inserts a changebar to the left of the current line. It should
-% surround any changed text. This approach does *not* work if the
-% change spans more than two lines of output. To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change). This command
-% is not documented, not supported, and doesn't work.
-%
-\def\|{%
- % \vadjust can only be used in horizontal mode.
- \leavevmode
- %
- % Append this vertical mode material after the current line in the output.
- \vadjust{%
- % We want to insert a rule with the height and depth of the current
- % leading; that is exactly what \strutbox is supposed to record.
- \vskip-\baselineskip
- %
- % \vadjust-items are inserted at the left edge of the type. So
- % the \llap here moves out into the left-hand margin.
- \llap{%
- %
- % For a thicker or thinner bar, change the `1pt'.
- \vrule height\baselineskip width1pt
- %
- % This is the space between the bar and the text.
- \hskip 12pt
- }%
- }%
-}
-
-% @include FILE -- \input text of FILE.
-%
-\def\include{\parseargusing\filenamecatcodes\includezzz}
-\def\includezzz#1{%
- \pushthisfilestack
- \def\thisfile{#1}%
- {%
- \makevalueexpandable % we want to expand any @value in FILE.
- \turnoffactive % and allow special characters in the expansion
- \indexnofonts % Allow `@@' and other weird things in file names.
- \wlog{texinfo.tex: doing @include of #1^^J}%
- \edef\temp{\noexpand\input #1 }%
- %
- % This trickery is to read FILE outside of a group, in case it makes
- % definitions, etc.
- \expandafter
- }\temp
- \popthisfilestack
-}
-\def\filenamecatcodes{%
- \catcode`\\=\other
- \catcode`~=\other
- \catcode`^=\other
- \catcode`_=\other
- \catcode`|=\other
- \catcode`<=\other
- \catcode`>=\other
- \catcode`+=\other
- \catcode`-=\other
- \catcode`\`=\other
- \catcode`\'=\other
-}
-
-\def\pushthisfilestack{%
- \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
-}
-\def\pushthisfilestackX{%
- \expandafter\pushthisfilestackY\thisfile\StackTerm
-}
-\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
- \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
-}
-
-\def\popthisfilestack{\errthisfilestackempty}
-\def\errthisfilestackempty{\errmessage{Internal error:
- the stack of filenames is empty.}}
-%
-\def\thisfile{}
-
-% @center line
-% outputs that line, centered.
-%
-\parseargdef\center{%
- \ifhmode
- \let\centersub\centerH
- \else
- \let\centersub\centerV
- \fi
- \centersub{\hfil \ignorespaces#1\unskip \hfil}%
- \let\centersub\relax % don't let the definition persist, just in case
-}
-\def\centerH#1{{%
- \hfil\break
- \advance\hsize by -\leftskip
- \advance\hsize by -\rightskip
- \line{#1}%
- \break
-}}
-%
-\newcount\centerpenalty
-\def\centerV#1{%
- % The idea here is the same as in \startdefun, \cartouche, etc.: if
- % @center is the first thing after a section heading, we need to wipe
- % out the negative parskip inserted by \sectionheading, but still
- % prevent a page break here.
- \centerpenalty = \lastpenalty
- \ifnum\centerpenalty>10000 \vskip\parskip \fi
- \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
- \line{\kern\leftskip #1\kern\rightskip}%
-}
-
-% @sp n outputs n lines of vertical space
-%
-\parseargdef\sp{\vskip #1\baselineskip}
-
-% @comment ...line which is ignored...
-% @c is the same as @comment
-% @ignore ... @end ignore is another way to write a comment
-%
-\def\comment{\begingroup \catcode`\^^M=\other%
-\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
-\commentxxx}
-{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-%
-\let\c=\comment
-
-% @paragraphindent NCHARS
-% We'll use ems for NCHARS, close enough.
-% NCHARS can also be the word `asis' or `none'.
-% We cannot feasibly implement @paragraphindent asis, though.
-%
-\def\asisword{asis} % no translation, these are keywords
-\def\noneword{none}
-%
-\parseargdef\paragraphindent{%
- \def\temp{#1}%
- \ifx\temp\asisword
- \else
- \ifx\temp\noneword
- \defaultparindent = 0pt
- \else
- \defaultparindent = #1em
- \fi
- \fi
- \parindent = \defaultparindent
-}
-
-% @exampleindent NCHARS
-% We'll use ems for NCHARS like @paragraphindent.
-% It seems @exampleindent asis isn't necessary, but
-% I preserve it to make it similar to @paragraphindent.
-\parseargdef\exampleindent{%
- \def\temp{#1}%
- \ifx\temp\asisword
- \else
- \ifx\temp\noneword
- \lispnarrowing = 0pt
- \else
- \lispnarrowing = #1em
- \fi
- \fi
-}
-
-% @firstparagraphindent WORD
-% If WORD is `none', then suppress indentation of the first paragraph
-% after a section heading. If WORD is `insert', then do indent at such
-% paragraphs.
-%
-% The paragraph indentation is suppressed or not by calling
-% \suppressfirstparagraphindent, which the sectioning commands do.
-% We switch the definition of this back and forth according to WORD.
-% By default, we suppress indentation.
-%
-\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
-\def\insertword{insert}
-%
-\parseargdef\firstparagraphindent{%
- \def\temp{#1}%
- \ifx\temp\noneword
- \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
- \else\ifx\temp\insertword
- \let\suppressfirstparagraphindent = \relax
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @firstparagraphindent option `\temp'}%
- \fi\fi
-}
-
-% Here is how we actually suppress indentation. Redefine \everypar to
-% \kern backwards by \parindent, and then reset itself to empty.
-%
-% We also make \indent itself not actually do anything until the next
-% paragraph.
-%
-\gdef\dosuppressfirstparagraphindent{%
- \gdef\indent{%
- \restorefirstparagraphindent
- \indent
- }%
- \gdef\noindent{%
- \restorefirstparagraphindent
- \noindent
- }%
- \global\everypar = {%
- \kern -\parindent
- \restorefirstparagraphindent
- }%
-}
-
-\gdef\restorefirstparagraphindent{%
- \global \let \indent = \ptexindent
- \global \let \noindent = \ptexnoindent
- \global \everypar = {}%
-}
-
-
-% @refill is a no-op.
-\let\refill=\relax
-
-% If working on a large document in chapters, it is convenient to
-% be able to disable indexing, cross-referencing, and contents, for test runs.
-% This is done with @novalidate (before @setfilename).
-%
-\newif\iflinks \linkstrue % by default we want the aux files.
-\let\novalidate = \linksfalse
-
-% @setfilename is done at the beginning of every texinfo file.
-% So open here the files we need to have open while reading the input.
-% This makes it possible to make a .fmt file for texinfo.
-\def\setfilename{%
- \fixbackslash % Turn off hack to swallow `\input texinfo'.
- \iflinks
- \tryauxfile
- % Open the new aux file. TeX will close it automatically at exit.
- \immediate\openout\auxfile=\jobname.aux
- \fi % \openindices needs to do some work in any case.
- \openindices
- \let\setfilename=\comment % Ignore extra @setfilename cmds.
- %
- % If texinfo.cnf is present on the system, read it.
- % Useful for site-wide @afourpaper, etc.
- \openin 1 texinfo.cnf
- \ifeof 1 \else \input texinfo.cnf \fi
- \closein 1
- %
- \comment % Ignore the actual filename.
-}
-
-% Called from \setfilename.
-%
-\def\openindices{%
- \newindex{cp}%
- \newcodeindex{fn}%
- \newcodeindex{vr}%
- \newcodeindex{tp}%
- \newcodeindex{ky}%
- \newcodeindex{pg}%
-}
-
-% @bye.
-\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
-
-
-\message{pdf,}
-% adobe `portable' document format
-\newcount\tempnum
-\newcount\lnkcount
-\newtoks\filename
-\newcount\filenamelength
-\newcount\pgn
-\newtoks\toksA
-\newtoks\toksB
-\newtoks\toksC
-\newtoks\toksD
-\newbox\boxA
-\newcount\countA
-\newif\ifpdf
-\newif\ifpdfmakepagedest
-
-% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
-% can be set). So we test for \relax and 0 as well as being undefined.
-\ifx\pdfoutput\thisisundefined
-\else
- \ifx\pdfoutput\relax
- \else
- \ifcase\pdfoutput
- \else
- \pdftrue
- \fi
- \fi
-\fi
-
-% PDF uses PostScript string constants for the names of xref targets,
-% for display in the outlines, and in other places. Thus, we have to
-% double any backslashes. Otherwise, a name like "\node" will be
-% interpreted as a newline (\n), followed by o, d, e. Not good.
-%
-% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
-% related messages. The final outcome is that it is up to the TeX user
-% to double the backslashes and otherwise make the string valid, so
-% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to
-% do this reliably, so we use it.
-
-% #1 is a control sequence in which to do the replacements,
-% which we \xdef.
-\def\txiescapepdf#1{%
- \ifx\pdfescapestring\thisisundefined
- % No primitive available; should we give a warning or log?
- % Many times it won't matter.
- \else
- % The expandable \pdfescapestring primitive escapes parentheses,
- % backslashes, and other special chars.
- \xdef#1{\pdfescapestring{#1}}%
- \fi
-}
-
-\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
-with PDF output, and none of those formats could be found. (.eps cannot
-be supported due to the design of the PDF format; use regular TeX (DVI
-output) for that.)}
-
-\ifpdf
- %
- % Color manipulation macros based on pdfcolor.tex,
- % except using rgb instead of cmyk; the latter is said to render as a
- % very dark gray on-screen and a very dark halftone in print, instead
- % of actual black.
- \def\rgbDarkRed{0.50 0.09 0.12}
- \def\rgbBlack{0 0 0}
- %
- % k sets the color for filling (usual text, etc.);
- % K sets the color for stroking (thin rules, e.g., normal _'s).
- \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}}
- %
- % Set color, and create a mark which defines \thiscolor accordingly,
- % so that \makeheadline knows which color to restore.
- \def\setcolor#1{%
- \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
- \domark
- \pdfsetcolor{#1}%
- }
- %
- \def\maincolor{\rgbBlack}
- \pdfsetcolor{\maincolor}
- \edef\thiscolor{\maincolor}
- \def\lastcolordefs{}
- %
- \def\makefootline{%
- \baselineskip24pt
- \line{\pdfsetcolor{\maincolor}\the\footline}%
- }
- %
- \def\makeheadline{%
- \vbox to 0pt{%
- \vskip-22.5pt
- \line{%
- \vbox to8.5pt{}%
- % Extract \thiscolor definition from the marks.
- \getcolormarks
- % Typeset the headline with \maincolor, then restore the color.
- \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
- }%
- \vss
- }%
- \nointerlineskip
- }
- %
- %
- \pdfcatalog{/PageMode /UseOutlines}
- %
- % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
- \def\dopdfimage#1#2#3{%
- \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
- \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
- %
- % pdftex (and the PDF format) support .pdf, .png, .jpg (among
- % others). Let's try in that order, PDF first since if
- % someone has a scalable image, presumably better to use that than a
- % bitmap.
- \let\pdfimgext=\empty
- \begingroup
- \openin 1 #1.pdf \ifeof 1
- \openin 1 #1.PDF \ifeof 1
- \openin 1 #1.png \ifeof 1
- \openin 1 #1.jpg \ifeof 1
- \openin 1 #1.jpeg \ifeof 1
- \openin 1 #1.JPG \ifeof 1
- \errhelp = \nopdfimagehelp
- \errmessage{Could not find image file #1 for pdf}%
- \else \gdef\pdfimgext{JPG}%
- \fi
- \else \gdef\pdfimgext{jpeg}%
- \fi
- \else \gdef\pdfimgext{jpg}%
- \fi
- \else \gdef\pdfimgext{png}%
- \fi
- \else \gdef\pdfimgext{PDF}%
- \fi
- \else \gdef\pdfimgext{pdf}%
- \fi
- \closein 1
- \endgroup
- %
- % without \immediate, ancient pdftex seg faults when the same image is
- % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
- \ifnum\pdftexversion < 14
- \immediate\pdfimage
- \else
- \immediate\pdfximage
- \fi
- \ifdim \wd0 >0pt width \pdfimagewidth \fi
- \ifdim \wd2 >0pt height \pdfimageheight \fi
- \ifnum\pdftexversion<13
- #1.\pdfimgext
- \else
- {#1.\pdfimgext}%
- \fi
- \ifnum\pdftexversion < 14 \else
- \pdfrefximage \pdflastximage
- \fi}
- %
- \def\pdfmkdest#1{{%
- % We have to set dummies so commands such as @code, and characters
- % such as \, aren't expanded when present in a section title.
- \indexnofonts
- \turnoffactive
- \makevalueexpandable
- \def\pdfdestname{#1}%
- \txiescapepdf\pdfdestname
- \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
- }}
- %
- % used to mark target names; must be expandable.
- \def\pdfmkpgn#1{#1}
- %
- % by default, use a color that is dark enough to print on paper as
- % nearly black, but still distinguishable for online viewing.
- \def\urlcolor{\rgbDarkRed}
- \def\linkcolor{\rgbDarkRed}
- \def\endlink{\setcolor{\maincolor}\pdfendlink}
- %
- % Adding outlines to PDF; macros for calculating structure of outlines
- % come from Petr Olsak
- \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
- \else \csname#1\endcsname \fi}
- \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
- \advance\tempnum by 1
- \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
- %
- % #1 is the section text, which is what will be displayed in the
- % outline by the pdf viewer. #2 is the pdf expression for the number
- % of subentries (or empty, for subsubsections). #3 is the node text,
- % which might be empty if this toc entry had no corresponding node.
- % #4 is the page number
- %
- \def\dopdfoutline#1#2#3#4{%
- % Generate a link to the node text if that exists; else, use the
- % page number. We could generate a destination for the section
- % text in the case where a section has no node, but it doesn't
- % seem worth the trouble, since most documents are normally structured.
- \edef\pdfoutlinedest{#3}%
- \ifx\pdfoutlinedest\empty
- \def\pdfoutlinedest{#4}%
- \else
- \txiescapepdf\pdfoutlinedest
- \fi
- %
- % Also escape PDF chars in the display string.
- \edef\pdfoutlinetext{#1}%
- \txiescapepdf\pdfoutlinetext
- %
- \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
- }
- %
- \def\pdfmakeoutlines{%
- \begingroup
- % Read toc silently, to get counts of subentries for \pdfoutline.
- \def\partentry##1##2##3##4{}% ignore parts in the outlines
- \def\numchapentry##1##2##3##4{%
- \def\thischapnum{##2}%
- \def\thissecnum{0}%
- \def\thissubsecnum{0}%
- }%
- \def\numsecentry##1##2##3##4{%
- \advancenumber{chap\thischapnum}%
- \def\thissecnum{##2}%
- \def\thissubsecnum{0}%
- }%
- \def\numsubsecentry##1##2##3##4{%
- \advancenumber{sec\thissecnum}%
- \def\thissubsecnum{##2}%
- }%
- \def\numsubsubsecentry##1##2##3##4{%
- \advancenumber{subsec\thissubsecnum}%
- }%
- \def\thischapnum{0}%
- \def\thissecnum{0}%
- \def\thissubsecnum{0}%
- %
- % use \def rather than \let here because we redefine \chapentry et
- % al. a second time, below.
- \def\appentry{\numchapentry}%
- \def\appsecentry{\numsecentry}%
- \def\appsubsecentry{\numsubsecentry}%
- \def\appsubsubsecentry{\numsubsubsecentry}%
- \def\unnchapentry{\numchapentry}%
- \def\unnsecentry{\numsecentry}%
- \def\unnsubsecentry{\numsubsecentry}%
- \def\unnsubsubsecentry{\numsubsubsecentry}%
- \readdatafile{toc}%
- %
- % Read toc second time, this time actually producing the outlines.
- % The `-' means take the \expnumber as the absolute number of
- % subentries, which we calculated on our first read of the .toc above.
- %
- % We use the node names as the destinations.
- \def\numchapentry##1##2##3##4{%
- \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
- \def\numsecentry##1##2##3##4{%
- \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
- \def\numsubsecentry##1##2##3##4{%
- \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
- \def\numsubsubsecentry##1##2##3##4{% count is always zero
- \dopdfoutline{##1}{}{##3}{##4}}%
- %
- % PDF outlines are displayed using system fonts, instead of
- % document fonts. Therefore we cannot use special characters,
- % since the encoding is unknown. For example, the eogonek from
- % Latin 2 (0xea) gets translated to a | character. Info from
- % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
- %
- % TODO this right, we have to translate 8-bit characters to
- % their "best" equivalent, based on the @documentencoding. Too
- % much work for too little return. Just use the ASCII equivalents
- % we use for the index sort strings.
- %
- \indexnofonts
- \setupdatafile
- % We can have normal brace characters in the PDF outlines, unlike
- % Texinfo index files. So set that up.
- \def\{{\lbracecharliteral}%
- \def\}{\rbracecharliteral}%
- \catcode`\\=\active \otherbackslash
- \input \tocreadfilename
- \endgroup
- }
- {\catcode`[=1 \catcode`]=2
- \catcode`{=\other \catcode`}=\other
- \gdef\lbracecharliteral[{]%
- \gdef\rbracecharliteral[}]%
- ]
- %
- \def\skipspaces#1{\def\PP{#1}\def\D{|}%
- \ifx\PP\D\let\nextsp\relax
- \else\let\nextsp\skipspaces
- \addtokens{\filename}{\PP}%
- \advance\filenamelength by 1
- \fi
- \nextsp}
- \def\getfilename#1{%
- \filenamelength=0
- % If we don't expand the argument now, \skipspaces will get
- % snagged on things like "@value{foo}".
- \edef\temp{#1}%
- \expandafter\skipspaces\temp|\relax
- }
- \ifnum\pdftexversion < 14
- \let \startlink \pdfannotlink
- \else
- \let \startlink \pdfstartlink
- \fi
- % make a live url in pdf output.
- \def\pdfurl#1{%
- \begingroup
- % it seems we really need yet another set of dummies; have not
- % tried to figure out what each command should do in the context
- % of @url. for now, just make @/ a no-op, that's the only one
- % people have actually reported a problem with.
- %
- \normalturnoffactive
- \def\@{@}%
- \let\/=\empty
- \makevalueexpandable
- % do we want to go so far as to use \indexnofonts instead of just
- % special-casing \var here?
- \def\var##1{##1}%
- %
- \leavevmode\setcolor{\urlcolor}%
- \startlink attr{/Border [0 0 0]}%
- user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
- \endgroup}
- \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
- \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
- \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
- \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
- \def\maketoks{%
- \expandafter\poptoks\the\toksA|ENDTOKS|\relax
- \ifx\first0\adn0
- \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
- \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
- \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
- \else
- \ifnum0=\countA\else\makelink\fi
- \ifx\first.\let\next=\done\else
- \let\next=\maketoks
- \addtokens{\toksB}{\the\toksD}
- \ifx\first,\addtokens{\toksB}{\space}\fi
- \fi
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \next}
- \def\makelink{\addtokens{\toksB}%
- {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
- \def\pdflink#1{%
- \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
- \setcolor{\linkcolor}#1\endlink}
- \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\else
- % non-pdf mode
- \let\pdfmkdest = \gobble
- \let\pdfurl = \gobble
- \let\endlink = \relax
- \let\setcolor = \gobble
- \let\pdfsetcolor = \gobble
- \let\pdfmakeoutlines = \relax
-\fi % \ifx\pdfoutput
-
-
-\message{fonts,}
-
-% Change the current font style to #1, remembering it in \curfontstyle.
-% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
-% italics, not bold italics.
-%
-\def\setfontstyle#1{%
- \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
- \csname ten#1\endcsname % change the current font
-}
-
-% Select #1 fonts with the current style.
-%
-\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
-
-\def\rm{\fam=0 \setfontstyle{rm}}
-\def\it{\fam=\itfam \setfontstyle{it}}
-\def\sl{\fam=\slfam \setfontstyle{sl}}
-\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
-\def\tt{\fam=\ttfam \setfontstyle{tt}}
-
-% Unfortunately, we have to override this for titles and the like, since
-% in those cases "rm" is bold. Sigh.
-\def\rmisbold{\rm\def\curfontstyle{bf}}
-
-% Texinfo sort of supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf.
-\newfam\sffam
-\def\sf{\fam=\sffam \setfontstyle{sf}}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-% We don't need math for this font style.
-\def\ttsl{\setfontstyle{ttsl}}
-
-
-% Set the baselineskip to #1, and the lineskip and strut size
-% correspondingly. There is no deep meaning behind these magic numbers
-% used as factors; they just match (closely enough) what Knuth defined.
-%
-\def\lineskipfactor{.08333}
-\def\strutheightpercent{.70833}
-\def\strutdepthpercent {.29167}
-%
-% can get a sort of poor man's double spacing by redefining this.
-\def\baselinefactor{1}
-%
-\newdimen\textleading
-\def\setleading#1{%
- \dimen0 = #1\relax
- \normalbaselineskip = \baselinefactor\dimen0
- \normallineskip = \lineskipfactor\normalbaselineskip
- \normalbaselines
- \setbox\strutbox =\hbox{%
- \vrule width0pt height\strutheightpercent\baselineskip
- depth \strutdepthpercent \baselineskip
- }%
-}
-
-% PDF CMaps. See also LaTeX's t1.cmap.
-%
-% do nothing with this by default.
-\expandafter\let\csname cmapOT1\endcsname\gobble
-\expandafter\let\csname cmapOT1IT\endcsname\gobble
-\expandafter\let\csname cmapOT1TT\endcsname\gobble
-
-% if we are producing pdf, and we have \pdffontattr, then define cmaps.
-% (\pdffontattr was introduced many years ago, but people still run
-% older pdftex's; it's easy to conditionalize, so we do.)
-\ifpdf \ifx\pdffontattr\thisisundefined \else
- \begingroup
- \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
- \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1-0)
-%%Title: (TeX-OT1-0 TeX OT1 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1)
-/Supplement 0
->> def
-/CMapName /TeX-OT1-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-8 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<23> <26> <0023>
-<28> <3B> <0028>
-<3F> <5B> <003F>
-<5D> <5E> <005D>
-<61> <7A> <0061>
-<7B> <7C> <2013>
-endbfrange
-40 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <00660066>
-<0C> <00660069>
-<0D> <0066006C>
-<0E> <006600660069>
-<0F> <00660066006C>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<21> <0021>
-<22> <201D>
-<27> <2019>
-<3C> <00A1>
-<3D> <003D>
-<3E> <00BF>
-<5C> <201C>
-<5F> <02D9>
-<60> <2018>
-<7D> <02DD>
-<7E> <007E>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
- }\endgroup
- \expandafter\edef\csname cmapOT1\endcsname#1{%
- \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
- }%
-%
-% \cmapOT1IT
- \begingroup
- \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
- \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1IT-0)
-%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1IT)
-/Supplement 0
->> def
-/CMapName /TeX-OT1IT-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-8 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<25> <26> <0025>
-<28> <3B> <0028>
-<3F> <5B> <003F>
-<5D> <5E> <005D>
-<61> <7A> <0061>
-<7B> <7C> <2013>
-endbfrange
-42 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <00660066>
-<0C> <00660069>
-<0D> <0066006C>
-<0E> <006600660069>
-<0F> <00660066006C>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<21> <0021>
-<22> <201D>
-<23> <0023>
-<24> <00A3>
-<27> <2019>
-<3C> <00A1>
-<3D> <003D>
-<3E> <00BF>
-<5C> <201C>
-<5F> <02D9>
-<60> <2018>
-<7D> <02DD>
-<7E> <007E>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
- }\endgroup
- \expandafter\edef\csname cmapOT1IT\endcsname#1{%
- \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
- }%
-%
-% \cmapOT1TT
- \begingroup
- \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
- \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-OT1TT-0)
-%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (OT1TT)
-/Supplement 0
->> def
-/CMapName /TeX-OT1TT-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <7F>
-endcodespacerange
-5 beginbfrange
-<00> <01> <0393>
-<09> <0A> <03A8>
-<21> <26> <0021>
-<28> <5F> <0028>
-<61> <7E> <0061>
-endbfrange
-32 beginbfchar
-<02> <0398>
-<03> <039B>
-<04> <039E>
-<05> <03A0>
-<06> <03A3>
-<07> <03D2>
-<08> <03A6>
-<0B> <2191>
-<0C> <2193>
-<0D> <0027>
-<0E> <00A1>
-<0F> <00BF>
-<10> <0131>
-<11> <0237>
-<12> <0060>
-<13> <00B4>
-<14> <02C7>
-<15> <02D8>
-<16> <00AF>
-<17> <02DA>
-<18> <00B8>
-<19> <00DF>
-<1A> <00E6>
-<1B> <0153>
-<1C> <00F8>
-<1D> <00C6>
-<1E> <0152>
-<1F> <00D8>
-<20> <2423>
-<27> <2019>
-<60> <2018>
-<7F> <00A8>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
- }\endgroup
- \expandafter\edef\csname cmapOT1TT\endcsname#1{%
- \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
- }%
-\fi\fi
-
-
-% Set the font macro #1 to the font named \fontprefix#2.
-% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
-% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
-% Example:
-% #1 = \textrm
-% #2 = \rmshape
-% #3 = 10
-% #4 = \mainmagstep
-% #5 = OT1
-%
-\def\setfont#1#2#3#4#5{%
- \font#1=\fontprefix#2#3 scaled #4
- \csname cmap#5\endcsname#1%
-}
-% This is what gets called when #5 of \setfont is empty.
-\let\cmap\gobble
-%
-% (end of cmaps)
-
-% Use cm as the default font prefix.
-% To specify the font prefix, you must define \fontprefix
-% before you read in texinfo.tex.
-\ifx\fontprefix\thisisundefined
-\def\fontprefix{cm}
-\fi
-% Support font families that don't use the same naming scheme as CM.
-\def\rmshape{r}
-\def\rmbshape{bx} % where the normal face is bold
-\def\bfshape{b}
-\def\bxshape{bx}
-\def\ttshape{tt}
-\def\ttbshape{tt}
-\def\ttslshape{sltt}
-\def\itshape{ti}
-\def\itbshape{bxti}
-\def\slshape{sl}
-\def\slbshape{bxsl}
-\def\sfshape{ss}
-\def\sfbshape{ss}
-\def\scshape{csc}
-\def\scbshape{csc}
-
-% Definitions for a main text size of 11pt. (The default in Texinfo.)
-%
-\def\definetextfontsizexi{%
-% Text fonts (11.2pt, magstep1).
-\def\textnominalsize{11pt}
-\edef\mainmagstep{\magstephalf}
-\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
-\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
-\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
-\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
-\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
-\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
-\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-\def\textecsize{1095}
-
-% A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstep1}{OT1}
-\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
-\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}{OT1}
-\setfont\smalltt\ttshape{9}{1000}{OT1TT}
-\setfont\smallbf\bfshape{10}{900}{OT1}
-\setfont\smallit\itshape{9}{1000}{OT1IT}
-\setfont\smallsl\slshape{9}{1000}{OT1}
-\setfont\smallsf\sfshape{9}{1000}{OT1}
-\setfont\smallsc\scshape{10}{900}{OT1}
-\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-\def\smallecsize{0900}
-
-% Fonts for small examples (8pt).
-\def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}{OT1}
-\setfont\smallertt\ttshape{8}{1000}{OT1TT}
-\setfont\smallerbf\bfshape{10}{800}{OT1}
-\setfont\smallerit\itshape{8}{1000}{OT1IT}
-\setfont\smallersl\slshape{8}{1000}{OT1}
-\setfont\smallersf\sfshape{8}{1000}{OT1}
-\setfont\smallersc\scshape{10}{800}{OT1}
-\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
-\font\smalleri=cmmi8
-\font\smallersy=cmsy8
-\def\smallerecsize{0800}
-
-% Fonts for title page (20.4pt):
-\def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
-\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
-\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
-\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
-\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
-\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\titleecsize{2074}
-
-% Chapter (and unnumbered) fonts (17.28pt).
-\def\chapnominalsize{17pt}
-\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
-\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
-\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
-\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
-\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
-\setfont\chapsf\sfbshape{17}{1000}{OT1}
-\let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
-\font\chapi=cmmi12 scaled \magstep2
-\font\chapsy=cmsy10 scaled \magstep3
-\def\chapecsize{1728}
-
-% Section fonts (14.4pt).
-\def\secnominalsize{14pt}
-\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
-\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
-\setfont\secsl\slbshape{10}{\magstep2}{OT1}
-\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
-\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
-\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}{OT1}
-\font\seci=cmmi12 scaled \magstep1
-\font\secsy=cmsy10 scaled \magstep2
-\def\sececsize{1440}
-
-% Subsection fonts (13.15pt).
-\def\ssecnominalsize{13pt}
-\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
-\setfont\ssecit\itbshape{10}{1315}{OT1IT}
-\setfont\ssecsl\slbshape{10}{1315}{OT1}
-\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
-\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1315}{OT1}
-\font\sseci=cmmi12 scaled \magstephalf
-\font\ssecsy=cmsy10 scaled 1315
-\def\ssececsize{1200}
-
-% Reduced fonts for @acro in text (10pt).
-\def\reducednominalsize{10pt}
-\setfont\reducedrm\rmshape{10}{1000}{OT1}
-\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
-\setfont\reducedbf\bfshape{10}{1000}{OT1}
-\setfont\reducedit\itshape{10}{1000}{OT1IT}
-\setfont\reducedsl\slshape{10}{1000}{OT1}
-\setfont\reducedsf\sfshape{10}{1000}{OT1}
-\setfont\reducedsc\scshape{10}{1000}{OT1}
-\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
-\font\reducedi=cmmi10
-\font\reducedsy=cmsy10
-\def\reducedecsize{1000}
-
-\textleading = 13.2pt % line spacing for 11pt CM
-\textfonts % reset the current fonts
-\rm
-} % end of 11pt text font size definitions, \definetextfontsizexi
-
-
-% Definitions to make the main text be 10pt Computer Modern, with
-% section, chapter, etc., sizes following suit. This is for the GNU
-% Press printing of the Emacs 22 manual. Maybe other manuals in the
-% future. Used with @smallbook, which sets the leading to 12pt.
-%
-\def\definetextfontsizex{%
-% Text fonts (10pt).
-\def\textnominalsize{10pt}
-\edef\mainmagstep{1000}
-\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
-\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
-\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
-\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
-\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
-\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
-\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-\def\textecsize{1000}
-
-% A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
-\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
-\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}{OT1}
-\setfont\smalltt\ttshape{9}{1000}{OT1TT}
-\setfont\smallbf\bfshape{10}{900}{OT1}
-\setfont\smallit\itshape{9}{1000}{OT1IT}
-\setfont\smallsl\slshape{9}{1000}{OT1}
-\setfont\smallsf\sfshape{9}{1000}{OT1}
-\setfont\smallsc\scshape{10}{900}{OT1}
-\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-\def\smallecsize{0900}
-
-% Fonts for small examples (8pt).
-\def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}{OT1}
-\setfont\smallertt\ttshape{8}{1000}{OT1TT}
-\setfont\smallerbf\bfshape{10}{800}{OT1}
-\setfont\smallerit\itshape{8}{1000}{OT1IT}
-\setfont\smallersl\slshape{8}{1000}{OT1}
-\setfont\smallersf\sfshape{8}{1000}{OT1}
-\setfont\smallersc\scshape{10}{800}{OT1}
-\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
-\font\smalleri=cmmi8
-\font\smallersy=cmsy8
-\def\smallerecsize{0800}
-
-% Fonts for title page (20.4pt):
-\def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
-\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
-\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
-\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
-\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
-\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\titleecsize{2074}
-
-% Chapter fonts (14.4pt).
-\def\chapnominalsize{14pt}
-\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
-\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
-\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
-\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
-\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
-\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
-\let\chapbf\chaprm
-\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
-\font\chapi=cmmi12 scaled \magstep1
-\font\chapsy=cmsy10 scaled \magstep2
-\def\chapecsize{1440}
-
-% Section fonts (12pt).
-\def\secnominalsize{12pt}
-\setfont\secrm\rmbshape{12}{1000}{OT1}
-\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
-\setfont\secsl\slbshape{10}{\magstep1}{OT1}
-\setfont\sectt\ttbshape{12}{1000}{OT1TT}
-\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
-\setfont\secsf\sfbshape{12}{1000}{OT1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep1}{OT1}
-\font\seci=cmmi12
-\font\secsy=cmsy10 scaled \magstep1
-\def\sececsize{1200}
-
-% Subsection fonts (10pt).
-\def\ssecnominalsize{10pt}
-\setfont\ssecrm\rmbshape{10}{1000}{OT1}
-\setfont\ssecit\itbshape{10}{1000}{OT1IT}
-\setfont\ssecsl\slbshape{10}{1000}{OT1}
-\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
-\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
-\setfont\ssecsf\sfbshape{10}{1000}{OT1}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1000}{OT1}
-\font\sseci=cmmi10
-\font\ssecsy=cmsy10
-\def\ssececsize{1000}
-
-% Reduced fonts for @acro in text (9pt).
-\def\reducednominalsize{9pt}
-\setfont\reducedrm\rmshape{9}{1000}{OT1}
-\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
-\setfont\reducedbf\bfshape{10}{900}{OT1}
-\setfont\reducedit\itshape{9}{1000}{OT1IT}
-\setfont\reducedsl\slshape{9}{1000}{OT1}
-\setfont\reducedsf\sfshape{9}{1000}{OT1}
-\setfont\reducedsc\scshape{10}{900}{OT1}
-\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
-\font\reducedi=cmmi9
-\font\reducedsy=cmsy9
-\def\reducedecsize{0900}
-
-\divide\parskip by 2 % reduce space between paragraphs
-\textleading = 12pt % line spacing for 10pt CM
-\textfonts % reset the current fonts
-\rm
-} % end of 10pt text font size definitions, \definetextfontsizex
-
-
-% We provide the user-level command
-% @fonttextsize 10
-% (or 11) to redefine the text font size. pt is assumed.
-%
-\def\xiword{11}
-\def\xword{10}
-\def\xwordpt{10pt}
-%
-\parseargdef\fonttextsize{%
- \def\textsizearg{#1}%
- %\wlog{doing @fonttextsize \textsizearg}%
- %
- % Set \globaldefs so that documents can use this inside @tex, since
- % makeinfo 4.8 does not support it, but we need it nonetheless.
- %
- \begingroup \globaldefs=1
- \ifx\textsizearg\xword \definetextfontsizex
- \else \ifx\textsizearg\xiword \definetextfontsizexi
- \else
- \errhelp=\EMsimple
- \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
- \fi\fi
- \endgroup
-}
-
-
-% In order for the font changes to affect most math symbols and letters,
-% we have to define the \textfont of the standard families. Since
-% texinfo doesn't allow for producing subscripts and superscripts except
-% in the main text, we don't bother to reset \scriptfont and
-% \scriptscriptfont (which would also require loading a lot more fonts).
-%
-\def\resetmathfonts{%
- \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
- \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
- \textfont\ttfam=\tentt \textfont\sffam=\tensf
-}
-
-% The font-changing commands redefine the meanings of \tenSTYLE, instead
-% of just \STYLE. We do this because \STYLE needs to also set the
-% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire
-% \tenSTYLE to set the current font.
-%
-% Each font-changing command also sets the names \lsize (one size lower)
-% and \lllsize (three sizes lower). These relative commands are used in
-% the LaTeX logo and acronyms.
-%
-% This all needs generalizing, badly.
-%
-\def\textfonts{%
- \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
- \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
- \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
- \let\tenttsl=\textttsl
- \def\curfontsize{text}%
- \def\lsize{reduced}\def\lllsize{smaller}%
- \resetmathfonts \setleading{\textleading}}
-\def\titlefonts{%
- \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
- \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
- \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
- \let\tenttsl=\titlettsl
- \def\curfontsize{title}%
- \def\lsize{chap}\def\lllsize{subsec}%
- \resetmathfonts \setleading{27pt}}
-\def\titlefont#1{{\titlefonts\rmisbold #1}}
-\def\chapfonts{%
- \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
- \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
- \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
- \let\tenttsl=\chapttsl
- \def\curfontsize{chap}%
- \def\lsize{sec}\def\lllsize{text}%
- \resetmathfonts \setleading{19pt}}
-\def\secfonts{%
- \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
- \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
- \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
- \let\tenttsl=\secttsl
- \def\curfontsize{sec}%
- \def\lsize{subsec}\def\lllsize{reduced}%
- \resetmathfonts \setleading{16pt}}
-\def\subsecfonts{%
- \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
- \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
- \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
- \let\tenttsl=\ssecttsl
- \def\curfontsize{ssec}%
- \def\lsize{text}\def\lllsize{small}%
- \resetmathfonts \setleading{15pt}}
-\let\subsubsecfonts = \subsecfonts
-\def\reducedfonts{%
- \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
- \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
- \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
- \let\tenttsl=\reducedttsl
- \def\curfontsize{reduced}%
- \def\lsize{small}\def\lllsize{smaller}%
- \resetmathfonts \setleading{10.5pt}}
-\def\smallfonts{%
- \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
- \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
- \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
- \let\tenttsl=\smallttsl
- \def\curfontsize{small}%
- \def\lsize{smaller}\def\lllsize{smaller}%
- \resetmathfonts \setleading{10.5pt}}
-\def\smallerfonts{%
- \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
- \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
- \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
- \let\tenttsl=\smallerttsl
- \def\curfontsize{smaller}%
- \def\lsize{smaller}\def\lllsize{smaller}%
- \resetmathfonts \setleading{9.5pt}}
-
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}{OT1}
-\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12
-\setfont\shortcontsl\slshape{12}{1000}{OT1}
-\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
-
-% Define these just so they can be easily changed for other fonts.
-\def\angleleft{$\langle$}
-\def\angleright{$\rangle$}
-
-% Set the fonts to use with the @small... environments.
-\let\smallexamplefonts = \smallfonts
-
-% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample
-% can fit this many characters:
-% 8.5x11=86 smallbook=72 a4=90 a5=69
-% If we use \scriptfonts (8pt), then we can fit this many characters:
-% 8.5x11=90+ smallbook=80 a4=90+ a5=77
-% For me, subjectively, the few extra characters that fit aren't worth
-% the additional smallness of 8pt. So I'm making the default 9pt.
-%
-% By the way, for comparison, here's what fits with @example (10pt):
-% 8.5x11=71 smallbook=60 a4=75 a5=58
-% --karl, 24jan03.
-
-% Set up the default fonts, so we can use them for creating boxes.
-%
-\definetextfontsizexi
-
-
-\message{markup,}
-
-% Check if we are currently using a typewriter font. Since all the
-% Computer Modern typewriter fonts have zero interword stretch (and
-% shrink), and it is reasonable to expect all typewriter fonts to have
-% this property, we can check that font parameter.
-%
-\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
-
-% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will
-% define and register \INITMACRO to be called on markup style changes.
-% \INITMACRO can check \currentmarkupstyle for the innermost
-% style and the set of \ifmarkupSTYLE switches for all styles
-% currently in effect.
-\newif\ifmarkupvar
-\newif\ifmarkupsamp
-\newif\ifmarkupkey
-%\newif\ifmarkupfile % @file == @samp.
-%\newif\ifmarkupoption % @option == @samp.
-\newif\ifmarkupcode
-\newif\ifmarkupkbd
-%\newif\ifmarkupenv % @env == @code.
-%\newif\ifmarkupcommand % @command == @code.
-\newif\ifmarkuptex % @tex (and part of @math, for now).
-\newif\ifmarkupexample
-\newif\ifmarkupverb
-\newif\ifmarkupverbatim
-
-\let\currentmarkupstyle\empty
-
-\def\setupmarkupstyle#1{%
- \csname markup#1true\endcsname
- \def\currentmarkupstyle{#1}%
- \markupstylesetup
-}
-
-\let\markupstylesetup\empty
-
-\def\defmarkupstylesetup#1{%
- \expandafter\def\expandafter\markupstylesetup
- \expandafter{\markupstylesetup #1}%
- \def#1%
-}
-
-% Markup style setup for left and right quotes.
-\defmarkupstylesetup\markupsetuplq{%
- \expandafter\let\expandafter \temp
- \csname markupsetuplq\currentmarkupstyle\endcsname
- \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
-}
-
-\defmarkupstylesetup\markupsetuprq{%
- \expandafter\let\expandafter \temp
- \csname markupsetuprq\currentmarkupstyle\endcsname
- \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
-}
-
-{
-\catcode`\'=\active
-\catcode`\`=\active
-
-\gdef\markupsetuplqdefault{\let`\lq}
-\gdef\markupsetuprqdefault{\let'\rq}
-
-\gdef\markupsetcodequoteleft{\let`\codequoteleft}
-\gdef\markupsetcodequoteright{\let'\codequoteright}
-}
-
-\let\markupsetuplqcode \markupsetcodequoteleft
-\let\markupsetuprqcode \markupsetcodequoteright
-%
-\let\markupsetuplqexample \markupsetcodequoteleft
-\let\markupsetuprqexample \markupsetcodequoteright
-%
-\let\markupsetuplqkbd \markupsetcodequoteleft
-\let\markupsetuprqkbd \markupsetcodequoteright
-%
-\let\markupsetuplqsamp \markupsetcodequoteleft
-\let\markupsetuprqsamp \markupsetcodequoteright
-%
-\let\markupsetuplqverb \markupsetcodequoteleft
-\let\markupsetuprqverb \markupsetcodequoteright
-%
-\let\markupsetuplqverbatim \markupsetcodequoteleft
-\let\markupsetuprqverbatim \markupsetcodequoteright
-
-% Allow an option to not use regular directed right quote/apostrophe
-% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
-% The undirected quote is ugly, so don't make it the default, but it
-% works for pasting with more pdf viewers (at least evince), the
-% lilypond developers report. xpdf does work with the regular 0x27.
-%
-\def\codequoteright{%
- \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
- \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
- '%
- \else \char'15 \fi
- \else \char'15 \fi
-}
-%
-% and a similar option for the left quote char vs. a grave accent.
-% Modern fonts display ASCII 0x60 as a grave accent, so some people like
-% the code environments to do likewise.
-%
-\def\codequoteleft{%
- \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
- \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
- % [Knuth] pp. 380,381,391
- % \relax disables Spanish ligatures ?` and !` of \tt font.
- \relax`%
- \else \char'22 \fi
- \else \char'22 \fi
-}
-
-% Commands to set the quote options.
-%
-\parseargdef\codequoteundirected{%
- \def\temp{#1}%
- \ifx\temp\onword
- \expandafter\let\csname SETtxicodequoteundirected\endcsname
- = t%
- \else\ifx\temp\offword
- \expandafter\let\csname SETtxicodequoteundirected\endcsname
- = \relax
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
- \fi\fi
-}
-%
-\parseargdef\codequotebacktick{%
- \def\temp{#1}%
- \ifx\temp\onword
- \expandafter\let\csname SETtxicodequotebacktick\endcsname
- = t%
- \else\ifx\temp\offword
- \expandafter\let\csname SETtxicodequotebacktick\endcsname
- = \relax
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
- \fi\fi
-}
-
-% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
-\def\noligaturesquoteleft{\relax\lq}
-
-% Count depth in font-changes, for error checks
-\newcount\fontdepth \fontdepth=0
-
-% Font commands.
-
-% #1 is the font command (\sl or \it), #2 is the text to slant.
-% If we are in a monospaced environment, however, 1) always use \ttsl,
-% and 2) do not add an italic correction.
-\def\dosmartslant#1#2{%
- \ifusingtt
- {{\ttsl #2}\let\next=\relax}%
- {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
- \next
-}
-\def\smartslanted{\dosmartslant\sl}
-\def\smartitalic{\dosmartslant\it}
-
-% Output an italic correction unless \next (presumed to be the following
-% character) is such as not to need one.
-\def\smartitaliccorrection{%
- \ifx\next,%
- \else\ifx\next-%
- \else\ifx\next.%
- \else\ptexslash
- \fi\fi\fi
- \aftersmartic
-}
-
-% Unconditional use \ttsl, and no ic. @var is set to this for defuns.
-\def\ttslanted#1{{\ttsl #1}}
-
-% @cite is like \smartslanted except unconditionally use \sl. We never want
-% ttsl for book titles, do we?
-\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
-
-\def\aftersmartic{}
-\def\var#1{%
- \let\saveaftersmartic = \aftersmartic
- \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
- \smartslanted{#1}%
-}
-
-\let\i=\smartitalic
-\let\slanted=\smartslanted
-\let\dfn=\smartslanted
-\let\emph=\smartitalic
-
-% Explicit font changes: @r, @sc, undocumented @ii.
-\def\r#1{{\rm #1}} % roman font
-\def\sc#1{{\smallcaps#1}} % smallcaps font
-\def\ii#1{{\it #1}} % italic font
-
-% @b, explicit bold. Also @strong.
-\def\b#1{{\bf #1}}
-\let\strong=\b
-
-% @sansserif, explicit sans.
-\def\sansserif#1{{\sf #1}}
-
-% We can't just use \exhyphenpenalty, because that only has effect at
-% the end of a paragraph. Restore normal hyphenation at the end of the
-% group within which \nohyphenation is presumably called.
-%
-\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
-\def\restorehyphenation{\hyphenchar\font = `- }
-
-% Set sfcode to normal for the chars that usually have another value.
-% Can't use plain's \frenchspacing because it uses the `\x notation, and
-% sometimes \x has an active definition that messes things up.
-%
-\catcode`@=11
- \def\plainfrenchspacing{%
- \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
- \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
- \def\endofsentencespacefactor{1000}% for @. and friends
- }
- \def\plainnonfrenchspacing{%
- \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
- \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
- \def\endofsentencespacefactor{3000}% for @. and friends
- }
-\catcode`@=\other
-\def\endofsentencespacefactor{3000}% default
-
-% @t, explicit typewriter.
-\def\t#1{%
- {\tt \rawbackslash \plainfrenchspacing #1}%
- \null
-}
-
-% @samp.
-\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
-
-% @indicateurl is \samp, that is, with quotes.
-\let\indicateurl=\samp
-
-% @code (and similar) prints in typewriter, but with spaces the same
-% size as normal in the surrounding text, without hyphenation, etc.
-% This is a subroutine for that.
-\def\tclose#1{%
- {%
- % Change normal interword space to be same as for the current font.
- \spaceskip = \fontdimen2\font
- %
- % Switch to typewriter.
- \tt
- %
- % But `\ ' produces the large typewriter interword space.
- \def\ {{\spaceskip = 0pt{} }}%
- %
- % Turn off hyphenation.
- \nohyphenation
- %
- \rawbackslash
- \plainfrenchspacing
- #1%
- }%
- \null % reset spacefactor to 1000
-}
-
-% We *must* turn on hyphenation at `-' and `_' in @code.
-% Otherwise, it is too hard to avoid overfull hboxes
-% in the Emacs manual, the Library manual, etc.
-%
-% Unfortunately, TeX uses one parameter (\hyphenchar) to control
-% both hyphenation at - and hyphenation within words.
-% We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate at a dash.
-% -- rms.
-{
- \catcode`\-=\active \catcode`\_=\active
- \catcode`\'=\active \catcode`\`=\active
- \global\let'=\rq \global\let`=\lq % default definitions
- %
- \global\def\code{\begingroup
- \setupmarkupstyle{code}%
- % The following should really be moved into \setupmarkupstyle handlers.
- \catcode\dashChar=\active \catcode\underChar=\active
- \ifallowcodebreaks
- \let-\codedash
- \let_\codeunder
- \else
- \let-\normaldash
- \let_\realunder
- \fi
- \codex
- }
-}
-
-\def\codex #1{\tclose{#1}\endgroup}
-
-\def\normaldash{-}
-\def\codedash{-\discretionary{}{}{}}
-\def\codeunder{%
- % this is all so @math{@code{var_name}+1} can work. In math mode, _
- % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
- % will therefore expand the active definition of _, which is us
- % (inside @code that is), therefore an endless loop.
- \ifusingtt{\ifmmode
- \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
- \else\normalunderscore \fi
- \discretionary{}{}{}}%
- {\_}%
-}
-
-% An additional complication: the above will allow breaks after, e.g.,
-% each of the four underscores in __typeof__. This is bad.
-% @allowcodebreaks provides a document-level way to turn breaking at -
-% and _ on and off.
-%
-\newif\ifallowcodebreaks \allowcodebreakstrue
-
-\def\keywordtrue{true}
-\def\keywordfalse{false}
-
-\parseargdef\allowcodebreaks{%
- \def\txiarg{#1}%
- \ifx\txiarg\keywordtrue
- \allowcodebreakstrue
- \else\ifx\txiarg\keywordfalse
- \allowcodebreaksfalse
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
- \fi\fi
-}
-
-% For @command, @env, @file, @option quotes seem unnecessary,
-% so use \code rather than \samp.
-\let\command=\code
-\let\env=\code
-\let\file=\code
-\let\option=\code
-
-% @uref (abbreviation for `urlref') takes an optional (comma-separated)
-% second argument specifying the text to display and an optional third
-% arg as text to display instead of (rather than in addition to) the url
-% itself. First (mandatory) arg is the url.
-% (This \urefnobreak definition isn't used now, leaving it for a while
-% for comparison.)
-\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
-\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
- \unsepspaces
- \pdfurl{#1}%
- \setbox0 = \hbox{\ignorespaces #3}%
- \ifdim\wd0 > 0pt
- \unhbox0 % third arg given, show only that
- \else
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0 > 0pt
- \ifpdf
- \unhbox0 % PDF: 2nd arg given, show only it
- \else
- \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
- \fi
- \else
- \code{#1}% only url given, so show it
- \fi
- \fi
- \endlink
-\endgroup}
-
-% This \urefbreak definition is the active one.
-\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
-\let\uref=\urefbreak
-\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
-\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
- \unsepspaces
- \pdfurl{#1}%
- \setbox0 = \hbox{\ignorespaces #3}%
- \ifdim\wd0 > 0pt
- \unhbox0 % third arg given, show only that
- \else
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0 > 0pt
- \ifpdf
- \unhbox0 % PDF: 2nd arg given, show only it
- \else
- \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
- \fi
- \else
- \urefcode{#1}% only url given, so show it
- \fi
- \fi
- \endlink
-\endgroup}
-
-% Allow line breaks around only a few characters (only).
-\def\urefcatcodes{%
- \catcode\ampChar=\active \catcode\dotChar=\active
- \catcode\hashChar=\active \catcode\questChar=\active
- \catcode\slashChar=\active
-}
-{
- \urefcatcodes
- %
- \global\def\urefcode{\begingroup
- \setupmarkupstyle{code}%
- \urefcatcodes
- \let&\urefcodeamp
- \let.\urefcodedot
- \let#\urefcodehash
- \let?\urefcodequest
- \let/\urefcodeslash
- \codex
- }
- %
- % By default, they are just regular characters.
- \global\def&{\normalamp}
- \global\def.{\normaldot}
- \global\def#{\normalhash}
- \global\def?{\normalquest}
- \global\def/{\normalslash}
-}
-
-% we put a little stretch before and after the breakable chars, to help
-% line breaking of long url's. The unequal skips make look better in
-% cmtt at least, especially for dots.
-\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
-\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
-%
-\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
-\def\urefcodedot{\urefprestretch .\urefpoststretch}
-\def\urefcodehash{\urefprestretch \#\urefpoststretch}
-\def\urefcodequest{\urefprestretch ?\urefpoststretch}
-\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
-{
- \catcode`\/=\active
- \global\def\urefcodeslashfinish{%
- \urefprestretch \slashChar
- % Allow line break only after the final / in a sequence of
- % slashes, to avoid line break between the slashes in http://.
- \ifx\next/\else \urefpoststretch \fi
- }
-}
-
-% One more complication: by default we'll break after the special
-% characters, but some people like to break before the special chars, so
-% allow that. Also allow no breaking at all, for manual control.
-%
-\parseargdef\urefbreakstyle{%
- \def\txiarg{#1}%
- \ifx\txiarg\wordnone
- \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
- \else\ifx\txiarg\wordbefore
- \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
- \else\ifx\txiarg\wordafter
- \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
- \fi\fi\fi
-}
-\def\wordafter{after}
-\def\wordbefore{before}
-\def\wordnone{none}
-
-\urefbreakstyle after
-
-% @url synonym for @uref, since that's how everyone uses it.
-%
-\let\url=\uref
-
-% rms does not like angle brackets --karl, 17may97.
-% So now @email is just like @uref, unless we are pdf.
-%
-%\def\email#1{\angleleft{\tt #1}\angleright}
-\ifpdf
- \def\email#1{\doemail#1,,\finish}
- \def\doemail#1,#2,#3\finish{\begingroup
- \unsepspaces
- \pdfurl{mailto:#1}%
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
- \endlink
- \endgroup}
-\else
- \let\email=\uref
-\fi
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-% `example' (@kbd uses ttsl only inside of @example and friends),
-% or `code' (@kbd uses normal tty font always).
-\parseargdef\kbdinputstyle{%
- \def\txiarg{#1}%
- \ifx\txiarg\worddistinct
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
- \else\ifx\txiarg\wordexample
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
- \else\ifx\txiarg\wordcode
- \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
- \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct'.
-\kbdinputstyle distinct
-
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
-
-\def\xkey{\key}
-\def\kbdsub#1#2#3\par{%
- \def\one{#1}\def\three{#3}\def\threex{??}%
- \ifx\one\xkey\ifx\threex\three \key{#2}%
- \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
- \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
-}
-
-% definition of @key that produces a lozenge. Doesn't adjust to text size.
-%\setfont\keyrm\rmshape{8}{1000}{OT1}
-%\font\keysy=cmsy9
-%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
-% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
-% \vbox{\hrule\kern-0.4pt
-% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
-% \kern-0.4pt\hrule}%
-% \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-
-% definition of @key with no lozenge. If the current font is already
-% monospace, don't change it; that way, we respect @kbdinputstyle. But
-% if it isn't monospace, then use \tt.
-%
-\def\key#1{{\setupmarkupstyle{key}%
- \nohyphenation
- \ifmonospace\else\tt\fi
- #1}\null}
-
-% @clicksequence{File @click{} Open ...}
-\def\clicksequence#1{\begingroup #1\endgroup}
-
-% @clickstyle @arrow (by default)
-\parseargdef\clickstyle{\def\click{#1}}
-\def\click{\arrow}
-
-% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
-% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
-%
-\def\dmn#1{\thinspace #1}
-
-% @l was never documented to mean ``switch to the Lisp font'',
-% and it is not used as such in any manual I can find. We need it for
-% Polish suppressed-l. --karl, 22sep96.
-%\def\l#1{{\li #1}\null}
-
-% @acronym for "FBI", "NATO", and the like.
-% We print this one point size smaller, since it's intended for
-% all-uppercase.
-%
-\def\acronym#1{\doacronym #1,,\finish}
-\def\doacronym#1,#2,#3\finish{%
- {\selectfonts\lsize #1}%
- \def\temp{#2}%
- \ifx\temp\empty \else
- \space ({\unsepspaces \ignorespaces \temp \unskip})%
- \fi
- \null % reset \spacefactor=1000
-}
-
-% @abbr for "Comput. J." and the like.
-% No font change, but don't do end-of-sentence spacing.
-%
-\def\abbr#1{\doabbr #1,,\finish}
-\def\doabbr#1,#2,#3\finish{%
- {\plainfrenchspacing #1}%
- \def\temp{#2}%
- \ifx\temp\empty \else
- \space ({\unsepspaces \ignorespaces \temp \unskip})%
- \fi
- \null % reset \spacefactor=1000
-}
-
-% @asis just yields its argument. Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}. So make
-% _ active, and distinguish by seeing if the current family is \slfam,
-% which is what @var uses.
-{
- \catcode`\_ = \active
- \gdef\mathunderscore{%
- \catcode`\_=\active
- \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
- }
-}
-% Another complication: we want \\ (and @\) to output a math (or tt) \.
-% FYI, plain.tex uses \\ as a temporary control sequence (for no
-% particular reason), but this is not advertised and we don't care.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
- \tex
- \mathunderscore
- \let\\ = \mathbackslash
- \mathactive
- % make the texinfo accent commands work in math mode
- \let\"=\ddot
- \let\'=\acute
- \let\==\bar
- \let\^=\hat
- \let\`=\grave
- \let\u=\breve
- \let\v=\check
- \let\~=\tilde
- \let\dotaccent=\dot
- $\finishmath
-}
-\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an argument
-% to a command which sets the catcodes (such as @item or @section).
-%
-{
- \catcode`^ = \active
- \catcode`< = \active
- \catcode`> = \active
- \catcode`+ = \active
- \catcode`' = \active
- \gdef\mathactive{%
- \let^ = \ptexhat
- \let< = \ptexless
- \let> = \ptexgtr
- \let+ = \ptexplus
- \let' = \ptexquoteright
- }
-}
-
-% ctrl is no longer a Texinfo command, but leave this definition for fun.
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
-% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
-% except specified as a normal braced arg, so no newlines to worry about.
-%
-\def\outfmtnametex{tex}
-%
-\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
-\long\def\doinlinefmt#1,#2,\finish{%
- \def\inlinefmtname{#1}%
- \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
-}
-% For raw, must switch into @tex before parsing the argument, to avoid
-% setting catcodes prematurely. Doing it this way means that, for
-% example, @inlineraw{html, foo{bar} gets a parse error instead of being
-% ignored. But this isn't important because if people want a literal
-% *right* brace they would have to use a command anyway, so they may as
-% well use a command to get a left brace too. We could re-use the
-% delimiter character idea from \verb, but it seems like overkill.
-%
-\long\def\inlineraw{\tex \doinlineraw}
-\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
-\def\doinlinerawtwo#1,#2,\finish{%
- \def\inlinerawname{#1}%
- \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
- \endgroup % close group opened by \tex.
-}
-
-
-\message{glyphs,}
-% and logos.
-
-% @@ prints an @, as does @atchar{}.
-\def\@{\char64 }
-\let\atchar=\@
-
-% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
-% Unless we're in typewriter, use \ecfont because the CM text fonts do
-% not have braces, and we don't want to switch into math.
-\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
-\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
-\let\{=\mylbrace \let\lbracechar=\{
-\let\}=\myrbrace \let\rbracechar=\}
-\begingroup
- % Definitions to produce \{ and \} commands for indices,
- % and @{ and @} for the aux/toc files.
- \catcode`\{ = \other \catcode`\} = \other
- \catcode`\[ = 1 \catcode`\] = 2
- \catcode`\! = 0 \catcode`\\ = \other
- !gdef!lbracecmd[\{]%
- !gdef!rbracecmd[\}]%
- !gdef!lbraceatcmd[@{]%
- !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% @comma{} to avoid , parsing problems.
-\let\comma = ,
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \ptexc
-\let\dotaccent = \ptexdot
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \ptext
-\let\ubaraccent = \ptexb
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown @ordf @ordm
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
-\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
- \def\temp{#1}%
- \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
- \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
- \else \errmessage{@dotless can be used only with i or j}%
- \fi\fi
-}
-
-% The \TeX{} logo, as in plain, but resetting the spacing so that a
-% period following counts as ending a sentence. (Idea found in latex.)
-%
-\edef\TeX{\TeX \spacefactor=1000 }
-
-% @LaTeX{} logo. Not quite the same results as the definition in
-% latex.ltx, since we use a different font for the raised A; it's most
-% convenient for us to use an explicitly smaller font, rather than using
-% the \scriptstyle font (since we don't reset \scriptstyle and
-% \scriptscriptstyle).
-%
-\def\LaTeX{%
- L\kern-.36em
- {\setbox0=\hbox{T}%
- \vbox to \ht0{\hbox{%
- \ifx\textnominalsize\xwordpt
- % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
- % Revert to plain's \scriptsize, which is 7pt.
- \count255=\the\fam $\fam\count255 \scriptstyle A$%
- \else
- % For 11pt, we can use our lllsize.
- \selectfonts\lllsize A%
- \fi
- }%
- \vss
- }}%
- \kern-.15em
- \TeX
-}
-
-% Some math mode symbols.
-\def\bullet{$\ptexbullet$}
-\def\geq{\ifmmode \ge\else $\ge$\fi}
-\def\leq{\ifmmode \le\else $\le$\fi}
-\def\minus{\ifmmode -\else $-$\fi}
-
-% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in the cm
-% typewriter fonts as three actual period characters; on the other hand,
-% in other typewriter fonts three periods are wider than 1.5em. So do
-% whichever is larger.
-%
-\def\dots{%
- \leavevmode
- \setbox0=\hbox{...}% get width of three periods
- \ifdim\wd0 > 1.5em
- \dimen0 = \wd0
- \else
- \dimen0 = 1.5em
- \fi
- \hbox to \dimen0{%
- \hskip 0pt plus.25fil
- .\hskip 0pt plus1fil
- .\hskip 0pt plus1fil
- .\hskip 0pt plus.5fil
- }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
- \dots
- \spacefactor=\endofsentencespacefactor
-}
-
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-%
-% Since these characters are used in examples, they should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-%
-\def\point{$\star$}
-\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
-\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% The @error{} command.
-% Adapted from the TeXbook's \boxit.
-%
-\newbox\errorbox
-%
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
-%
-\setbox\errorbox=\hbox to \dimen0{\hfil
- \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
- \advance\hsize by -2\dimen2 % Rules.
- \vbox{%
- \hrule height\dimen2
- \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
- \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
- \kern3pt\vrule width\dimen2}% Space to right.
- \hrule height\dimen2}
- \hfil}
-%
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
-%
-\def\pounds{{\it\$}}
-
-% @euro{} comes from a separate font, depending on the current style.
-% We use the free feym* fonts from the eurosym package by Henrik
-% Theiling, which support regular, slanted, bold and bold slanted (and
-% "outlined" (blackboard board, sort of) versions, which we don't need).
-% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
-%
-% Although only regular is the truly official Euro symbol, we ignore
-% that. The Euro is designed to be slightly taller than the regular
-% font height.
-%
-% feymr - regular
-% feymo - slanted
-% feybr - bold
-% feybo - bold slanted
-%
-% There is no good (free) typewriter version, to my knowledge.
-% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
-% Hmm.
-%
-% Also doesn't work in math. Do we need to do math with euro symbols?
-% Hope not.
-%
-%
-\def\euro{{\eurofont e}}
-\def\eurofont{%
- % We set the font at each command, rather than predefining it in
- % \textfonts and the other font-switching commands, so that
- % installations which never need the symbol don't have to have the
- % font installed.
- %
- % There is only one designed size (nominal 10pt), so we always scale
- % that to the current nominal size.
- %
- % By the way, simply using "at 1em" works for cmr10 and the like, but
- % does not work for cmbx10 and other extended/shrunken fonts.
- %
- \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
- %
- \ifx\curfontstyle\bfstylename
- % bold:
- \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
- \else
- % regular:
- \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
- \fi
- \thiseurofont
-}
-
-% Glyphs from the EC fonts. We don't use \let for the aliases, because
-% sometimes we redefine the original macro, and the alias should reflect
-% the redefinition.
-%
-% Use LaTeX names for the Icelandic letters.
-\def\DH{{\ecfont \char"D0}} % Eth
-\def\dh{{\ecfont \char"F0}} % eth
-\def\TH{{\ecfont \char"DE}} % Thorn
-\def\th{{\ecfont \char"FE}} % thorn
-%
-\def\guillemetleft{{\ecfont \char"13}}
-\def\guillemotleft{\guillemetleft}
-\def\guillemetright{{\ecfont \char"14}}
-\def\guillemotright{\guillemetright}
-\def\guilsinglleft{{\ecfont \char"0E}}
-\def\guilsinglright{{\ecfont \char"0F}}
-\def\quotedblbase{{\ecfont \char"12}}
-\def\quotesinglbase{{\ecfont \char"0D}}
-%
-% This positioning is not perfect (see the ogonek LaTeX package), but
-% we have the precomposed glyphs for the most common cases. We put the
-% tests to use those glyphs in the single \ogonek macro so we have fewer
-% dummy definitions to worry about for index entries, etc.
-%
-% ogonek is also used with other letters in Lithuanian (IOU), but using
-% the precomposed glyphs for those is not so easy since they aren't in
-% the same EC font.
-\def\ogonek#1{{%
- \def\temp{#1}%
- \ifx\temp\macrocharA\Aogonek
- \else\ifx\temp\macrochara\aogonek
- \else\ifx\temp\macrocharE\Eogonek
- \else\ifx\temp\macrochare\eogonek
- \else
- \ecfont \setbox0=\hbox{#1}%
- \ifdim\ht0=1ex\accent"0C #1%
- \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
- \fi
- \fi\fi\fi\fi
- }%
-}
-\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
-\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
-\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
-\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
-%
-% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
-\def\ecfont{%
- % We can't distinguish serif/sans and italic/slanted, but this
- % is used for crude hacks anyway (like adding French and German
- % quotes to documents typeset with CM, where we lose kerning), so
- % hopefully nobody will notice/care.
- \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
- \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
- \ifmonospace
- % typewriter:
- \font\thisecfont = ectt\ecsize \space at \nominalsize
- \else
- \ifx\curfontstyle\bfstylename
- % bold:
- \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
- \else
- % regular:
- \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
- \fi
- \fi
- \thisecfont
-}
-
-% @registeredsymbol - R in a circle. The font for the R should really
-% be smaller yet, but lllsize is the best we can do for now.
-% Adapted from the plain.tex definition of \copyright.
-%
-\def\registeredsymbol{%
- $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
- \hfil\crcr\Orb}}%
- }$%
-}
-
-% @textdegree - the normal degrees sign.
-%
-\def\textdegree{$^\circ$}
-
-% Laurent Siebenmann reports \Orb undefined with:
-% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
-% so we'll define it if necessary.
-%
-\ifx\Orb\thisisundefined
-\def\Orb{\mathhexbox20D}
-\fi
-
-% Quotes.
-\chardef\quotedblleft="5C
-\chardef\quotedblright=`\"
-\chardef\quoteleft=`\`
-\chardef\quoteright=`\'
-
-
-\message{page headings,}
-
-\newskip\titlepagetopglue \titlepagetopglue = 1.5in
-\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
-
-% First the title page. Must do @settitle before @titlepage.
-\newif\ifseenauthor
-\newif\iffinishedtitlepage
-
-% Do an implicit @contents or @shortcontents after @end titlepage if the
-% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
-%
-\newif\ifsetcontentsaftertitlepage
- \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
-\newif\ifsetshortcontentsaftertitlepage
- \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-
-\parseargdef\shorttitlepage{%
- \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
-
-\envdef\titlepage{%
- % Open one extra group, as we want to close it in the middle of \Etitlepage.
- \begingroup
- \parindent=0pt \textfonts
- % Leave some space at the very top of the page.
- \vglue\titlepagetopglue
- % No rule at page bottom unless we print one at the top with @title.
- \finishedtitlepagetrue
- %
- % Most title ``pages'' are actually two pages long, with space
- % at the top of the second. We don't want the ragged left on the second.
- \let\oldpage = \page
- \def\page{%
- \iffinishedtitlepage\else
- \finishtitlepage
- \fi
- \let\page = \oldpage
- \page
- \null
- }%
-}
-
-\def\Etitlepage{%
- \iffinishedtitlepage\else
- \finishtitlepage
- \fi
- % It is important to do the page break before ending the group,
- % because the headline and footline are only empty inside the group.
- % If we use the new definition of \page, we always get a blank page
- % after the title page, which we certainly don't want.
- \oldpage
- \endgroup
- %
- % Need this before the \...aftertitlepage checks so that if they are
- % in effect the toc pages will come out with page numbers.
- \HEADINGSon
- %
- % If they want short, they certainly want long too.
- \ifsetshortcontentsaftertitlepage
- \shortcontents
- \contents
- \global\let\shortcontents = \relax
- \global\let\contents = \relax
- \fi
- %
- \ifsetcontentsaftertitlepage
- \contents
- \global\let\contents = \relax
- \global\let\shortcontents = \relax
- \fi
-}
-
-\def\finishtitlepage{%
- \vskip4pt \hrule height 2pt width \hsize
- \vskip\titlepagebottomglue
- \finishedtitlepagetrue
-}
-
-% Settings used for typesetting titles: no hyphenation, no indentation,
-% don't worry much about spacing, ragged right. This should be used
-% inside a \vbox, and fonts need to be set appropriately first. Because
-% it is always used for titles, nothing else, we call \rmisbold. \par
-% should be specified before the end of the \vbox, since a vbox is a group.
-%
-\def\raggedtitlesettings{%
- \rmisbold
- \hyphenpenalty=10000
- \parindent=0pt
- \tolerance=5000
- \ptexraggedright
-}
-
-% Macros to be used within @titlepage:
-
-\let\subtitlerm=\tenrm
-\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
-
-\parseargdef\title{%
- \checkenv\titlepage
- \vbox{\titlefonts \raggedtitlesettings #1\par}%
- % print a rule at the page bottom also.
- \finishedtitlepagefalse
- \vskip4pt \hrule height 4pt width \hsize \vskip4pt
-}
-
-\parseargdef\subtitle{%
- \checkenv\titlepage
- {\subtitlefont \rightline{#1}}%
-}
-
-% @author should come last, but may come many times.
-% It can also be used inside @quotation.
-%
-\parseargdef\author{%
- \def\temp{\quotation}%
- \ifx\thisenv\temp
- \def\quotationauthor{#1}% printed in \Equotation.
- \else
- \checkenv\titlepage
- \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
- {\secfonts\rmisbold \leftline{#1}}%
- \fi
-}
-
-
-% Set up page headings and footings.
-
-\let\thispage=\folio
-
-\newtoks\evenheadline % headline on even pages
-\newtoks\oddheadline % headline on odd pages
-\newtoks\evenfootline % footline on even pages
-\newtoks\oddfootline % footline on odd pages
-
-% Now make TeX use those variables
-\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
- \else \the\evenheadline \fi}}
-\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
- \else \the\evenfootline \fi}\HEADINGShook}
-\let\HEADINGShook=\relax
-
-% Commands to set those variables.
-% For example, this is what @headings on does
-% @evenheading @thistitle|@thispage|@thischapter
-% @oddheading @thischapter|@thispage|@thistitle
-% @evenfooting @thisfile||
-% @oddfooting ||@thisfile
-
-
-\def\evenheading{\parsearg\evenheadingxxx}
-\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
-\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\def\oddheading{\parsearg\oddheadingxxx}
-\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
-\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
-\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
-\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
- \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
- %
- % Leave some space for the footline. Hopefully ok to assume
- % @evenfooting will not be used by itself.
- \global\advance\pageheight by -12pt
- \global\advance\vsize by -12pt
-}
-
-\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
-
-% @evenheadingmarks top \thischapter <- chapter at the top of a page
-% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page
-%
-% The same set of arguments for:
-%
-% @oddheadingmarks
-% @evenfootingmarks
-% @oddfootingmarks
-% @everyheadingmarks
-% @everyfootingmarks
-
-\def\evenheadingmarks{\headingmarks{even}{heading}}
-\def\oddheadingmarks{\headingmarks{odd}{heading}}
-\def\evenfootingmarks{\headingmarks{even}{footing}}
-\def\oddfootingmarks{\headingmarks{odd}{footing}}
-\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
- \headingmarks{odd}{heading}{#1} }
-\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
- \headingmarks{odd}{footing}{#1} }
-% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
-\def\headingmarks#1#2#3 {%
- \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
- \global\expandafter\let\csname get#1#2marks\endcsname \temp
-}
-
-\everyheadingmarks bottom
-\everyfootingmarks bottom
-
-% @headings double turns headings on for double-sided printing.
-% @headings single turns headings on for single-sided printing.
-% @headings off turns them off.
-% @headings on same as @headings double, retained for compatibility.
-% @headings after turns on double-sided headings after this page.
-% @headings doubleafter turns on double-sided headings after this page.
-% @headings singleafter turns on single-sided headings after this page.
-% By default, they are off at the start of a document,
-% and turned `on' after @end titlepage.
-
-\def\headings #1 {\csname HEADINGS#1\endcsname}
-
-\def\headingsoff{% non-global headings elimination
- \evenheadline={\hfil}\evenfootline={\hfil}%
- \oddheadline={\hfil}\oddfootline={\hfil}%
-}
-
-\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
-\HEADINGSoff % it's the default
-
-% When we turn headings on, set the page number to 1.
-% For double-sided printing, put current file name in lower left corner,
-% chapter name on inside top of right hand pages, document
-% title on inside top of left hand pages, and page numbers on outside top
-% edge of all pages.
-\def\HEADINGSdouble{%
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-\let\contentsalignmacro = \chappager
-
-% For single-sided printing, chapter title goes across top left of page,
-% page number on top right.
-\def\HEADINGSsingle{%
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-\def\HEADINGSon{\HEADINGSdouble}
-
-\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
-\let\HEADINGSdoubleafter=\HEADINGSafter
-\def\HEADINGSdoublex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-
-\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
-\def\HEADINGSsinglex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-
-% Subroutines used in generating headings
-% This produces Day Month Year style of output.
-% Only define if not already defined, in case a txi-??.tex file has set
-% up a different format (e.g., txi-cs.tex does this).
-\ifx\today\thisisundefined
-\def\today{%
- \number\day\space
- \ifcase\month
- \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
- \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
- \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
- \fi
- \space\number\year}
-\fi
-
-% @settitle line... specifies the title of the document, for headings.
-% It generates no output of its own.
-\def\thistitle{\putwordNoTitle}
-\def\settitle{\parsearg{\gdef\thistitle}}
-
-
-\message{tables,}
-% Tables -- @table, @ftable, @vtable, @item(x).
-
-% default indentation of table text
-\newdimen\tableindent \tableindent=.8in
-% default indentation of @itemize and @enumerate text
-\newdimen\itemindent \itemindent=.3in
-% margin between end of table item and start of table text.
-\newdimen\itemmargin \itemmargin=.1in
-
-% used internally for \itemindent minus \itemmargin
-\newdimen\itemmax
-
-% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
-% these defs.
-% They also define \itemindex
-% to index the item name in whatever manner is desired (perhaps none).
-
-\newif\ifitemxneedsnegativevskip
-
-\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
-
-\def\internalBitem{\smallbreak \parsearg\itemzzz}
-\def\internalBitemx{\itemxpar \parsearg\itemzzz}
-
-\def\itemzzz #1{\begingroup %
- \advance\hsize by -\rightskip
- \advance\hsize by -\tableindent
- \setbox0=\hbox{\itemindicate{#1}}%
- \itemindex{#1}%
- \nobreak % This prevents a break before @itemx.
- %
- % If the item text does not fit in the space we have, put it on a line
- % by itself, and do not allow a page break either before or after that
- % line. We do not start a paragraph here because then if the next
- % command is, e.g., @kindex, the whatsit would get put into the
- % horizontal list on a line by itself, resulting in extra blank space.
- \ifdim \wd0>\itemmax
- %
- % Make this a paragraph so we get the \parskip glue and wrapping,
- % but leave it ragged-right.
- \begingroup
- \advance\leftskip by-\tableindent
- \advance\hsize by\tableindent
- \advance\rightskip by0pt plus1fil\relax
- \leavevmode\unhbox0\par
- \endgroup
- %
- % We're going to be starting a paragraph, but we don't want the
- % \parskip glue -- logically it's part of the @item we just started.
- \nobreak \vskip-\parskip
- %
- % Stop a page break at the \parskip glue coming up. However, if
- % what follows is an environment such as @example, there will be no
- % \parskip glue; then the negative vskip we just inserted would
- % cause the example and the item to crash together. So we use this
- % bizarre value of 10001 as a signal to \aboveenvbreak to insert
- % \parskip glue after all. Section titles are handled this way also.
- %
- \penalty 10001
- \endgroup
- \itemxneedsnegativevskipfalse
- \else
- % The item text fits into the space. Start a paragraph, so that the
- % following text (if any) will end up on the same line.
- \noindent
- % Do this with kerns and \unhbox so that if there is a footnote in
- % the item text, it can migrate to the main vertical list and
- % eventually be printed.
- \nobreak\kern-\tableindent
- \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
- \unhbox0
- \nobreak\kern\dimen0
- \endgroup
- \itemxneedsnegativevskiptrue
- \fi
-}
-
-\def\item{\errmessage{@item while not in a list environment}}
-\def\itemx{\errmessage{@itemx while not in a list environment}}
-
-% @table, @ftable, @vtable.
-\envdef\table{%
- \let\itemindex\gobble
- \tablecheck{table}%
-}
-\envdef\ftable{%
- \def\itemindex ##1{\doind {fn}{\code{##1}}}%
- \tablecheck{ftable}%
-}
-\envdef\vtable{%
- \def\itemindex ##1{\doind {vr}{\code{##1}}}%
- \tablecheck{vtable}%
-}
-\def\tablecheck#1{%
- \ifnum \the\catcode`\^^M=\active
- \endgroup
- \errmessage{This command won't work in this context; perhaps the problem is
- that we are \inenvironment\thisenv}%
- \def\next{\doignore{#1}}%
- \else
- \let\next\tablex
- \fi
- \next
-}
-\def\tablex#1{%
- \def\itemindicate{#1}%
- \parsearg\tabley
-}
-\def\tabley#1{%
- {%
- \makevalueexpandable
- \edef\temp{\noexpand\tablez #1\space\space\space}%
- \expandafter
- }\temp \endtablez
-}
-\def\tablez #1 #2 #3 #4\endtablez{%
- \aboveenvbreak
- \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
- \ifnum 0#2>0 \tableindent=#2\mil \fi
- \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
- \itemmax=\tableindent
- \advance \itemmax by -\itemmargin
- \advance \leftskip by \tableindent
- \exdentamount=\tableindent
- \parindent = 0pt
- \parskip = \smallskipamount
- \ifdim \parskip=0pt \parskip=2pt \fi
- \let\item = \internalBitem
- \let\itemx = \internalBitemx
-}
-\def\Etable{\endgraf\afterenvbreak}
-\let\Eftable\Etable
-\let\Evtable\Etable
-\let\Eitemize\Etable
-\let\Eenumerate\Etable
-
-% This is the counter used by @enumerate, which is really @itemize
-
-\newcount \itemno
-
-\envdef\itemize{\parsearg\doitemize}
-
-\def\doitemize#1{%
- \aboveenvbreak
- \itemmax=\itemindent
- \advance\itemmax by -\itemmargin
- \advance\leftskip by \itemindent
- \exdentamount=\itemindent
- \parindent=0pt
- \parskip=\smallskipamount
- \ifdim\parskip=0pt \parskip=2pt \fi
- %
- % Try typesetting the item mark that if the document erroneously says
- % something like @itemize @samp (intending @table), there's an error
- % right away at the @itemize. It's not the best error message in the
- % world, but it's better than leaving it to the @item. This means if
- % the user wants an empty mark, they have to say @w{} not just @w.
- \def\itemcontents{#1}%
- \setbox0 = \hbox{\itemcontents}%
- %
- % @itemize with no arg is equivalent to @itemize @bullet.
- \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
- %
- \let\item=\itemizeitem
-}
-
-% Definition of @item while inside @itemize and @enumerate.
-%
-\def\itemizeitem{%
- \advance\itemno by 1 % for enumerations
- {\let\par=\endgraf \smallbreak}% reasonable place to break
- {%
- % If the document has an @itemize directly after a section title, a
- % \nobreak will be last on the list, and \sectionheading will have
- % done a \vskip-\parskip. In that case, we don't want to zero
- % parskip, or the item text will crash with the heading. On the
- % other hand, when there is normal text preceding the item (as there
- % usually is), we do want to zero parskip, or there would be too much
- % space. In that case, we won't have a \nobreak before. At least
- % that's the theory.
- \ifnum\lastpenalty<10000 \parskip=0in \fi
- \noindent
- \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
- %
- \vadjust{\penalty 1200}}% not good to break after first line of item.
- \flushcr
-}
-
-% \splitoff TOKENS\endmark defines \first to be the first token in
-% TOKENS, and \rest to be the remainder.
-%
-\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
-
-% Allow an optional argument of an uppercase letter, lowercase letter,
-% or number, to specify the first label in the enumerated list. No
-% argument is the same as `1'.
-%
-\envparseargdef\enumerate{\enumeratey #1 \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{%
- % If we were given no argument, pretend we were given `1'.
- \def\thearg{#1}%
- \ifx\thearg\empty \def\thearg{1}\fi
- %
- % Detect if the argument is a single token. If so, it might be a
- % letter. Otherwise, the only valid thing it can be is a number.
- % (We will always have one token, because of the test we just made.
- % This is a good thing, since \splitoff doesn't work given nothing at
- % all -- the first parameter is undelimited.)
- \expandafter\splitoff\thearg\endmark
- \ifx\rest\empty
- % Only one token in the argument. It could still be anything.
- % A ``lowercase letter'' is one whose \lccode is nonzero.
- % An ``uppercase letter'' is one whose \lccode is both nonzero, and
- % not equal to itself.
- % Otherwise, we assume it's a number.
- %
- % We need the \relax at the end of the \ifnum lines to stop TeX from
- % continuing to look for a <number>.
- %
- \ifnum\lccode\expandafter`\thearg=0\relax
- \numericenumerate % a number (we hope)
- \else
- % It's a letter.
- \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
- \lowercaseenumerate % lowercase letter
- \else
- \uppercaseenumerate % uppercase letter
- \fi
- \fi
- \else
- % Multiple tokens in the argument. We hope it's a number.
- \numericenumerate
- \fi
-}
-
-% An @enumerate whose labels are integers. The starting integer is
-% given in \thearg.
-%
-\def\numericenumerate{%
- \itemno = \thearg
- \startenumeration{\the\itemno}%
-}
-
-% The starting (lowercase) letter is in \thearg.
-\def\lowercaseenumerate{%
- \itemno = \expandafter`\thearg
- \startenumeration{%
- % Be sure we're not beyond the end of the alphabet.
- \ifnum\itemno=0
- \errmessage{No more lowercase letters in @enumerate; get a bigger
- alphabet}%
- \fi
- \char\lccode\itemno
- }%
-}
-
-% The starting (uppercase) letter is in \thearg.
-\def\uppercaseenumerate{%
- \itemno = \expandafter`\thearg
- \startenumeration{%
- % Be sure we're not beyond the end of the alphabet.
- \ifnum\itemno=0
- \errmessage{No more uppercase letters in @enumerate; get a bigger
- alphabet}
- \fi
- \char\uccode\itemno
- }%
-}
-
-% Call \doitemize, adding a period to the first argument and supplying the
-% common last two arguments. Also subtract one from the initial value in
-% \itemno, since @item increments \itemno.
-%
-\def\startenumeration#1{%
- \advance\itemno by -1
- \doitemize{#1.}\flushcr
-}
-
-% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
-% to @enumerate.
-%
-\def\alphaenumerate{\enumerate{a}}
-\def\capsenumerate{\enumerate{A}}
-\def\Ealphaenumerate{\Eenumerate}
-\def\Ecapsenumerate{\Eenumerate}
-
-
-% @multitable macros
-% Amy Hendrickson, 8/18/94, 3/6/96
-%
-% @multitable ... @end multitable will make as many columns as desired.
-% Contents of each column will wrap at width given in preamble. Width
-% can be specified either with sample text given in a template line,
-% or in percent of \hsize, the current width of text on page.
-
-% Table can continue over pages but will only break between lines.
-
-% To make preamble:
-%
-% Either define widths of columns in terms of percent of \hsize:
-% @multitable @columnfractions .25 .3 .45
-% @item ...
-%
-% Numbers following @columnfractions are the percent of the total
-% current hsize to be used for each column. You may use as many
-% columns as desired.
-
-
-% Or use a template:
-% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-% @item ...
-% using the widest term desired in each column.
-
-% Each new table line starts with @item, each subsequent new column
-% starts with @tab. Empty columns may be produced by supplying @tab's
-% with nothing between them for as many times as empty columns are needed,
-% ie, @tab@tab@tab will produce two empty columns.
-
-% @item, @tab do not need to be on their own lines, but it will not hurt
-% if they are.
-
-% Sample multitable:
-
-% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-% @item first col stuff @tab second col stuff @tab third col
-% @item
-% first col stuff
-% @tab
-% second col stuff
-% @tab
-% third col
-% @item first col stuff @tab second col stuff
-% @tab Many paragraphs of text may be used in any column.
-%
-% They will wrap at the width determined by the template.
-% @item@tab@tab This will be in third column.
-% @end multitable
-
-% Default dimensions may be reset by user.
-% @multitableparskip is vertical space between paragraphs in table.
-% @multitableparindent is paragraph indent in table.
-% @multitablecolmargin is horizontal space to be left between columns.
-% @multitablelinespace is space to leave between table items, baseline
-% to baseline.
-% 0pt means it depends on current normal line spacing.
-%
-\newskip\multitableparskip
-\newskip\multitableparindent
-\newdimen\multitablecolspace
-\newskip\multitablelinespace
-\multitableparskip=0pt
-\multitableparindent=6pt
-\multitablecolspace=12pt
-\multitablelinespace=0pt
-
-% Macros used to set up halign preamble:
-%
-\let\endsetuptable\relax
-\def\xendsetuptable{\endsetuptable}
-\let\columnfractions\relax
-\def\xcolumnfractions{\columnfractions}
-\newif\ifsetpercent
-
-% #1 is the @columnfraction, usually a decimal number like .5, but might
-% be just 1. We just use it, whatever it is.
-%
-\def\pickupwholefraction#1 {%
- \global\advance\colcount by 1
- \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
- \setuptable
-}
-
-\newcount\colcount
-\def\setuptable#1{%
- \def\firstarg{#1}%
- \ifx\firstarg\xendsetuptable
- \let\go = \relax
- \else
- \ifx\firstarg\xcolumnfractions
- \global\setpercenttrue
- \else
- \ifsetpercent
- \let\go\pickupwholefraction
- \else
- \global\advance\colcount by 1
- \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
- % separator; typically that is always in the input, anyway.
- \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
- \fi
- \fi
- \ifx\go\pickupwholefraction
- % Put the argument back for the \pickupwholefraction call, so
- % we'll always have a period there to be parsed.
- \def\go{\pickupwholefraction#1}%
- \else
- \let\go = \setuptable
- \fi%
- \fi
- \go
-}
-
-% multitable-only commands.
-%
-% @headitem starts a heading row, which we typeset in bold.
-% Assignments have to be global since we are inside the implicit group
-% of an alignment entry. \everycr resets \everytab so we don't have to
-% undo it ourselves.
-\def\headitemfont{\b}% for people to use in the template row; not changeable
-\def\headitem{%
- \checkenv\multitable
- \crcr
- \global\everytab={\bf}% can't use \headitemfont since the parsing differs
- \the\everytab % for the first item
-}%
-%
-% A \tab used to include \hskip1sp. But then the space in a template
-% line is not enough. That is bad. So let's go back to just `&' until
-% we again encounter the problem the 1sp was intended to solve.
-% --karl, nathan@acm.org, 20apr99.
-\def\tab{\checkenv\multitable &\the\everytab}%
-
-% @multitable ... @end multitable definitions:
-%
-\newtoks\everytab % insert after every tab.
-%
-\envdef\multitable{%
- \vskip\parskip
- \startsavinginserts
- %
- % @item within a multitable starts a normal row.
- % We use \def instead of \let so that if one of the multitable entries
- % contains an @itemize, we don't choke on the \item (seen as \crcr aka
- % \endtemplate) expanding \doitemize.
- \def\item{\crcr}%
- %
- \tolerance=9500
- \hbadness=9500
- \setmultitablespacing
- \parskip=\multitableparskip
- \parindent=\multitableparindent
- \overfullrule=0pt
- \global\colcount=0
- %
- \everycr = {%
- \noalign{%
- \global\everytab={}%
- \global\colcount=0 % Reset the column counter.
- % Check for saved footnotes, etc.
- \checkinserts
- % Keeps underfull box messages off when table breaks over pages.
- %\filbreak
- % Maybe so, but it also creates really weird page breaks when the
- % table breaks over pages. Wouldn't \vfil be better? Wait until the
- % problem manifests itself, so it can be fixed for real --karl.
- }%
- }%
- %
- \parsearg\domultitable
-}
-\def\domultitable#1{%
- % To parse everything between @multitable and @item:
- \setuptable#1 \endsetuptable
- %
- % This preamble sets up a generic column definition, which will
- % be used as many times as user calls for columns.
- % \vtop will set a single line and will also let text wrap and
- % continue for many paragraphs if desired.
- \halign\bgroup &%
- \global\advance\colcount by 1
- \multistrut
- \vtop{%
- % Use the current \colcount to find the correct column width:
- \hsize=\expandafter\csname col\the\colcount\endcsname
- %
- % In order to keep entries from bumping into each other
- % we will add a \leftskip of \multitablecolspace to all columns after
- % the first one.
- %
- % If a template has been used, we will add \multitablecolspace
- % to the width of each template entry.
- %
- % If the user has set preamble in terms of percent of \hsize we will
- % use that dimension as the width of the column, and the \leftskip
- % will keep entries from bumping into each other. Table will start at
- % left margin and final column will justify at right margin.
- %
- % Make sure we don't inherit \rightskip from the outer environment.
- \rightskip=0pt
- \ifnum\colcount=1
- % The first column will be indented with the surrounding text.
- \advance\hsize by\leftskip
- \else
- \ifsetpercent \else
- % If user has not set preamble in terms of percent of \hsize
- % we will advance \hsize by \multitablecolspace.
- \advance\hsize by \multitablecolspace
- \fi
- % In either case we will make \leftskip=\multitablecolspace:
- \leftskip=\multitablecolspace
- \fi
- % Ignoring space at the beginning and end avoids an occasional spurious
- % blank line, when TeX decides to break the line at the space before the
- % box from the multistrut, so the strut ends up on a line by itself.
- % For example:
- % @multitable @columnfractions .11 .89
- % @item @code{#}
- % @tab Legal holiday which is valid in major parts of the whole country.
- % Is automatically provided with highlighting sequences respectively
- % marking characters.
- \noindent\ignorespaces##\unskip\multistrut
- }\cr
-}
-\def\Emultitable{%
- \crcr
- \egroup % end the \halign
- \global\setpercentfalse
-}
-
-\def\setmultitablespacing{%
- \def\multistrut{\strut}% just use the standard line spacing
- %
- % Compute \multitablelinespace (if not defined by user) for use in
- % \multitableparskip calculation. We used define \multistrut based on
- % this, but (ironically) that caused the spacing to be off.
- % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
-\ifdim\multitablelinespace=0pt
-\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
-\global\advance\multitablelinespace by-\ht0
-\fi
-% Test to see if parskip is larger than space between lines of
-% table. If not, do nothing.
-% If so, set to same dimension as multitablelinespace.
-\ifdim\multitableparskip>\multitablelinespace
-\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
- % than skip between lines in the table.
-\fi%
-\ifdim\multitableparskip=0pt
-\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
- % than skip between lines in the table.
-\fi}
-
-
-\message{conditionals,}
-
-% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
-% @ifnotxml always succeed. They currently do nothing; we don't
-% attempt to check whether the conditionals are properly nested. But we
-% have to remember that they are conditionals, so that @end doesn't
-% attempt to close an environment group.
-%
-\def\makecond#1{%
- \expandafter\let\csname #1\endcsname = \relax
- \expandafter\let\csname iscond.#1\endcsname = 1
-}
-\makecond{iftex}
-\makecond{ifnotdocbook}
-\makecond{ifnothtml}
-\makecond{ifnotinfo}
-\makecond{ifnotplaintext}
-\makecond{ifnotxml}
-
-% Ignore @ignore, @ifhtml, @ifinfo, and the like.
-%
-\def\direntry{\doignore{direntry}}
-\def\documentdescription{\doignore{documentdescription}}
-\def\docbook{\doignore{docbook}}
-\def\html{\doignore{html}}
-\def\ifdocbook{\doignore{ifdocbook}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifnottex{\doignore{ifnottex}}
-\def\ifplaintext{\doignore{ifplaintext}}
-\def\ifxml{\doignore{ifxml}}
-\def\ignore{\doignore{ignore}}
-\def\menu{\doignore{menu}}
-\def\xml{\doignore{xml}}
-
-% Ignore text until a line `@end #1', keeping track of nested conditionals.
-%
-% A count to remember the depth of nesting.
-\newcount\doignorecount
-
-\def\doignore#1{\begingroup
- % Scan in ``verbatim'' mode:
- \obeylines
- \catcode`\@ = \other
- \catcode`\{ = \other
- \catcode`\} = \other
- %
- % Make sure that spaces turn into tokens that match what \doignoretext wants.
- \spaceisspace
- %
- % Count number of #1's that we've seen.
- \doignorecount = 0
- %
- % Swallow text until we reach the matching `@end #1'.
- \dodoignore{#1}%
-}
-
-{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
- \obeylines %
- %
- \gdef\dodoignore#1{%
- % #1 contains the command name as a string, e.g., `ifinfo'.
- %
- % Define a command to find the next `@end #1'.
- \long\def\doignoretext##1^^M@end #1{%
- \doignoretextyyy##1^^M@#1\_STOP_}%
- %
- % And this command to find another #1 command, at the beginning of a
- % line. (Otherwise, we would consider a line `@c @ifset', for
- % example, to count as an @ifset for nesting.)
- \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
- %
- % And now expand that command.
- \doignoretext ^^M%
- }%
-}
-
-\def\doignoreyyy#1{%
- \def\temp{#1}%
- \ifx\temp\empty % Nothing found.
- \let\next\doignoretextzzz
- \else % Found a nested condition, ...
- \advance\doignorecount by 1
- \let\next\doignoretextyyy % ..., look for another.
- % If we're here, #1 ends with ^^M\ifinfo (for example).
- \fi
- \next #1% the token \_STOP_ is present just after this macro.
-}
-
-% We have to swallow the remaining "\_STOP_".
-%
-\def\doignoretextzzz#1{%
- \ifnum\doignorecount = 0 % We have just found the outermost @end.
- \let\next\enddoignore
- \else % Still inside a nested condition.
- \advance\doignorecount by -1
- \let\next\doignoretext % Look for the next @end.
- \fi
- \next
-}
-
-% Finish off ignored text.
-{ \obeylines%
- % Ignore anything after the last `@end #1'; this matters in verbatim
- % environments, where otherwise the newline after an ignored conditional
- % would result in a blank line in the output.
- \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
-}
-
-
-% @set VAR sets the variable VAR to an empty value.
-% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
-%
-% Since we want to separate VAR from REST-OF-LINE (which might be
-% empty), we can't just use \parsearg; we have to insert a space of our
-% own to delimit the rest of the line, and then take it out again if we
-% didn't need it.
-% We rely on the fact that \parsearg sets \catcode`\ =10.
-%
-\parseargdef\set{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
- {%
- \makevalueexpandable
- \def\temp{#2}%
- \edef\next{\gdef\makecsname{SET#1}}%
- \ifx\temp\empty
- \next{}%
- \else
- \setzzz#2\endsetzzz
- \fi
- }%
-}
-% Remove the trailing space \setxxx inserted.
-\def\setzzz#1 \endsetzzz{\next{#1}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\parseargdef\clear{%
- {%
- \makevalueexpandable
- \global\expandafter\let\csname SET#1\endcsname=\relax
- }%
-}
-
-% @value{foo} gets the text saved in variable foo.
-\def\value{\begingroup\makevalueexpandable\valuexxx}
-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
-{
- \catcode`\- = \active \catcode`\_ = \active
- %
- \gdef\makevalueexpandable{%
- \let\value = \expandablevalue
- % We don't want these characters active, ...
- \catcode`\-=\other \catcode`\_=\other
- % ..., but we might end up with active ones in the argument if
- % we're called from @code, as @code{@value{foo-bar_}}, though.
- % So \let them to their normal equivalents.
- \let-\normaldash \let_\normalunderscore
- }
-}
-
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we call \makevalueexpandable in \indexdummies).
-% The command has to be fully expandable (if the variable is set), since
-% the result winds up in the index file. This means that if the
-% variable's value contains other Texinfo commands, it's almost certain
-% it will fail (although perhaps we could fix that with sufficient work
-% to do a one-level expansion on the result, instead of complete).
-%
-\def\expandablevalue#1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- {[No value for ``#1'']}%
- \message{Variable `#1', used in @value, is not set.}%
- \else
- \csname SET#1\endcsname
- \fi
-}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
-%
-% To get special treatment of `@end ifset,' call \makeond and the redefine.
-%
-\makecond{ifset}
-\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
-\def\doifset#1#2{%
- {%
- \makevalueexpandable
- \let\next=\empty
- \expandafter\ifx\csname SET#2\endcsname\relax
- #1% If not set, redefine \next.
- \fi
- \expandafter
- }\next
-}
-\def\ifsetfail{\doignore{ifset}}
-
-% @ifclear VAR ... @end executes the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-% The `\else' inside the `\doifset' parameter is a trick to reuse the
-% above code: if the variable is not set, do nothing, if it is set,
-% then redefine \next to \ifclearfail.
-%
-\makecond{ifclear}
-\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
-\def\ifclearfail{\doignore{ifclear}}
-
-% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written
-% without the @) is in fact defined. We can only feasibly check at the
-% TeX level, so something like `mathcode' is going to considered
-% defined even though it is not a Texinfo command.
-%
-\makecond{ifcommanddefined}
-\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
-%
-\def\doifcmddefined#1#2{{%
- \makevalueexpandable
- \let\next=\empty
- \expandafter\ifx\csname #2\endcsname\relax
- #1% If not defined, \let\next as above.
- \fi
- \expandafter
- }\next
-}
-\def\ifcmddefinedfail{\doignore{ifcommanddefined}}
-
-% @ifcommandnotdefined CMD ... handled similar to @ifclear above.
-\makecond{ifcommandnotdefined}
-\def\ifcommandnotdefined{%
- \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}}
-\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}}
-
-% Set the `txicommandconditionals' variable, so documents have a way to
-% test if the @ifcommand...defined conditionals are available.
-\set txicommandconditionals
-
-% @dircategory CATEGORY -- specify a category of the dir file
-% which this file should belong to. Ignore this in TeX.
-\let\dircategory=\comment
-
-% @defininfoenclose.
-\let\definfoenclose=\comment
-
-
-\message{indexing,}
-% Index generation facilities
-
-% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within macros and \if's.
-\edef\newwrite{\makecsname{ptexnewwrite}}
-
-% \newindex {foo} defines an index named foo.
-% It automatically defines \fooindex such that
-% \fooindex ...rest of line... puts an entry in the index foo.
-% It also defines \fooindfile to be the number of the output channel for
-% the file that accumulates this index. The file's extension is foo.
-% The name of an index should be no more than 2 characters long
-% for the sake of vms.
-%
-\def\newindex#1{%
- \iflinks
- \expandafter\newwrite \csname#1indfile\endcsname
- \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
- \fi
- \expandafter\xdef\csname#1index\endcsname{% % Define @#1index
- \noexpand\doindex{#1}}
-}
-
-% @defindex foo == \newindex{foo}
-%
-\def\defindex{\parsearg\newindex}
-
-% Define @defcodeindex, like @defindex except put all entries in @code.
-%
-\def\defcodeindex{\parsearg\newcodeindex}
-%
-\def\newcodeindex#1{%
- \iflinks
- \expandafter\newwrite \csname#1indfile\endcsname
- \openout \csname#1indfile\endcsname \jobname.#1
- \fi
- \expandafter\xdef\csname#1index\endcsname{%
- \noexpand\docodeindex{#1}}%
-}
-
-
-% @synindex foo bar makes index foo feed into index bar.
-% Do this instead of @defindex foo if you don't want it as a separate index.
-%
-% @syncodeindex foo bar similar, but put all entries made for index foo
-% inside @code.
-%
-\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
-\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
-
-% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
-% #3 the target index (bar).
-\def\dosynindex#1#2#3{%
- % Only do \closeout if we haven't already done it, else we'll end up
- % closing the target index.
- \expandafter \ifx\csname donesynindex#2\endcsname \relax
- % The \closeout helps reduce unnecessary open files; the limit on the
- % Acorn RISC OS is a mere 16 files.
- \expandafter\closeout\csname#2indfile\endcsname
- \expandafter\let\csname donesynindex#2\endcsname = 1
- \fi
- % redefine \fooindfile:
- \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
- \expandafter\let\csname#2indfile\endcsname=\temp
- % redefine \fooindex:
- \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
-}
-
-% Define \doindex, the driver for all \fooindex macros.
-% Argument #1 is generated by the calling \fooindex macro,
-% and it is "foo", the name of the index.
-
-% \doindex just uses \parsearg; it calls \doind for the actual work.
-% This is because \doind is more useful to call from other macros.
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-
-\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
-\def\singleindexer #1{\doind{\indexname}{#1}}
-
-% like the previous two, but they put @code around the argument.
-\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
-\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
-
-% Take care of Texinfo commands that can appear in an index entry.
-% Since there are some commands we want to expand, and others we don't,
-% we have to laboriously prevent expansion for those that we don't.
-%
-\def\indexdummies{%
- \escapechar = `\\ % use backslash in output files.
- \def\@{@}% change to @@ when we switch to @ as escape char in index files.
- \def\ {\realbackslash\space }%
- %
- % Need these unexpandable (because we define \tt as a dummy)
- % definitions when @{ or @} appear in index entry text. Also, more
- % complicated, when \tex is in effect and \{ is a \delimiter again.
- % We can't use \lbracecmd and \rbracecmd because texindex assumes
- % braces and backslashes are used only as delimiters. Perhaps we
- % should define @lbrace and @rbrace commands a la @comma.
- \def\{{{\tt\char123}}%
- \def\}{{\tt\char125}}%
- %
- % I don't entirely understand this, but when an index entry is
- % generated from a macro call, the \endinput which \scanmacro inserts
- % causes processing to be prematurely terminated. This is,
- % apparently, because \indexsorttmp is fully expanded, and \endinput
- % is an expandable command. The redefinition below makes \endinput
- % disappear altogether for that purpose -- although logging shows that
- % processing continues to some further point. On the other hand, it
- % seems \endinput does not hurt in the printed index arg, since that
- % is still getting written without apparent harm.
- %
- % Sample source (mac-idx3.tex, reported by Graham Percival to
- % help-texinfo, 22may06):
- % @macro funindex {WORD}
- % @findex xyz
- % @end macro
- % ...
- % @funindex commtest
- %
- % The above is not enough to reproduce the bug, but it gives the flavor.
- %
- % Sample whatsit resulting:
- % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
- %
- % So:
- \let\endinput = \empty
- %
- % Do the redefinitions.
- \commondummies
-}
-
-% For the aux and toc files, @ is the escape character. So we want to
-% redefine everything using @ as the escape character (instead of
-% \realbackslash, still used for index files). When everything uses @,
-% this will be simpler.
-%
-\def\atdummies{%
- \def\@{@@}%
- \def\ {@ }%
- \let\{ = \lbraceatcmd
- \let\} = \rbraceatcmd
- %
- % Do the redefinitions.
- \commondummies
- \otherbackslash
-}
-
-% Called from \indexdummies and \atdummies.
-%
-\def\commondummies{%
- %
- % \definedummyword defines \#1 as \string\#1\space, thus effectively
- % preventing its expansion. This is used only for control words,
- % not control letters, because the \space would be incorrect for
- % control characters, but is needed to separate the control word
- % from whatever follows.
- %
- % For control letters, we have \definedummyletter, which omits the
- % space.
- %
- % These can be used both for control words that take an argument and
- % those that do not. If it is followed by {arg} in the input, then
- % that will dutifully get written to the index (or wherever).
- %
- \def\definedummyword ##1{\def##1{\string##1\space}}%
- \def\definedummyletter##1{\def##1{\string##1}}%
- \let\definedummyaccent\definedummyletter
- %
- \commondummiesnofonts
- %
- \definedummyletter\_%
- \definedummyletter\-%
- %
- % Non-English letters.
- \definedummyword\AA
- \definedummyword\AE
- \definedummyword\DH
- \definedummyword\L
- \definedummyword\O
- \definedummyword\OE
- \definedummyword\TH
- \definedummyword\aa
- \definedummyword\ae
- \definedummyword\dh
- \definedummyword\exclamdown
- \definedummyword\l
- \definedummyword\o
- \definedummyword\oe
- \definedummyword\ordf
- \definedummyword\ordm
- \definedummyword\questiondown
- \definedummyword\ss
- \definedummyword\th
- %
- % Although these internal commands shouldn't show up, sometimes they do.
- \definedummyword\bf
- \definedummyword\gtr
- \definedummyword\hat
- \definedummyword\less
- \definedummyword\sf
- \definedummyword\sl
- \definedummyword\tclose
- \definedummyword\tt
- %
- \definedummyword\LaTeX
- \definedummyword\TeX
- %
- % Assorted special characters.
- \definedummyword\arrow
- \definedummyword\bullet
- \definedummyword\comma
- \definedummyword\copyright
- \definedummyword\registeredsymbol
- \definedummyword\dots
- \definedummyword\enddots
- \definedummyword\entrybreak
- \definedummyword\equiv
- \definedummyword\error
- \definedummyword\euro
- \definedummyword\expansion
- \definedummyword\geq
- \definedummyword\guillemetleft
- \definedummyword\guillemetright
- \definedummyword\guilsinglleft
- \definedummyword\guilsinglright
- \definedummyword\lbracechar
- \definedummyword\leq
- \definedummyword\minus
- \definedummyword\ogonek
- \definedummyword\pounds
- \definedummyword\point
- \definedummyword\print
- \definedummyword\quotedblbase
- \definedummyword\quotedblleft
- \definedummyword\quotedblright
- \definedummyword\quoteleft
- \definedummyword\quoteright
- \definedummyword\quotesinglbase
- \definedummyword\rbracechar
- \definedummyword\result
- \definedummyword\textdegree
- %
- % We want to disable all macros so that they are not expanded by \write.
- \macrolist
- %
- \normalturnoffactive
- %
- % Handle some cases of @value -- where it does not contain any
- % (non-fully-expandable) commands.
- \makevalueexpandable
-}
-
-% \commondummiesnofonts: common to \commondummies and \indexnofonts.
-%
-\def\commondummiesnofonts{%
- % Control letters and accents.
- \definedummyletter\!%
- \definedummyaccent\"%
- \definedummyaccent\'%
- \definedummyletter\*%
- \definedummyaccent\,%
- \definedummyletter\.%
- \definedummyletter\/%
- \definedummyletter\:%
- \definedummyaccent\=%
- \definedummyletter\?%
- \definedummyaccent\^%
- \definedummyaccent\`%
- \definedummyaccent\~%
- \definedummyword\u
- \definedummyword\v
- \definedummyword\H
- \definedummyword\dotaccent
- \definedummyword\ogonek
- \definedummyword\ringaccent
- \definedummyword\tieaccent
- \definedummyword\ubaraccent
- \definedummyword\udotaccent
- \definedummyword\dotless
- %
- % Texinfo font commands.
- \definedummyword\b
- \definedummyword\i
- \definedummyword\r
- \definedummyword\sansserif
- \definedummyword\sc
- \definedummyword\slanted
- \definedummyword\t
- %
- % Commands that take arguments.
- \definedummyword\abbr
- \definedummyword\acronym
- \definedummyword\anchor
- \definedummyword\cite
- \definedummyword\code
- \definedummyword\command
- \definedummyword\dfn
- \definedummyword\dmn
- \definedummyword\email
- \definedummyword\emph
- \definedummyword\env
- \definedummyword\file
- \definedummyword\image
- \definedummyword\indicateurl
- \definedummyword\inforef
- \definedummyword\kbd
- \definedummyword\key
- \definedummyword\math
- \definedummyword\option
- \definedummyword\pxref
- \definedummyword\ref
- \definedummyword\samp
- \definedummyword\strong
- \definedummyword\tie
- \definedummyword\uref
- \definedummyword\url
- \definedummyword\var
- \definedummyword\verb
- \definedummyword\w
- \definedummyword\xref
-}
-
-% \indexnofonts is used when outputting the strings to sort the index
-% by, and when constructing control sequence names. It eliminates all
-% control sequences and just writes whatever the best ASCII sort string
-% would be for a given command (usually its argument).
-%
-\def\indexnofonts{%
- % Accent commands should become @asis.
- \def\definedummyaccent##1{\let##1\asis}%
- % We can just ignore other control letters.
- \def\definedummyletter##1{\let##1\empty}%
- % All control words become @asis by default; overrides below.
- \let\definedummyword\definedummyaccent
- %
- \commondummiesnofonts
- %
- % Don't no-op \tt, since it isn't a user-level command
- % and is used in the definitions of the active chars like <, >, |, etc.
- % Likewise with the other plain tex font commands.
- %\let\tt=\asis
- %
- \def\ { }%
- \def\@{@}%
- \def\_{\normalunderscore}%
- \def\-{}% @- shouldn't affect sorting
- %
- % Unfortunately, texindex is not prepared to handle braces in the
- % content at all. So for index sorting, we map @{ and @} to strings
- % starting with |, since that ASCII character is between ASCII { and }.
- \def\{{|a}%
- \def\lbracechar{|a}%
- %
- \def\}{|b}%
- \def\rbracechar{|b}%
- %
- % Non-English letters.
- \def\AA{AA}%
- \def\AE{AE}%
- \def\DH{DZZ}%
- \def\L{L}%
- \def\OE{OE}%
- \def\O{O}%
- \def\TH{ZZZ}%
- \def\aa{aa}%
- \def\ae{ae}%
- \def\dh{dzz}%
- \def\exclamdown{!}%
- \def\l{l}%
- \def\oe{oe}%
- \def\ordf{a}%
- \def\ordm{o}%
- \def\o{o}%
- \def\questiondown{?}%
- \def\ss{ss}%
- \def\th{zzz}%
- %
- \def\LaTeX{LaTeX}%
- \def\TeX{TeX}%
- %
- % Assorted special characters.
- % (The following {} will end up in the sort string, but that's ok.)
- \def\arrow{->}%
- \def\bullet{bullet}%
- \def\comma{,}%
- \def\copyright{copyright}%
- \def\dots{...}%
- \def\enddots{...}%
- \def\equiv{==}%
- \def\error{error}%
- \def\euro{euro}%
- \def\expansion{==>}%
- \def\geq{>=}%
- \def\guillemetleft{<<}%
- \def\guillemetright{>>}%
- \def\guilsinglleft{<}%
- \def\guilsinglright{>}%
- \def\leq{<=}%
- \def\minus{-}%
- \def\point{.}%
- \def\pounds{pounds}%
- \def\print{-|}%
- \def\quotedblbase{"}%
- \def\quotedblleft{"}%
- \def\quotedblright{"}%
- \def\quoteleft{`}%
- \def\quoteright{'}%
- \def\quotesinglbase{,}%
- \def\registeredsymbol{R}%
- \def\result{=>}%
- \def\textdegree{o}%
- %
- \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
- \else \indexlquoteignore \fi
- %
- % We need to get rid of all macros, leaving only the arguments (if present).
- % Of course this is not nearly correct, but it is the best we can do for now.
- % makeinfo does not expand macros in the argument to @deffn, which ends up
- % writing an index entry, and texindex isn't prepared for an index sort entry
- % that starts with \.
- %
- % Since macro invocations are followed by braces, we can just redefine them
- % to take a single TeX argument. The case of a macro invocation that
- % goes to end-of-line is not handled.
- %
- \macrolist
-}
-
-% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
-% ignore left quotes in the sort term.
-{\catcode`\`=\active
- \gdef\indexlquoteignore{\let`=\empty}}
-
-\let\indexbackslash=0 %overridden during \printindex.
-\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
-
-% Most index entries go through here, but \dosubind is the general case.
-% #1 is the index name, #2 is the entry text.
-\def\doind#1#2{\dosubind{#1}{#2}{}}
-
-% Workhorse for all \fooindexes.
-% #1 is name of index, #2 is stuff to put there, #3 is subentry --
-% empty if called from \doind, as we usually are (the main exception
-% is with most defuns, which call us directly).
-%
-\def\dosubind#1#2#3{%
- \iflinks
- {%
- % Store the main index entry text (including the third arg).
- \toks0 = {#2}%
- % If third arg is present, precede it with a space.
- \def\thirdarg{#3}%
- \ifx\thirdarg\empty \else
- \toks0 = \expandafter{\the\toks0 \space #3}%
- \fi
- %
- \edef\writeto{\csname#1indfile\endcsname}%
- %
- \safewhatsit\dosubindwrite
- }%
- \fi
-}
-
-% Write the entry in \toks0 to the index file:
-%
-\def\dosubindwrite{%
- % Put the index entry in the margin if desired.
- \ifx\SETmarginindex\relax\else
- \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
- \fi
- %
- % Remember, we are within a group.
- \indexdummies % Must do this here, since \bf, etc expand at this stage
- \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
- % so it will be output as is; and it will print as backslash.
- %
- % Process the index entry with all font commands turned off, to
- % get the string to sort by.
- {\indexnofonts
- \edef\temp{\the\toks0}% need full expansion
- \xdef\indexsorttmp{\temp}%
- }%
- %
- % Set up the complete index entry, with both the sort key and
- % the original text, including any font commands. We write
- % three arguments to \entry to the .?? file (four in the
- % subentry case), texindex reduces to two when writing the .??s
- % sorted result.
- \edef\temp{%
- \write\writeto{%
- \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
- }%
- \temp
-}
-
-% Take care of unwanted page breaks/skips around a whatsit:
-%
-% If a skip is the last thing on the list now, preserve it
-% by backing up by \lastskip, doing the \write, then inserting
-% the skip again. Otherwise, the whatsit generated by the
-% \write or \pdfdest will make \lastskip zero. The result is that
-% sequences like this:
-% @end defun
-% @tindex whatever
-% @defun ...
-% will have extra space inserted, because the \medbreak in the
-% start of the @defun won't see the skip inserted by the @end of
-% the previous defun.
-%
-% But don't do any of this if we're not in vertical mode. We
-% don't want to do a \vskip and prematurely end a paragraph.
-%
-% Avoid page breaks due to these extra skips, too.
-%
-% But wait, there is a catch there:
-% We'll have to check whether \lastskip is zero skip. \ifdim is not
-% sufficient for this purpose, as it ignores stretch and shrink parts
-% of the skip. The only way seems to be to check the textual
-% representation of the skip.
-%
-% The following is almost like \def\zeroskipmacro{0.0pt} except that
-% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
-%
-\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
-%
-\newskip\whatsitskip
-\newcount\whatsitpenalty
-%
-% ..., ready, GO:
-%
-\def\safewhatsit#1{\ifhmode
- #1%
- \else
- % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
- \whatsitskip = \lastskip
- \edef\lastskipmacro{\the\lastskip}%
- \whatsitpenalty = \lastpenalty
- %
- % If \lastskip is nonzero, that means the last item was a
- % skip. And since a skip is discardable, that means this
- % -\whatsitskip glue we're inserting is preceded by a
- % non-discardable item, therefore it is not a potential
- % breakpoint, therefore no \nobreak needed.
- \ifx\lastskipmacro\zeroskipmacro
- \else
- \vskip-\whatsitskip
- \fi
- %
- #1%
- %
- \ifx\lastskipmacro\zeroskipmacro
- % If \lastskip was zero, perhaps the last item was a penalty, and
- % perhaps it was >=10000, e.g., a \nobreak. In that case, we want
- % to re-insert the same penalty (values >10000 are used for various
- % signals); since we just inserted a non-discardable item, any
- % following glue (such as a \parskip) would be a breakpoint. For example:
- % @deffn deffn-whatever
- % @vindex index-whatever
- % Description.
- % would allow a break between the index-whatever whatsit
- % and the "Description." paragraph.
- \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
- \else
- % On the other hand, if we had a nonzero \lastskip,
- % this make-up glue would be preceded by a non-discardable item
- % (the whatsit from the \write), so we must insert a \nobreak.
- \nobreak\vskip\whatsitskip
- \fi
-\fi}
-
-% The index entry written in the file actually looks like
-% \entry {sortstring}{page}{topic}
-% or
-% \entry {sortstring}{page}{topic}{subtopic}
-% The texindex program reads in these files and writes files
-% containing these kinds of lines:
-% \initial {c}
-% before the first topic whose initial is c
-% \entry {topic}{pagelist}
-% for a topic that is used without subtopics
-% \primary {topic}
-% for the beginning of a topic that is used with subtopics
-% \secondary {subtopic}{pagelist}
-% for each subtopic.
-
-% Define the user-accessible indexing commands
-% @findex, @vindex, @kindex, @cindex.
-
-\def\findex {\fnindex}
-\def\kindex {\kyindex}
-\def\cindex {\cpindex}
-\def\vindex {\vrindex}
-\def\tindex {\tpindex}
-\def\pindex {\pgindex}
-
-\def\cindexsub {\begingroup\obeylines\cindexsub}
-{\obeylines %
-\gdef\cindexsub "#1" #2^^M{\endgroup %
-\dosubind{cp}{#2}{#1}}}
-
-% Define the macros used in formatting output of the sorted index material.
-
-% @printindex causes a particular index (the ??s file) to get printed.
-% It does not print any chapter heading (usually an @unnumbered).
-%
-\parseargdef\printindex{\begingroup
- \dobreak \chapheadingskip{10000}%
- %
- \smallfonts \rm
- \tolerance = 9500
- \plainfrenchspacing
- \everypar = {}% don't want the \kern\-parindent from indentation suppression.
- %
- % See if the index file exists and is nonempty.
- % Change catcode of @ here so that if the index file contains
- % \initial {@}
- % as its first line, TeX doesn't complain about mismatched braces
- % (because it thinks @} is a control sequence).
- \catcode`\@ = 11
- \openin 1 \jobname.#1s
- \ifeof 1
- % \enddoublecolumns gets confused if there is no text in the index,
- % and it loses the chapter title and the aux file entries for the
- % index. The easiest way to prevent this problem is to make sure
- % there is some text.
- \putwordIndexNonexistent
- \else
- %
- % If the index file exists but is empty, then \openin leaves \ifeof
- % false. We have to make TeX try to read something from the file, so
- % it can discover if there is anything in it.
- \read 1 to \temp
- \ifeof 1
- \putwordIndexIsEmpty
- \else
- % Index files are almost Texinfo source, but we use \ as the escape
- % character. It would be better to use @, but that's too big a change
- % to make right now.
- \def\indexbackslash{\backslashcurfont}%
- \catcode`\\ = 0
- \escapechar = `\\
- \begindoublecolumns
- \input \jobname.#1s
- \enddoublecolumns
- \fi
- \fi
- \closein 1
-\endgroup}
-
-% These macros are used by the sorted index file itself.
-% Change them to control the appearance of the index.
-
-\def\initial#1{{%
- % Some minor font changes for the special characters.
- \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
- %
- % Remove any glue we may have, we'll be inserting our own.
- \removelastskip
- %
- % We like breaks before the index initials, so insert a bonus.
- \nobreak
- \vskip 0pt plus 3\baselineskip
- \penalty 0
- \vskip 0pt plus -3\baselineskip
- %
- % Typeset the initial. Making this add up to a whole number of
- % baselineskips increases the chance of the dots lining up from column
- % to column. It still won't often be perfect, because of the stretch
- % we need before each entry, but it's better.
- %
- % No shrink because it confuses \balancecolumns.
- \vskip 1.67\baselineskip plus .5\baselineskip
- \leftline{\secbf #1}%
- % Do our best not to break after the initial.
- \nobreak
- \vskip .33\baselineskip plus .1\baselineskip
-}}
-
-% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
-% then page number (#2) flushed to the right margin. It is used for index
-% and table of contents entries. The paragraph is indented by \leftskip.
-%
-% A straightforward implementation would start like this:
-% \def\entry#1#2{...
-% But this freezes the catcodes in the argument, and can cause problems to
-% @code, which sets - active. This problem was fixed by a kludge---
-% ``-'' was active throughout whole index, but this isn't really right.
-% The right solution is to prevent \entry from swallowing the whole text.
-% --kasal, 21nov03
-\def\entry{%
- \begingroup
- %
- % Start a new paragraph if necessary, so our assignments below can't
- % affect previous text.
- \par
- %
- % Do not fill out the last line with white space.
- \parfillskip = 0in
- %
- % No extra space above this paragraph.
- \parskip = 0in
- %
- % Do not prefer a separate line ending with a hyphen to fewer lines.
- \finalhyphendemerits = 0
- %
- % \hangindent is only relevant when the entry text and page number
- % don't both fit on one line. In that case, bob suggests starting the
- % dots pretty far over on the line. Unfortunately, a large
- % indentation looks wrong when the entry text itself is broken across
- % lines. So we use a small indentation and put up with long leaders.
- %
- % \hangafter is reset to 1 (which is the value we want) at the start
- % of each paragraph, so we need not do anything with that.
- \hangindent = 2em
- %
- % When the entry text needs to be broken, just fill out the first line
- % with blank space.
- \rightskip = 0pt plus1fil
- %
- % A bit of stretch before each entry for the benefit of balancing
- % columns.
- \vskip 0pt plus1pt
- %
- % When reading the text of entry, convert explicit line breaks
- % from @* into spaces. The user might give these in long section
- % titles, for instance.
- \def\*{\unskip\space\ignorespaces}%
- \def\entrybreak{\hfil\break}%
- %
- % Swallow the left brace of the text (first parameter):
- \afterassignment\doentry
- \let\temp =
-}
-\def\entrybreak{\unskip\space\ignorespaces}%
-\def\doentry{%
- \bgroup % Instead of the swallowed brace.
- \noindent
- \aftergroup\finishentry
- % And now comes the text of the entry.
-}
-\def\finishentry#1{%
- % #1 is the page number.
- %
- % The following is kludged to not output a line of dots in the index if
- % there are no page numbers. The next person who breaks this will be
- % cursed by a Unix daemon.
- \setbox\boxA = \hbox{#1}%
- \ifdim\wd\boxA = 0pt
- \ %
- \else
- %
- % If we must, put the page number on a line of its own, and fill out
- % this line with blank space. (The \hfil is overwhelmed with the
- % fill leaders glue in \indexdotfill if the page number does fit.)
- \hfil\penalty50
- \null\nobreak\indexdotfill % Have leaders before the page number.
- %
- % The `\ ' here is removed by the implicit \unskip that TeX does as
- % part of (the primitive) \par. Without it, a spurious underfull
- % \hbox ensues.
- \ifpdf
- \pdfgettoks#1.%
- \ \the\toksA
- \else
- \ #1%
- \fi
- \fi
- \par
- \endgroup
-}
-
-% Like plain.tex's \dotfill, except uses up at least 1 em.
-\def\indexdotfill{\cleaders
- \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
-
-\def\primary #1{\line{#1\hfil}}
-
-\newskip\secondaryindent \secondaryindent=0.5cm
-\def\secondary#1#2{{%
- \parfillskip=0in
- \parskip=0in
- \hangindent=1in
- \hangafter=1
- \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
- \ifpdf
- \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
- \else
- #2
- \fi
- \par
-}}
-
-% Define two-column mode, which we use to typeset indexes.
-% Adapted from the TeXbook, page 416, which is to say,
-% the manmac.tex format used to print the TeXbook itself.
-\catcode`\@=11
-
-\newbox\partialpage
-\newdimen\doublecolumnhsize
-
-\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
- % Grab any single-column material above us.
- \output = {%
- %
- % Here is a possibility not foreseen in manmac: if we accumulate a
- % whole lot of material, we might end up calling this \output
- % routine twice in a row (see the doublecol-lose test, which is
- % essentially a couple of indexes with @setchapternewpage off). In
- % that case we just ship out what is in \partialpage with the normal
- % output routine. Generally, \partialpage will be empty when this
- % runs and this will be a no-op. See the indexspread.tex test case.
- \ifvoid\partialpage \else
- \onepageout{\pagecontents\partialpage}%
- \fi
- %
- \global\setbox\partialpage = \vbox{%
- % Unvbox the main output page.
- \unvbox\PAGE
- \kern-\topskip \kern\baselineskip
- }%
- }%
- \eject % run that output routine to set \partialpage
- %
- % Use the double-column output routine for subsequent pages.
- \output = {\doublecolumnout}%
- %
- % Change the page size parameters. We could do this once outside this
- % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
- % format, but then we repeat the same computation. Repeating a couple
- % of assignments once per index is clearly meaningless for the
- % execution time, so we may as well do it in one place.
- %
- % First we halve the line length, less a little for the gutter between
- % the columns. We compute the gutter based on the line length, so it
- % changes automatically with the paper format. The magic constant
- % below is chosen so that the gutter has the same value (well, +-<1pt)
- % as it did when we hard-coded it.
- %
- % We put the result in a separate register, \doublecolumhsize, so we
- % can restore it in \pagesofar, after \hsize itself has (potentially)
- % been clobbered.
- %
- \doublecolumnhsize = \hsize
- \advance\doublecolumnhsize by -.04154\hsize
- \divide\doublecolumnhsize by 2
- \hsize = \doublecolumnhsize
- %
- % Double the \vsize as well. (We don't need a separate register here,
- % since nobody clobbers \vsize.)
- \vsize = 2\vsize
-}
-
-% The double-column output routine for all double-column pages except
-% the last.
-%
-\def\doublecolumnout{%
- \splittopskip=\topskip \splitmaxdepth=\maxdepth
- % Get the available space for the double columns -- the normal
- % (undoubled) page height minus any material left over from the
- % previous page.
- \dimen@ = \vsize
- \divide\dimen@ by 2
- \advance\dimen@ by -\ht\partialpage
- %
- % box0 will be the left-hand column, box2 the right.
- \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
- \onepageout\pagesofar
- \unvbox255
- \penalty\outputpenalty
-}
-%
-% Re-output the contents of the output page -- any previous material,
-% followed by the two boxes we just split, in box0 and box2.
-\def\pagesofar{%
- \unvbox\partialpage
- %
- \hsize = \doublecolumnhsize
- \wd0=\hsize \wd2=\hsize
- \hbox to\pagewidth{\box0\hfil\box2}%
-}
-%
-% All done with double columns.
-\def\enddoublecolumns{%
- % The following penalty ensures that the page builder is exercised
- % _before_ we change the output routine. This is necessary in the
- % following situation:
- %
- % The last section of the index consists only of a single entry.
- % Before this section, \pagetotal is less than \pagegoal, so no
- % break occurs before the last section starts. However, the last
- % section, consisting of \initial and the single \entry, does not
- % fit on the page and has to be broken off. Without the following
- % penalty the page builder will not be exercised until \eject
- % below, and by that time we'll already have changed the output
- % routine to the \balancecolumns version, so the next-to-last
- % double-column page will be processed with \balancecolumns, which
- % is wrong: The two columns will go to the main vertical list, with
- % the broken-off section in the recent contributions. As soon as
- % the output routine finishes, TeX starts reconsidering the page
- % break. The two columns and the broken-off section both fit on the
- % page, because the two columns now take up only half of the page
- % goal. When TeX sees \eject from below which follows the final
- % section, it invokes the new output routine that we've set after
- % \balancecolumns below; \onepageout will try to fit the two columns
- % and the final section into the vbox of \pageheight (see
- % \pagebody), causing an overfull box.
- %
- % Note that glue won't work here, because glue does not exercise the
- % page builder, unlike penalties (see The TeXbook, pp. 280-281).
- \penalty0
- %
- \output = {%
- % Split the last of the double-column material. Leave it on the
- % current page, no automatic page break.
- \balancecolumns
- %
- % If we end up splitting too much material for the current page,
- % though, there will be another page break right after this \output
- % invocation ends. Having called \balancecolumns once, we do not
- % want to call it again. Therefore, reset \output to its normal
- % definition right away. (We hope \balancecolumns will never be
- % called on to balance too much material, but if it is, this makes
- % the output somewhat more palatable.)
- \global\output = {\onepageout{\pagecontents\PAGE}}%
- }%
- \eject
- \endgroup % started in \begindoublecolumns
- %
- % \pagegoal was set to the doubled \vsize above, since we restarted
- % the current page. We're now back to normal single-column
- % typesetting, so reset \pagegoal to the normal \vsize (after the
- % \endgroup where \vsize got restored).
- \pagegoal = \vsize
-}
-%
-% Called at the end of the double column material.
-\def\balancecolumns{%
- \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
- \dimen@ = \ht0
- \advance\dimen@ by \topskip
- \advance\dimen@ by-\baselineskip
- \divide\dimen@ by 2 % target to split to
- %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
- \splittopskip = \topskip
- % Loop until we get a decent breakpoint.
- {%
- \vbadness = 10000
- \loop
- \global\setbox3 = \copy0
- \global\setbox1 = \vsplit3 to \dimen@
- \ifdim\ht3>\dimen@
- \global\advance\dimen@ by 1pt
- \repeat
- }%
- %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
- \setbox0=\vbox to\dimen@{\unvbox1}%
- \setbox2=\vbox to\dimen@{\unvbox3}%
- %
- \pagesofar
-}
-\catcode`\@ = \other
-
-
-\message{sectioning,}
-% Chapters, sections, etc.
-
-% Let's start with @part.
-\outer\parseargdef\part{\partzzz{#1}}
-\def\partzzz#1{%
- \chapoddpage
- \null
- \vskip.3\vsize % move it down on the page a bit
- \begingroup
- \noindent \titlefonts\rmisbold #1\par % the text
- \let\lastnode=\empty % no node to associate with
- \writetocentry{part}{#1}{}% but put it in the toc
- \headingsoff % no headline or footline on the part page
- \chapoddpage
- \endgroup
-}
-
-% \unnumberedno is an oxymoron. But we count the unnumbered
-% sections so that we can refer to them unambiguously in the pdf
-% outlines by their "section number". We avoid collisions with chapter
-% numbers by starting them at 10000. (If a document ever has 10000
-% chapters, we're in trouble anyway, I'm sure.)
-\newcount\unnumberedno \unnumberedno = 10000
-\newcount\chapno
-\newcount\secno \secno=0
-\newcount\subsecno \subsecno=0
-\newcount\subsubsecno \subsubsecno=0
-
-% This counter is funny since it counts through charcodes of letters A, B, ...
-\newcount\appendixno \appendixno = `\@
-%
-% \def\appendixletter{\char\the\appendixno}
-% We do the following ugly conditional instead of the above simple
-% construct for the sake of pdftex, which needs the actual
-% letter in the expansion, not just typeset.
-%
-\def\appendixletter{%
- \ifnum\appendixno=`A A%
- \else\ifnum\appendixno=`B B%
- \else\ifnum\appendixno=`C C%
- \else\ifnum\appendixno=`D D%
- \else\ifnum\appendixno=`E E%
- \else\ifnum\appendixno=`F F%
- \else\ifnum\appendixno=`G G%
- \else\ifnum\appendixno=`H H%
- \else\ifnum\appendixno=`I I%
- \else\ifnum\appendixno=`J J%
- \else\ifnum\appendixno=`K K%
- \else\ifnum\appendixno=`L L%
- \else\ifnum\appendixno=`M M%
- \else\ifnum\appendixno=`N N%
- \else\ifnum\appendixno=`O O%
- \else\ifnum\appendixno=`P P%
- \else\ifnum\appendixno=`Q Q%
- \else\ifnum\appendixno=`R R%
- \else\ifnum\appendixno=`S S%
- \else\ifnum\appendixno=`T T%
- \else\ifnum\appendixno=`U U%
- \else\ifnum\appendixno=`V V%
- \else\ifnum\appendixno=`W W%
- \else\ifnum\appendixno=`X X%
- \else\ifnum\appendixno=`Y Y%
- \else\ifnum\appendixno=`Z Z%
- % The \the is necessary, despite appearances, because \appendixletter is
- % expanded while writing the .toc file. \char\appendixno is not
- % expandable, thus it is written literally, thus all appendixes come out
- % with the same letter (or @) in the toc without it.
- \else\char\the\appendixno
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
-
-% Each @chapter defines these (using marks) as the number+name, number
-% and name of the chapter. Page headings and footings can use
-% these. @section does likewise.
-\def\thischapter{}
-\def\thischapternum{}
-\def\thischaptername{}
-\def\thissection{}
-\def\thissectionnum{}
-\def\thissectionname{}
-
-\newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
-
-% @raisesections: treat @section as chapter, @subsection as section, etc.
-\def\raisesections{\global\advance\secbase by -1}
-\let\up=\raisesections % original BFox name
-
-% @lowersections: treat @chapter as section, @section as subsection, etc.
-\def\lowersections{\global\advance\secbase by 1}
-\let\down=\lowersections % original BFox name
-
-% we only have subsub.
-\chardef\maxseclevel = 3
-%
-% A numbered section within an unnumbered changes to unnumbered too.
-% To achieve this, remember the "biggest" unnum. sec. we are currently in:
-\chardef\unnlevel = \maxseclevel
-%
-% Trace whether the current chapter is an appendix or not:
-% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
-\def\chapheadtype{N}
-
-% Choose a heading macro
-% #1 is heading type
-% #2 is heading level
-% #3 is text for heading
-\def\genhead#1#2#3{%
- % Compute the abs. sec. level:
- \absseclevel=#2
- \advance\absseclevel by \secbase
- % Make sure \absseclevel doesn't fall outside the range:
- \ifnum \absseclevel < 0
- \absseclevel = 0
- \else
- \ifnum \absseclevel > 3
- \absseclevel = 3
- \fi
- \fi
- % The heading type:
- \def\headtype{#1}%
- \if \headtype U%
- \ifnum \absseclevel < \unnlevel
- \chardef\unnlevel = \absseclevel
- \fi
- \else
- % Check for appendix sections:
- \ifnum \absseclevel = 0
- \edef\chapheadtype{\headtype}%
- \else
- \if \headtype A\if \chapheadtype N%
- \errmessage{@appendix... within a non-appendix chapter}%
- \fi\fi
- \fi
- % Check for numbered within unnumbered:
- \ifnum \absseclevel > \unnlevel
- \def\headtype{U}%
- \else
- \chardef\unnlevel = 3
- \fi
- \fi
- % Now print the heading:
- \if \headtype U%
- \ifcase\absseclevel
- \unnumberedzzz{#3}%
- \or \unnumberedseczzz{#3}%
- \or \unnumberedsubseczzz{#3}%
- \or \unnumberedsubsubseczzz{#3}%
- \fi
- \else
- \if \headtype A%
- \ifcase\absseclevel
- \appendixzzz{#3}%
- \or \appendixsectionzzz{#3}%
- \or \appendixsubseczzz{#3}%
- \or \appendixsubsubseczzz{#3}%
- \fi
- \else
- \ifcase\absseclevel
- \chapterzzz{#3}%
- \or \seczzz{#3}%
- \or \numberedsubseczzz{#3}%
- \or \numberedsubsubseczzz{#3}%
- \fi
- \fi
- \fi
- \suppressfirstparagraphindent
-}
-
-% an interface:
-\def\numhead{\genhead N}
-\def\apphead{\genhead A}
-\def\unnmhead{\genhead U}
-
-% @chapter, @appendix, @unnumbered. Increment top-level counter, reset
-% all lower-level sectioning counters to zero.
-%
-% Also set \chaplevelprefix, which we prepend to @float sequence numbers
-% (e.g., figures), q.v. By default (before any chapter), that is empty.
-\let\chaplevelprefix = \empty
-%
-\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz#1{%
- % section resetting is \global in case the chapter is in a group, such
- % as an @include file.
- \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
- \global\advance\chapno by 1
- %
- % Used for \float.
- \gdef\chaplevelprefix{\the\chapno.}%
- \resetallfloatnos
- %
- % \putwordChapter can contain complex things in translations.
- \toks0=\expandafter{\putwordChapter}%
- \message{\the\toks0 \space \the\chapno}%
- %
- % Write the actual heading.
- \chapmacro{#1}{Ynumbered}{\the\chapno}%
- %
- % So @section and the like are numbered underneath this chapter.
- \global\let\section = \numberedsec
- \global\let\subsection = \numberedsubsec
- \global\let\subsubsection = \numberedsubsubsec
-}
-
-\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
-%
-\def\appendixzzz#1{%
- \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
- \global\advance\appendixno by 1
- \gdef\chaplevelprefix{\appendixletter.}%
- \resetallfloatnos
- %
- % \putwordAppendix can contain complex things in translations.
- \toks0=\expandafter{\putwordAppendix}%
- \message{\the\toks0 \space \appendixletter}%
- %
- \chapmacro{#1}{Yappendix}{\appendixletter}%
- %
- \global\let\section = \appendixsec
- \global\let\subsection = \appendixsubsec
- \global\let\subsubsection = \appendixsubsubsec
-}
-
-% normally unnmhead0 calls unnumberedzzz:
-\outer\parseargdef\unnumbered{\unnmhead0{#1}}
-\def\unnumberedzzz#1{%
- \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
- \global\advance\unnumberedno by 1
- %
- % Since an unnumbered has no number, no prefix for figures.
- \global\let\chaplevelprefix = \empty
- \resetallfloatnos
- %
- % This used to be simply \message{#1}, but TeX fully expands the
- % argument to \message. Therefore, if #1 contained @-commands, TeX
- % expanded them. For example, in `@unnumbered The @cite{Book}', TeX
- % expanded @cite (which turns out to cause errors because \cite is meant
- % to be executed, not expanded).
- %
- % Anyway, we don't want the fully-expanded definition of @cite to appear
- % as a result of the \message, we just want `@cite' itself. We use
- % \the<toks register> to achieve this: TeX expands \the<toks> only once,
- % simply yielding the contents of <toks register>. (We also do this for
- % the toc entries.)
- \toks0 = {#1}%
- \message{(\the\toks0)}%
- %
- \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
- %
- \global\let\section = \unnumberedsec
- \global\let\subsection = \unnumberedsubsec
- \global\let\subsubsection = \unnumberedsubsubsec
-}
-
-% @centerchap is like @unnumbered, but the heading is centered.
-\outer\parseargdef\centerchap{%
- % Well, we could do the following in a group, but that would break
- % an assumption that \chapmacro is called at the outermost level.
- % Thus we are safer this way: --kasal, 24feb04
- \let\centerparametersmaybe = \centerparameters
- \unnmhead0{#1}%
- \let\centerparametersmaybe = \relax
-}
-
-% @top is like @unnumbered.
-\let\top\unnumbered
-
-% Sections.
-%
-\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
-\def\seczzz#1{%
- \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
- \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
-}
-
-% normally calls appendixsectionzzz:
-\outer\parseargdef\appendixsection{\apphead1{#1}}
-\def\appendixsectionzzz#1{%
- \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
- \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
-}
-\let\appendixsec\appendixsection
-
-% normally calls unnumberedseczzz:
-\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
-\def\unnumberedseczzz#1{%
- \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
- \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
-}
-
-% Subsections.
-%
-% normally calls numberedsubseczzz:
-\outer\parseargdef\numberedsubsec{\numhead2{#1}}
-\def\numberedsubseczzz#1{%
- \global\subsubsecno=0 \global\advance\subsecno by 1
- \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
-}
-
-% normally calls appendixsubseczzz:
-\outer\parseargdef\appendixsubsec{\apphead2{#1}}
-\def\appendixsubseczzz#1{%
- \global\subsubsecno=0 \global\advance\subsecno by 1
- \sectionheading{#1}{subsec}{Yappendix}%
- {\appendixletter.\the\secno.\the\subsecno}%
-}
-
-% normally calls unnumberedsubseczzz:
-\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
-\def\unnumberedsubseczzz#1{%
- \global\subsubsecno=0 \global\advance\subsecno by 1
- \sectionheading{#1}{subsec}{Ynothing}%
- {\the\unnumberedno.\the\secno.\the\subsecno}%
-}
-
-% Subsubsections.
-%
-% normally numberedsubsubseczzz:
-\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
-\def\numberedsubsubseczzz#1{%
- \global\advance\subsubsecno by 1
- \sectionheading{#1}{subsubsec}{Ynumbered}%
- {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-% normally appendixsubsubseczzz:
-\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
-\def\appendixsubsubseczzz#1{%
- \global\advance\subsubsecno by 1
- \sectionheading{#1}{subsubsec}{Yappendix}%
- {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-% normally unnumberedsubsubseczzz:
-\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
-\def\unnumberedsubsubseczzz#1{%
- \global\advance\subsubsecno by 1
- \sectionheading{#1}{subsubsec}{Ynothing}%
- {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
-}
-
-% These macros control what the section commands do, according
-% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
-% Define them by default for a numbered chapter.
-\let\section = \numberedsec
-\let\subsection = \numberedsubsec
-\let\subsubsection = \numberedsubsubsec
-
-% Define @majorheading, @heading and @subheading
-
-\def\majorheading{%
- {\advance\chapheadingskip by 10pt \chapbreak }%
- \parsearg\chapheadingzzz
-}
-
-\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
-\def\chapheadingzzz#1{%
- \vbox{\chapfonts \raggedtitlesettings #1\par}%
- \nobreak\bigskip \nobreak
- \suppressfirstparagraphindent
-}
-
-% @heading, @subheading, @subsubheading.
-\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
- \suppressfirstparagraphindent}
-\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
- \suppressfirstparagraphindent}
-\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
- \suppressfirstparagraphindent}
-
-% These macros generate a chapter, section, etc. heading only
-% (including whitespace, linebreaking, etc. around it),
-% given all the information in convenient, parsed form.
-
-% Args are the skip and penalty (usually negative)
-\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-
-% Parameter controlling skip before chapter headings (if needed)
-\newskip\chapheadingskip
-
-% Define plain chapter starts, and page on/off switching for it.
-\def\chapbreak{\dobreak \chapheadingskip {-4000}}
-\def\chappager{\par\vfill\supereject}
-% Because \domark is called before \chapoddpage, the filler page will
-% get the headings for the next chapter, which is wrong. But we don't
-% care -- we just disable all headings on the filler page.
-\def\chapoddpage{%
- \chappager
- \ifodd\pageno \else
- \begingroup
- \headingsoff
- \null
- \chappager
- \endgroup
- \fi
-}
-
-\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
-
-\def\CHAPPAGoff{%
-\global\let\contentsalignmacro = \chappager
-\global\let\pchapsepmacro=\chapbreak
-\global\let\pagealignmacro=\chappager}
-
-\def\CHAPPAGon{%
-\global\let\contentsalignmacro = \chappager
-\global\let\pchapsepmacro=\chappager
-\global\let\pagealignmacro=\chappager
-\global\def\HEADINGSon{\HEADINGSsingle}}
-
-\def\CHAPPAGodd{%
-\global\let\contentsalignmacro = \chapoddpage
-\global\let\pchapsepmacro=\chapoddpage
-\global\let\pagealignmacro=\chapoddpage
-\global\def\HEADINGSon{\HEADINGSdouble}}
-
-\CHAPPAGon
-
-% Chapter opening.
-%
-% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
-% Yappendix, Yomitfromtoc), #3 the chapter number.
-%
-% To test against our argument.
-\def\Ynothingkeyword{Ynothing}
-\def\Yomitfromtockeyword{Yomitfromtoc}
-\def\Yappendixkeyword{Yappendix}
-%
-\def\chapmacro#1#2#3{%
- % Insert the first mark before the heading break (see notes for \domark).
- \let\prevchapterdefs=\lastchapterdefs
- \let\prevsectiondefs=\lastsectiondefs
- \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
- \gdef\thissection{}}%
- %
- \def\temptype{#2}%
- \ifx\temptype\Ynothingkeyword
- \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
- \gdef\thischapter{\thischaptername}}%
- \else\ifx\temptype\Yomitfromtockeyword
- \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
- \gdef\thischapter{}}%
- \else\ifx\temptype\Yappendixkeyword
- \toks0={#1}%
- \xdef\lastchapterdefs{%
- \gdef\noexpand\thischaptername{\the\toks0}%
- \gdef\noexpand\thischapternum{\appendixletter}%
- % \noexpand\putwordAppendix avoids expanding indigestible
- % commands in some of the translations.
- \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
- \noexpand\thischapternum:
- \noexpand\thischaptername}%
- }%
- \else
- \toks0={#1}%
- \xdef\lastchapterdefs{%
- \gdef\noexpand\thischaptername{\the\toks0}%
- \gdef\noexpand\thischapternum{\the\chapno}%
- % \noexpand\putwordChapter avoids expanding indigestible
- % commands in some of the translations.
- \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
- \noexpand\thischapternum:
- \noexpand\thischaptername}%
- }%
- \fi\fi\fi
- %
- % Output the mark. Pass it through \safewhatsit, to take care of
- % the preceding space.
- \safewhatsit\domark
- %
- % Insert the chapter heading break.
- \pchapsepmacro
- %
- % Now the second mark, after the heading break. No break points
- % between here and the heading.
- \let\prevchapterdefs=\lastchapterdefs
- \let\prevsectiondefs=\lastsectiondefs
- \domark
- %
- {%
- \chapfonts \rmisbold
- %
- % Have to define \lastsection before calling \donoderef, because the
- % xref code eventually uses it. On the other hand, it has to be called
- % after \pchapsepmacro, or the headline will change too soon.
- \gdef\lastsection{#1}%
- %
- % Only insert the separating space if we have a chapter/appendix
- % number, and don't print the unnumbered ``number''.
- \ifx\temptype\Ynothingkeyword
- \setbox0 = \hbox{}%
- \def\toctype{unnchap}%
- \else\ifx\temptype\Yomitfromtockeyword
- \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
- \def\toctype{omit}%
- \else\ifx\temptype\Yappendixkeyword
- \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
- \def\toctype{app}%
- \else
- \setbox0 = \hbox{#3\enspace}%
- \def\toctype{numchap}%
- \fi\fi\fi
- %
- % Write the toc entry for this chapter. Must come before the
- % \donoderef, because we include the current node name in the toc
- % entry, and \donoderef resets it to empty.
- \writetocentry{\toctype}{#1}{#3}%
- %
- % For pdftex, we have to write out the node definition (aka, make
- % the pdfdest) after any page break, but before the actual text has
- % been typeset. If the destination for the pdf outline is after the
- % text, then jumping from the outline may wind up with the text not
- % being visible, for instance under high magnification.
- \donoderef{#2}%
- %
- % Typeset the actual heading.
- \nobreak % Avoid page breaks at the interline glue.
- \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe
- \unhbox0 #1\par}%
- }%
- \nobreak\bigskip % no page break after a chapter title
- \nobreak
-}
-
-% @centerchap -- centered and unnumbered.
-\let\centerparametersmaybe = \relax
-\def\centerparameters{%
- \advance\rightskip by 3\rightskip
- \leftskip = \rightskip
- \parfillskip = 0pt
-}
-
-
-% I don't think this chapter style is supported any more, so I'm not
-% updating it with the new noderef stuff. We'll see. --karl, 11aug03.
-%
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-%
-\def\unnchfopen #1{%
- \chapoddpage
- \vbox{\chapfonts \raggedtitlesettings #1\par}%
- \nobreak\bigskip\nobreak
-}
-\def\chfopen #1#2{\chapoddpage {\chapfonts
-\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
-\par\penalty 5000 %
-}
-\def\centerchfopen #1{%
- \chapoddpage
- \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
- \nobreak\bigskip \nobreak
-}
-\def\CHAPFopen{%
- \global\let\chapmacro=\chfopen
- \global\let\centerchapmacro=\centerchfopen}
-
-
-% Section titles. These macros combine the section number parts and
-% call the generic \sectionheading to do the printing.
-%
-\newskip\secheadingskip
-\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
-
-% Subsection titles.
-\newskip\subsecheadingskip
-\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
-
-% Subsubsection titles.
-\def\subsubsecheadingskip{\subsecheadingskip}
-\def\subsubsecheadingbreak{\subsecheadingbreak}
-
-
-% Print any size, any type, section title.
-%
-% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
-% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
-% section number.
-%
-\def\seckeyword{sec}
-%
-\def\sectionheading#1#2#3#4{%
- {%
- \checkenv{}% should not be in an environment.
- %
- % Switch to the right set of fonts.
- \csname #2fonts\endcsname \rmisbold
- %
- \def\sectionlevel{#2}%
- \def\temptype{#3}%
- %
- % Insert first mark before the heading break (see notes for \domark).
- \let\prevsectiondefs=\lastsectiondefs
- \ifx\temptype\Ynothingkeyword
- \ifx\sectionlevel\seckeyword
- \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
- \gdef\thissection{\thissectionname}}%
- \fi
- \else\ifx\temptype\Yomitfromtockeyword
- % Don't redefine \thissection.
- \else\ifx\temptype\Yappendixkeyword
- \ifx\sectionlevel\seckeyword
- \toks0={#1}%
- \xdef\lastsectiondefs{%
- \gdef\noexpand\thissectionname{\the\toks0}%
- \gdef\noexpand\thissectionnum{#4}%
- % \noexpand\putwordSection avoids expanding indigestible
- % commands in some of the translations.
- \gdef\noexpand\thissection{\noexpand\putwordSection{}
- \noexpand\thissectionnum:
- \noexpand\thissectionname}%
- }%
- \fi
- \else
- \ifx\sectionlevel\seckeyword
- \toks0={#1}%
- \xdef\lastsectiondefs{%
- \gdef\noexpand\thissectionname{\the\toks0}%
- \gdef\noexpand\thissectionnum{#4}%
- % \noexpand\putwordSection avoids expanding indigestible
- % commands in some of the translations.
- \gdef\noexpand\thissection{\noexpand\putwordSection{}
- \noexpand\thissectionnum:
- \noexpand\thissectionname}%
- }%
- \fi
- \fi\fi\fi
- %
- % Go into vertical mode. Usually we'll already be there, but we
- % don't want the following whatsit to end up in a preceding paragraph
- % if the document didn't happen to have a blank line.
- \par
- %
- % Output the mark. Pass it through \safewhatsit, to take care of
- % the preceding space.
- \safewhatsit\domark
- %
- % Insert space above the heading.
- \csname #2headingbreak\endcsname
- %
- % Now the second mark, after the heading break. No break points
- % between here and the heading.
- \let\prevsectiondefs=\lastsectiondefs
- \domark
- %
- % Only insert the space after the number if we have a section number.
- \ifx\temptype\Ynothingkeyword
- \setbox0 = \hbox{}%
- \def\toctype{unn}%
- \gdef\lastsection{#1}%
- \else\ifx\temptype\Yomitfromtockeyword
- % for @headings -- no section number, don't include in toc,
- % and don't redefine \lastsection.
- \setbox0 = \hbox{}%
- \def\toctype{omit}%
- \let\sectionlevel=\empty
- \else\ifx\temptype\Yappendixkeyword
- \setbox0 = \hbox{#4\enspace}%
- \def\toctype{app}%
- \gdef\lastsection{#1}%
- \else
- \setbox0 = \hbox{#4\enspace}%
- \def\toctype{num}%
- \gdef\lastsection{#1}%
- \fi\fi\fi
- %
- % Write the toc entry (before \donoderef). See comments in \chapmacro.
- \writetocentry{\toctype\sectionlevel}{#1}{#4}%
- %
- % Write the node reference (= pdf destination for pdftex).
- % Again, see comments in \chapmacro.
- \donoderef{#3}%
- %
- % Interline glue will be inserted when the vbox is completed.
- % That glue will be a valid breakpoint for the page, since it'll be
- % preceded by a whatsit (usually from the \donoderef, or from the
- % \writetocentry if there was no node). We don't want to allow that
- % break, since then the whatsits could end up on page n while the
- % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000.
- \nobreak
- %
- % Output the actual section heading.
- \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
- \hangindent=\wd0 % zero if no section number
- \unhbox0 #1}%
- }%
- % Add extra space after the heading -- half of whatever came above it.
- % Don't allow stretch, though.
- \kern .5 \csname #2headingskip\endcsname
- %
- % Do not let the kern be a potential breakpoint, as it would be if it
- % was followed by glue.
- \nobreak
- %
- % We'll almost certainly start a paragraph next, so don't let that
- % glue accumulate. (Not a breakpoint because it's preceded by a
- % discardable item.) However, when a paragraph is not started next
- % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
- % or the negative glue will cause weirdly wrong output, typically
- % obscuring the section heading with something else.
- \vskip-\parskip
- %
- % This is so the last item on the main vertical list is a known
- % \penalty > 10000, so \startdefun, etc., can recognize the situation
- % and do the needful.
- \penalty 10001
-}
-
-
-\message{toc,}
-% Table of contents.
-\newwrite\tocfile
-
-% Write an entry to the toc file, opening it if necessary.
-% Called from @chapter, etc.
-%
-% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
-% We append the current node name (if any) and page number as additional
-% arguments for the \{chap,sec,...}entry macros which will eventually
-% read this. The node name is used in the pdf outlines as the
-% destination to jump to.
-%
-% We open the .toc file for writing here instead of at @setfilename (or
-% any other fixed time) so that @contents can be anywhere in the document.
-% But if #1 is `omit', then we don't do anything. This is used for the
-% table of contents chapter openings themselves.
-%
-\newif\iftocfileopened
-\def\omitkeyword{omit}%
-%
-\def\writetocentry#1#2#3{%
- \edef\writetoctype{#1}%
- \ifx\writetoctype\omitkeyword \else
- \iftocfileopened\else
- \immediate\openout\tocfile = \jobname.toc
- \global\tocfileopenedtrue
- \fi
- %
- \iflinks
- {\atdummies
- \edef\temp{%
- \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
- \temp
- }%
- \fi
- \fi
- %
- % Tell \shipout to create a pdf destination on each page, if we're
- % writing pdf. These are used in the table of contents. We can't
- % just write one on every page because the title pages are numbered
- % 1 and 2 (the page numbers aren't printed), and so are the first
- % two pages of the document. Thus, we'd have two destinations named
- % `1', and two named `2'.
- \ifpdf \global\pdfmakepagedesttrue \fi
-}
-
-
-% These characters do not print properly in the Computer Modern roman
-% fonts, so we must take special care. This is more or less redundant
-% with the Texinfo input format setup at the end of this file.
-%
-\def\activecatcodes{%
- \catcode`\"=\active
- \catcode`\$=\active
- \catcode`\<=\active
- \catcode`\>=\active
- \catcode`\\=\active
- \catcode`\^=\active
- \catcode`\_=\active
- \catcode`\|=\active
- \catcode`\~=\active
-}
-
-
-% Read the toc file, which is essentially Texinfo input.
-\def\readtocfile{%
- \setupdatafile
- \activecatcodes
- \input \tocreadfilename
-}
-
-\newskip\contentsrightmargin \contentsrightmargin=1in
-\newcount\savepageno
-\newcount\lastnegativepageno \lastnegativepageno = -1
-
-% Prepare to read what we've written to \tocfile.
-%
-\def\startcontents#1{%
- % If @setchapternewpage on, and @headings double, the contents should
- % start on an odd page, unlike chapters. Thus, we maintain
- % \contentsalignmacro in parallel with \pagealignmacro.
- % From: Torbjorn Granlund <tege@matematik.su.se>
- \contentsalignmacro
- \immediate\closeout\tocfile
- %
- % Don't need to put `Contents' or `Short Contents' in the headline.
- % It is abundantly clear what they are.
- \chapmacro{#1}{Yomitfromtoc}{}%
- %
- \savepageno = \pageno
- \begingroup % Set up to handle contents files properly.
- \raggedbottom % Worry more about breakpoints than the bottom.
- \advance\hsize by -\contentsrightmargin % Don't use the full line length.
- %
- % Roman numerals for page numbers.
- \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
-}
-
-% redefined for the two-volume lispref. We always output on
-% \jobname.toc even if this is redefined.
-%
-\def\tocreadfilename{\jobname.toc}
-
-% Normal (long) toc.
-%
-\def\contents{%
- \startcontents{\putwordTOC}%
- \openin 1 \tocreadfilename\space
- \ifeof 1 \else
- \readtocfile
- \fi
- \vfill \eject
- \contentsalignmacro % in case @setchapternewpage odd is in effect
- \ifeof 1 \else
- \pdfmakeoutlines
- \fi
- \closein 1
- \endgroup
- \lastnegativepageno = \pageno
- \global\pageno = \savepageno
-}
-
-% And just the chapters.
-\def\summarycontents{%
- \startcontents{\putwordShortTOC}%
- %
- \let\partentry = \shortpartentry
- \let\numchapentry = \shortchapentry
- \let\appentry = \shortchapentry
- \let\unnchapentry = \shortunnchapentry
- % We want a true roman here for the page numbers.
- \secfonts
- \let\rm=\shortcontrm \let\bf=\shortcontbf
- \let\sl=\shortcontsl \let\tt=\shortconttt
- \rm
- \hyphenpenalty = 10000
- \advance\baselineskip by 1pt % Open it up a little.
- \def\numsecentry##1##2##3##4{}
- \let\appsecentry = \numsecentry
- \let\unnsecentry = \numsecentry
- \let\numsubsecentry = \numsecentry
- \let\appsubsecentry = \numsecentry
- \let\unnsubsecentry = \numsecentry
- \let\numsubsubsecentry = \numsecentry
- \let\appsubsubsecentry = \numsecentry
- \let\unnsubsubsecentry = \numsecentry
- \openin 1 \tocreadfilename\space
- \ifeof 1 \else
- \readtocfile
- \fi
- \closein 1
- \vfill \eject
- \contentsalignmacro % in case @setchapternewpage odd is in effect
- \endgroup
- \lastnegativepageno = \pageno
- \global\pageno = \savepageno
-}
-\let\shortcontents = \summarycontents
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
-%
-\def\shortchaplabel#1{%
- % This space should be enough, since a single number is .5em, and the
- % widest letter (M) is 1em, at least in the Computer Modern fonts.
- % But use \hss just in case.
- % (This space doesn't include the extra space that gets added after
- % the label; that gets put in by \shortchapentry above.)
- %
- % We'd like to right-justify chapter numbers, but that looks strange
- % with appendix letters. And right-justifying numbers and
- % left-justifying letters looks strange when there is less than 10
- % chapters. Have to read the whole toc once to know how many chapters
- % there are before deciding ...
- \hbox to 1em{#1\hss}%
-}
-
-% These macros generate individual entries in the table of contents.
-% The first argument is the chapter or section name.
-% The last argument is the page number.
-% The arguments in between are the chapter number, section number, ...
-
-% Parts, in the main contents. Replace the part number, which doesn't
-% exist, with an empty box. Let's hope all the numbers have the same width.
-% Also ignore the page number, which is conventionally not printed.
-\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
-\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
-%
-% Parts, in the short toc.
-\def\shortpartentry#1#2#3#4{%
- \penalty-300
- \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
- \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
-}
-
-% Chapters, in the main contents.
-\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
-%
-% Chapters, in the short toc.
-% See comments in \dochapentry re vbox and related settings.
-\def\shortchapentry#1#2#3#4{%
- \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
-}
-
-% Appendices, in the main contents.
-% Need the word Appendix, and a fixed-size box.
-%
-\def\appendixbox#1{%
- % We use M since it's probably the widest letter.
- \setbox0 = \hbox{\putwordAppendix{} M}%
- \hbox to \wd0{\putwordAppendix{} #1\hss}}
-%
-\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
-
-% Unnumbered chapters.
-\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
-\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
-
-% Sections.
-\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
-\let\appsecentry=\numsecentry
-\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
-
-% Subsections.
-\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
-\let\appsubsecentry=\numsubsecentry
-\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
-
-% And subsubsections.
-\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
-\let\appsubsubsecentry=\numsubsubsecentry
-\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
-
-% This parameter controls the indentation of the various levels.
-% Same as \defaultparindent.
-\newdimen\tocindent \tocindent = 15pt
-
-% Now for the actual typesetting. In all these, #1 is the text and #2 is the
-% page number.
-%
-% If the toc has to be broken over pages, we want it to be at chapters
-% if at all possible; hence the \penalty.
-\def\dochapentry#1#2{%
- \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
- \begingroup
- \chapentryfonts
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
- \endgroup
- \nobreak\vskip .25\baselineskip plus.1\baselineskip
-}
-
-\def\dosecentry#1#2{\begingroup
- \secentryfonts \leftskip=\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsecentry#1#2{\begingroup
- \subsecentryfonts \leftskip=2\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsubsecentry#1#2{\begingroup
- \subsubsecentryfonts \leftskip=3\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-% We use the same \entry macro as for the index entries.
-\let\tocentry = \entry
-
-% Space between chapter (or whatever) number and the title.
-\def\labelspace{\hskip1em \relax}
-
-\def\dopageno#1{{\rm #1}}
-\def\doshortpageno#1{{\rm #1}}
-
-\def\chapentryfonts{\secfonts \rm}
-\def\secentryfonts{\textfonts}
-\def\subsecentryfonts{\textfonts}
-\def\subsubsecentryfonts{\textfonts}
-
-
-\message{environments,}
-% @foo ... @end foo.
-
-% @tex ... @end tex escapes into raw TeX temporarily.
-% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain @ character.
-
-\envdef\tex{%
- \setupmarkupstyle{tex}%
- \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
- \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
- \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
- \catcode `\%=14
- \catcode `\+=\other
- \catcode `\"=\other
- \catcode `\|=\other
- \catcode `\<=\other
- \catcode `\>=\other
- \catcode`\`=\other
- \catcode`\'=\other
- \escapechar=`\\
- %
- % ' is active in math mode (mathcode"8000). So reset it, and all our
- % other math active characters (just in case), to plain's definitions.
- \mathactive
- %
- \let\b=\ptexb
- \let\bullet=\ptexbullet
- \let\c=\ptexc
- \let\,=\ptexcomma
- \let\.=\ptexdot
- \let\dots=\ptexdots
- \let\equiv=\ptexequiv
- \let\!=\ptexexclam
- \let\i=\ptexi
- \let\indent=\ptexindent
- \let\noindent=\ptexnoindent
- \let\{=\ptexlbrace
- \let\+=\tabalign
- \let\}=\ptexrbrace
- \let\/=\ptexslash
- \let\*=\ptexstar
- \let\t=\ptext
- \expandafter \let\csname top\endcsname=\ptextop % outer
- \let\frenchspacing=\plainfrenchspacing
- %
- \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
- \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
- \def\@{@}%
-}
-% There is no need to define \Etex.
-
-% Define @lisp ... @end lisp.
-% @lisp environment forms a group so it can rebind things,
-% including the definition of @end lisp (which normally is erroneous).
-
-% Amount to narrow the margins by for @lisp.
-\newskip\lispnarrowing \lispnarrowing=0.4in
-
-% This is the definition that ^^M gets inside @lisp, @example, and other
-% such environments. \null is better than a space, since it doesn't
-% have any width.
-\def\lisppar{\null\endgraf}
-
-% This space is always present above and below environments.
-\newskip\envskipamount \envskipamount = 0pt
-
-% Make spacing and below environment symmetrical. We use \parskip here
-% to help in doing that, since in @example-like environments \parskip
-% is reset to zero; thus the \afterenvbreak inserts no space -- but the
-% start of the next paragraph will insert \parskip.
-%
-\def\aboveenvbreak{{%
- % =10000 instead of <10000 because of a special case in \itemzzz and
- % \sectionheading, q.v.
- \ifnum \lastpenalty=10000 \else
- \advance\envskipamount by \parskip
- \endgraf
- \ifdim\lastskip<\envskipamount
- \removelastskip
- % it's not a good place to break if the last penalty was \nobreak
- % or better ...
- \ifnum\lastpenalty<10000 \penalty-50 \fi
- \vskip\envskipamount
- \fi
- \fi
-}}
-
-\let\afterenvbreak = \aboveenvbreak
-
-% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will
-% also clear it, so that its embedded environments do the narrowing again.
-\let\nonarrowing=\relax
-
-% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
-% environment contents.
-\font\circle=lcircle10
-\newdimen\circthick
-\newdimen\cartouter\newdimen\cartinner
-\newskip\normbskip\newskip\normpskip\newskip\normlskip
-\circthick=\fontdimen8\circle
-%
-\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
-\def\ctr{{\hskip 6pt\circle\char'010}}
-\def\cbl{{\circle\char'012\hskip -6pt}}
-\def\cbr{{\hskip 6pt\circle\char'011}}
-\def\carttop{\hbox to \cartouter{\hskip\lskip
- \ctl\leaders\hrule height\circthick\hfil\ctr
- \hskip\rskip}}
-\def\cartbot{\hbox to \cartouter{\hskip\lskip
- \cbl\leaders\hrule height\circthick\hfil\cbr
- \hskip\rskip}}
-%
-\newskip\lskip\newskip\rskip
-
-\envdef\cartouche{%
- \ifhmode\par\fi % can't be in the midst of a paragraph.
- \startsavinginserts
- \lskip=\leftskip \rskip=\rightskip
- \leftskip=0pt\rightskip=0pt % we want these *outside*.
- \cartinner=\hsize \advance\cartinner by-\lskip
- \advance\cartinner by-\rskip
- \cartouter=\hsize
- \advance\cartouter by 18.4pt % allow for 3pt kerns on either
- % side, and for 6pt waste from
- % each corner char, and rule thickness
- \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
- % Flag to tell @lisp, etc., not to narrow margin.
- \let\nonarrowing = t%
- %
- % If this cartouche directly follows a sectioning command, we need the
- % \parskip glue (backspaced over by default) or the cartouche can
- % collide with the section heading.
- \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
- %
- \vbox\bgroup
- \baselineskip=0pt\parskip=0pt\lineskip=0pt
- \carttop
- \hbox\bgroup
- \hskip\lskip
- \vrule\kern3pt
- \vbox\bgroup
- \kern3pt
- \hsize=\cartinner
- \baselineskip=\normbskip
- \lineskip=\normlskip
- \parskip=\normpskip
- \vskip -\parskip
- \comment % For explanation, see the end of def\group.
-}
-\def\Ecartouche{%
- \ifhmode\par\fi
- \kern3pt
- \egroup
- \kern3pt\vrule
- \hskip\rskip
- \egroup
- \cartbot
- \egroup
- \checkinserts
-}
-
-
-% This macro is called at the beginning of all the @example variants,
-% inside a group.
-\newdimen\nonfillparindent
-\def\nonfillstart{%
- \aboveenvbreak
- \hfuzz = 12pt % Don't be fussy
- \sepspaces % Make spaces be word-separators rather than space tokens.
- \let\par = \lisppar % don't ignore blank lines
- \obeylines % each line of input is a line of output
- \parskip = 0pt
- % Turn off paragraph indentation but redefine \indent to emulate
- % the normal \indent.
- \nonfillparindent=\parindent
- \parindent = 0pt
- \let\indent\nonfillindent
- %
- \emergencystretch = 0pt % don't try to avoid overfull boxes
- \ifx\nonarrowing\relax
- \advance \leftskip by \lispnarrowing
- \exdentamount=\lispnarrowing
- \else
- \let\nonarrowing = \relax
- \fi
- \let\exdent=\nofillexdent
-}
-
-\begingroup
-\obeyspaces
-% We want to swallow spaces (but not other tokens) after the fake
-% @indent in our nonfill-environments, where spaces are normally
-% active and set to @tie, resulting in them not being ignored after
-% @indent.
-\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
-\gdef\nonfillindentcheck{%
-\ifx\temp %
-\expandafter\nonfillindentgobble%
-\else%
-\leavevmode\nonfillindentbox%
-\fi%
-}%
-\endgroup
-\def\nonfillindentgobble#1{\nonfillindent}
-\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
-
-% If you want all examples etc. small: @set dispenvsize small.
-% If you want even small examples the full size: @set dispenvsize nosmall.
-% This affects the following displayed environments:
-% @example, @display, @format, @lisp
-%
-\def\smallword{small}
-\def\nosmallword{nosmall}
-\let\SETdispenvsize\relax
-\def\setnormaldispenv{%
- \ifx\SETdispenvsize\smallword
- % end paragraph for sake of leading, in case document has no blank
- % line. This is redundant with what happens in \aboveenvbreak, but
- % we need to do it before changing the fonts, and it's inconvenient
- % to change the fonts afterward.
- \ifnum \lastpenalty=10000 \else \endgraf \fi
- \smallexamplefonts \rm
- \fi
-}
-\def\setsmalldispenv{%
- \ifx\SETdispenvsize\nosmallword
- \else
- \ifnum \lastpenalty=10000 \else \endgraf \fi
- \smallexamplefonts \rm
- \fi
-}
-
-% We often define two environments, @foo and @smallfoo.
-% Let's do it in one command. #1 is the env name, #2 the definition.
-\def\makedispenvdef#1#2{%
- \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
- \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
- \expandafter\let\csname E#1\endcsname \afterenvbreak
- \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
-}
-
-% Define two environment synonyms (#1 and #2) for an environment.
-\def\maketwodispenvdef#1#2#3{%
- \makedispenvdef{#1}{#3}%
- \makedispenvdef{#2}{#3}%
-}
-%
-% @lisp: indented, narrowed, typewriter font;
-% @example: same as @lisp.
-%
-% @smallexample and @smalllisp: use smaller fonts.
-% Originally contributed by Pavel@xerox.
-%
-\maketwodispenvdef{lisp}{example}{%
- \nonfillstart
- \tt\setupmarkupstyle{example}%
- \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
- \gobble % eat return
-}
-% @display/@smalldisplay: same as @lisp except keep current font.
-%
-\makedispenvdef{display}{%
- \nonfillstart
- \gobble
-}
-
-% @format/@smallformat: same as @display except don't narrow margins.
-%
-\makedispenvdef{format}{%
- \let\nonarrowing = t%
- \nonfillstart
- \gobble
-}
-
-% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
-\envdef\flushleft{%
- \let\nonarrowing = t%
- \nonfillstart
- \gobble
-}
-\let\Eflushleft = \afterenvbreak
-
-% @flushright.
-%
-\envdef\flushright{%
- \let\nonarrowing = t%
- \nonfillstart
- \advance\leftskip by 0pt plus 1fill\relax
- \gobble
-}
-\let\Eflushright = \afterenvbreak
-
-
-% @raggedright does more-or-less normal line breaking but no right
-% justification. From plain.tex.
-\envdef\raggedright{%
- \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
-}
-\let\Eraggedright\par
-
-\envdef\raggedleft{%
- \parindent=0pt \leftskip0pt plus2em
- \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
- \hbadness=10000 % Last line will usually be underfull, so turn off
- % badness reporting.
-}
-\let\Eraggedleft\par
-
-\envdef\raggedcenter{%
- \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
- \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
- \hbadness=10000 % Last line will usually be underfull, so turn off
- % badness reporting.
-}
-\let\Eraggedcenter\par
-
-
-% @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins. We keep \parskip nonzero in general, since
-% we're doing normal filling. So, when using \aboveenvbreak and
-% \afterenvbreak, temporarily make \parskip 0.
-%
-\makedispenvdef{quotation}{\quotationstart}
-%
-\def\quotationstart{%
- \indentedblockstart % same as \indentedblock, but increase right margin too.
- \ifx\nonarrowing\relax
- \advance\rightskip by \lispnarrowing
- \fi
- \parsearg\quotationlabel
-}
-
-% We have retained a nonzero parskip for the environment, since we're
-% doing normal filling.
-%
-\def\Equotation{%
- \par
- \ifx\quotationauthor\thisisundefined\else
- % indent a bit.
- \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
- \fi
- {\parskip=0pt \afterenvbreak}%
-}
-\def\Esmallquotation{\Equotation}
-
-% If we're given an argument, typeset it in bold with a colon after.
-\def\quotationlabel#1{%
- \def\temp{#1}%
- \ifx\temp\empty \else
- {\bf #1: }%
- \fi
-}
-
-% @indentedblock is like @quotation, but indents only on the left and
-% has no optional argument.
-%
-\makedispenvdef{indentedblock}{\indentedblockstart}
-%
-\def\indentedblockstart{%
- {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
- \parindent=0pt
- %
- % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
- \ifx\nonarrowing\relax
- \advance\leftskip by \lispnarrowing
- \exdentamount = \lispnarrowing
- \else
- \let\nonarrowing = \relax
- \fi
-}
-
-% Keep a nonzero parskip for the environment, since we're doing normal filling.
-%
-\def\Eindentedblock{%
- \par
- {\parskip=0pt \afterenvbreak}%
-}
-\def\Esmallindentedblock{\Eindentedblock}
-
-
-% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
-% If we want to allow any <char> as delimiter,
-% we need the curly braces so that makeinfo sees the @verb command, eg:
-% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org
-%
-% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook.
-%
-% [Knuth] p.344; only we need to do the other characters Texinfo sets
-% active too. Otherwise, they get lost as the first character on a
-% verbatim line.
-\def\dospecials{%
- \do\ \do\\\do\{\do\}\do\$\do\&%
- \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
- \do\<\do\>\do\|\do\@\do+\do\"%
- % Don't do the quotes -- if we do, @set txicodequoteundirected and
- % @set txicodequotebacktick will not have effect on @verb and
- % @verbatim, and ?` and !` ligatures won't get disabled.
- %\do\`\do\'%
-}
-%
-% [Knuth] p. 380
-\def\uncatcodespecials{%
- \def\do##1{\catcode`##1=\other}\dospecials}
-%
-% Setup for the @verb command.
-%
-% Eight spaces for a tab
-\begingroup
- \catcode`\^^I=\active
- \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
-\endgroup
-%
-\def\setupverb{%
- \tt % easiest (and conventionally used) font for verbatim
- \def\par{\leavevmode\endgraf}%
- \setupmarkupstyle{verb}%
- \tabeightspaces
- % Respect line breaks,
- % print special symbols as themselves, and
- % make each space count
- % must do in this order:
- \obeylines \uncatcodespecials \sepspaces
-}
-
-% Setup for the @verbatim environment
-%
-% Real tab expansion.
-\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
-%
-% We typeset each line of the verbatim in an \hbox, so we can handle
-% tabs. The \global is in case the verbatim line starts with an accent,
-% or some other command that starts with a begin-group. Otherwise, the
-% entire \verbbox would disappear at the corresponding end-group, before
-% it is typeset. Meanwhile, we can't have nested verbatim commands
-% (can we?), so the \global won't be overwriting itself.
-\newbox\verbbox
-\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
-%
-\begingroup
- \catcode`\^^I=\active
- \gdef\tabexpand{%
- \catcode`\^^I=\active
- \def^^I{\leavevmode\egroup
- \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
- \divide\dimen\verbbox by\tabw
- \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
- \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw
- \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
- }%
- }
-\endgroup
-
-% start the verbatim environment.
-\def\setupverbatim{%
- \let\nonarrowing = t%
- \nonfillstart
- \tt % easiest (and conventionally used) font for verbatim
- % The \leavevmode here is for blank lines. Otherwise, we would
- % never \starttabox and the \egroup would end verbatim mode.
- \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
- \tabexpand
- \setupmarkupstyle{verbatim}%
- % Respect line breaks,
- % print special symbols as themselves, and
- % make each space count.
- % Must do in this order:
- \obeylines \uncatcodespecials \sepspaces
- \everypar{\starttabbox}%
-}
-
-% Do the @verb magic: verbatim text is quoted by unique
-% delimiter characters. Before first delimiter expect a
-% right brace, after last delimiter expect closing brace:
-%
-% \def\doverb'{'<char>#1<char>'}'{#1}
-%
-% [Knuth] p. 382; only eat outer {}
-\begingroup
- \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
- \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
-\endgroup
-%
-\def\verb{\begingroup\setupverb\doverb}
-%
-%
-% Do the @verbatim magic: define the macro \doverbatim so that
-% the (first) argument ends when '@end verbatim' is reached, ie:
-%
-% \def\doverbatim#1@end verbatim{#1}
-%
-% For Texinfo it's a lot easier than for LaTeX,
-% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
-% we need not redefine '\', '{' and '}'.
-%
-% Inspired by LaTeX's verbatim command set [latex.ltx]
-%
-\begingroup
- \catcode`\ =\active
- \obeylines %
- % ignore everything up to the first ^^M, that's the newline at the end
- % of the @verbatim input line itself. Otherwise we get an extra blank
- % line in the output.
- \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
- % We really want {...\end verbatim} in the body of the macro, but
- % without the active space; thus we have to use \xdef and \gobble.
-\endgroup
-%
-\envdef\verbatim{%
- \setupverbatim\doverbatim
-}
-\let\Everbatim = \afterenvbreak
-
-
-% @verbatiminclude FILE - insert text of file in verbatim environment.
-%
-\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
-%
-\def\doverbatiminclude#1{%
- {%
- \makevalueexpandable
- \setupverbatim
- \indexnofonts % Allow `@@' and other weird things in file names.
- \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
- \input #1
- \afterenvbreak
- }%
-}
-
-% @copying ... @end copying.
-% Save the text away for @insertcopying later.
-%
-% We save the uninterpreted tokens, rather than creating a box.
-% Saving the text in a box would be much easier, but then all the
-% typesetting commands (@smallbook, font changes, etc.) have to be done
-% beforehand -- and a) we want @copying to be done first in the source
-% file; b) letting users define the frontmatter in as flexible order as
-% possible is very desirable.
-%
-\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
-\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
-%
-\def\insertcopying{%
- \begingroup
- \parindent = 0pt % paragraph indentation looks wrong on title page
- \scanexp\copyingtext
- \endgroup
-}
-
-
-\message{defuns,}
-% @defun etc.
-
-\newskip\defbodyindent \defbodyindent=.4in
-\newskip\defargsindent \defargsindent=50pt
-\newskip\deflastargmargin \deflastargmargin=18pt
-\newcount\defunpenalty
-
-% Start the processing of @deffn:
-\def\startdefun{%
- \ifnum\lastpenalty<10000
- \medbreak
- \defunpenalty=10003 % Will keep this @deffn together with the
- % following @def command, see below.
- \else
- % If there are two @def commands in a row, we'll have a \nobreak,
- % which is there to keep the function description together with its
- % header. But if there's nothing but headers, we need to allow a
- % break somewhere. Check specifically for penalty 10002, inserted
- % by \printdefunline, instead of 10000, since the sectioning
- % commands also insert a nobreak penalty, and we don't want to allow
- % a break between a section heading and a defun.
- %
- % As a further refinement, we avoid "club" headers by signalling
- % with penalty of 10003 after the very first @deffn in the
- % sequence (see above), and penalty of 10002 after any following
- % @def command.
- \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
- %
- % Similarly, after a section heading, do not allow a break.
- % But do insert the glue.
- \medskip % preceded by discardable penalty, so not a breakpoint
- \fi
- %
- \parindent=0in
- \advance\leftskip by \defbodyindent
- \exdentamount=\defbodyindent
-}
-
-\def\dodefunx#1{%
- % First, check whether we are in the right environment:
- \checkenv#1%
- %
- % As above, allow line break if we have multiple x headers in a row.
- % It's not a great place, though.
- \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
- %
- % And now, it's time to reuse the body of the original defun:
- \expandafter\gobbledefun#1%
-}
-\def\gobbledefun#1\startdefun{}
-
-% \printdefunline \deffnheader{text}
-%
-\def\printdefunline#1#2{%
- \begingroup
- % call \deffnheader:
- #1#2 \endheader
- % common ending:
- \interlinepenalty = 10000
- \advance\rightskip by 0pt plus 1fil\relax
- \endgraf
- \nobreak\vskip -\parskip
- \penalty\defunpenalty % signal to \startdefun and \dodefunx
- % Some of the @defun-type tags do not enable magic parentheses,
- % rendering the following check redundant. But we don't optimize.
- \checkparencounts
- \endgroup
-}
-
-\def\Edefun{\endgraf\medbreak}
-
-% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
-% the only thing remaining is to define \deffnheader.
-%
-\def\makedefun#1{%
- \expandafter\let\csname E#1\endcsname = \Edefun
- \edef\temp{\noexpand\domakedefun
- \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
- \temp
-}
-
-% \domakedefun \deffn \deffnx \deffnheader
-%
-% Define \deffn and \deffnx, without parameters.
-% \deffnheader has to be defined explicitly.
-%
-\def\domakedefun#1#2#3{%
- \envdef#1{%
- \startdefun
- \doingtypefnfalse % distinguish typed functions from all else
- \parseargusing\activeparens{\printdefunline#3}%
- }%
- \def#2{\dodefunx#1}%
- \def#3%
-}
-
-\newif\ifdoingtypefn % doing typed function?
-\newif\ifrettypeownline % typeset return type on its own line?
-
-% @deftypefnnewline on|off says whether the return type of typed functions
-% are printed on their own line. This affects @deftypefn, @deftypefun,
-% @deftypeop, and @deftypemethod.
-%
-\parseargdef\deftypefnnewline{%
- \def\temp{#1}%
- \ifx\temp\onword
- \expandafter\let\csname SETtxideftypefnnl\endcsname
- = \empty
- \else\ifx\temp\offword
- \expandafter\let\csname SETtxideftypefnnl\endcsname
- = \relax
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @txideftypefnnl value `\temp',
- must be on|off}%
- \fi\fi
-}
-
-% Untyped functions:
-
-% @deffn category name args
-\makedefun{deffn}{\deffngeneral{}}
-
-% @deffn category class name args
-\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
-
-% \defopon {category on}class name args
-\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
-
-% \deffngeneral {subind}category name args
-%
-\def\deffngeneral#1#2 #3 #4\endheader{%
- % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
- \dosubind{fn}{\code{#3}}{#1}%
- \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
-}
-
-% Typed functions:
-
-% @deftypefn category type name args
-\makedefun{deftypefn}{\deftypefngeneral{}}
-
-% @deftypeop category class type name args
-\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
-
-% \deftypeopon {category on}class type name args
-\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
-
-% \deftypefngeneral {subind}category type name args
-%
-\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
- \dosubind{fn}{\code{#4}}{#1}%
- \doingtypefntrue
- \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
-}
-
-% Typed variables:
-
-% @deftypevr category type var args
-\makedefun{deftypevr}{\deftypecvgeneral{}}
-
-% @deftypecv category class type var args
-\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
-
-% \deftypecvof {category of}class type var args
-\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
-
-% \deftypecvgeneral {subind}category type var args
-%
-\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
- \dosubind{vr}{\code{#4}}{#1}%
- \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
-}
-
-% Untyped variables:
-
-% @defvr category var args
-\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
-
-% @defcv category class var args
-\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
-
-% \defcvof {category of}class var args
-\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
-
-% Types:
-
-% @deftp category name args
-\makedefun{deftp}#1 #2 #3\endheader{%
- \doind{tp}{\code{#2}}%
- \defname{#1}{}{#2}\defunargs{#3\unskip}%
-}
-
-% Remaining @defun-like shortcuts:
-\makedefun{defun}{\deffnheader{\putwordDeffunc} }
-\makedefun{defmac}{\deffnheader{\putwordDefmac} }
-\makedefun{defspec}{\deffnheader{\putwordDefspec} }
-\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
-\makedefun{defvar}{\defvrheader{\putwordDefvar} }
-\makedefun{defopt}{\defvrheader{\putwordDefopt} }
-\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
-\makedefun{defmethod}{\defopon\putwordMethodon}
-\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
-\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
-\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
-
-% \defname, which formats the name of the @def (not the args).
-% #1 is the category, such as "Function".
-% #2 is the return type, if any.
-% #3 is the function name.
-%
-% We are followed by (but not passed) the arguments, if any.
-%
-\def\defname#1#2#3{%
- \par
- % Get the values of \leftskip and \rightskip as they were outside the @def...
- \advance\leftskip by -\defbodyindent
- %
- % Determine if we are typesetting the return type of a typed function
- % on a line by itself.
- \rettypeownlinefalse
- \ifdoingtypefn % doing a typed function specifically?
- % then check user option for putting return type on its own line:
- \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
- \rettypeownlinetrue
- \fi
- \fi
- %
- % How we'll format the category name. Putting it in brackets helps
- % distinguish it from the body text that may end up on the next line
- % just below it.
- \def\temp{#1}%
- \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
- %
- % Figure out line sizes for the paragraph shape. We'll always have at
- % least two.
- \tempnum = 2
- %
- % The first line needs space for \box0; but if \rightskip is nonzero,
- % we need only space for the part of \box0 which exceeds it:
- \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip
- %
- % If doing a return type on its own line, we'll have another line.
- \ifrettypeownline
- \advance\tempnum by 1
- \def\maybeshapeline{0in \hsize}%
- \else
- \def\maybeshapeline{}%
- \fi
- %
- % The continuations:
- \dimen2=\hsize \advance\dimen2 by -\defargsindent
- %
- % The final paragraph shape:
- \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2
- %
- % Put the category name at the right margin.
- \noindent
- \hbox to 0pt{%
- \hfil\box0 \kern-\hsize
- % \hsize has to be shortened this way:
- \kern\leftskip
- % Intentionally do not respect \rightskip, since we need the space.
- }%
- %
- % Allow all lines to be underfull without complaint:
- \tolerance=10000 \hbadness=10000
- \exdentamount=\defbodyindent
- {%
- % defun fonts. We use typewriter by default (used to be bold) because:
- % . we're printing identifiers, they should be in tt in principle.
- % . in languages with many accents, such as Czech or French, it's
- % common to leave accents off identifiers. The result looks ok in
- % tt, but exceedingly strange in rm.
- % . we don't want -- and --- to be treated as ligatures.
- % . this still does not fix the ?` and !` ligatures, but so far no
- % one has made identifiers using them :).
- \df \tt
- \def\temp{#2}% text of the return type
- \ifx\temp\empty\else
- \tclose{\temp}% typeset the return type
- \ifrettypeownline
- % put return type on its own line; prohibit line break following:
- \hfil\vadjust{\nobreak}\break
- \else
- \space % type on same line, so just followed by a space
- \fi
- \fi % no return type
- #3% output function name
- }%
- {\rm\enskip}% hskip 0.5 em of \tenrm
- %
- \boldbrax
- % arguments will be output next, if any.
-}
-
-% Print arguments in slanted roman (not ttsl), inconsistently with using
-% tt for the name. This is because literal text is sometimes needed in
-% the argument list (groff manual), and ttsl and tt are not very
-% distinguishable. Prevent hyphenation at `-' chars.
-%
-\def\defunargs#1{%
- % use sl by default (not ttsl),
- % tt for the names.
- \df \sl \hyphenchar\font=0
- %
- % On the other hand, if an argument has two dashes (for instance), we
- % want a way to get ttsl. We used to recommend @var for that, so
- % leave the code in, but it's strange for @var to lead to typewriter.
- % Nowadays we recommend @code, since the difference between a ttsl hyphen
- % and a tt hyphen is pretty tiny. @code also disables ?` !`.
- \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
- #1%
- \sl\hyphenchar\font=45
-}
-
-% We want ()&[] to print specially on the defun line.
-%
-\def\activeparens{%
- \catcode`\(=\active \catcode`\)=\active
- \catcode`\[=\active \catcode`\]=\active
- \catcode`\&=\active
-}
-
-% Make control sequences which act like normal parenthesis chars.
-\let\lparen = ( \let\rparen = )
-
-% Be sure that we always have a definition for `(', etc. For example,
-% if the fn name has parens in it, \boldbrax will not be in effect yet,
-% so TeX would otherwise complain about undefined control sequence.
-{
- \activeparens
- \global\let(=\lparen \global\let)=\rparen
- \global\let[=\lbrack \global\let]=\rbrack
- \global\let& = \&
-
- \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
- \gdef\magicamp{\let&=\amprm}
-}
-
-\newcount\parencount
-
-% If we encounter &foo, then turn on ()-hacking afterwards
-\newif\ifampseen
-\def\amprm#1 {\ampseentrue{\bf\&#1 }}
-
-\def\parenfont{%
- \ifampseen
- % At the first level, print parens in roman,
- % otherwise use the default font.
- \ifnum \parencount=1 \rm \fi
- \else
- % The \sf parens (in \boldbrax) actually are a little bolder than
- % the contained text. This is especially needed for [ and ] .
- \sf
- \fi
-}
-\def\infirstlevel#1{%
- \ifampseen
- \ifnum\parencount=1
- #1%
- \fi
- \fi
-}
-\def\bfafterword#1 {#1 \bf}
-
-\def\opnr{%
- \global\advance\parencount by 1
- {\parenfont(}%
- \infirstlevel \bfafterword
-}
-\def\clnr{%
- {\parenfont)}%
- \infirstlevel \sl
- \global\advance\parencount by -1
-}
-
-\newcount\brackcount
-\def\lbrb{%
- \global\advance\brackcount by 1
- {\bf[}%
-}
-\def\rbrb{%
- {\bf]}%
- \global\advance\brackcount by -1
-}
-
-\def\checkparencounts{%
- \ifnum\parencount=0 \else \badparencount \fi
- \ifnum\brackcount=0 \else \badbrackcount \fi
-}
-% these should not use \errmessage; the glibc manual, at least, actually
-% has such constructs (when documenting function pointers).
-\def\badparencount{%
- \message{Warning: unbalanced parentheses in @def...}%
- \global\parencount=0
-}
-\def\badbrackcount{%
- \message{Warning: unbalanced square brackets in @def...}%
- \global\brackcount=0
-}
-
-
-\message{macros,}
-% @macro.
-
-% To do this right we need a feature of e-TeX, \scantokens,
-% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\thisisundefined
- \newwrite\macscribble
- \def\scantokens#1{%
- \toks0={#1}%
- \immediate\openout\macscribble=\jobname.tmp
- \immediate\write\macscribble{\the\toks0}%
- \immediate\closeout\macscribble
- \input \jobname.tmp
- }
-\fi
-
-\def\scanmacro#1{\begingroup
- \newlinechar`\^^M
- \let\xeatspaces\eatspaces
- %
- % Undo catcode changes of \startcontents and \doprintindex
- % When called from @insertcopying or (short)caption, we need active
- % backslash to get it printed correctly. Previously, we had
- % \catcode`\\=\other instead. We'll see whether a problem appears
- % with macro expansion. --kasal, 19aug04
- \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
- %
- % ... and for \example:
- \spaceisspace
- %
- % The \empty here causes a following catcode 5 newline to be eaten as
- % part of reading whitespace after a control sequence. It does not
- % eat a catcode 13 newline. There's no good way to handle the two
- % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
- % would then have different behavior). See the Macro Details node in
- % the manual for the workaround we recommend for macros and
- % line-oriented commands.
- %
- \scantokens{#1\empty}%
-\endgroup}
-
-\def\scanexp#1{%
- \edef\temp{\noexpand\scanmacro{#1}}%
- \temp
-}
-
-\newcount\paramno % Count of parameters
-\newtoks\macname % Macro name
-\newif\ifrecursive % Is it recursive?
-
-% List of all defined macros in the form
-% \definedummyword\macro1\definedummyword\macro2...
-% Currently is also contains all @aliases; the list can be split
-% if there is a need.
-\def\macrolist{}
-
-% Add the macro to \macrolist
-\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
-\def\addtomacrolistxxx#1{%
- \toks0 = \expandafter{\macrolist\definedummyword#1}%
- \xdef\macrolist{\the\toks0}%
-}
-
-% Utility routines.
-% This does \let #1 = #2, with \csnames; that is,
-% \let \csname#1\endcsname = \csname#2\endcsname
-% (except of course we have to play expansion games).
-%
-\def\cslet#1#2{%
- \expandafter\let
- \csname#1\expandafter\endcsname
- \csname#2\endcsname
-}
-
-% Trim leading and trailing spaces off a string.
-% Concepts from aro-bend problem 15 (see CTAN).
-{\catcode`\@=11
-\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
-\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
-\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
-\def\unbrace#1{#1}
-\unbrace{\gdef\trim@@@ #1 } #2@{#1}
-}
-
-% Trim a single trailing ^^M off a string.
-{\catcode`\^^M=\other \catcode`\Q=3%
-\gdef\eatcr #1{\eatcra #1Q^^MQ}%
-\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
-\gdef\eatcrb#1Q#2Q{#1}%
-}
-
-% Macro bodies are absorbed as an argument in a context where
-% all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \
-% to recognize macro arguments; this is the job of \mbodybackslash.
-%
-% Non-ASCII encodings make 8-bit characters active, so un-activate
-% them to avoid their expansion. Must do this non-globally, to
-% confine the change to the current group.
-%
-% It's necessary to have hard CRs when the macro is executed. This is
-% done by making ^^M (\endlinechar) catcode 12 when reading the macro
-% body, and then making it the \newlinechar in \scanmacro.
-%
-\def\scanctxt{% used as subroutine
- \catcode`\"=\other
- \catcode`\+=\other
- \catcode`\<=\other
- \catcode`\>=\other
- \catcode`\@=\other
- \catcode`\^=\other
- \catcode`\_=\other
- \catcode`\|=\other
- \catcode`\~=\other
- \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
-}
-
-\def\scanargctxt{% used for copying and captions, not macros.
- \scanctxt
- \catcode`\\=\other
- \catcode`\^^M=\other
-}
-
-\def\macrobodyctxt{% used for @macro definitions
- \scanctxt
- \catcode`\{=\other
- \catcode`\}=\other
- \catcode`\^^M=\other
- \usembodybackslash
-}
-
-\def\macroargctxt{% used when scanning invocations
- \scanctxt
- \catcode`\\=0
-}
-% why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes"
-% for the single characters \ { }. Thus, we end up with the "commands"
-% that would be written @\ @{ @} in a Texinfo document.
-%
-% We already have @{ and @}. For @\, we define it here, and only for
-% this purpose, to produce a typewriter backslash (so, the @\ that we
-% define for @math can't be used with @macro calls):
-%
-\def\\{\normalbackslash}%
-%
-% We would like to do this for \, too, since that is what makeinfo does.
-% But it is not possible, because Texinfo already has a command @, for a
-% cedilla accent. Documents must use @comma{} instead.
-%
-% \anythingelse will almost certainly be an error of some kind.
-
-
-% \mbodybackslash is the definition of \ in @macro bodies.
-% It maps \foo\ => \csname macarg.foo\endcsname => #N
-% where N is the macro parameter number.
-% We define \csname macarg.\endcsname to be \realbackslash, so
-% \\ in macro replacement text gets you a backslash.
-%
-{\catcode`@=0 @catcode`@\=@active
- @gdef@usembodybackslash{@let\=@mbodybackslash}
- @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
-}
-\expandafter\def\csname macarg.\endcsname{\realbackslash}
-
-\def\margbackslash#1{\char`\#1 }
-
-\def\macro{\recursivefalse\parsearg\macroxxx}
-\def\rmacro{\recursivetrue\parsearg\macroxxx}
-
-\def\macroxxx#1{%
- \getargs{#1}% now \macname is the macname and \argl the arglist
- \ifx\argl\empty % no arguments
- \paramno=0\relax
- \else
- \expandafter\parsemargdef \argl;%
- \if\paramno>256\relax
- \ifx\eTeXversion\thisisundefined
- \errhelp = \EMsimple
- \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
- \fi
- \fi
- \fi
- \if1\csname ismacro.\the\macname\endcsname
- \message{Warning: redefining \the\macname}%
- \else
- \expandafter\ifx\csname \the\macname\endcsname \relax
- \else \errmessage{Macro name \the\macname\space already defined}\fi
- \global\cslet{macsave.\the\macname}{\the\macname}%
- \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
- \addtomacrolist{\the\macname}%
- \fi
- \begingroup \macrobodyctxt
- \ifrecursive \expandafter\parsermacbody
- \else \expandafter\parsemacbody
- \fi}
-
-\parseargdef\unmacro{%
- \if1\csname ismacro.#1\endcsname
- \global\cslet{#1}{macsave.#1}%
- \global\expandafter\let \csname ismacro.#1\endcsname=0%
- % Remove the macro name from \macrolist:
- \begingroup
- \expandafter\let\csname#1\endcsname \relax
- \let\definedummyword\unmacrodo
- \xdef\macrolist{\macrolist}%
- \endgroup
- \else
- \errmessage{Macro #1 not defined}%
- \fi
-}
-
-% Called by \do from \dounmacro on each macro. The idea is to omit any
-% macro definitions that have been changed to \relax.
-%
-\def\unmacrodo#1{%
- \ifx #1\relax
- % remove this
- \else
- \noexpand\definedummyword \noexpand#1%
- \fi
-}
-
-% This makes use of the obscure feature that if the last token of a
-% <parameter list> is #, then the preceding argument is delimited by
-% an opening brace, and that opening brace is not consumed.
-\def\getargs#1{\getargsxxx#1{}}
-\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname#1 #2\relax{\macname={#1}}
-\def\getmacargs#1{\def\argl{#1}}
-
-% For macro processing make @ a letter so that we can make Texinfo private macro names.
-\edef\texiatcatcode{\the\catcode`\@}
-\catcode `@=11\relax
-
-% Parse the optional {params} list. Set up \paramno and \paramlist
-% so \defmacro knows what to do. Define \macarg.BLAH for each BLAH
-% in the params list to some hook where the argument si to be expanded. If
-% there are less than 10 arguments that hook is to be replaced by ##N where N
-% is the position in that list, that is to say the macro arguments are to be
-% defined `a la TeX in the macro body.
-%
-% That gets used by \mbodybackslash (above).
-%
-% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX: let \hash be something
-% unexpandable, insert that wherever you need a #, and then redefine
-% it to # just before using the token list produced.
-%
-% The same technique is used to protect \eatspaces till just before
-% the macro is used.
-%
-% If there are 10 or more arguments, a different technique is used, where the
-% hook remains in the body, and when macro is to be expanded the body is
-% processed again to replace the arguments.
-%
-% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
-% argument N value and then \edef the body (nothing else will expand because of
-% the catcode regime underwhich the body was input).
-%
-% If you compile with TeX (not eTeX), and you have macros with 10 or more
-% arguments, you need that no macro has more than 256 arguments, otherwise an
-% error is produced.
-\def\parsemargdef#1;{%
- \paramno=0\def\paramlist{}%
- \let\hash\relax
- \let\xeatspaces\relax
- \parsemargdefxxx#1,;,%
- % In case that there are 10 or more arguments we parse again the arguments
- % list to set new definitions for the \macarg.BLAH macros corresponding to
- % each BLAH argument. It was anyhow needed to parse already once this list
- % in order to count the arguments, and as macros with at most 9 arguments
- % are by far more frequent than macro with 10 or more arguments, defining
- % twice the \macarg.BLAH macros does not cost too much processing power.
- \ifnum\paramno<10\relax\else
- \paramno0\relax
- \parsemmanyargdef@@#1,;,% 10 or more arguments
- \fi
-}
-\def\parsemargdefxxx#1,{%
- \if#1;\let\next=\relax
- \else \let\next=\parsemargdefxxx
- \advance\paramno by 1
- \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
- {\xeatspaces{\hash\the\paramno}}%
- \edef\paramlist{\paramlist\hash\the\paramno,}%
- \fi\next}
-
-\def\parsemmanyargdef@@#1,{%
- \if#1;\let\next=\relax
- \else
- \let\next=\parsemmanyargdef@@
- \edef\tempb{\eatspaces{#1}}%
- \expandafter\def\expandafter\tempa
- \expandafter{\csname macarg.\tempb\endcsname}%
- % Note that we need some extra \noexpand\noexpand, this is because we
- % don't want \the to be expanded in the \parsermacbody as it uses an
- % \xdef .
- \expandafter\edef\tempa
- {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
- \advance\paramno by 1\relax
- \fi\next}
-
-% These two commands read recursive and nonrecursive macro bodies.
-% (They're different since rec and nonrec macros end differently.)
-%
-
-\catcode `\@\texiatcatcode
-\long\def\parsemacbody#1@end macro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\long\def\parsermacbody#1@end rmacro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\catcode `\@=11\relax
-
-\let\endargs@\relax
-\let\nil@\relax
-\def\nilm@{\nil@}%
-\long\def\nillm@{\nil@}%
-
-% This macro is expanded during the Texinfo macro expansion, not during its
-% definition. It gets all the arguments values and assigns them to macros
-% macarg.ARGNAME
-%
-% #1 is the macro name
-% #2 is the list of argument names
-% #3 is the list of argument values
-\def\getargvals@#1#2#3{%
- \def\macargdeflist@{}%
- \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
- \def\paramlist{#2,\nil@}%
- \def\macroname{#1}%
- \begingroup
- \macroargctxt
- \def\argvaluelist{#3,\nil@}%
- \def\@tempa{#3}%
- \ifx\@tempa\empty
- \setemptyargvalues@
- \else
- \getargvals@@
- \fi
-}
-
-%
-\def\getargvals@@{%
- \ifx\paramlist\nilm@
- % Some sanity check needed here that \argvaluelist is also empty.
- \ifx\argvaluelist\nillm@
- \else
- \errhelp = \EMsimple
- \errmessage{Too many arguments in macro `\macroname'!}%
- \fi
- \let\next\macargexpandinbody@
- \else
- \ifx\argvaluelist\nillm@
- % No more arguments values passed to macro. Set remaining named-arg
- % macros to empty.
- \let\next\setemptyargvalues@
- \else
- % pop current arg name into \@tempb
- \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
- \expandafter\@tempa\expandafter{\paramlist}%
- % pop current argument value into \@tempc
- \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
- \expandafter\@tempa\expandafter{\argvaluelist}%
- % Here \@tempb is the current arg name and \@tempc is the current arg value.
- % First place the new argument macro definition into \@tempd
- \expandafter\macname\expandafter{\@tempc}%
- \expandafter\let\csname macarg.\@tempb\endcsname\relax
- \expandafter\def\expandafter\@tempe\expandafter{%
- \csname macarg.\@tempb\endcsname}%
- \edef\@tempd{\long\def\@tempe{\the\macname}}%
- \push@\@tempd\macargdeflist@
- \let\next\getargvals@@
- \fi
- \fi
- \next
-}
-
-\def\push@#1#2{%
- \expandafter\expandafter\expandafter\def
- \expandafter\expandafter\expandafter#2%
- \expandafter\expandafter\expandafter{%
- \expandafter#1#2}%
-}
-
-% Replace arguments by their values in the macro body, and place the result
-% in macro \@tempa
-\def\macvalstoargs@{%
- % To do this we use the property that token registers that are \the'ed
- % within an \edef expand only once. So we are going to place all argument
- % values into respective token registers.
- %
- % First we save the token context, and initialize argument numbering.
- \begingroup
- \paramno0\relax
- % Then, for each argument number #N, we place the corresponding argument
- % value into a new token list register \toks#N
- \expandafter\putargsintokens@\saveparamlist@,;,%
- % Then, we expand the body so that argument are replaced by their
- % values. The trick for values not to be expanded themselves is that they
- % are within tokens and that tokens expand only once in an \edef .
- \edef\@tempc{\csname mac.\macroname .body\endcsname}%
- % Now we restore the token stack pointer to free the token list registers
- % which we have used, but we make sure that expanded body is saved after
- % group.
- \expandafter
- \endgroup
- \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
- }
-
-\def\macargexpandinbody@{%
- %% Define the named-macro outside of this group and then close this group.
- \expandafter
- \endgroup
- \macargdeflist@
- % First the replace in body the macro arguments by their values, the result
- % is in \@tempa .
- \macvalstoargs@
- % Then we point at the \norecurse or \gobble (for recursive) macro value
- % with \@tempb .
- \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
- % Depending on whether it is recursive or not, we need some tailing
- % \egroup .
- \ifx\@tempb\gobble
- \let\@tempc\relax
- \else
- \let\@tempc\egroup
- \fi
- % And now we do the real job:
- \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
- \@tempd
-}
-
-\def\putargsintokens@#1,{%
- \if#1;\let\next\relax
- \else
- \let\next\putargsintokens@
- % First we allocate the new token list register, and give it a temporary
- % alias \@tempb .
- \toksdef\@tempb\the\paramno
- % Then we place the argument value into that token list register.
- \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
- \expandafter\@tempb\expandafter{\@tempa}%
- \advance\paramno by 1\relax
- \fi
- \next
-}
-
-% Save the token stack pointer into macro #1
-\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
-% Restore the token stack pointer from number in macro #1
-\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
-% newtoks that can be used non \outer .
-\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
-
-% Tailing missing arguments are set to empty
-\def\setemptyargvalues@{%
- \ifx\paramlist\nilm@
- \let\next\macargexpandinbody@
- \else
- \expandafter\setemptyargvaluesparser@\paramlist\endargs@
- \let\next\setemptyargvalues@
- \fi
- \next
-}
-
-\def\setemptyargvaluesparser@#1,#2\endargs@{%
- \expandafter\def\expandafter\@tempa\expandafter{%
- \expandafter\def\csname macarg.#1\endcsname{}}%
- \push@\@tempa\macargdeflist@
- \def\paramlist{#2}%
-}
-
-% #1 is the element target macro
-% #2 is the list macro
-% #3,#4\endargs@ is the list value
-\def\pop@#1#2#3,#4\endargs@{%
- \def#1{#3}%
- \def#2{#4}%
-}
-\long\def\longpop@#1#2#3,#4\endargs@{%
- \long\def#1{#3}%
- \long\def#2{#4}%
-}
-
-% This defines a Texinfo @macro. There are eight cases: recursive and
-% nonrecursive macros of zero, one, up to nine, and many arguments.
-% Much magic with \expandafter here.
-% \xdef is used so that macro definitions will survive the file
-% they're defined in; @include reads the file inside a group.
-%
-\def\defmacro{%
- \let\hash=##% convert placeholders to macro parameter chars
- \ifrecursive
- \ifcase\paramno
- % 0
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\scanmacro{\temp}}%
- \or % 1
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\braceorline
- \expandafter\noexpand\csname\the\macname xxx\endcsname}%
- \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
- \egroup\noexpand\scanmacro{\temp}}%
- \else
- \ifnum\paramno<10\relax % at most 9
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{\egroup\noexpand\scanmacro{\temp}}%
- \else % 10 or more
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\getargvals@{\the\macname}{\argl}%
- }%
- \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
- \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
- \fi
- \fi
- \else
- \ifcase\paramno
- % 0
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
- \or % 1
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\braceorline
- \expandafter\noexpand\csname\the\macname xxx\endcsname}%
- \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
- \else % at most 9
- \ifnum\paramno<10\relax
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \expandafter\noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
- \else % 10 or more:
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\getargvals@{\the\macname}{\argl}%
- }%
- \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
- \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
- \fi
- \fi
- \fi}
-
-\catcode `\@\texiatcatcode\relax
-
-\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
-
-% \braceorline decides whether the next nonwhitespace character is a
-% {. If so it reads up to the closing }, if not, it reads the whole
-% line. Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg).
-%
-\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
-\def\braceorlinexxx{%
- \ifx\nchar\bgroup\else
- \expandafter\parsearg
- \fi \macnamexxx}
-
-
-% @alias.
-% We need some trickery to remove the optional spaces around the equal
-% sign. Make them active and then expand them all to nothing.
-%
-\def\alias{\parseargusing\obeyspaces\aliasxxx}
-\def\aliasxxx #1{\aliasyyy#1\relax}
-\def\aliasyyy #1=#2\relax{%
- {%
- \expandafter\let\obeyedspace=\empty
- \addtomacrolist{#1}%
- \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
- }%
- \next
-}
-
-
-\message{cross references,}
-
-\newwrite\auxfile
-\newif\ifhavexrefs % True if xref values are known.
-\newif\ifwarnedxrefs % True if we warned once that they aren't known.
-
-% @inforef is relatively simple.
-\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{%
- \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
- node \samp{\ignorespaces#1{}}}
-
-% @node's only job in TeX is to define \lastnode, which is used in
-% cross-references. The @node line might or might not have commas, and
-% might or might not have spaces before the first comma, like:
-% @node foo , bar , ...
-% We don't want such trailing spaces in the node name.
-%
-\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
-%
-% also remove a trailing comma, in case of something like this:
-% @node Help-Cross, , , Cross-refs
-\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
-\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
-
-\let\nwnode=\node
-\let\lastnode=\empty
-
-% Write a cross-reference definition for the current node. #1 is the
-% type (Ynumbered, Yappendix, Ynothing).
-%
-\def\donoderef#1{%
- \ifx\lastnode\empty\else
- \setref{\lastnode}{#1}%
- \global\let\lastnode=\empty
- \fi
-}
-
-% @anchor{NAME} -- define xref target at arbitrary point.
-%
-\newcount\savesfregister
-%
-\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
-\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
-\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
-
-% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
-% anchor), which consists of three parts:
-% 1) NAME-title - the current sectioning name taken from \lastsection,
-% or the anchor name.
-% 2) NAME-snt - section number and type, passed as the SNT arg, or
-% empty for anchors.
-% 3) NAME-pg - the page number.
-%
-% This is called from \donoderef, \anchor, and \dofloat. In the case of
-% floats, there is an additional part, which is not written here:
-% 4) NAME-lof - the text as it should appear in a @listoffloats.
-%
-\def\setref#1#2{%
- \pdfmkdest{#1}%
- \iflinks
- {%
- \atdummies % preserve commands, but don't expand them
- \edef\writexrdef##1##2{%
- \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
- ##1}{##2}}% these are parameters of \writexrdef
- }%
- \toks0 = \expandafter{\lastsection}%
- \immediate \writexrdef{title}{\the\toks0 }%
- \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
- \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
- }%
- \fi
-}
-
-% @xrefautosectiontitle on|off says whether @section(ing) names are used
-% automatically in xrefs, if the third arg is not explicitly specified.
-% This was provided as a "secret" @set xref-automatic-section-title
-% variable, now it's official.
-%
-\parseargdef\xrefautomaticsectiontitle{%
- \def\temp{#1}%
- \ifx\temp\onword
- \expandafter\let\csname SETxref-automatic-section-title\endcsname
- = \empty
- \else\ifx\temp\offword
- \expandafter\let\csname SETxref-automatic-section-title\endcsname
- = \relax
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
- must be on|off}%
- \fi\fi
-}
-
-%
-% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
-% the node name, #2 the name of the Info cross-reference, #3 the printed
-% node name, #4 the name of the Info file, #5 the name of the printed
-% manual. All but the node name can be omitted.
-%
-\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
-\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
-\def\ref#1{\xrefX[#1,,,,,,,]}
-%
-\newbox\toprefbox
-\newbox\printedrefnamebox
-\newbox\infofilenamebox
-\newbox\printedmanualbox
-%
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
- \unsepspaces
- %
- % Get args without leading/trailing spaces.
- \def\printedrefname{\ignorespaces #3}%
- \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
- %
- \def\infofilename{\ignorespaces #4}%
- \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
- %
- \def\printedmanual{\ignorespaces #5}%
- \setbox\printedmanualbox = \hbox{\printedmanual\unskip}%
- %
- % If the printed reference name (arg #3) was not explicitly given in
- % the @xref, figure out what we want to use.
- \ifdim \wd\printedrefnamebox = 0pt
- % No printed node name was explicitly given.
- \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
- % Not auto section-title: use node name inside the square brackets.
- \def\printedrefname{\ignorespaces #1}%
- \else
- % Auto section-title: use chapter/section title inside
- % the square brackets if we have it.
- \ifdim \wd\printedmanualbox > 0pt
- % It is in another manual, so we don't have it; use node name.
- \def\printedrefname{\ignorespaces #1}%
- \else
- \ifhavexrefs
- % We (should) know the real title if we have the xref values.
- \def\printedrefname{\refx{#1-title}{}}%
- \else
- % Otherwise just copy the Info node name.
- \def\printedrefname{\ignorespaces #1}%
- \fi%
- \fi
- \fi
- \fi
- %
- % Make link in pdf output.
- \ifpdf
- {\indexnofonts
- \turnoffactive
- \makevalueexpandable
- % This expands tokens, so do it after making catcode changes, so _
- % etc. don't get their TeX definitions. This ignores all spaces in
- % #4, including (wrongly) those in the middle of the filename.
- \getfilename{#4}%
- %
- % This (wrongly) does not take account of leading or trailing
- % spaces in #1, which should be ignored.
- \edef\pdfxrefdest{#1}%
- \ifx\pdfxrefdest\empty
- \def\pdfxrefdest{Top}% no empty targets
- \else
- \txiescapepdf\pdfxrefdest % escape PDF special chars
- \fi
- %
- \leavevmode
- \startlink attr{/Border [0 0 0]}%
- \ifnum\filenamelength>0
- goto file{\the\filename.pdf} name{\pdfxrefdest}%
- \else
- goto name{\pdfmkpgn{\pdfxrefdest}}%
- \fi
- }%
- \setcolor{\linkcolor}%
- \fi
- %
- % Float references are printed completely differently: "Figure 1.2"
- % instead of "[somenode], p.3". We distinguish them by the
- % LABEL-title being set to a magic string.
- {%
- % Have to otherify everything special to allow the \csname to
- % include an _ in the xref name, etc.
- \indexnofonts
- \turnoffactive
- \expandafter\global\expandafter\let\expandafter\Xthisreftitle
- \csname XR#1-title\endcsname
- }%
- \iffloat\Xthisreftitle
- % If the user specified the print name (third arg) to the ref,
- % print it instead of our usual "Figure 1.2".
- \ifdim\wd\printedrefnamebox = 0pt
- \refx{#1-snt}{}%
- \else
- \printedrefname
- \fi
- %
- % If the user also gave the printed manual name (fifth arg), append
- % "in MANUALNAME".
- \ifdim \wd\printedmanualbox > 0pt
- \space \putwordin{} \cite{\printedmanual}%
- \fi
- \else
- % node/anchor (non-float) references.
- %
- % If we use \unhbox to print the node names, TeX does not insert
- % empty discretionaries after hyphens, which means that it will not
- % find a line break at a hyphen in a node names. Since some manuals
- % are best written with fairly long node names, containing hyphens,
- % this is a loss. Therefore, we give the text of the node name
- % again, so it is as if TeX is seeing it for the first time.
- %
- \ifdim \wd\printedmanualbox > 0pt
- % Cross-manual reference with a printed manual name.
- %
- \crossmanualxref{\cite{\printedmanual\unskip}}%
- %
- \else\ifdim \wd\infofilenamebox > 0pt
- % Cross-manual reference with only an info filename (arg 4), no
- % printed manual name (arg 5). This is essentially the same as
- % the case above; we output the filename, since we have nothing else.
- %
- \crossmanualxref{\code{\infofilename\unskip}}%
- %
- \else
- % Reference within this manual.
- %
- % _ (for example) has to be the character _ for the purposes of the
- % control sequence corresponding to the node, but it has to expand
- % into the usual \leavevmode...\vrule stuff for purposes of
- % printing. So we \turnoffactive for the \refx-snt, back on for the
- % printing, back off for the \refx-pg.
- {\turnoffactive
- % Only output a following space if the -snt ref is nonempty; for
- % @unnumbered and @anchor, it won't be.
- \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
- \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
- }%
- % output the `[mynode]' via the macro below so it can be overridden.
- \xrefprintnodename\printedrefname
- %
- % But we always want a comma and a space:
- ,\space
- %
- % output the `page 3'.
- \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
- \fi\fi
- \fi
- \endlink
-\endgroup}
-
-% Output a cross-manual xref to #1. Used just above (twice).
-%
-% Only include the text "Section ``foo'' in" if the foo is neither
-% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply
-% "see The Foo Manual", the idea being to refer to the whole manual.
-%
-% But, this being TeX, we can't easily compare our node name against the
-% string "Top" while ignoring the possible spaces before and after in
-% the input. By adding the arbitrary 7sp below, we make it much less
-% likely that a real node name would have the same width as "Top" (e.g.,
-% in a monospaced font). Hopefully it will never happen in practice.
-%
-% For the same basic reason, we retypeset the "Top" at every
-% reference, since the current font is indeterminate.
-%
-\def\crossmanualxref#1{%
- \setbox\toprefbox = \hbox{Top\kern7sp}%
- \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
- \ifdim \wd2 > 7sp % nonempty?
- \ifdim \wd2 = \wd\toprefbox \else % same as Top?
- \putwordSection{} ``\printedrefname'' \putwordin{}\space
- \fi
- \fi
- #1%
-}
-
-% This macro is called from \xrefX for the `[nodename]' part of xref
-% output. It's a separate macro only so it can be changed more easily,
-% since square brackets don't work well in some documents. Particularly
-% one that Bob is working on :).
-%
-\def\xrefprintnodename#1{[#1]}
-
-% Things referred to by \setref.
-%
-\def\Ynothing{}
-\def\Yomitfromtoc{}
-\def\Ynumbered{%
- \ifnum\secno=0
- \putwordChapter@tie \the\chapno
- \else \ifnum\subsecno=0
- \putwordSection@tie \the\chapno.\the\secno
- \else \ifnum\subsubsecno=0
- \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
- \else
- \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
- \fi\fi\fi
-}
-\def\Yappendix{%
- \ifnum\secno=0
- \putwordAppendix@tie @char\the\appendixno{}%
- \else \ifnum\subsecno=0
- \putwordSection@tie @char\the\appendixno.\the\secno
- \else \ifnum\subsubsecno=0
- \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
- \else
- \putwordSection@tie
- @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
- \fi\fi\fi
-}
-
-% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
-% If its value is nonempty, SUFFIX is output afterward.
-%
-\def\refx#1#2{%
- {%
- \indexnofonts
- \otherbackslash
- \expandafter\global\expandafter\let\expandafter\thisrefX
- \csname XR#1\endcsname
- }%
- \ifx\thisrefX\relax
- % If not defined, say something at least.
- \angleleft un\-de\-fined\angleright
- \iflinks
- \ifhavexrefs
- {\toks0 = {#1}% avoid expansion of possibly-complex value
- \message{\linenumber Undefined cross reference `\the\toks0'.}}%
- \else
- \ifwarnedxrefs\else
- \global\warnedxrefstrue
- \message{Cross reference values unknown; you must run TeX again.}%
- \fi
- \fi
- \fi
- \else
- % It's defined, so just use it.
- \thisrefX
- \fi
- #2% Output the suffix in any case.
-}
-
-% This is the macro invoked by entries in the aux file. Usually it's
-% just a \def (we prepend XR to the control sequence name to avoid
-% collisions). But if this is a float type, we have more work to do.
-%
-\def\xrdef#1#2{%
- {% The node name might contain 8-bit characters, which in our current
- % implementation are changed to commands like @'e. Don't let these
- % mess up the control sequence name.
- \indexnofonts
- \turnoffactive
- \xdef\safexrefname{#1}%
- }%
- %
- \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
- %
- % Was that xref control sequence that we just defined for a float?
- \expandafter\iffloat\csname XR\safexrefname\endcsname
- % it was a float, and we have the (safe) float type in \iffloattype.
- \expandafter\let\expandafter\floatlist
- \csname floatlist\iffloattype\endcsname
- %
- % Is this the first time we've seen this float type?
- \expandafter\ifx\floatlist\relax
- \toks0 = {\do}% yes, so just \do
- \else
- % had it before, so preserve previous elements in list.
- \toks0 = \expandafter{\floatlist\do}%
- \fi
- %
- % Remember this xref in the control sequence \floatlistFLOATTYPE,
- % for later use in \listoffloats.
- \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
- {\safexrefname}}%
- \fi
-}
-
-% Read the last existing aux file, if any. No error if none exists.
-%
-\def\tryauxfile{%
- \openin 1 \jobname.aux
- \ifeof 1 \else
- \readdatafile{aux}%
- \global\havexrefstrue
- \fi
- \closein 1
-}
-
-\def\setupdatafile{%
- \catcode`\^^@=\other
- \catcode`\^^A=\other
- \catcode`\^^B=\other
- \catcode`\^^C=\other
- \catcode`\^^D=\other
- \catcode`\^^E=\other
- \catcode`\^^F=\other
- \catcode`\^^G=\other
- \catcode`\^^H=\other
- \catcode`\^^K=\other
- \catcode`\^^L=\other
- \catcode`\^^N=\other
- \catcode`\^^P=\other
- \catcode`\^^Q=\other
- \catcode`\^^R=\other
- \catcode`\^^S=\other
- \catcode`\^^T=\other
- \catcode`\^^U=\other
- \catcode`\^^V=\other
- \catcode`\^^W=\other
- \catcode`\^^X=\other
- \catcode`\^^Z=\other
- \catcode`\^^[=\other
- \catcode`\^^\=\other
- \catcode`\^^]=\other
- \catcode`\^^^=\other
- \catcode`\^^_=\other
- % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
- % in xref tags, i.e., node names. But since ^^e4 notation isn't
- % supported in the main text, it doesn't seem desirable. Furthermore,
- % that is not enough: for node names that actually contain a ^
- % character, we would end up writing a line like this: 'xrdef {'hat
- % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
- % argument, and \hat is not an expandable control sequence. It could
- % all be worked out, but why? Either we support ^^ or we don't.
- %
- % The other change necessary for this was to define \auxhat:
- % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
- % and then to call \auxhat in \setq.
- %
- \catcode`\^=\other
- %
- % Special characters. Should be turned off anyway, but...
- \catcode`\~=\other
- \catcode`\[=\other
- \catcode`\]=\other
- \catcode`\"=\other
- \catcode`\_=\other
- \catcode`\|=\other
- \catcode`\<=\other
- \catcode`\>=\other
- \catcode`\$=\other
- \catcode`\#=\other
- \catcode`\&=\other
- \catcode`\%=\other
- \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
- %
- % This is to support \ in node names and titles, since the \
- % characters end up in a \csname. It's easier than
- % leaving it active and making its active definition an actual \
- % character. What I don't understand is why it works in the *value*
- % of the xrdef. Seems like it should be a catcode12 \, and that
- % should not typeset properly. But it works, so I'm moving on for
- % now. --karl, 15jan04.
- \catcode`\\=\other
- %
- % Make the characters 128-255 be printing characters.
- {%
- \count1=128
- \def\loop{%
- \catcode\count1=\other
- \advance\count1 by 1
- \ifnum \count1<256 \loop \fi
- }%
- }%
- %
- % @ is our escape character in .aux files, and we need braces.
- \catcode`\{=1
- \catcode`\}=2
- \catcode`\@=0
-}
-
-\def\readdatafile#1{%
-\begingroup
- \setupdatafile
- \input\jobname.#1
-\endgroup}
-
-
-\message{insertions,}
-% including footnotes.
-
-\newcount \footnoteno
-
-% The trailing space in the following definition for supereject is
-% vital for proper filling; pages come out unaligned when you do a
-% pagealignmacro call if that space before the closing brace is
-% removed. (Generally, numeric constants should always be followed by a
-% space to prevent strange expansion errors.)
-\def\supereject{\par\penalty -20000\footnoteno =0 }
-
-% @footnotestyle is meaningful for Info output only.
-\let\footnotestyle=\comment
-
-{\catcode `\@=11
-%
-% Auto-number footnotes. Otherwise like plain.
-\gdef\footnote{%
- \let\indent=\ptexindent
- \let\noindent=\ptexnoindent
- \global\advance\footnoteno by \@ne
- \edef\thisfootno{$^{\the\footnoteno}$}%
- %
- % In case the footnote comes at the end of a sentence, preserve the
- % extra spacing after we do the footnote number.
- \let\@sf\empty
- \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
- %
- % Remove inadvertent blank space before typesetting the footnote number.
- \unskip
- \thisfootno\@sf
- \dofootnote
-}%
-
-% Don't bother with the trickery in plain.tex to not require the
-% footnote text as a parameter. Our footnotes don't need to be so general.
-%
-% Oh yes, they do; otherwise, @ifset (and anything else that uses
-% \parseargline) fails inside footnotes because the tokens are fixed when
-% the footnote is read. --karl, 16nov96.
-%
-\gdef\dofootnote{%
- \insert\footins\bgroup
- % We want to typeset this text as a normal paragraph, even if the
- % footnote reference occurs in (for example) a display environment.
- % So reset some parameters.
- \hsize=\pagewidth
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\ht\strutbox % top baseline for broken footnotes
- \splitmaxdepth\dp\strutbox
- \floatingpenalty\@MM
- \leftskip\z@skip
- \rightskip\z@skip
- \spaceskip\z@skip
- \xspaceskip\z@skip
- \parindent\defaultparindent
- %
- \smallfonts \rm
- %
- % Because we use hanging indentation in footnotes, a @noindent appears
- % to exdent this text, so make it be a no-op. makeinfo does not use
- % hanging indentation so @noindent can still be needed within footnote
- % text after an @example or the like (not that this is good style).
- \let\noindent = \relax
- %
- % Hang the footnote text off the number. Use \everypar in case the
- % footnote extends for more than one paragraph.
- \everypar = {\hang}%
- \textindent{\thisfootno}%
- %
- % Don't crash into the line above the footnote text. Since this
- % expands into a box, it must come within the paragraph, lest it
- % provide a place where TeX can split the footnote.
- \footstrut
- %
- % Invoke rest of plain TeX footnote routine.
- \futurelet\next\fo@t
-}
-}%end \catcode `\@=11
-
-% In case a @footnote appears in a vbox, save the footnote text and create
-% the real \insert just after the vbox finished. Otherwise, the insertion
-% would be lost.
-% Similarly, if a @footnote appears inside an alignment, save the footnote
-% text to a box and make the \insert when a row of the table is finished.
-% And the same can be done for other insert classes. --kasal, 16nov03.
-
-% Replace the \insert primitive by a cheating macro.
-% Deeper inside, just make sure that the saved insertions are not spilled
-% out prematurely.
-%
-\def\startsavinginserts{%
- \ifx \insert\ptexinsert
- \let\insert\saveinsert
- \else
- \let\checkinserts\relax
- \fi
-}
-
-% This \insert replacement works for both \insert\footins{foo} and
-% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
-%
-\def\saveinsert#1{%
- \edef\next{\noexpand\savetobox \makeSAVEname#1}%
- \afterassignment\next
- % swallow the left brace
- \let\temp =
-}
-\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
-\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
-
-\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
-
-\def\placesaveins#1{%
- \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
- {\box#1}%
-}
-
-% eat @SAVE -- beware, all of them have catcode \other:
-{
- \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-)
- \gdef\gobblesave @SAVE{}
-}
-
-% initialization:
-\def\newsaveins #1{%
- \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
- \next
-}
-\def\newsaveinsX #1{%
- \csname newbox\endcsname #1%
- \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
- \checksaveins #1}%
-}
-
-% initialize:
-\let\checkinserts\empty
-\newsaveins\footins
-\newsaveins\margin
-
-
-% @image. We use the macros from epsf.tex to support this.
-% If epsf.tex is not installed and @image is used, we complain.
-%
-% Check for and read epsf.tex up front. If we read it only at @image
-% time, we might be inside a group, and then its definitions would get
-% undone and the next image would fail.
-\openin 1 = epsf.tex
-\ifeof 1 \else
- % Do not bother showing banner with epsf.tex v2.7k (available in
- % doc/epsf.tex and on ctan).
- \def\epsfannounce{\toks0 = }%
- \input epsf.tex
-\fi
-\closein 1
-%
-% We will only complain once about lack of epsf.tex.
-\newif\ifwarnednoepsf
-\newhelp\noepsfhelp{epsf.tex must be installed for images to
- work. It is also included in the Texinfo distribution, or you can get
- it from ftp://tug.org/tex/epsf.tex.}
-%
-\def\image#1{%
- \ifx\epsfbox\thisisundefined
- \ifwarnednoepsf \else
- \errhelp = \noepsfhelp
- \errmessage{epsf.tex not found, images will be ignored}%
- \global\warnednoepsftrue
- \fi
- \else
- \imagexxx #1,,,,,\finish
- \fi
-}
-%
-% Arguments to @image:
-% #1 is (mandatory) image filename; we tack on .eps extension.
-% #2 is (optional) width, #3 is (optional) height.
-% #4 is (ignored optional) html alt text.
-% #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing stuff.
-\newif\ifimagevmode
-\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
- \catcode`\^^M = 5 % in case we're inside an example
- \normalturnoffactive % allow _ et al. in names
- % If the image is by itself, center it.
- \ifvmode
- \imagevmodetrue
- \else \ifx\centersub\centerV
- % for @center @image, we need a vbox so we can have our vertical space
- \imagevmodetrue
- \vbox\bgroup % vbox has better behavior than vtop herev
- \fi\fi
- %
- \ifimagevmode
- \nobreak\medskip
- % Usually we'll have text after the image which will insert
- % \parskip glue, so insert it here too to equalize the space
- % above and below.
- \nobreak\vskip\parskip
- \nobreak
- \fi
- %
- % Leave vertical mode so that indentation from an enclosing
- % environment such as @quotation is respected.
- % However, if we're at the top level, we don't want the
- % normal paragraph indentation.
- % On the other hand, if we are in the case of @center @image, we don't
- % want to start a paragraph, which will create a hsize-width box and
- % eradicate the centering.
- \ifx\centersub\centerV\else \noindent \fi
- %
- % Output the image.
- \ifpdf
- \dopdfimage{#1}{#2}{#3}%
- \else
- % \epsfbox itself resets \epsf?size at each figure.
- \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
- \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
- \epsfbox{#1.eps}%
- \fi
- %
- \ifimagevmode
- \medskip % space after a standalone image
- \fi
- \ifx\centersub\centerV \egroup \fi
-\endgroup}
-
-
-% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
-% etc. We don't actually implement floating yet, we always include the
-% float "here". But it seemed the best name for the future.
-%
-\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
-
-% There may be a space before second and/or third parameter; delete it.
-\def\eatcommaspace#1, {#1,}
-
-% #1 is the optional FLOATTYPE, the text label for this float, typically
-% "Figure", "Table", "Example", etc. Can't contain commas. If omitted,
-% this float will not be numbered and cannot be referred to.
-%
-% #2 is the optional xref label. Also must be present for the float to
-% be referable.
-%
-% #3 is the optional positioning argument; for now, it is ignored. It
-% will somehow specify the positions allowed to float to (here, top, bottom).
-%
-% We keep a separate counter for each FLOATTYPE, which we reset at each
-% chapter-level command.
-\let\resetallfloatnos=\empty
-%
-\def\dofloat#1,#2,#3,#4\finish{%
- \let\thiscaption=\empty
- \let\thisshortcaption=\empty
- %
- % don't lose footnotes inside @float.
- %
- % BEWARE: when the floats start float, we have to issue warning whenever an
- % insert appears inside a float which could possibly float. --kasal, 26may04
- %
- \startsavinginserts
- %
- % We can't be used inside a paragraph.
- \par
- %
- \vtop\bgroup
- \def\floattype{#1}%
- \def\floatlabel{#2}%
- \def\floatloc{#3}% we do nothing with this yet.
- %
- \ifx\floattype\empty
- \let\safefloattype=\empty
- \else
- {%
- % the floattype might have accents or other special characters,
- % but we need to use it in a control sequence name.
- \indexnofonts
- \turnoffactive
- \xdef\safefloattype{\floattype}%
- }%
- \fi
- %
- % If label is given but no type, we handle that as the empty type.
- \ifx\floatlabel\empty \else
- % We want each FLOATTYPE to be numbered separately (Figure 1,
- % Table 1, Figure 2, ...). (And if no label, no number.)
- %
- \expandafter\getfloatno\csname\safefloattype floatno\endcsname
- \global\advance\floatno by 1
- %
- {%
- % This magic value for \lastsection is output by \setref as the
- % XREFLABEL-title value. \xrefX uses it to distinguish float
- % labels (which have a completely different output format) from
- % node and anchor labels. And \xrdef uses it to construct the
- % lists of floats.
- %
- \edef\lastsection{\floatmagic=\safefloattype}%
- \setref{\floatlabel}{Yfloat}%
- }%
- \fi
- %
- % start with \parskip glue, I guess.
- \vskip\parskip
- %
- % Don't suppress indentation if a float happens to start a section.
- \restorefirstparagraphindent
-}
-
-% we have these possibilities:
-% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
-% @float Foo,lbl & no caption: Foo 1.1
-% @float Foo & @caption{Cap}: Foo: Cap
-% @float Foo & no caption: Foo
-% @float ,lbl & Caption{Cap}: 1.1: Cap
-% @float ,lbl & no caption: 1.1
-% @float & @caption{Cap}: Cap
-% @float & no caption:
-%
-\def\Efloat{%
- \let\floatident = \empty
- %
- % In all cases, if we have a float type, it comes first.
- \ifx\floattype\empty \else \def\floatident{\floattype}\fi
- %
- % If we have an xref label, the number comes next.
- \ifx\floatlabel\empty \else
- \ifx\floattype\empty \else % if also had float type, need tie first.
- \appendtomacro\floatident{\tie}%
- \fi
- % the number.
- \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
- \fi
- %
- % Start the printed caption with what we've constructed in
- % \floatident, but keep it separate; we need \floatident again.
- \let\captionline = \floatident
- %
- \ifx\thiscaption\empty \else
- \ifx\floatident\empty \else
- \appendtomacro\captionline{: }% had ident, so need a colon between
- \fi
- %
- % caption text.
- \appendtomacro\captionline{\scanexp\thiscaption}%
- \fi
- %
- % If we have anything to print, print it, with space before.
- % Eventually this needs to become an \insert.
- \ifx\captionline\empty \else
- \vskip.5\parskip
- \captionline
- %
- % Space below caption.
- \vskip\parskip
- \fi
- %
- % If have an xref label, write the list of floats info. Do this
- % after the caption, to avoid chance of it being a breakpoint.
- \ifx\floatlabel\empty \else
- % Write the text that goes in the lof to the aux file as
- % \floatlabel-lof. Besides \floatident, we include the short
- % caption if specified, else the full caption if specified, else nothing.
- {%
- \atdummies
- %
- % since we read the caption text in the macro world, where ^^M
- % is turned into a normal character, we have to scan it back, so
- % we don't write the literal three characters "^^M" into the aux file.
- \scanexp{%
- \xdef\noexpand\gtemp{%
- \ifx\thisshortcaption\empty
- \thiscaption
- \else
- \thisshortcaption
- \fi
- }%
- }%
- \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
- \ifx\gtemp\empty \else : \gtemp \fi}}%
- }%
- \fi
- \egroup % end of \vtop
- %
- % place the captured inserts
- %
- % BEWARE: when the floats start floating, we have to issue warning
- % whenever an insert appears inside a float which could possibly
- % float. --kasal, 26may04
- %
- \checkinserts
-}
-
-% Append the tokens #2 to the definition of macro #1, not expanding either.
-%
-\def\appendtomacro#1#2{%
- \expandafter\def\expandafter#1\expandafter{#1#2}%
-}
-
-% @caption, @shortcaption
-%
-\def\caption{\docaption\thiscaption}
-\def\shortcaption{\docaption\thisshortcaption}
-\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
-\def\defcaption#1#2{\egroup \def#1{#2}}
-
-% The parameter is the control sequence identifying the counter we are
-% going to use. Create it if it doesn't exist and assign it to \floatno.
-\def\getfloatno#1{%
- \ifx#1\relax
- % Haven't seen this figure type before.
- \csname newcount\endcsname #1%
- %
- % Remember to reset this floatno at the next chap.
- \expandafter\gdef\expandafter\resetallfloatnos
- \expandafter{\resetallfloatnos #1=0 }%
- \fi
- \let\floatno#1%
-}
-
-% \setref calls this to get the XREFLABEL-snt value. We want an @xref
-% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we
-% first read the @float command.
-%
-\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
-
-% Magic string used for the XREFLABEL-title value, so \xrefX can
-% distinguish floats from other xref types.
-\def\floatmagic{!!float!!}
-
-% #1 is the control sequence we are passed; we expand into a conditional
-% which is true if #1 represents a float ref. That is, the magic
-% \lastsection value which we \setref above.
-%
-\def\iffloat#1{\expandafter\doiffloat#1==\finish}
-%
-% #1 is (maybe) the \floatmagic string. If so, #2 will be the
-% (safe) float type for this float. We set \iffloattype to #2.
-%
-\def\doiffloat#1=#2=#3\finish{%
- \def\temp{#1}%
- \def\iffloattype{#2}%
- \ifx\temp\floatmagic
-}
-
-% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
-%
-\parseargdef\listoffloats{%
- \def\floattype{#1}% floattype
- {%
- % the floattype might have accents or other special characters,
- % but we need to use it in a control sequence name.
- \indexnofonts
- \turnoffactive
- \xdef\safefloattype{\floattype}%
- }%
- %
- % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
- \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
- \ifhavexrefs
- % if the user said @listoffloats foo but never @float foo.
- \message{\linenumber No `\safefloattype' floats to list.}%
- \fi
- \else
- \begingroup
- \leftskip=\tocindent % indent these entries like a toc
- \let\do=\listoffloatsdo
- \csname floatlist\safefloattype\endcsname
- \endgroup
- \fi
-}
-
-% This is called on each entry in a list of floats. We're passed the
-% xref label, in the form LABEL-title, which is how we save it in the
-% aux file. We strip off the -title and look up \XRLABEL-lof, which
-% has the text we're supposed to typeset here.
-%
-% Figures without xref labels will not be included in the list (since
-% they won't appear in the aux file).
-%
-\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
-\def\listoffloatsdoentry#1-title\finish{{%
- % Can't fully expand XR#1-lof because it can contain anything. Just
- % pass the control sequence. On the other hand, XR#1-pg is just the
- % page number, and we want to fully expand that so we can get a link
- % in pdf output.
- \toksA = \expandafter{\csname XR#1-lof\endcsname}%
- %
- % use the same \entry macro we use to generate the TOC and index.
- \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
- \writeentry
-}}
-
-
-\message{localization,}
-
-% For single-language documents, @documentlanguage is usually given very
-% early, just after @documentencoding. Single argument is the language
-% (de) or locale (de_DE) abbreviation.
-%
-{
- \catcode`\_ = \active
- \globaldefs=1
-\parseargdef\documentlanguage{\begingroup
- \let_=\normalunderscore % normal _ character for filenames
- \tex % read txi-??.tex file in plain TeX.
- % Read the file by the name they passed if it exists.
- \openin 1 txi-#1.tex
- \ifeof 1
- \documentlanguagetrywithoutunderscore{#1_\finish}%
- \else
- \globaldefs = 1 % everything in the txi-LL files needs to persist
- \input txi-#1.tex
- \fi
- \closein 1
- \endgroup % end raw TeX
-\endgroup}
-%
-% If they passed de_DE, and txi-de_DE.tex doesn't exist,
-% try txi-de.tex.
-%
-\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
- \openin 1 txi-#1.tex
- \ifeof 1
- \errhelp = \nolanghelp
- \errmessage{Cannot read language file txi-#1.tex}%
- \else
- \globaldefs = 1 % everything in the txi-LL files needs to persist
- \input txi-#1.tex
- \fi
- \closein 1
-}
-}% end of special _ catcode
-%
-\newhelp\nolanghelp{The given language definition file cannot be found or
-is empty. Maybe you need to install it? Putting it in the current
-directory should work if nowhere else does.}
-
-% This macro is called from txi-??.tex files; the first argument is the
-% \language name to set (without the "\lang@" prefix), the second and
-% third args are \{left,right}hyphenmin.
-%
-% The language names to pass are determined when the format is built.
-% See the etex.log file created at that time, e.g.,
-% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
-%
-% With TeX Live 2008, etex now includes hyphenation patterns for all
-% available languages. This means we can support hyphenation in
-% Texinfo, at least to some extent. (This still doesn't solve the
-% accented characters problem.)
-%
-\catcode`@=11
-\def\txisetlanguage#1#2#3{%
- % do not set the language if the name is undefined in the current TeX.
- \expandafter\ifx\csname lang@#1\endcsname \relax
- \message{no patterns for #1}%
- \else
- \global\language = \csname lang@#1\endcsname
- \fi
- % but there is no harm in adjusting the hyphenmin values regardless.
- \global\lefthyphenmin = #2\relax
- \global\righthyphenmin = #3\relax
-}
-
-% Helpers for encodings.
-% Set the catcode of characters 128 through 255 to the specified number.
-%
-\def\setnonasciicharscatcode#1{%
- \count255=128
- \loop\ifnum\count255<256
- \global\catcode\count255=#1\relax
- \advance\count255 by 1
- \repeat
-}
-
-\def\setnonasciicharscatcodenonglobal#1{%
- \count255=128
- \loop\ifnum\count255<256
- \catcode\count255=#1\relax
- \advance\count255 by 1
- \repeat
-}
-
-% @documentencoding sets the definition of non-ASCII characters
-% according to the specified encoding.
-%
-\parseargdef\documentencoding{%
- % Encoding being declared for the document.
- \def\declaredencoding{\csname #1.enc\endcsname}%
- %
- % Supported encodings: names converted to tokens in order to be able
- % to compare them with \ifx.
- \def\ascii{\csname US-ASCII.enc\endcsname}%
- \def\latnine{\csname ISO-8859-15.enc\endcsname}%
- \def\latone{\csname ISO-8859-1.enc\endcsname}%
- \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
- \def\utfeight{\csname UTF-8.enc\endcsname}%
- %
- \ifx \declaredencoding \ascii
- \asciichardefs
- %
- \else \ifx \declaredencoding \lattwo
- \setnonasciicharscatcode\active
- \lattwochardefs
- %
- \else \ifx \declaredencoding \latone
- \setnonasciicharscatcode\active
- \latonechardefs
- %
- \else \ifx \declaredencoding \latnine
- \setnonasciicharscatcode\active
- \latninechardefs
- %
- \else \ifx \declaredencoding \utfeight
- \setnonasciicharscatcode\active
- \utfeightchardefs
- %
- \else
- \message{Unknown document encoding #1, ignoring.}%
- %
- \fi % utfeight
- \fi % latnine
- \fi % latone
- \fi % lattwo
- \fi % ascii
-}
-
-% A message to be logged when using a character that isn't available
-% the default font encoding (OT1).
-%
-\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
-
-% Take account of \c (plain) vs. \, (Texinfo) difference.
-\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
-
-% First, make active non-ASCII characters in order for them to be
-% correctly categorized when TeX reads the replacement text of
-% macros containing the character definitions.
-\setnonasciicharscatcode\active
-%
-% Latin1 (ISO-8859-1) character definitions.
-\def\latonechardefs{%
- \gdef^^a0{\tie}
- \gdef^^a1{\exclamdown}
- \gdef^^a2{\missingcharmsg{CENT SIGN}}
- \gdef^^a3{{\pounds}}
- \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
- \gdef^^a5{\missingcharmsg{YEN SIGN}}
- \gdef^^a6{\missingcharmsg{BROKEN BAR}}
- \gdef^^a7{\S}
- \gdef^^a8{\"{}}
- \gdef^^a9{\copyright}
- \gdef^^aa{\ordf}
- \gdef^^ab{\guillemetleft}
- \gdef^^ac{$\lnot$}
- \gdef^^ad{\-}
- \gdef^^ae{\registeredsymbol}
- \gdef^^af{\={}}
- %
- \gdef^^b0{\textdegree}
- \gdef^^b1{$\pm$}
- \gdef^^b2{$^2$}
- \gdef^^b3{$^3$}
- \gdef^^b4{\'{}}
- \gdef^^b5{$\mu$}
- \gdef^^b6{\P}
- %
- \gdef^^b7{$^.$}
- \gdef^^b8{\cedilla\ }
- \gdef^^b9{$^1$}
- \gdef^^ba{\ordm}
- %
- \gdef^^bb{\guillemetright}
- \gdef^^bc{$1\over4$}
- \gdef^^bd{$1\over2$}
- \gdef^^be{$3\over4$}
- \gdef^^bf{\questiondown}
- %
- \gdef^^c0{\`A}
- \gdef^^c1{\'A}
- \gdef^^c2{\^A}
- \gdef^^c3{\~A}
- \gdef^^c4{\"A}
- \gdef^^c5{\ringaccent A}
- \gdef^^c6{\AE}
- \gdef^^c7{\cedilla C}
- \gdef^^c8{\`E}
- \gdef^^c9{\'E}
- \gdef^^ca{\^E}
- \gdef^^cb{\"E}
- \gdef^^cc{\`I}
- \gdef^^cd{\'I}
- \gdef^^ce{\^I}
- \gdef^^cf{\"I}
- %
- \gdef^^d0{\DH}
- \gdef^^d1{\~N}
- \gdef^^d2{\`O}
- \gdef^^d3{\'O}
- \gdef^^d4{\^O}
- \gdef^^d5{\~O}
- \gdef^^d6{\"O}
- \gdef^^d7{$\times$}
- \gdef^^d8{\O}
- \gdef^^d9{\`U}
- \gdef^^da{\'U}
- \gdef^^db{\^U}
- \gdef^^dc{\"U}
- \gdef^^dd{\'Y}
- \gdef^^de{\TH}
- \gdef^^df{\ss}
- %
- \gdef^^e0{\`a}
- \gdef^^e1{\'a}
- \gdef^^e2{\^a}
- \gdef^^e3{\~a}
- \gdef^^e4{\"a}
- \gdef^^e5{\ringaccent a}
- \gdef^^e6{\ae}
- \gdef^^e7{\cedilla c}
- \gdef^^e8{\`e}
- \gdef^^e9{\'e}
- \gdef^^ea{\^e}
- \gdef^^eb{\"e}
- \gdef^^ec{\`{\dotless i}}
- \gdef^^ed{\'{\dotless i}}
- \gdef^^ee{\^{\dotless i}}
- \gdef^^ef{\"{\dotless i}}
- %
- \gdef^^f0{\dh}
- \gdef^^f1{\~n}
- \gdef^^f2{\`o}
- \gdef^^f3{\'o}
- \gdef^^f4{\^o}
- \gdef^^f5{\~o}
- \gdef^^f6{\"o}
- \gdef^^f7{$\div$}
- \gdef^^f8{\o}
- \gdef^^f9{\`u}
- \gdef^^fa{\'u}
- \gdef^^fb{\^u}
- \gdef^^fc{\"u}
- \gdef^^fd{\'y}
- \gdef^^fe{\th}
- \gdef^^ff{\"y}
-}
-
-% Latin9 (ISO-8859-15) encoding character definitions.
-\def\latninechardefs{%
- % Encoding is almost identical to Latin1.
- \latonechardefs
- %
- \gdef^^a4{\euro}
- \gdef^^a6{\v S}
- \gdef^^a8{\v s}
- \gdef^^b4{\v Z}
- \gdef^^b8{\v z}
- \gdef^^bc{\OE}
- \gdef^^bd{\oe}
- \gdef^^be{\"Y}
-}
-
-% Latin2 (ISO-8859-2) character definitions.
-\def\lattwochardefs{%
- \gdef^^a0{\tie}
- \gdef^^a1{\ogonek{A}}
- \gdef^^a2{\u{}}
- \gdef^^a3{\L}
- \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
- \gdef^^a5{\v L}
- \gdef^^a6{\'S}
- \gdef^^a7{\S}
- \gdef^^a8{\"{}}
- \gdef^^a9{\v S}
- \gdef^^aa{\cedilla S}
- \gdef^^ab{\v T}
- \gdef^^ac{\'Z}
- \gdef^^ad{\-}
- \gdef^^ae{\v Z}
- \gdef^^af{\dotaccent Z}
- %
- \gdef^^b0{\textdegree}
- \gdef^^b1{\ogonek{a}}
- \gdef^^b2{\ogonek{ }}
- \gdef^^b3{\l}
- \gdef^^b4{\'{}}
- \gdef^^b5{\v l}
- \gdef^^b6{\'s}
- \gdef^^b7{\v{}}
- \gdef^^b8{\cedilla\ }
- \gdef^^b9{\v s}
- \gdef^^ba{\cedilla s}
- \gdef^^bb{\v t}
- \gdef^^bc{\'z}
- \gdef^^bd{\H{}}
- \gdef^^be{\v z}
- \gdef^^bf{\dotaccent z}
- %
- \gdef^^c0{\'R}
- \gdef^^c1{\'A}
- \gdef^^c2{\^A}
- \gdef^^c3{\u A}
- \gdef^^c4{\"A}
- \gdef^^c5{\'L}
- \gdef^^c6{\'C}
- \gdef^^c7{\cedilla C}
- \gdef^^c8{\v C}
- \gdef^^c9{\'E}
- \gdef^^ca{\ogonek{E}}
- \gdef^^cb{\"E}
- \gdef^^cc{\v E}
- \gdef^^cd{\'I}
- \gdef^^ce{\^I}
- \gdef^^cf{\v D}
- %
- \gdef^^d0{\DH}
- \gdef^^d1{\'N}
- \gdef^^d2{\v N}
- \gdef^^d3{\'O}
- \gdef^^d4{\^O}
- \gdef^^d5{\H O}
- \gdef^^d6{\"O}
- \gdef^^d7{$\times$}
- \gdef^^d8{\v R}
- \gdef^^d9{\ringaccent U}
- \gdef^^da{\'U}
- \gdef^^db{\H U}
- \gdef^^dc{\"U}
- \gdef^^dd{\'Y}
- \gdef^^de{\cedilla T}
- \gdef^^df{\ss}
- %
- \gdef^^e0{\'r}
- \gdef^^e1{\'a}
- \gdef^^e2{\^a}
- \gdef^^e3{\u a}
- \gdef^^e4{\"a}
- \gdef^^e5{\'l}
- \gdef^^e6{\'c}
- \gdef^^e7{\cedilla c}
- \gdef^^e8{\v c}
- \gdef^^e9{\'e}
- \gdef^^ea{\ogonek{e}}
- \gdef^^eb{\"e}
- \gdef^^ec{\v e}
- \gdef^^ed{\'{\dotless{i}}}
- \gdef^^ee{\^{\dotless{i}}}
- \gdef^^ef{\v d}
- %
- \gdef^^f0{\dh}
- \gdef^^f1{\'n}
- \gdef^^f2{\v n}
- \gdef^^f3{\'o}
- \gdef^^f4{\^o}
- \gdef^^f5{\H o}
- \gdef^^f6{\"o}
- \gdef^^f7{$\div$}
- \gdef^^f8{\v r}
- \gdef^^f9{\ringaccent u}
- \gdef^^fa{\'u}
- \gdef^^fb{\H u}
- \gdef^^fc{\"u}
- \gdef^^fd{\'y}
- \gdef^^fe{\cedilla t}
- \gdef^^ff{\dotaccent{}}
-}
-
-% UTF-8 character definitions.
-%
-% This code to support UTF-8 is based on LaTeX's utf8.def, with some
-% changes for Texinfo conventions. It is included here under the GPL by
-% permission from Frank Mittelbach and the LaTeX team.
-%
-\newcount\countUTFx
-\newcount\countUTFy
-\newcount\countUTFz
-
-\gdef\UTFviiiTwoOctets#1#2{\expandafter
- \UTFviiiDefined\csname u8:#1\string #2\endcsname}
-%
-\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
- \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
-%
-\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
- \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
-
-\gdef\UTFviiiDefined#1{%
- \ifx #1\relax
- \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
- \else
- \expandafter #1%
- \fi
-}
-
-\begingroup
- \catcode`\~13
- \catcode`\"12
-
- \def\UTFviiiLoop{%
- \global\catcode\countUTFx\active
- \uccode`\~\countUTFx
- \uppercase\expandafter{\UTFviiiTmp}%
- \advance\countUTFx by 1
- \ifnum\countUTFx < \countUTFy
- \expandafter\UTFviiiLoop
- \fi}
-
- \countUTFx = "C2
- \countUTFy = "E0
- \def\UTFviiiTmp{%
- \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
- \UTFviiiLoop
-
- \countUTFx = "E0
- \countUTFy = "F0
- \def\UTFviiiTmp{%
- \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
- \UTFviiiLoop
-
- \countUTFx = "F0
- \countUTFy = "F4
- \def\UTFviiiTmp{%
- \xdef~{\noexpand\UTFviiiFourOctets\string~}}
- \UTFviiiLoop
-\endgroup
-
-\begingroup
- \catcode`\"=12
- \catcode`\<=12
- \catcode`\.=12
- \catcode`\,=12
- \catcode`\;=12
- \catcode`\!=12
- \catcode`\~=13
-
- \gdef\DeclareUnicodeCharacter#1#2{%
- \countUTFz = "#1\relax
- %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
- \begingroup
- \parseXMLCharref
- \def\UTFviiiTwoOctets##1##2{%
- \csname u8:##1\string ##2\endcsname}%
- \def\UTFviiiThreeOctets##1##2##3{%
- \csname u8:##1\string ##2\string ##3\endcsname}%
- \def\UTFviiiFourOctets##1##2##3##4{%
- \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
- \expandafter\expandafter\expandafter\expandafter
- \expandafter\expandafter\expandafter
- \gdef\UTFviiiTmp{#2}%
- \endgroup}
-
- \gdef\parseXMLCharref{%
- \ifnum\countUTFz < "A0\relax
- \errhelp = \EMsimple
- \errmessage{Cannot define Unicode char value < 00A0}%
- \else\ifnum\countUTFz < "800\relax
- \parseUTFviiiA,%
- \parseUTFviiiB C\UTFviiiTwoOctets.,%
- \else\ifnum\countUTFz < "10000\relax
- \parseUTFviiiA;%
- \parseUTFviiiA,%
- \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
- \else
- \parseUTFviiiA;%
- \parseUTFviiiA,%
- \parseUTFviiiA!%
- \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
- \fi\fi\fi
- }
-
- \gdef\parseUTFviiiA#1{%
- \countUTFx = \countUTFz
- \divide\countUTFz by 64
- \countUTFy = \countUTFz
- \multiply\countUTFz by 64
- \advance\countUTFx by -\countUTFz
- \advance\countUTFx by 128
- \uccode `#1\countUTFx
- \countUTFz = \countUTFy}
-
- \gdef\parseUTFviiiB#1#2#3#4{%
- \advance\countUTFz by "#10\relax
- \uccode `#3\countUTFz
- \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
-\endgroup
-
-\def\utfeightchardefs{%
- \DeclareUnicodeCharacter{00A0}{\tie}
- \DeclareUnicodeCharacter{00A1}{\exclamdown}
- \DeclareUnicodeCharacter{00A3}{\pounds}
- \DeclareUnicodeCharacter{00A8}{\"{ }}
- \DeclareUnicodeCharacter{00A9}{\copyright}
- \DeclareUnicodeCharacter{00AA}{\ordf}
- \DeclareUnicodeCharacter{00AB}{\guillemetleft}
- \DeclareUnicodeCharacter{00AD}{\-}
- \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
- \DeclareUnicodeCharacter{00AF}{\={ }}
-
- \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
- \DeclareUnicodeCharacter{00B4}{\'{ }}
- \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
- \DeclareUnicodeCharacter{00BA}{\ordm}
- \DeclareUnicodeCharacter{00BB}{\guillemetright}
- \DeclareUnicodeCharacter{00BF}{\questiondown}
-
- \DeclareUnicodeCharacter{00C0}{\`A}
- \DeclareUnicodeCharacter{00C1}{\'A}
- \DeclareUnicodeCharacter{00C2}{\^A}
- \DeclareUnicodeCharacter{00C3}{\~A}
- \DeclareUnicodeCharacter{00C4}{\"A}
- \DeclareUnicodeCharacter{00C5}{\AA}
- \DeclareUnicodeCharacter{00C6}{\AE}
- \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
- \DeclareUnicodeCharacter{00C8}{\`E}
- \DeclareUnicodeCharacter{00C9}{\'E}
- \DeclareUnicodeCharacter{00CA}{\^E}
- \DeclareUnicodeCharacter{00CB}{\"E}
- \DeclareUnicodeCharacter{00CC}{\`I}
- \DeclareUnicodeCharacter{00CD}{\'I}
- \DeclareUnicodeCharacter{00CE}{\^I}
- \DeclareUnicodeCharacter{00CF}{\"I}
-
- \DeclareUnicodeCharacter{00D0}{\DH}
- \DeclareUnicodeCharacter{00D1}{\~N}
- \DeclareUnicodeCharacter{00D2}{\`O}
- \DeclareUnicodeCharacter{00D3}{\'O}
- \DeclareUnicodeCharacter{00D4}{\^O}
- \DeclareUnicodeCharacter{00D5}{\~O}
- \DeclareUnicodeCharacter{00D6}{\"O}
- \DeclareUnicodeCharacter{00D8}{\O}
- \DeclareUnicodeCharacter{00D9}{\`U}
- \DeclareUnicodeCharacter{00DA}{\'U}
- \DeclareUnicodeCharacter{00DB}{\^U}
- \DeclareUnicodeCharacter{00DC}{\"U}
- \DeclareUnicodeCharacter{00DD}{\'Y}
- \DeclareUnicodeCharacter{00DE}{\TH}
- \DeclareUnicodeCharacter{00DF}{\ss}
-
- \DeclareUnicodeCharacter{00E0}{\`a}
- \DeclareUnicodeCharacter{00E1}{\'a}
- \DeclareUnicodeCharacter{00E2}{\^a}
- \DeclareUnicodeCharacter{00E3}{\~a}
- \DeclareUnicodeCharacter{00E4}{\"a}
- \DeclareUnicodeCharacter{00E5}{\aa}
- \DeclareUnicodeCharacter{00E6}{\ae}
- \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
- \DeclareUnicodeCharacter{00E8}{\`e}
- \DeclareUnicodeCharacter{00E9}{\'e}
- \DeclareUnicodeCharacter{00EA}{\^e}
- \DeclareUnicodeCharacter{00EB}{\"e}
- \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
- \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
- \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
- \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
-
- \DeclareUnicodeCharacter{00F0}{\dh}
- \DeclareUnicodeCharacter{00F1}{\~n}
- \DeclareUnicodeCharacter{00F2}{\`o}
- \DeclareUnicodeCharacter{00F3}{\'o}
- \DeclareUnicodeCharacter{00F4}{\^o}
- \DeclareUnicodeCharacter{00F5}{\~o}
- \DeclareUnicodeCharacter{00F6}{\"o}
- \DeclareUnicodeCharacter{00F8}{\o}
- \DeclareUnicodeCharacter{00F9}{\`u}
- \DeclareUnicodeCharacter{00FA}{\'u}
- \DeclareUnicodeCharacter{00FB}{\^u}
- \DeclareUnicodeCharacter{00FC}{\"u}
- \DeclareUnicodeCharacter{00FD}{\'y}
- \DeclareUnicodeCharacter{00FE}{\th}
- \DeclareUnicodeCharacter{00FF}{\"y}
-
- \DeclareUnicodeCharacter{0100}{\=A}
- \DeclareUnicodeCharacter{0101}{\=a}
- \DeclareUnicodeCharacter{0102}{\u{A}}
- \DeclareUnicodeCharacter{0103}{\u{a}}
- \DeclareUnicodeCharacter{0104}{\ogonek{A}}
- \DeclareUnicodeCharacter{0105}{\ogonek{a}}
- \DeclareUnicodeCharacter{0106}{\'C}
- \DeclareUnicodeCharacter{0107}{\'c}
- \DeclareUnicodeCharacter{0108}{\^C}
- \DeclareUnicodeCharacter{0109}{\^c}
- \DeclareUnicodeCharacter{0118}{\ogonek{E}}
- \DeclareUnicodeCharacter{0119}{\ogonek{e}}
- \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
- \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
- \DeclareUnicodeCharacter{010C}{\v{C}}
- \DeclareUnicodeCharacter{010D}{\v{c}}
- \DeclareUnicodeCharacter{010E}{\v{D}}
-
- \DeclareUnicodeCharacter{0112}{\=E}
- \DeclareUnicodeCharacter{0113}{\=e}
- \DeclareUnicodeCharacter{0114}{\u{E}}
- \DeclareUnicodeCharacter{0115}{\u{e}}
- \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
- \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
- \DeclareUnicodeCharacter{011A}{\v{E}}
- \DeclareUnicodeCharacter{011B}{\v{e}}
- \DeclareUnicodeCharacter{011C}{\^G}
- \DeclareUnicodeCharacter{011D}{\^g}
- \DeclareUnicodeCharacter{011E}{\u{G}}
- \DeclareUnicodeCharacter{011F}{\u{g}}
-
- \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
- \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
- \DeclareUnicodeCharacter{0124}{\^H}
- \DeclareUnicodeCharacter{0125}{\^h}
- \DeclareUnicodeCharacter{0128}{\~I}
- \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
- \DeclareUnicodeCharacter{012A}{\=I}
- \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
- \DeclareUnicodeCharacter{012C}{\u{I}}
- \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
-
- \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
- \DeclareUnicodeCharacter{0131}{\dotless{i}}
- \DeclareUnicodeCharacter{0132}{IJ}
- \DeclareUnicodeCharacter{0133}{ij}
- \DeclareUnicodeCharacter{0134}{\^J}
- \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
- \DeclareUnicodeCharacter{0139}{\'L}
- \DeclareUnicodeCharacter{013A}{\'l}
-
- \DeclareUnicodeCharacter{0141}{\L}
- \DeclareUnicodeCharacter{0142}{\l}
- \DeclareUnicodeCharacter{0143}{\'N}
- \DeclareUnicodeCharacter{0144}{\'n}
- \DeclareUnicodeCharacter{0147}{\v{N}}
- \DeclareUnicodeCharacter{0148}{\v{n}}
- \DeclareUnicodeCharacter{014C}{\=O}
- \DeclareUnicodeCharacter{014D}{\=o}
- \DeclareUnicodeCharacter{014E}{\u{O}}
- \DeclareUnicodeCharacter{014F}{\u{o}}
-
- \DeclareUnicodeCharacter{0150}{\H{O}}
- \DeclareUnicodeCharacter{0151}{\H{o}}
- \DeclareUnicodeCharacter{0152}{\OE}
- \DeclareUnicodeCharacter{0153}{\oe}
- \DeclareUnicodeCharacter{0154}{\'R}
- \DeclareUnicodeCharacter{0155}{\'r}
- \DeclareUnicodeCharacter{0158}{\v{R}}
- \DeclareUnicodeCharacter{0159}{\v{r}}
- \DeclareUnicodeCharacter{015A}{\'S}
- \DeclareUnicodeCharacter{015B}{\'s}
- \DeclareUnicodeCharacter{015C}{\^S}
- \DeclareUnicodeCharacter{015D}{\^s}
- \DeclareUnicodeCharacter{015E}{\cedilla{S}}
- \DeclareUnicodeCharacter{015F}{\cedilla{s}}
-
- \DeclareUnicodeCharacter{0160}{\v{S}}
- \DeclareUnicodeCharacter{0161}{\v{s}}
- \DeclareUnicodeCharacter{0162}{\cedilla{t}}
- \DeclareUnicodeCharacter{0163}{\cedilla{T}}
- \DeclareUnicodeCharacter{0164}{\v{T}}
-
- \DeclareUnicodeCharacter{0168}{\~U}
- \DeclareUnicodeCharacter{0169}{\~u}
- \DeclareUnicodeCharacter{016A}{\=U}
- \DeclareUnicodeCharacter{016B}{\=u}
- \DeclareUnicodeCharacter{016C}{\u{U}}
- \DeclareUnicodeCharacter{016D}{\u{u}}
- \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
- \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
-
- \DeclareUnicodeCharacter{0170}{\H{U}}
- \DeclareUnicodeCharacter{0171}{\H{u}}
- \DeclareUnicodeCharacter{0174}{\^W}
- \DeclareUnicodeCharacter{0175}{\^w}
- \DeclareUnicodeCharacter{0176}{\^Y}
- \DeclareUnicodeCharacter{0177}{\^y}
- \DeclareUnicodeCharacter{0178}{\"Y}
- \DeclareUnicodeCharacter{0179}{\'Z}
- \DeclareUnicodeCharacter{017A}{\'z}
- \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
- \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
- \DeclareUnicodeCharacter{017D}{\v{Z}}
- \DeclareUnicodeCharacter{017E}{\v{z}}
-
- \DeclareUnicodeCharacter{01C4}{D\v{Z}}
- \DeclareUnicodeCharacter{01C5}{D\v{z}}
- \DeclareUnicodeCharacter{01C6}{d\v{z}}
- \DeclareUnicodeCharacter{01C7}{LJ}
- \DeclareUnicodeCharacter{01C8}{Lj}
- \DeclareUnicodeCharacter{01C9}{lj}
- \DeclareUnicodeCharacter{01CA}{NJ}
- \DeclareUnicodeCharacter{01CB}{Nj}
- \DeclareUnicodeCharacter{01CC}{nj}
- \DeclareUnicodeCharacter{01CD}{\v{A}}
- \DeclareUnicodeCharacter{01CE}{\v{a}}
- \DeclareUnicodeCharacter{01CF}{\v{I}}
-
- \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
- \DeclareUnicodeCharacter{01D1}{\v{O}}
- \DeclareUnicodeCharacter{01D2}{\v{o}}
- \DeclareUnicodeCharacter{01D3}{\v{U}}
- \DeclareUnicodeCharacter{01D4}{\v{u}}
-
- \DeclareUnicodeCharacter{01E2}{\={\AE}}
- \DeclareUnicodeCharacter{01E3}{\={\ae}}
- \DeclareUnicodeCharacter{01E6}{\v{G}}
- \DeclareUnicodeCharacter{01E7}{\v{g}}
- \DeclareUnicodeCharacter{01E8}{\v{K}}
- \DeclareUnicodeCharacter{01E9}{\v{k}}
-
- \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
- \DeclareUnicodeCharacter{01F1}{DZ}
- \DeclareUnicodeCharacter{01F2}{Dz}
- \DeclareUnicodeCharacter{01F3}{dz}
- \DeclareUnicodeCharacter{01F4}{\'G}
- \DeclareUnicodeCharacter{01F5}{\'g}
- \DeclareUnicodeCharacter{01F8}{\`N}
- \DeclareUnicodeCharacter{01F9}{\`n}
- \DeclareUnicodeCharacter{01FC}{\'{\AE}}
- \DeclareUnicodeCharacter{01FD}{\'{\ae}}
- \DeclareUnicodeCharacter{01FE}{\'{\O}}
- \DeclareUnicodeCharacter{01FF}{\'{\o}}
-
- \DeclareUnicodeCharacter{021E}{\v{H}}
- \DeclareUnicodeCharacter{021F}{\v{h}}
-
- \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
- \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
- \DeclareUnicodeCharacter{0228}{\cedilla{E}}
- \DeclareUnicodeCharacter{0229}{\cedilla{e}}
- \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
- \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
-
- \DeclareUnicodeCharacter{0232}{\=Y}
- \DeclareUnicodeCharacter{0233}{\=y}
- \DeclareUnicodeCharacter{0237}{\dotless{j}}
-
- \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
-
- \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
- \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
- \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
- \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
- \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
- \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
- \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
- \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
- \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
- \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
- \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
- \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
-
- \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
- \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
-
- \DeclareUnicodeCharacter{1E20}{\=G}
- \DeclareUnicodeCharacter{1E21}{\=g}
- \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
- \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
- \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
- \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
- \DeclareUnicodeCharacter{1E26}{\"H}
- \DeclareUnicodeCharacter{1E27}{\"h}
-
- \DeclareUnicodeCharacter{1E30}{\'K}
- \DeclareUnicodeCharacter{1E31}{\'k}
- \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
- \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
- \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
- \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
- \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
- \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
- \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
- \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
- \DeclareUnicodeCharacter{1E3E}{\'M}
- \DeclareUnicodeCharacter{1E3F}{\'m}
-
- \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
- \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
- \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
- \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
- \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
- \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
- \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
- \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
- \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
- \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
-
- \DeclareUnicodeCharacter{1E54}{\'P}
- \DeclareUnicodeCharacter{1E55}{\'p}
- \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
- \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
- \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
- \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
- \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
- \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
- \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
- \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
-
- \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
- \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
- \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
- \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
- \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
- \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
- \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
- \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
- \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
- \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
-
- \DeclareUnicodeCharacter{1E7C}{\~V}
- \DeclareUnicodeCharacter{1E7D}{\~v}
- \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
- \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
-
- \DeclareUnicodeCharacter{1E80}{\`W}
- \DeclareUnicodeCharacter{1E81}{\`w}
- \DeclareUnicodeCharacter{1E82}{\'W}
- \DeclareUnicodeCharacter{1E83}{\'w}
- \DeclareUnicodeCharacter{1E84}{\"W}
- \DeclareUnicodeCharacter{1E85}{\"w}
- \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
- \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
- \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
- \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
- \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
- \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
- \DeclareUnicodeCharacter{1E8C}{\"X}
- \DeclareUnicodeCharacter{1E8D}{\"x}
- \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
- \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
-
- \DeclareUnicodeCharacter{1E90}{\^Z}
- \DeclareUnicodeCharacter{1E91}{\^z}
- \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
- \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
- \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
- \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
- \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
- \DeclareUnicodeCharacter{1E97}{\"t}
- \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
- \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
-
- \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
- \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
-
- \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
- \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
- \DeclareUnicodeCharacter{1EBC}{\~E}
- \DeclareUnicodeCharacter{1EBD}{\~e}
-
- \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
- \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
- \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
- \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
-
- \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
- \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
-
- \DeclareUnicodeCharacter{1EF2}{\`Y}
- \DeclareUnicodeCharacter{1EF3}{\`y}
- \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
-
- \DeclareUnicodeCharacter{1EF8}{\~Y}
- \DeclareUnicodeCharacter{1EF9}{\~y}
-
- \DeclareUnicodeCharacter{2013}{--}
- \DeclareUnicodeCharacter{2014}{---}
- \DeclareUnicodeCharacter{2018}{\quoteleft}
- \DeclareUnicodeCharacter{2019}{\quoteright}
- \DeclareUnicodeCharacter{201A}{\quotesinglbase}
- \DeclareUnicodeCharacter{201C}{\quotedblleft}
- \DeclareUnicodeCharacter{201D}{\quotedblright}
- \DeclareUnicodeCharacter{201E}{\quotedblbase}
- \DeclareUnicodeCharacter{2022}{\bullet}
- \DeclareUnicodeCharacter{2026}{\dots}
- \DeclareUnicodeCharacter{2039}{\guilsinglleft}
- \DeclareUnicodeCharacter{203A}{\guilsinglright}
- \DeclareUnicodeCharacter{20AC}{\euro}
-
- \DeclareUnicodeCharacter{2192}{\expansion}
- \DeclareUnicodeCharacter{21D2}{\result}
-
- \DeclareUnicodeCharacter{2212}{\minus}
- \DeclareUnicodeCharacter{2217}{\point}
- \DeclareUnicodeCharacter{2261}{\equiv}
-}% end of \utfeightchardefs
-
-
-% US-ASCII character definitions.
-\def\asciichardefs{% nothing need be done
- \relax
-}
-
-% Make non-ASCII characters printable again for compatibility with
-% existing Texinfo documents that may use them, even without declaring a
-% document encoding.
-%
-\setnonasciicharscatcode \other
-
-
-\message{formatting,}
-
-\newdimen\defaultparindent \defaultparindent = 15pt
-
-\chapheadingskip = 15pt plus 4pt minus 2pt
-\secheadingskip = 12pt plus 3pt minus 2pt
-\subsecheadingskip = 9pt plus 2pt minus 2pt
-
-% Prevent underfull vbox error messages.
-\vbadness = 10000
-
-% Don't be very finicky about underfull hboxes, either.
-\hbadness = 6666
-
-% Following George Bush, get rid of widows and orphans.
-\widowpenalty=10000
-\clubpenalty=10000
-
-% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
-% using an old version of TeX, don't do anything. We want the amount of
-% stretch added to depend on the line length, hence the dependence on
-% \hsize. We call this whenever the paper size is set.
-%
-\def\setemergencystretch{%
- \ifx\emergencystretch\thisisundefined
- % Allow us to assign to \emergencystretch anyway.
- \def\emergencystretch{\dimen0}%
- \else
- \emergencystretch = .15\hsize
- \fi
-}
-
-% Parameters in order: 1) textheight; 2) textwidth;
-% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
-% 7) physical page height; 8) physical page width.
-%
-% We also call \setleading{\textleading}, so the caller should define
-% \textleading. The caller should also set \parskip.
-%
-\def\internalpagesizes#1#2#3#4#5#6#7#8{%
- \voffset = #3\relax
- \topskip = #6\relax
- \splittopskip = \topskip
- %
- \vsize = #1\relax
- \advance\vsize by \topskip
- \outervsize = \vsize
- \advance\outervsize by 2\topandbottommargin
- \pageheight = \vsize
- %
- \hsize = #2\relax
- \outerhsize = \hsize
- \advance\outerhsize by 0.5in
- \pagewidth = \hsize
- %
- \normaloffset = #4\relax
- \bindingoffset = #5\relax
- %
- \ifpdf
- \pdfpageheight #7\relax
- \pdfpagewidth #8\relax
- % if we don't reset these, they will remain at "1 true in" of
- % whatever layout pdftex was dumped with.
- \pdfhorigin = 1 true in
- \pdfvorigin = 1 true in
- \fi
- %
- \setleading{\textleading}
- %
- \parindent = \defaultparindent
- \setemergencystretch
-}
-
-% @letterpaper (the default).
-\def\letterpaper{{\globaldefs = 1
- \parskip = 3pt plus 2pt minus 1pt
- \textleading = 13.2pt
- %
- % If page is nothing but text, make it come out even.
- \internalpagesizes{607.2pt}{6in}% that's 46 lines
- {\voffset}{.25in}%
- {\bindingoffset}{36pt}%
- {11in}{8.5in}%
-}}
-
-% Use @smallbook to reset parameters for 7x9.25 trim size.
-\def\smallbook{{\globaldefs = 1
- \parskip = 2pt plus 1pt
- \textleading = 12pt
- %
- \internalpagesizes{7.5in}{5in}%
- {-.2in}{0in}%
- {\bindingoffset}{16pt}%
- {9.25in}{7in}%
- %
- \lispnarrowing = 0.3in
- \tolerance = 700
- \hfuzz = 1pt
- \contentsrightmargin = 0pt
- \defbodyindent = .5cm
-}}
-
-% Use @smallerbook to reset parameters for 6x9 trim size.
-% (Just testing, parameters still in flux.)
-\def\smallerbook{{\globaldefs = 1
- \parskip = 1.5pt plus 1pt
- \textleading = 12pt
- %
- \internalpagesizes{7.4in}{4.8in}%
- {-.2in}{-.4in}%
- {0pt}{14pt}%
- {9in}{6in}%
- %
- \lispnarrowing = 0.25in
- \tolerance = 700
- \hfuzz = 1pt
- \contentsrightmargin = 0pt
- \defbodyindent = .4cm
-}}
-
-% Use @afourpaper to print on European A4 paper.
-\def\afourpaper{{\globaldefs = 1
- \parskip = 3pt plus 2pt minus 1pt
- \textleading = 13.2pt
- %
- % Double-side printing via postscript on Laserjet 4050
- % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
- % To change the settings for a different printer or situation, adjust
- % \normaloffset until the front-side and back-side texts align. Then
- % do the same for \bindingoffset. You can set these for testing in
- % your texinfo source file like this:
- % @tex
- % \global\normaloffset = -6mm
- % \global\bindingoffset = 10mm
- % @end tex
- \internalpagesizes{673.2pt}{160mm}% that's 51 lines
- {\voffset}{\hoffset}%
- {\bindingoffset}{44pt}%
- {297mm}{210mm}%
- %
- \tolerance = 700
- \hfuzz = 1pt
- \contentsrightmargin = 0pt
- \defbodyindent = 5mm
-}}
-
-% Use @afivepaper to print on European A5 paper.
-% From romildo@urano.iceb.ufop.br, 2 July 2000.
-% He also recommends making @example and @lisp be small.
-\def\afivepaper{{\globaldefs = 1
- \parskip = 2pt plus 1pt minus 0.1pt
- \textleading = 12.5pt
- %
- \internalpagesizes{160mm}{120mm}%
- {\voffset}{\hoffset}%
- {\bindingoffset}{8pt}%
- {210mm}{148mm}%
- %
- \lispnarrowing = 0.2in
- \tolerance = 800
- \hfuzz = 1.2pt
- \contentsrightmargin = 0pt
- \defbodyindent = 2mm
- \tableindent = 12mm
-}}
-
-% A specific text layout, 24x15cm overall, intended for A4 paper.
-\def\afourlatex{{\globaldefs = 1
- \afourpaper
- \internalpagesizes{237mm}{150mm}%
- {\voffset}{4.6mm}%
- {\bindingoffset}{7mm}%
- {297mm}{210mm}%
- %
- % Must explicitly reset to 0 because we call \afourpaper.
- \globaldefs = 0
-}}
-
-% Use @afourwide to print on A4 paper in landscape format.
-\def\afourwide{{\globaldefs = 1
- \afourpaper
- \internalpagesizes{241mm}{165mm}%
- {\voffset}{-2.95mm}%
- {\bindingoffset}{7mm}%
- {297mm}{210mm}%
- \globaldefs = 0
-}}
-
-% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
-% Perhaps we should allow setting the margins, \topskip, \parskip,
-% and/or leading, also. Or perhaps we should compute them somehow.
-%
-\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
-\def\pagesizesyyy#1,#2,#3\finish{{%
- \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
- \globaldefs = 1
- %
- \parskip = 3pt plus 2pt minus 1pt
- \setleading{\textleading}%
- %
- \dimen0 = #1\relax
- \advance\dimen0 by \voffset
- %
- \dimen2 = \hsize
- \advance\dimen2 by \normaloffset
- %
- \internalpagesizes{#1}{\hsize}%
- {\voffset}{\normaloffset}%
- {\bindingoffset}{44pt}%
- {\dimen0}{\dimen2}%
-}}
-
-% Set default to letter.
-%
-\letterpaper
-
-
-\message{and turning on texinfo input format.}
-
-\def^^L{\par} % remove \outer, so ^L can appear in an @comment
-
-% DEL is a comment character, in case @c does not suffice.
-\catcode`\^^? = 14
-
-% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other \def\normaldoublequote{"}
-\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
-\catcode`\+=\other \def\normalplus{+}
-\catcode`\<=\other \def\normalless{<}
-\catcode`\>=\other \def\normalgreater{>}
-\catcode`\^=\other \def\normalcaret{^}
-\catcode`\_=\other \def\normalunderscore{_}
-\catcode`\|=\other \def\normalverticalbar{|}
-\catcode`\~=\other \def\normaltilde{~}
-
-% This macro is used to make a character print one way in \tt
-% (where it can probably be output as-is), and another way in other fonts,
-% where something hairier probably needs to be done.
-%
-% #1 is what to print if we are indeed using \tt; #2 is what to print
-% otherwise. Since all the Computer Modern typewriter fonts have zero
-% interword stretch (and shrink), and it is reasonable to expect all
-% typewriter fonts to have this, we can check that font parameter.
-%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
-
-% Same as above, but check for italic font. Actually this also catches
-% non-italic slanted fonts since it is impossible to distinguish them from
-% italic fonts. But since this is only used by $ and it uses \sl anyway
-% this is not a problem.
-\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
-
-% Turn off all special characters except @
-% (and those which the user can use as if they were ordinary).
-% Most of these we simply print from the \tt font, but for some, we can
-% use math or other variants that look better in normal text.
-
-\catcode`\"=\active
-\def\activedoublequote{{\tt\char34}}
-\let"=\activedoublequote
-\catcode`\~=\active
-\def~{{\tt\char126}}
-\chardef\hat=`\^
-\catcode`\^=\active
-\def^{{\tt \hat}}
-
-\catcode`\_=\active
-\def_{\ifusingtt\normalunderscore\_}
-\let\realunder=_
-% Subroutine for the previous macro.
-\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
-
-\catcode`\|=\active
-\def|{{\tt\char124}}
-\chardef \less=`\<
-\catcode`\<=\active
-\def<{{\tt \less}}
-\chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-\catcode`\$=\active
-\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
-
-% If a .fmt file is being used, characters that might appear in a file
-% name cannot be active until we have parsed the command line.
-% So turn them off again, and have \everyjob (or @setfilename) turn them on.
-% \otherifyactive is called near the end of this file.
-\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-
-% Used sometimes to turn off (effectively) the active characters even after
-% parsing them.
-\def\turnoffactive{%
- \normalturnoffactive
- \otherbackslash
-}
-
-\catcode`\@=0
-
-% \backslashcurfont outputs one backslash character in current font,
-% as in \char`\\.
-\global\chardef\backslashcurfont=`\\
-\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
-
-% \realbackslash is an actual character `\' with catcode other, and
-% \doublebackslash is two of them (for the pdf outlines).
-{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
-
-% In texinfo, backslash is an active character; it prints the backslash
-% in fixed width font.
-\catcode`\\=\active % @ for escape char from now on.
-
-% The story here is that in math mode, the \char of \backslashcurfont
-% ends up printing the roman \ from the math symbol font (because \char
-% in math mode uses the \mathcode, and plain.tex sets
-% \mathcode`\\="026E). It seems better for @backslashchar{} to always
-% print a typewriter backslash, hence we use an explicit \mathchar,
-% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
-% ignored family value; char position "5C). We can't use " for the
-% usual hex value because it has already been made active.
-@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
-@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
-
-% On startup, @fixbackslash assigns:
-% @let \ = @normalbackslash
-% \rawbackslash defines an active \ to do \backslashcurfont.
-% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other. We switch back and forth between these.
-@gdef@rawbackslash{@let\=@backslashcurfont}
-@gdef@otherbackslash{@let\=@realbackslash}
-
-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'. Also revert - to its normal character, in
-% case the active - from code has slipped in.
-%
-{@catcode`- = @active
- @gdef@normalturnoffactive{%
- @let-=@normaldash
- @let"=@normaldoublequote
- @let$=@normaldollar %$ font-lock fix
- @let+=@normalplus
- @let<=@normalless
- @let>=@normalgreater
- @let\=@normalbackslash
- @let^=@normalcaret
- @let_=@normalunderscore
- @let|=@normalverticalbar
- @let~=@normaltilde
- @markupsetuplqdefault
- @markupsetuprqdefault
- @unsepspaces
- }
-}
-
-% Make _ and + \other characters, temporarily.
-% This is canceled by @fixbackslash.
-@otherifyactive
-
-% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
-% That is what \eatinput is for; after that, the `\' should revert to printing
-% a backslash.
-%
-@gdef@eatinput input texinfo{@fixbackslash}
-@global@let\ = @eatinput
-
-% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\' in the file would cause an error. This macro tries to fix
-% that, assuming it is called before the first `\' could plausibly occur.
-% Also turn back on active characters that might appear in the input
-% file name, in case not using a pre-dumped format.
-%
-@gdef@fixbackslash{%
- @ifx\@eatinput @let\ = @normalbackslash @fi
- @catcode`+=@active
- @catcode`@_=@active
-}
-
-% Say @foo, not \foo, in error messages.
-@escapechar = `@@
-
-% These (along with & and #) are made active for url-breaking, so need
-% active definitions as the normal characters.
-@def@normaldot{.}
-@def@normalquest{?}
-@def@normalslash{/}
-
-% These look ok in all fonts, so just make them not special.
-% @hashchar{} gets its own user-level command, because of #line.
-@catcode`@& = @other @def@normalamp{&}
-@catcode`@# = @other @def@normalhash{#}
-@catcode`@% = @other @def@normalpercent{%}
-
-@let @hashchar = @normalhash
-
-@c Finally, make ` and ' active, so that txicodequoteundirected and
-@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we
-@c don't make ` and ' active, @code will not get them as active chars.
-@c Do this last of all since we use ` in the previous @catcode assignments.
-@catcode`@'=@active
-@catcode`@`=@active
-@markupsetuplqdefault
-@markupsetuprqdefault
-
-@c Local variables:
-@c eval: (add-hook 'write-file-hooks 'time-stamp)
-@c page-delimiter: "^\\\\message"
-@c time-stamp-start: "def\\\\texinfoversion{"
-@c time-stamp-format: "%:y-%02m-%02d.%02H"
-@c time-stamp-end: "}"
-@c End:
-
-@c vim:sw=2:
-
-@ignore
- arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
-@end ignore
diff --git a/contrib/amd/doc/version.texi b/contrib/amd/doc/version.texi
deleted file mode 100644
index 9a4feda60f57..000000000000
--- a/contrib/amd/doc/version.texi
+++ /dev/null
@@ -1,4 +0,0 @@
-@set UPDATED 28 October 2014
-@set UPDATED-MONTH October 2014
-@set EDITION 6.2
-@set VERSION 6.2
diff --git a/contrib/amd/fixmount/fixmount.8 b/contrib/amd/fixmount/fixmount.8
deleted file mode 100644
index 462984cbe442..000000000000
--- a/contrib/amd/fixmount/fixmount.8
+++ /dev/null
@@ -1,216 +0,0 @@
-.\"
-.\" Copyright (c) 1997-2014 Erez Zadok
-.\" Copyright (c) 1990 Jan-Simon Pendry
-.\" Copyright (c) 1990 Imperial College of Science, Technology & Medicine
-.\" Copyright (c) 1990 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" Jan-Simon Pendry at Imperial College, London.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\"
-.\" File: am-utils/fixmount/fixmount.8
-.\" $FreeBSD$
-.\"
-.Dd February 26, 2016
-.Dt FIXMOUNT 8
-.Os
-.Sh NAME
-.Nm fixmount
-.Nd fix remote mount entries
-.Sh SYNOPSIS
-.Nm
-.Op Fl adervq
-.Op Fl h Ar name
-.Ar host ...
-.Sh DESCRIPTION
-.Bf -symbolic
-This command is obsolete.
-Users are advised to use
-.Xr autofs 5
-instead.
-.Ef
-.Pp
-The
-.Nm
-utility
-is a variant of
-.Xr showmount 8
-that can delete bogus mount entries in remote
-.Xr mountd 8
-daemons.
-The actions specified by the options are performed for each
-.Ar host
-in turn.
-.Sh OPTIONS
-.Bl -tag -width indent
-.It Fl a , d , e
-These options work as in
-.Xr showmount 8
-except that only entries pertaining to the local host are printed.
-.It Fl r
-Removes those remote mount entries on
-.Ar host
-that do not correspond to current mounts, i.e., which are left-over
-from a crash or are the result of improper mount protocol.
-The actuality of mounts is verified using the entries in
-.Pa /etc/mtab .
-.It Fl v
-Verify remote mounts.
-Similar to
-.Fl r
-except that only a notification message is printed for each bogus entry
-found.
-The remote mount table is not changed.
-.It Fl A
-Issues a command to the remote mountd declaring that
-.Em all
-of its file systems have been unmounted.
-This should be used with caution, as it removes all
-remote mount entries pertaining to the local system, whether or not any
-file systems are still mounted locally.
-.It Fl q
-Be quiet.
-Suppresses error messages due to timeouts and
-.Dq Li "Program not registered" ,
-i.e., due to remote hosts not supporting RPC or not running
-.Xr mountd 8 .
-.It Fl h Ar name
-Pretend the local hostname is
-.Ar name .
-This is useful after the local hostname has been changed and rmtab entries
-using the old name remain on a remote machine.
-Unfortunately, most mountd's will not be able to successfully handle removal
-of such entries, so this option is useful in combination with
-.Fl v
-only.
-.Pp
-This option also saves time as comparisons of remotely recorded and local
-hostnames by address are avoided.
-.El
-.Sh FILES
-.Bl -tag -width ".Pa /etc/rmtab"
-.It Pa /etc/mtab
-List of current mounts.
-.It Pa /etc/rmtab
-Backup file for remote mount entries on
-.Tn NFS
-server.
-.El
-.Sh SEE ALSO
-.Xr mtab 5 ,
-.Xr rmtab 5 ,
-.Xr mountd 8 ,
-.Xr showmount 8
-.Pp
-.Dq am-utils
-.Xr info 1
-entry.
-.Rs
-.%A Erez Zadok
-.%B "Linux NFS and Automounter Administration"
-.%O ISBN 0-7821-2739-8
-.%I Sybex
-.%D 2001
-.Re
-.Pp
-.Pa http://www.am-utils.org/
-.Rs
-.%T Amd \- The 4.4 BSD Automounter
-.Re
-.Sh HISTORY
-The
-.Nm
-utility appeared in
-.Fx 3.0 .
-.Sh AUTHORS
-.An Jan-Simon Pendry Aq jsp@doc.ic.ac.uk ,
-Department of Computing, Imperial College, London, UK.
-.Pp
-.An Erez Zadok Aq ezk@cs.columbia.edu ,
-Department of Computer Science, Columbia University, New York, USA.
-.Pp
-.An Other authors and contributors to
-.Nm am-utils
-are listed in the
-.Pa AUTHORS
-file distributed with
-.Nm am-utils .
-.Sh AUTHORS
-.An Andreas Stolcke Aq stolcke@icsi.berkeley.edu
-.Pp
-.An Erez Zadok Aq ezk@cs.sunysb.edu ,
-Computer Science Department, Stony Brook University, Stony Brook, New York, USA.
-.Pp
-Other authors and contributors to am-utils are listed in the
-.Pa AUTHORS
-file distributed with am-utils.
-.Sh BUGS
-No attempt is made to verify the information in
-.Pa /etc/mtab
-itself.
-.Pp
-Since swap file mounts are not recorded in
-.Pa /etc/mtab ,
-a heuristic specific to SunOS is used to determine whether such a mount
-is actual (replacing the string
-.Dq Li swap
-with
-.Dq Li root
-and verifying the resulting path).
-.Pp
-Symbolic links on the server will cause the path in the remote entry to differ
-from the one in
-.Pa /etc/mtab .
-To catch those cases, a file system is also deemed mounted if its
-.Em local
-mount point is identical to the remote entry.
-I.e., on a SunOS diskless client,
-.Pa server:/export/share/sunos.4.1.1
-is actually
-.Pa /usr/share .
-Since the local mount point is
-.Pa /usr/share
-as well this will be handled correctly.
-.Pp
-There is no way to clear a stale entry in a remote
-.Xr mountd 8
-after the
-local hostname (or whatever reverse name resolution returns for it)
-has been changed.
-To take care of these cases,
-the remote
-.Pa /etc/rmtab
-file has to be edited and
-.Xr mountd 8
-restarted.
-.Pp
-The RPC timeouts for
-.Xr mountd 8
-calls can only be changed by recompiling.
-The defaults are 2 seconds for client handle creation and 5 seconds for
-RPC calls.
diff --git a/contrib/amd/fixmount/fixmount.c b/contrib/amd/fixmount/fixmount.c
deleted file mode 100644
index 9465f30d7584..000000000000
--- a/contrib/amd/fixmount/fixmount.c
+++ /dev/null
@@ -1,599 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fixmount/fixmount.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-
-#define CREATE_TIMEOUT 2 /* seconds */
-#define CALL_TIMEOUT 5 /* seconds */
-
-/* Constant defs */
-#define ALL 1
-#define DIRS 2
-
-#define DODUMP 0x1
-#define DOEXPORTS 0x2
-#define DOREMOVE 0x4
-#define DOVERIFY 0x8
-#define DOREMALL 0x10
-
-extern int fixmount_check_mount(char *host, struct in_addr hostaddr, char *path);
-
-static char dir_path[NFS_MAXPATHLEN];
-static char localhost[] = "localhost";
-static char thishost[MAXHOSTNAMELEN + 1] = "";
-static exports mntexports;
-static int quiet = 0;
-static int type = 0;
-static jmp_buf before_rpc;
-static mountlist mntdump;
-static struct in_addr thisaddr;
-static CLIENT *clnt_create_timeout(char *, struct timeval *);
-
-RETSIGTYPE create_timeout(int);
-int is_same_host(char *, char *, struct in_addr);
-int main(int, char *[]);
-int remove_all(CLIENT *, char *);
-int remove_mount(CLIENT *, char *, mountlist, int);
-void fix_rmtab(CLIENT *, char *, mountlist, int, int);
-void print_dump(mountlist);
-void usage(void);
-
-
-void
-usage(void)
-{
- fprintf(stderr, "usage: fixmount [-adervAqf] [-h hostname] host ...\n");
- exit(1);
-}
-
-
-/*
- * Check hostname against other name and its IP address
- */
-int
-is_same_host(char *name1, char *name2, struct in_addr addr2)
-{
- if (strcasecmp(name1, name2) == 0) {
- return 1;
- } else if (addr2.s_addr == INADDR_NONE) {
- return 0;
- } else {
- static char lasthost[MAXHOSTNAMELEN] = "";
- static struct in_addr addr1;
- struct hostent *he;
-
- /*
- * To save nameserver lookups, and because this function
- * is typically called repeatedly on the same names,
- * cache the last lookup result and reuse it if possible.
- */
- if (strcasecmp(name1, lasthost) == 0) {
- return (addr1.s_addr == addr2.s_addr);
- } else if (!(he = gethostbyname(name1))) {
- return 0;
- } else {
- xstrlcpy(lasthost, name1, sizeof(lasthost));
- memcpy(&addr1, he->h_addr, sizeof(addr1));
- return (addr1.s_addr == addr2.s_addr);
- }
- }
-}
-
-
-/*
- * Print the binary tree in inorder so that output is sorted.
- */
-void
-print_dump(mountlist mp)
-{
- if (mp == NULL)
- return;
- if (is_same_host(mp->ml_hostname, thishost, thisaddr)) {
- switch (type) {
- case ALL:
- printf("%s:%s\n", mp->ml_hostname, mp->ml_directory);
- break;
- case DIRS:
- printf("%s\n", mp->ml_directory);
- break;
- default:
- printf("%s\n", mp->ml_hostname);
- break;
- };
- }
- if (mp->ml_next)
- print_dump(mp->ml_next);
-}
-
-
-/*
- * remove entry from remote rmtab
- */
-int
-remove_mount(CLIENT *client, char *host, mountlist ml, int fixit)
-{
- enum clnt_stat estat;
- struct timeval tv;
- char *pathp = dir_path;
-
- xstrlcpy(dir_path, ml->ml_directory, sizeof(dir_path));
-
- if (!fixit) {
- printf("%s: bogus mount %s:%s\n", host, ml->ml_hostname, ml->ml_directory);
- fflush(stdout);
- } else {
- printf("%s: removing %s:%s\n", host, ml->ml_hostname, ml->ml_directory);
- fflush(stdout);
-
- tv.tv_sec = CALL_TIMEOUT;
- tv.tv_usec = 0;
-
- if ((estat = clnt_call(client,
- MOUNTPROC_UMNT,
- (XDRPROC_T_TYPE) xdr_dirpath,
- (char *) &pathp,
- (XDRPROC_T_TYPE) xdr_void,
- (char *) NULL,
- tv)) != RPC_SUCCESS) {
- fprintf(stderr, "%s:%s MOUNTPROC_UMNT: ",
- host, ml->ml_directory);
- clnt_perrno(estat);
- fflush(stderr);
- return -1;
- }
- }
- return 0;
-}
-
-
-/*
- * fix mount list on remote host
- */
-void
-fix_rmtab(CLIENT *client, char *host, mountlist mp, int fixit, int force)
-{
- mountlist p;
- struct hostent *he;
- struct in_addr hostaddr;
-
- /*
- * Obtain remote address for comparisons
- */
- if ((he = gethostbyname(host))) {
- memcpy(&hostaddr, he->h_addr, sizeof(hostaddr));
- } else {
- hostaddr.s_addr = INADDR_NONE;
- }
-
- for (p = mp; p; p = p->ml_next) {
- if (is_same_host(p->ml_hostname, thishost, thisaddr)) {
- if (force || !fixmount_check_mount(host, hostaddr, p->ml_directory))
- remove_mount(client, host, p, fixit);
- }
- }
-}
-
-
-/*
- * remove all entries from remote rmtab
- */
-int
-remove_all(CLIENT *client, char *host)
-{
- enum clnt_stat estat;
- struct timeval tv;
-
- printf("%s: removing ALL\n", host);
- fflush(stdout);
-
- tv.tv_sec = CALL_TIMEOUT;
- tv.tv_usec = 0;
-
- if ((estat = clnt_call(client,
- MOUNTPROC_UMNTALL,
- (XDRPROC_T_TYPE) xdr_void,
- (char *) NULL,
- (XDRPROC_T_TYPE) xdr_void,
- (char *) NULL,
- tv)) != RPC_SUCCESS) {
- /*
- * RPC_SYSTEMERROR is returned even if all went well
- */
- if (estat != RPC_SYSTEMERROR) {
- fprintf(stderr, "%s MOUNTPROC_UMNTALL: ", host);
- clnt_perrno(estat);
- fflush(stderr);
- return -1;
- }
- }
-
- return 0;
-}
-
-
-/*
- * This command queries the NFS mount daemon for it's mount list and/or
- * it's exports list and prints them out.
- * See "NFS: Network File System Protocol Specification, RFC1094, Appendix A"
- * for detailed information on the protocol.
- */
-int
-main(int argc, char *argv[])
-{
- AUTH *auth;
- CLIENT *client;
- char *host;
- enum clnt_stat estat;
- exports exp;
- extern char *optarg;
- extern int optind;
- groups grp;
- int ch;
- int force = 0;
- int morethanone;
- register int rpcs = 0;
- struct timeval tv;
-
- while ((ch = getopt(argc, argv, "adervAqfh:")) != -1)
- switch ((char) ch) {
-
- case 'a':
- if (type == 0) {
- type = ALL;
- rpcs |= DODUMP;
- } else
- usage();
- break;
-
- case 'd':
- if (type == 0) {
- type = DIRS;
- rpcs |= DODUMP;
- } else
- usage();
- break;
-
- case 'e':
- rpcs |= DOEXPORTS;
- break;
-
- case 'r':
- rpcs |= DOREMOVE;
- break;
-
- case 'A':
- rpcs |= DOREMALL;
- break;
-
- case 'v':
- rpcs |= DOVERIFY;
- break;
-
- case 'q':
- quiet = 1;
- break;
-
- case 'f':
- force = 1;
- break;
-
- case 'h':
- xstrlcpy(thishost, optarg, sizeof(thishost));
- break;
-
- case '?':
- default:
- usage();
- }
-
- if (optind == argc)
- usage();
-
- if (rpcs == 0)
- rpcs = DODUMP;
-
- if (!*thishost) {
- struct hostent *he;
-
- if (gethostname(thishost, sizeof(thishost)) < 0) {
- perror("gethostname");
- exit(1);
- }
- thishost[sizeof(thishost) - 1] = '\0';
-
- /*
- * We need the hostname as it appears to the other side's
- * mountd, so get our own hostname by reverse address
- * resolution.
- */
- if (!(he = gethostbyname(thishost))) {
- fprintf(stderr, "gethostbyname failed on %s\n",
- thishost);
- exit(1);
- }
- memcpy(&thisaddr, he->h_addr, sizeof(thisaddr));
- if (!(he = gethostbyaddr((char *) &thisaddr, sizeof(thisaddr),
- he->h_addrtype))) {
- fprintf(stderr, "gethostbyaddr failed on %s\n",
- inet_ntoa(thisaddr));
- exit(1);
- }
- xstrlcpy(thishost, he->h_name, sizeof(thishost));
- } else {
- thisaddr.s_addr = INADDR_NONE;
- }
-
- if (!(auth = authunix_create_default())) {
- fprintf(stderr, "couldn't create authentication handle\n");
- exit(1);
- }
- morethanone = (optind + 1 < argc);
-
- for (; optind < argc; optind++) {
-
- host = argv[optind];
- tv.tv_sec = CREATE_TIMEOUT;
- tv.tv_usec = 0;
-
- if (!(client = clnt_create_timeout(host, &tv)))
- continue;
-
- client->cl_auth = auth;
- tv.tv_sec = CALL_TIMEOUT;
- tv.tv_usec = 0;
-
- if (rpcs & (DODUMP | DOREMOVE | DOVERIFY))
- if ((estat = clnt_call(client,
- MOUNTPROC_DUMP,
- (XDRPROC_T_TYPE) xdr_void,
- (char *) NULL,
- (XDRPROC_T_TYPE) xdr_mountlist,
- (char *) &mntdump,
- tv)) != RPC_SUCCESS) {
- fprintf(stderr, "%s: MOUNTPROC_DUMP: ", host);
- clnt_perrno(estat);
- fflush(stderr);
- mntdump = NULL;
- goto next;
- }
- if (rpcs & DOEXPORTS)
- if ((estat = clnt_call(client,
- MOUNTPROC_EXPORT,
- (XDRPROC_T_TYPE) xdr_void,
- (char *) NULL,
- (XDRPROC_T_TYPE) xdr_exports,
- (char *) &mntexports,
- tv)) != RPC_SUCCESS) {
- fprintf(stderr, "%s: MOUNTPROC_EXPORT: ", host);
- clnt_perrno(estat);
- fflush(stderr);
- mntexports = NULL;
- goto next;
- }
-
- /* Now just print out the results */
- if ((rpcs & (DODUMP | DOEXPORTS)) &&
- morethanone) {
- printf(">>> %s <<<\n", host);
- fflush(stdout);
- }
-
- if (rpcs & DODUMP) {
- print_dump(mntdump);
- }
-
- if (rpcs & DOEXPORTS) {
- exp = mntexports;
- while (exp) {
- printf("%-35s", exp->ex_dir);
- grp = exp->ex_groups;
- if (grp == NULL) {
- printf("Everyone\n");
- } else {
- while (grp) {
- printf("%s ", grp->gr_name);
- grp = grp->gr_next;
- }
- printf("\n");
- }
- exp = exp->ex_next;
- }
- }
-
- if (rpcs & DOVERIFY)
- fix_rmtab(client, host, mntdump, 0, force);
-
- if (rpcs & DOREMOVE)
- fix_rmtab(client, host, mntdump, 1, force);
-
- if (rpcs & DOREMALL)
- remove_all(client, host);
-
- next:
- if (mntdump)
- (void) clnt_freeres(client,
- (XDRPROC_T_TYPE) xdr_mountlist,
- (char *) &mntdump);
- if (mntexports)
- (void) clnt_freeres(client,
- (XDRPROC_T_TYPE) xdr_exports,
- (char *) &mntexports);
-
- clnt_destroy(client);
- }
- exit(0);
- return 0; /* should never reach here */
-}
-
-
-RETSIGTYPE
-create_timeout(int sig)
-{
- signal(SIGALRM, SIG_DFL);
- longjmp(before_rpc, 1);
-}
-
-
-#ifndef HAVE_TRANSPORT_TYPE_TLI
-/*
- * inetresport creates a datagram socket and attempts to bind it to a
- * secure port.
- * returns: The bound socket, or -1 to indicate an error.
- */
-static int
-inetresport(int ty)
-{
- int alport;
- struct sockaddr_in addr;
- int fd;
-
- memset(&addr, 0, sizeof(addr));
- /* as per POSIX, sin_len need not be set (used internally by kernel) */
-
- addr.sin_family = AF_INET; /* use internet address family */
- addr.sin_addr.s_addr = INADDR_ANY;
- if ((fd = socket(AF_INET, ty, 0)) < 0)
- return -1;
-
- for (alport = IPPORT_RESERVED - 1; alport > IPPORT_RESERVED / 2 + 1; alport--) {
- addr.sin_port = htons((u_short) alport);
- if (bind(fd, (struct sockaddr *) &addr, sizeof(addr)) >= 0)
- return fd;
- if (errno != EADDRINUSE) {
- close(fd);
- return -1;
- }
- }
- close(fd);
- errno = EAGAIN;
- return -1;
-}
-
-
-/*
- * Privsock() calls inetresport() to attempt to bind a socket to a secure
- * port. If inetresport() fails, privsock returns a magic socket number which
- * indicates to RPC that it should make its own socket.
- * returns: A privileged socket # or RPC_ANYSOCK.
- */
-static int
-privsock(int ty)
-{
- int sock = inetresport(ty);
-
- if (sock < 0) {
- errno = 0;
- /* Couldn't get a secure port, let RPC make an insecure one */
- sock = RPC_ANYSOCK;
- }
- return sock;
-}
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
-
-static CLIENT *
-clnt_create_timeout(char *host, struct timeval *tvp)
-{
- CLIENT *clnt;
- struct sockaddr_in host_addr;
- struct hostent *hp;
-#ifndef HAVE_TRANSPORT_TYPE_TLI
- int s;
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
- if (setjmp(before_rpc)) {
- if (!quiet) {
- fprintf(stderr, "%s: ", host);
- clnt_perrno(RPC_TIMEDOUT);
- fprintf(stderr, "\n");
- fflush(stderr);
- }
- return NULL;
- }
- signal(SIGALRM, create_timeout);
- ualarm(tvp->tv_sec * 1000000 + tvp->tv_usec, 0);
-
- /*
- * Get address of host
- */
- if ((hp = gethostbyname(host)) == 0 && !STREQ(host, localhost)) {
- fprintf(stderr, "can't get address of %s\n", host);
- return NULL;
- }
- memset(&host_addr, 0, sizeof(host_addr));
- /* as per POSIX, sin_len need not be set (used internally by kernel) */
- host_addr.sin_family = AF_INET;
- if (hp) {
- memmove((voidp) &host_addr.sin_addr, (voidp) hp->h_addr,
- sizeof(host_addr.sin_addr));
- } else {
- /* fake "localhost" */
- host_addr.sin_addr.s_addr = htonl(0x7f000001);
- }
-
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- /* try TCP first (in case return data is large), then UDP */
- clnt = clnt_create(host, MOUNTPROG, MOUNTVERS, "tcp");
- if (!clnt)
- clnt = clnt_create(host, MOUNTPROG, MOUNTVERS, "udp");
-#else /* not HAVE_TRANSPORT_TYPE_TLI */
- s = RPC_ANYSOCK;
- clnt = clnttcp_create(&host_addr, MOUNTPROG, MOUNTVERS, &s, 0, 0);
- if (!clnt) {
- /* XXX: do we need to close(s) ? */
- s = privsock(SOCK_DGRAM);
- clnt = clntudp_create(&host_addr, MOUNTPROG, MOUNTVERS, *tvp, &s);
- }
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
- if (!clnt) {
- ualarm(0, 0);
- if (!quiet) {
- clnt_pcreateerror(host);
- fflush(stderr);
- }
- return NULL;
- }
-
- ualarm(0, 0);
- return clnt;
-}
diff --git a/contrib/amd/fsinfo/fsi_analyze.c b/contrib/amd/fsinfo/fsi_analyze.c
deleted file mode 100644
index 78598b854647..000000000000
--- a/contrib/amd/fsinfo/fsi_analyze.c
+++ /dev/null
@@ -1,668 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/fsi_analyze.c
- *
- */
-
-/*
- * Analyze filesystem declarations
- *
- * Note: most of this is magic!
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <fsi_data.h>
-#include <fsinfo.h>
-
-char *disk_fs_strings[] =
-{
- "fstype", "opts", "dumpset", "passno", "freq", "mount", "log", NULL,
-};
-
-char *mount_strings[] =
-{
- "volname", "exportfs", NULL,
-};
-
-char *fsmount_strings[] =
-{
- "as", "volname", "fstype", "opts", "from", NULL,
-};
-
-char *host_strings[] =
-{
- "host", "netif", "config", "arch", "cluster", "os", NULL,
-};
-
-char *ether_if_strings[] =
-{
- "inaddr", "netmask", "hwaddr", NULL,
-};
-
-
-/*
- * Strip off the trailing part of a domain
- * to produce a short-form domain relative
- * to the local host domain.
- * Note that this has no effect if the domain
- * names do not have the same number of
- * components. If that restriction proves
- * to be a problem then the loop needs recoding
- * to skip from right to left and do partial
- * matches along the way -- ie more expensive.
- */
-void
-domain_strip(char *otherdom, char *localdom)
-{
- char *p1, *p2;
-
- if ((p1 = strchr(otherdom, '.')) &&
- (p2 = strchr(localdom, '.')) &&
- STREQ(p1 + 1, p2 + 1))
- *p1 = '\0';
-}
-
-
-/*
- * Take a little-endian domain name and
- * transform into a big-endian Un*x pathname.
- * For example: kiska.doc.ic -> ic/doc/kiska
- */
-static char *
-compute_hostpath(char *hn)
-{
- char *p = xmalloc(MAXPATHLEN);
- char *d;
- char path[MAXPATHLEN];
-
- xstrlcpy(p, hn, MAXPATHLEN);
- domain_strip(p, hostname);
- path[0] = '\0';
-
- do {
- d = strrchr(p, '.');
- if (d) {
- *d = '\0';
- xstrlcat(path, d + 1, sizeof(path));
- xstrlcat(path, "/", sizeof(path));
- } else {
- xstrlcat(path, p, sizeof(path));
- }
- } while (d);
-
- fsi_log("hostpath of '%s' is '%s'", hn, path);
-
- xstrlcpy(p, path, MAXPATHLEN);
- return p;
-}
-
-
-static dict_ent *
-find_volname(char *nn)
-{
- dict_ent *de;
- char *p = xstrdup(nn);
- char *q;
-
- do {
- fsi_log("Searching for volname %s", p);
- de = dict_locate(dict_of_volnames, p);
- q = strrchr(p, '/');
- if (q)
- *q = '\0';
- } while (!de && q);
-
- XFREE(p);
- return de;
-}
-
-
-static void
-show_required(ioloc *l, int mask, char *info, char *hostname, char *strings[])
-{
- int i;
- fsi_log("mask left for %s:%s is %#x", hostname, info, mask);
-
- for (i = 0; strings[i]; i++)
- if (ISSET(mask, i))
- lerror(l, "%s:%s needs field \"%s\"", hostname, info, strings[i]);
-}
-
-
-/*
- * Check and fill in "exportfs" details.
- * Make sure the m_exported field references
- * the most local node with an "exportfs" entry.
- */
-static int
-check_exportfs(qelem *q, fsi_mount *e)
-{
- fsi_mount *mp;
- int errors = 0;
-
- ITER(mp, fsi_mount, q) {
- if (ISSET(mp->m_mask, DM_EXPORTFS)) {
- if (e)
- lwarning(mp->m_ioloc, "%s has duplicate exportfs data", mp->m_name);
- mp->m_exported = mp;
- if (!ISSET(mp->m_mask, DM_VOLNAME))
- set_mount(mp, DM_VOLNAME, xstrdup(mp->m_name));
- } else {
- mp->m_exported = e;
- }
-
- /*
- * Recursively descend the mount tree
- */
- if (mp->m_mount)
- errors += check_exportfs(mp->m_mount, mp->m_exported);
-
- /*
- * If a volume name has been specified, but this node and none
- * of its parents has been exported, report an error.
- */
- if (ISSET(mp->m_mask, DM_VOLNAME) && !mp->m_exported) {
- lerror(mp->m_ioloc, "%s has a volname but no exportfs data", mp->m_name);
- errors++;
- }
- }
-
- return errors;
-}
-
-
-static int
-analyze_dkmount_tree(qelem *q, fsi_mount *parent, disk_fs *dk)
-{
- fsi_mount *mp;
- int errors = 0;
-
- ITER(mp, fsi_mount, q) {
- fsi_log("Mount %s:", mp->m_name);
- if (parent) {
- char n[MAXPATHLEN];
- xsnprintf(n, sizeof(n), "%s/%s", parent->m_name, mp->m_name);
- if (*mp->m_name == '/')
- lerror(mp->m_ioloc, "sub-directory %s of %s starts with '/'", mp->m_name, parent->m_name);
- else if (STREQ(mp->m_name, "default"))
- lwarning(mp->m_ioloc, "sub-directory of %s is named \"default\"", parent->m_name);
- fsi_log("Changing name %s to %s", mp->m_name, n);
- XFREE(mp->m_name);
- mp->m_name = xstrdup(n);
- }
-
- mp->m_name_len = strlen(mp->m_name);
- mp->m_parent = parent;
- mp->m_dk = dk;
- if (mp->m_mount)
- analyze_dkmount_tree(mp->m_mount, mp, dk);
- }
-
- return errors;
-}
-
-
-/*
- * The mount tree is a singleton list
- * containing the top-level mount
- * point for a disk.
- */
-static int
-analyze_dkmounts(disk_fs *dk, qelem *q)
-{
- int errors = 0;
- fsi_mount *mp, *mp2 = NULL;
- int i = 0;
-
- /*
- * First scan the list of subdirs to make
- * sure there is only one - and remember it
- */
- if (q) {
- ITER(mp, fsi_mount, q) {
- mp2 = mp;
- i++;
- }
- }
-
- /*
- * Check...
- */
- if (i < 1) {
- lerror(dk->d_ioloc, "%s:%s has no mount point", dk->d_host->h_hostname, dk->d_dev);
- return 1;
- }
-
- if (i > 1) {
- lerror(dk->d_ioloc, "%s:%s has more than one mount point", dk->d_host->h_hostname, dk->d_dev);
- errors++;
- }
-
- /*
- * Now see if a default mount point is required
- */
- if (mp2 && STREQ(mp2->m_name, "default")) {
- if (ISSET(mp2->m_mask, DM_VOLNAME)) {
- char nbuf[1024];
- compute_automount_point(nbuf, sizeof(nbuf), dk->d_host, mp2->m_volname);
- XFREE(mp2->m_name);
- mp2->m_name = xstrdup(nbuf);
- fsi_log("%s:%s has default mount on %s", dk->d_host->h_hostname, dk->d_dev, mp2->m_name);
- } else {
- lerror(dk->d_ioloc, "no volname given for %s:%s", dk->d_host->h_hostname, dk->d_dev);
- errors++;
- }
- }
-
- /*
- * Fill in the disk mount point
- */
- if (!errors && mp2 && mp2->m_name)
- dk->d_mountpt = xstrdup(mp2->m_name);
- else
- dk->d_mountpt = xstrdup("error");
-
- /*
- * Analyze the mount tree
- */
- errors += analyze_dkmount_tree(q, NULL, dk);
-
- /*
- * Analyze the export tree
- */
- errors += check_exportfs(q, NULL);
-
- return errors;
-}
-
-
-static void
-fixup_required_disk_info(disk_fs *dp)
-{
- /*
- * "fstype"
- */
- if (ISSET(dp->d_mask, DF_FSTYPE)) {
- if (STREQ(dp->d_fstype, "swap")) {
-
- /*
- * Fixup for a swap device
- */
- if (!ISSET(dp->d_mask, DF_PASSNO)) {
- dp->d_passno = 0;
- BITSET(dp->d_mask, DF_PASSNO);
- } else if (dp->d_freq != 0) {
- lwarning(dp->d_ioloc,
- "Pass number for %s:%s is non-zero",
- dp->d_host->h_hostname, dp->d_dev);
- }
-
- /*
- * "freq"
- */
- if (!ISSET(dp->d_mask, DF_FREQ)) {
- dp->d_freq = 0;
- BITSET(dp->d_mask, DF_FREQ);
- } else if (dp->d_freq != 0) {
- lwarning(dp->d_ioloc,
- "dump frequency for %s:%s is non-zero",
- dp->d_host->h_hostname, dp->d_dev);
- }
-
- /*
- * "opts"
- */
- if (!ISSET(dp->d_mask, DF_OPTS))
- set_disk_fs(dp, DF_OPTS, xstrdup("swap"));
-
- /*
- * "mount"
- */
- if (!ISSET(dp->d_mask, DF_MOUNT)) {
- qelem *q = new_que();
- fsi_mount *m = new_mount();
-
- m->m_name = xstrdup("swap");
- m->m_mount = new_que();
- ins_que(&m->m_q, q->q_back);
- dp->d_mount = q;
- BITSET(dp->d_mask, DF_MOUNT);
- } else {
- lerror(dp->d_ioloc, "%s: mount field specified for swap partition", dp->d_host->h_hostname);
- }
- } else if (STREQ(dp->d_fstype, "export")) {
-
- /*
- * "passno"
- */
- if (!ISSET(dp->d_mask, DF_PASSNO)) {
- dp->d_passno = 0;
- BITSET(dp->d_mask, DF_PASSNO);
- } else if (dp->d_passno != 0) {
- lwarning(dp->d_ioloc,
- "pass number for %s:%s is non-zero",
- dp->d_host->h_hostname, dp->d_dev);
- }
-
- /*
- * "freq"
- */
- if (!ISSET(dp->d_mask, DF_FREQ)) {
- dp->d_freq = 0;
- BITSET(dp->d_mask, DF_FREQ);
- } else if (dp->d_freq != 0) {
- lwarning(dp->d_ioloc,
- "dump frequency for %s:%s is non-zero",
- dp->d_host->h_hostname, dp->d_dev);
- }
-
- /*
- * "opts"
- */
- if (!ISSET(dp->d_mask, DF_OPTS))
- set_disk_fs(dp, DF_OPTS, xstrdup("rw,defaults"));
-
- }
- }
-}
-
-
-static void
-fixup_required_mount_info(fsmount *fp, dict_ent *de)
-{
- if (!ISSET(fp->f_mask, FM_FROM)) {
- if (de->de_count != 1) {
- lerror(fp->f_ioloc, "ambiguous mount: %s is a replicated filesystem", fp->f_volname);
- } else {
- dict_data *dd;
- fsi_mount *mp = NULL;
- dd = AM_FIRST(dict_data, &de->de_q);
- mp = (fsi_mount *) dd->dd_data;
- if (!mp)
- abort();
- fp->f_ref = mp;
- set_fsmount(fp, FM_FROM, mp->m_dk->d_host->h_hostname);
- fsi_log("set: %s comes from %s", fp->f_volname, fp->f_from);
- }
- }
-
- if (!ISSET(fp->f_mask, FM_FSTYPE)) {
- set_fsmount(fp, FM_FSTYPE, xstrdup("nfs"));
- fsi_log("set: fstype is %s", fp->f_fstype);
- }
-
- if (!ISSET(fp->f_mask, FM_OPTS)) {
- set_fsmount(fp, FM_OPTS, xstrdup("rw,nosuid,grpid,defaults"));
- fsi_log("set: opts are %s", fp->f_opts);
- }
-
- if (!ISSET(fp->f_mask, FM_LOCALNAME)) {
- if (fp->f_ref) {
- set_fsmount(fp, FM_LOCALNAME, xstrdup(fp->f_volname));
- fsi_log("set: localname is %s", fp->f_localname);
- } else {
- lerror(fp->f_ioloc, "cannot determine localname since volname %s is not uniquely defined", fp->f_volname);
- }
- }
-}
-
-
-/*
- * For each disk on a host
- * analyze the mount information
- * and fill in any derivable
- * details.
- */
-static void
-analyze_drives(host *hp)
-{
- qelem *q = hp->h_disk_fs;
- disk_fs *dp;
-
- ITER(dp, disk_fs, q) {
- int req;
- fsi_log("Disk %s:", dp->d_dev);
- dp->d_host = hp;
- fixup_required_disk_info(dp);
- req = ~dp->d_mask & DF_REQUIRED;
- if (req)
- show_required(dp->d_ioloc, req, dp->d_dev, hp->h_hostname, disk_fs_strings);
- analyze_dkmounts(dp, dp->d_mount);
- }
-}
-
-
-/*
- * Check that all static mounts make sense and
- * that the source volumes exist.
- */
-static void
-analyze_mounts(host *hp)
-{
- qelem *q = hp->h_mount;
- fsmount *fp;
- int netbootp = 0;
-
- ITER(fp, fsmount, q) {
- char *p;
- char *nn = xstrdup(fp->f_volname);
- int req;
- dict_ent *de = (dict_ent *) NULL;
- int found = 0;
- int matched = 0;
-
- if (ISSET(fp->f_mask, FM_DIRECT)) {
- found = 1;
- matched = 1;
- } else
- do {
- p = NULL;
- de = find_volname(nn);
- fsi_log("Mount: %s (trying %s)", fp->f_volname, nn);
-
- if (de) {
- found = 1;
-
- /*
- * Check that the from field is really exporting
- * the filesystem requested.
- * LBL: If fake mount, then don't care about
- * consistency check.
- */
- if (ISSET(fp->f_mask, FM_FROM) && !ISSET(fp->f_mask, FM_DIRECT)) {
- dict_data *dd;
- fsi_mount *mp2 = NULL;
-
- ITER(dd, dict_data, &de->de_q) {
- fsi_mount *mp = (fsi_mount *) dd->dd_data;
-
- if (fp->f_from &&
- STREQ(mp->m_dk->d_host->h_hostname, fp->f_from)) {
- mp2 = mp;
- break;
- }
- }
-
- if (mp2) {
- fp->f_ref = mp2;
- matched = 1;
- break;
- }
- } else {
- matched = 1;
- break;
- }
- }
- p = strrchr(nn, '/');
- if (p)
- *p = '\0';
- } while (de && p);
- XFREE(nn);
-
- if (!found) {
- lerror(fp->f_ioloc, "volname %s unknown", fp->f_volname);
- } else if (matched) {
-
- if (de)
- fixup_required_mount_info(fp, de);
- req = ~fp->f_mask & FM_REQUIRED;
- if (req) {
- show_required(fp->f_ioloc, req, fp->f_volname, hp->h_hostname,
- fsmount_strings);
- } else if (STREQ(fp->f_localname, "/")) {
- hp->h_netroot = fp;
- netbootp |= FM_NETROOT;
- } else if (STREQ(fp->f_localname, "swap")) {
- hp->h_netswap = fp;
- netbootp |= FM_NETSWAP;
- }
-
- } else {
- lerror(fp->f_ioloc, "volname %s not exported from %s", fp->f_volname,
- fp->f_from ? fp->f_from : "anywhere");
- }
- }
-
- if (netbootp && (netbootp != FM_NETBOOT))
- lerror(hp->h_ioloc, "network booting requires both root and swap areas");
-}
-
-
-void
-analyze_hosts(qelem *q)
-{
- host *hp;
-
- show_area_being_processed("analyze hosts", 5);
-
- /*
- * Check all drives
- */
- ITER(hp, host, q) {
- fsi_log("disks on host %s", hp->h_hostname);
- show_new("ana-host");
- hp->h_hostpath = compute_hostpath(hp->h_hostname);
-
- if (hp->h_disk_fs)
- analyze_drives(hp);
-
- }
-
- show_area_being_processed("analyze mounts", 5);
-
- /*
- * Check static mounts
- */
- ITER(hp, host, q) {
- fsi_log("mounts on host %s", hp->h_hostname);
- show_new("ana-mount");
- if (hp->h_mount)
- analyze_mounts(hp);
-
- }
-}
-
-
-/*
- * Check an automount request
- */
-static void
-analyze_automount(automount *ap)
-{
- dict_ent *de = find_volname(ap->a_volname);
-
- if (de) {
- ap->a_mounted = de;
- } else {
- if (STREQ(ap->a_volname, ap->a_name))
- lerror(ap->a_ioloc, "unknown volname %s automounted", ap->a_volname);
- else
- lerror(ap->a_ioloc, "unknown volname %s automounted on %s", ap->a_volname, ap->a_name);
- }
-}
-
-
-static void
-analyze_automount_tree(qelem *q, char *pref, int lvl)
-{
- automount *ap;
-
- ITER(ap, automount, q) {
- char nname[1024];
-
- if (lvl > 0 || ap->a_mount)
- if (ap->a_name[1] && strchr(ap->a_name + 1, '/'))
- lerror(ap->a_ioloc, "not allowed '/' in a directory name");
- xsnprintf(nname, sizeof(nname), "%s/%s", pref, ap->a_name);
- XFREE(ap->a_name);
- ap->a_name = xstrdup(nname[1] == '/' ? nname + 1 : nname);
- fsi_log("automount point %s:", ap->a_name);
- show_new("ana-automount");
-
- if (ap->a_mount) {
- analyze_automount_tree(ap->a_mount, ap->a_name, lvl + 1);
- } else if (ap->a_hardwiredfs) {
- fsi_log("\thardwired from %s to %s", ap->a_volname, ap->a_hardwiredfs);
- } else if (ap->a_volname) {
- fsi_log("\tautomount from %s", ap->a_volname);
- analyze_automount(ap);
- } else if (ap->a_symlink) {
- fsi_log("\tsymlink to %s", ap->a_symlink);
- } else {
- ap->a_volname = xstrdup(ap->a_name);
- fsi_log("\timplicit automount from %s", ap->a_volname);
- analyze_automount(ap);
- }
- }
-}
-
-
-void
-analyze_automounts(qelem *q)
-{
- auto_tree *tp;
-
- show_area_being_processed("analyze automount", 5);
-
- /*
- * q is a list of automounts
- */
- ITER(tp, auto_tree, q)
- analyze_automount_tree(tp->t_mount, "", 0);
-}
diff --git a/contrib/amd/fsinfo/fsi_data.h b/contrib/amd/fsinfo/fsi_data.h
deleted file mode 100644
index 4cc341d85a69..000000000000
--- a/contrib/amd/fsinfo/fsi_data.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/fsi_data.h
- *
- */
-
-#ifndef _FSI_DATA_H
-#define _FSI_DATA_H
-
-typedef struct auto_tree auto_tree;
-typedef struct automount automount;
-typedef struct dict dict;
-typedef struct dict_data dict_data;
-typedef struct dict_ent dict_ent;
-typedef struct disk_fs disk_fs;
-typedef struct ether_if ether_if;
-typedef struct fsmount fsmount;
-typedef struct host host;
-typedef struct ioloc ioloc;
-typedef struct fsi_mount fsi_mount;
-
-
-/*
- * Automount tree
- */
-struct automount {
- qelem a_q;
- ioloc *a_ioloc;
- char *a_name; /* Automount key */
- char *a_volname; /* Equivalent volume to be referenced */
- char *a_symlink; /* Symlink representation */
- char *a_opts; /* opts for mounting */
- char *a_hardwiredfs; /* hack to bypass bogus fs definitions */
- qelem *a_mount; /* Tree representation */
- dict_ent *a_mounted;
-};
-
-/*
- * List of automount trees
- */
-struct auto_tree {
- qelem t_q;
- ioloc *t_ioloc;
- char *t_defaults;
- qelem *t_mount;
-};
-
-/*
- * A host
- */
-struct host {
- qelem q;
- int h_mask;
- ioloc *h_ioloc;
- fsmount *h_netroot, *h_netswap;
-#define HF_HOST 0
- char *h_hostname; /* The full name of the host */
- char *h_lochost; /* The name of the host with local domains stripped */
- char *h_hostpath; /* The filesystem path to the host (cf
- compute_hostpath) */
-#define HF_ETHER 1
- qelem *h_ether;
-#define HF_CONFIG 2
- qelem *h_config;
-#define HF_ARCH 3
- char *h_arch;
-#define HF_CLUSTER 4
- char *h_cluster;
-#define HF_OS 5
- char *h_os;
- qelem *h_disk_fs;
- qelem *h_mount;
-};
-
-/*
- * An ethernet interface
- */
-struct ether_if {
- qelem e_q;
- int e_mask;
- ioloc *e_ioloc;
- char *e_if;
-#define EF_INADDR 0
- struct in_addr e_inaddr;
-#define EF_NETMASK 1
- u_long e_netmask;
-#define EF_HWADDR 2
- char *e_hwaddr;
-};
-
-/*
- * Disk filesystem structure.
- *
- * If the DF_* numbers are changed
- * disk_fs_strings in analyze.c will
- * need updating.
- */
-struct disk_fs {
- qelem d_q;
- int d_mask;
- ioloc *d_ioloc;
- host *d_host;
- char *d_mountpt;
- char *d_dev;
-#define DF_FSTYPE 0
- char *d_fstype;
-#define DF_OPTS 1
- char *d_opts;
-#define DF_DUMPSET 2
- char *d_dumpset;
-#define DF_PASSNO 3
- int d_passno;
-#define DF_FREQ 4
- int d_freq;
-#define DF_MOUNT 5
- qelem *d_mount;
-#define DF_LOG 6
- char *d_log;
-};
-
-#define DF_REQUIRED ((1<<DF_FSTYPE)|(1<<DF_OPTS)|(1<<DF_PASSNO)|(1<<DF_MOUNT))
-
-/*
- * A mount tree
- */
-struct fsi_mount {
- qelem m_q;
- ioloc *m_ioloc;
- int m_mask;
-#define DM_VOLNAME 0
- char *m_volname;
-#define DM_EXPORTFS 1
- char *m_exportfs;
-#define DM_SEL 2
- char *m_sel;
- char *m_name;
- int m_name_len;
- fsi_mount *m_parent;
- disk_fs *m_dk;
- fsi_mount *m_exported;
- qelem *m_mount;
-};
-
-/*
- * Additional filesystem mounts
- *
- * If the FM_* numbers are changed
- * disk_fs_strings in analyze.c will
- * need updating.
- */
-struct fsmount {
- qelem f_q;
- fsi_mount *f_ref;
- ioloc *f_ioloc;
- int f_mask;
-#define FM_LOCALNAME 0
- char *f_localname;
-#define FM_VOLNAME 1
- char *f_volname;
-#define FM_FSTYPE 2
- char *f_fstype;
-#define FM_OPTS 3
- char *f_opts;
-#define FM_FROM 4
- char *f_from;
-#define FM_DIRECT 5
-};
-
-#define FM_REQUIRED ((1<<FM_VOLNAME)|(1<<FM_FSTYPE)|(1<<FM_OPTS)|(1<<FM_FROM)|(1<<FM_LOCALNAME))
-#define FM_NETROOT 0x01
-#define FM_NETSWAP 0x02
-#define FM_NETBOOT (FM_NETROOT|FM_NETSWAP)
-
-#define DICTHASH 5
-struct dict_ent {
- dict_ent *de_next;
- char *de_key;
- int de_count;
- qelem de_q;
-};
-
-/*
- * Dictionaries ...
- */
-struct dict_data {
- qelem dd_q;
- char *dd_data;
-};
-
-struct dict {
- dict_ent *de[DICTHASH];
-};
-
-/*
- * Source text location for error reports
- */
-struct ioloc {
- int i_line;
- char *i_file;
-};
-#endif /* not _FSI_DATA_H */
diff --git a/contrib/amd/fsinfo/fsi_dict.c b/contrib/amd/fsinfo/fsi_dict.c
deleted file mode 100644
index b909783b61eb..000000000000
--- a/contrib/amd/fsinfo/fsi_dict.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/fsi_dict.c
- *
- */
-
-/*
- * Dictionary support
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <fsi_data.h>
-#include <fsinfo.h>
-
-
-static int
-dict_hash(char *k)
-{
- u_int h;
-
- for (h = 0; *k; h += *k++) ;
- return h % DICTHASH;
-}
-
-
-dict *
-new_dict(void)
-{
- dict *dp = CALLOC(struct dict);
-
- return dp;
-}
-
-
-static void
-dict_add_data(dict_ent *de, char *v)
-{
- dict_data *dd = CALLOC(struct dict_data);
-
- dd->dd_data = v;
- ins_que(&dd->dd_q, de->de_q.q_back);
- de->de_count++;
-}
-
-
-static dict_ent *
-new_dict_ent(char *k)
-{
- dict_ent *de = CALLOC(struct dict_ent);
-
- de->de_key = k;
- init_que(&de->de_q);
- return de;
-}
-
-
-dict_ent *
-dict_locate(dict *dp, char *k)
-{
- dict_ent *de = dp->de[dict_hash(k)];
-
- while (de && !STREQ(de->de_key, k))
- de = de->de_next;
- return de;
-}
-
-
-void
-dict_add(dict *dp, char *k, char *v)
-{
- dict_ent *de = dict_locate(dp, k);
-
- if (!de) {
- dict_ent **dep = &dp->de[dict_hash(k)];
- de = new_dict_ent(k);
- de->de_next = *dep;
- *dep = de;
- }
- dict_add_data(de, v);
-}
-
-
-int
-dict_iter(dict *dp, int (*fn) (qelem *))
-{
- int i;
- int errors = 0;
-
- for (i = 0; i < DICTHASH; i++) {
- dict_ent *de = dp->de[i];
- while (de) {
- errors += (*fn) (&de->de_q);
- de = de->de_next;
- }
- }
- return errors;
-}
diff --git a/contrib/amd/fsinfo/fsi_gram.y b/contrib/amd/fsinfo/fsi_gram.y
deleted file mode 100644
index 85d19aa5cdab..000000000000
--- a/contrib/amd/fsinfo/fsi_gram.y
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/fsi_gram.y
- *
- */
-
-%{
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <fsi_data.h>
-#include <fsinfo.h>
-
-extern qelem *list_of_hosts, *list_of_automounts;
-%}
-
-%union {
- auto_tree *a;
- disk_fs *d;
- ether_if *e;
- host *h;
- qelem *q;
- char *s;
- fsi_mount *m;
- fsmount *f;
-}
-
-%token tARCH
-%token tAS
-%token tAUTOMOUNT
-%token tCLUSTER
-%token tCONFIG
-%token tDUMPSET
-%token tEQ
-%token tNFSEQ
-%token tEXPORTFS
-%token tFREQ
-%token tFROM
-%token tFS
-%token tFSTYPE
-%token tHWADDR
-%token tINADDR
-%token tHOST
-%token tLOCALHOST
-%token tLOG
-%token tMOUNT
-%token tNETMASK
-%token tNETIF
-%token tVOLNAME
-%token tOPTS
-%token tOS
-%token tPASSNO
-%token tDIRECT
-%token tSEL
-%token <s> tSTR
-
-%start list_of_hosts
-
-%type <a> automount
-%type <q> automount_tree
-%type <e> ether_attr
-%type <m> dir_tree_info
-%type <d> filesystem fs_info_list
-%type <h> host host_attr host_attr_list
-%type <q> list_of_hosts list_of_filesystems list_of_mounts dir_tree
-%type <f> localinfo_list
-%type <s> opt_auto_opts
-
-%%
-
-list_of_hosts :
- /* empty */
- { $$ = new_que(); }
-
- | list_of_hosts host
- { if ($2) ins_que((qelem *) $2, list_of_hosts->q_back);
- $$ = $1; }
-
- | list_of_hosts automount
- { if ($2) ins_que((qelem *) $2, list_of_automounts->q_back);
- $$ = $1; }
- ;
-
-/*
- * A new host:
- *
- * host foo.domain
- */
-host :
- tHOST host_attr list_of_filesystems list_of_mounts
- { $$ = $2; $$->h_disk_fs = $3; $$->h_mount = $4; }
-
- | error tHOST host_attr list_of_filesystems list_of_mounts
- { $$ = $3; $$->h_disk_fs = $4; $$->h_mount = $5; }
-
- ;
-
-host_attr :
- tSTR
- { $$ = new_host(); set_host($$, HF_HOST, $1); }
-
- | '{' host_attr_list '}' tSTR
- { $$ = $2; set_host($$, HF_HOST, $4); }
-
- ;
-
-host_attr_list :
- /* empty */
- { $$ = new_host(); }
-
- | host_attr_list tNETIF tSTR '{' ether_attr '}'
- { if ($5) {
- $5->e_if = $3;
- $$ = $1; set_host($$, HF_ETHER, (char *) $5); }
- }
-
- | host_attr_list tCONFIG tSTR
- { $$ = $1; set_host($$, HF_CONFIG, $3); }
-
- | host_attr_list tARCH '=' tSTR
- { $$ = $1; set_host($$, HF_ARCH, $4); }
-
- | host_attr_list tOS '=' tSTR
- { $$ = $1; set_host($$, HF_OS, $4); }
-
- | host_attr_list tCLUSTER '=' tSTR
- { $$ = $1; set_host($$, HF_CLUSTER, $4); }
-
- | host_attr_list error '=' tSTR
- { yyerror("unknown host attribute"); }
- ;
-
-ether_attr :
- /* empty */
- { $$ = new_ether_if(); }
-
- | ether_attr tINADDR '=' tSTR
- { $$ = $1; set_ether_if($$, EF_INADDR, $4); }
- | ether_attr tNETMASK '=' tSTR
- { $$ = $1; set_ether_if($$, EF_NETMASK, $4); }
- | ether_attr tHWADDR '=' tSTR
- { $$ = $1; set_ether_if($$, EF_HWADDR, $4); }
- ;
-
-/*
- * A new automount tree:
- *
- * automount /mountpoint { ... }
- */
-automount :
- tAUTOMOUNT opt_auto_opts automount_tree
- { if ($3) {
- $$ = new_auto_tree($2, $3);
- } else {
- $$ = 0;
- }
- }
-
- | tAUTOMOUNT error
- { $$ = 0; }
- ;
-
-opt_auto_opts :
- /* empty */
- { $$ = xstrdup(""); }
-
- | tOPTS tSTR
- { $$ = $2; }
- ;
-
-list_of_filesystems :
- /* empty */
- { $$ = 0; }
-
- | list_of_filesystems filesystem
- { if ($2) {
- if ($1)
- $$ = $1;
- else
- $$ = new_que();
- ins_que(&$2->d_q, $$->q_back);
- } else {
- $$ = $1;
- }
- }
- ;
-
-/*
- * A new filesystem:
- *
- * fs /dev/whatever { ... }
- */
-filesystem :
- tFS tSTR '{' fs_info_list '}'
- { $4->d_dev = $2; $$ = $4; }
-
- | tFS error '}'
- { $$ = (disk_fs *) NULL; }
- ;
-
-/*
- * Per-filesystem information:
- *
- * fstype - the type of the filesystem (4.2, nfs, swap, export)
- * opts - the mount options ("rw,grpid")
- * passno - fsck pass number
- * freq - dump frequency
- * dumpset - tape set for filesystem dumps
- * mount - where to mount this filesystem
- * log - log device
- */
-fs_info_list :
- /* empty */
- { $$ = new_disk_fs(); }
-
- | fs_info_list tFSTYPE '=' tSTR
- { $$ = $1; set_disk_fs($$, DF_FSTYPE, $4); }
-
- | fs_info_list tOPTS '=' tSTR
- { $$ = $1; set_disk_fs($$, DF_OPTS, $4); }
-
- | fs_info_list tPASSNO '=' tSTR
- { $$ = $1; set_disk_fs($$, DF_PASSNO, $4); }
-
- | fs_info_list tFREQ '=' tSTR
- { $$ = $1; set_disk_fs($$, DF_FREQ, $4); }
-
- | fs_info_list tMOUNT dir_tree
- { $$ = $1; set_disk_fs($$, DF_MOUNT, (char *) $3); }
-
- | fs_info_list tDUMPSET '=' tSTR
- { $$ = $1; set_disk_fs($$, DF_DUMPSET, $4); }
-
- | fs_info_list tLOG '=' tSTR
- { $$ = $1; set_disk_fs($$, DF_LOG, $4); }
-
- | fs_info_list error '=' tSTR
- { yyerror("unknown filesystem attribute"); }
- ;
-
-/*
- * An automount tree:
- *
- * name = "volname" name is a reference to volname
- * name -> "string" name is a link to "string"
- * name nfsalias "string" name is a link to "string", string parsed as NFS
- * pathname.
- * name { ... } name is an automount tree
- */
-automount_tree :
- /* empty */
- { $$ = 0; }
-
- | automount_tree tSTR opt_auto_opts '=' tSTR
- { automount *a = new_automount($2);
- a->a_volname = $5;
- a->a_opts = $3;
- if ($1)
- $$ = $1;
- else
- $$ = new_que();
- ins_que(&a->a_q, $$->q_back);
- }
- | automount_tree tSTR opt_auto_opts tNFSEQ tSTR
- { automount *a = new_automount($2);
- a->a_hardwiredfs = $5;
- a->a_opts = $3;
- if ($1)
- $$ = $1;
- else
- $$ = new_que();
- ins_que(&a->a_q, $$->q_back);
- }
-
- | automount_tree tSTR tEQ tSTR
- { automount *a = new_automount($2);
- a->a_symlink = $4;
- if ($1)
- $$ = $1;
- else
- $$ = new_que();
- ins_que(&a->a_q, $$->q_back);
- }
-
- | automount_tree tSTR opt_auto_opts '{' automount_tree '}'
- { automount *a = new_automount($2);
- a->a_mount = $5;
- a->a_opts = $3;
- if ($1)
- $$ = $1;
- else
- $$ = new_que();
- ins_que(&a->a_q, $$->q_back);
- }
- ;
-
-dir_tree :
- /* empty */
- { $$ = 0; }
-
- | dir_tree tSTR '{' dir_tree_info dir_tree '}'
- { $4->m_mount = $5;
- $4->m_name = $2;
- if ($2[0] != '/' && $2[1] && strchr($2+1, '/'))
- yyerror("not allowed '/' in a directory name");
- if ($1)
- $$ = $1;
- else
- $$ = new_que();
- ins_que(&$4->m_q, $$->q_back);
- }
- ;
-
-dir_tree_info :
- /* empty */
- { $$ = new_mount(); }
-
- | dir_tree_info tEXPORTFS tSTR
- { $$ = $1; set_mount($$, DM_EXPORTFS, $3); }
-
- | dir_tree_info tVOLNAME tSTR
- { $$ = $1; set_mount($$, DM_VOLNAME, $3); }
-
- | dir_tree_info tSEL tSTR
- { $$ = $1; set_mount($$, DM_SEL, $3); }
-
- | dir_tree_info error '=' tSTR
- { yyerror("unknown directory attribute"); }
- ;
-
-/*
- * Additional mounts on a host
- *
- * mount "volname" ...
- */
-list_of_mounts :
- /* empty */
- { $$ = 0; }
-
- | list_of_mounts tMOUNT tSTR localinfo_list
- { set_fsmount($4, FM_VOLNAME, $3);
- if ($1)
- $$ = $1;
- else
- $$ = new_que();
- ins_que(&$4->f_q, $$->q_back);
- }
- ;
-
-/*
- * Mount info:
- *
- * from "hostname" - obtain the object from the named host
- * as "string" - where to mount, if different from the volname
- * opts "string" - mount options
- * fstype "type" - type of filesystem mount, if not nfs
- * direct - mount entry, no need to create ad-hoc hosts file
- */
-localinfo_list :
- /* empty */
- { $$ = new_fsmount(); }
-
- | localinfo_list tDIRECT
- { $$ = $1; set_fsmount($$, FM_DIRECT, ""); }
-
- | localinfo_list tAS tSTR
- { $$ = $1; set_fsmount($$, FM_LOCALNAME, $3); }
-
- | localinfo_list tFROM tSTR
- { $$ = $1; set_fsmount($$, FM_FROM, $3); }
-
- | localinfo_list tFSTYPE tSTR
- { $$ = $1; set_fsmount($$, FM_FSTYPE, $3); }
-
- | localinfo_list tOPTS tSTR
- { $$ = $1; set_fsmount($$, FM_OPTS, $3); }
-
- | localinfo_list error '=' tSTR
- { yyerror("unknown mount attribute"); }
- ;
diff --git a/contrib/amd/fsinfo/fsi_lex.l b/contrib/amd/fsinfo/fsi_lex.l
deleted file mode 100644
index 4d09e2c55e74..000000000000
--- a/contrib/amd/fsinfo/fsi_lex.l
+++ /dev/null
@@ -1,273 +0,0 @@
-%{
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/fsi_lex.l
- *
- */
-
-/*
- * Lexical analyzer for fsinfo.
- * TODO: Needs rewriting.
- */
-
-static int ayylineno;
-
-#ifdef FLEX_SCANNER
-# define INIT_STATE { \
- switch ((yy_start - 1) / 2) { \
- case 0: \
- BEGIN F; \
- break; \
- } \
-}
-
-#else /* not FLEX_SCANNER */
-
-/*
- * Using old lex...
- */
-# define INIT_STATE { \
- switch (yybgin - yysvec - 1) { \
- case 0: \
- BEGIN F; \
- break; \
- } \
-}
-
-#endif /* end FLEX_SCANNER */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-/*
- * Some systems include a definition for the macro ECHO in <sys/ioctl.h>,
- * and their (bad) version of lex defines it too at the very beginning of
- * the generated lex.yy.c file (before it can be easily undefined),
- * resulting in a conflict. So undefine it here before needed.
- * Luckily, it does not appear that this macro is actually used in the rest
- * of the generated lex.yy.c file.
- */
-#ifdef ECHO
-# undef ECHO
-#endif /* ECHO */
-#include <am_defs.h>
-#include <fsi_data.h>
-#include <fsinfo.h>
-#include <fsi_gram.h>
-/* and once again undefine this, just in case */
-#ifdef ECHO
-# undef ECHO
-#endif /* ECHO */
-
-/*
- * There are some things that need to be defined only if using GNU flex.
- * These must not be defined if using standard lex
- */
-#ifdef FLEX_SCANNER
-# ifndef ECHO
-# define ECHO __IGNORE(fwrite( yytext, yyleng, 1, yyout ))
-# endif /* not ECHO */
-#endif /* FLEX_SCANNER */
-
-/*
- * some systems such as DU-4.x have a different GNU flex in /usr/bin
- * which automatically generates yywrap macros and symbols. So I must
- * distinguish between them and when yywrap is actually needed.
- */
-#if !defined(yywrap) || defined(yylex)
-int yywrap(void);
-#endif /* not yywrap or yylex */
-
-int fsi_error(const char *, ...);
-
-YYSTYPE yylval;
-static char *fsi_filename;
-static char *optr;
-static char ostr[1024];
-static int find_resword(char *);
-static int quoted;
-
-struct r {
- char *rw;
- int tok;
-} rr[] = {
- { "->", tEQ },
- { "arch", tARCH },
- { "as", tAS },
- { "automount", tAUTOMOUNT },
- { "cluster", tCLUSTER },
- { "config", tCONFIG },
- { "direct", tDIRECT },
- { "dumpset", tDUMPSET },
- { "exportfs", tEXPORTFS },
- { "freq", tFREQ },
- { "from", tFROM },
- { "fs", tFS },
- { "fstype", tFSTYPE },
- { "host", tHOST },
- { "hwaddr", tHWADDR },
- { "inaddr", tINADDR },
- { "localhost", tLOCALHOST },
- { "log", tLOG },
- { "mount", tMOUNT },
- { "netif", tNETIF },
- { "netmask", tNETMASK },
- { "nfsalias", tNFSEQ },
- { "opts", tOPTS },
- { "os", tOS },
- { "passno", tPASSNO },
- { "sel", tSEL },
- { "volname", tVOLNAME },
- { NULL, 0 },
-};
-#define NRES_WORDS (sizeof(rr)/sizeof(rr[0])-1)
-
-%}
-
-/* This option causes Solaris lex to fail. Use flex. See BUGS file */
-/* no need to use yyunput() */
-%option nounput
-%option noinput
-
-/* allocate more output slots so lex scanners don't run out of mem */
-%o 1024
-
-%start F Q
-
-%%
- INIT_STATE; /* witchcraft */
-
-<F>[^ \t\n"={}]+ { return find_resword(yytext); } /* dummy " */
-<F>[ \t] ;
-<F>"\n" { ayylineno++; }
-<F>[={}] { return *yytext; }
-
-<F>\" { BEGIN Q; optr = ostr; quoted = 1; }
-<Q>\n { ayylineno++; fsi_error("\" expected"); BEGIN F; }
-<Q>\\b { *optr++ = '\b'; /* escape */ }
-<Q>\\t { *optr++ = '\t'; /* escape */ }
-<Q>\\\" { *optr++ = '\"'; /* escape */ }
-<Q>\\\\ { *optr++ = '\\'; /* escape */ }
-<Q>\\\n { ayylineno++; /* continue */ }
-<Q>\\r { *optr++ = '\r'; /* escape */ }
-<Q>\\n { *optr++ = '\n'; /* escape */ }
-<Q>\\f { *optr++ = '\f'; /* escape */ }
-<Q>"\\ " { *optr++ = ' '; /* force space */ }
-<Q>\\. { fsi_error("Unknown \\ sequence"); }
-<Q>([ \t]|"\\\n"){2,} { char *p = (char *) yytext-1; while ((p = strchr(p+1, '\n'))) ayylineno++; }
-<Q>\" { BEGIN F; quoted = 0;
- *optr = '\0';
- yylval.s = xstrdup(ostr);
- return tSTR;
- }
-<Q>. { *optr++ = *yytext; }
-
-%%
-
-
-static int
-find_resword(char *s)
-{
- int tok = 0;
- int l = 0, m = NRES_WORDS/2, h = NRES_WORDS-1;
- int rc = 0;
-
- m = NRES_WORDS/2;
-
-#define FSTRCMP(p, q) ((*(p) == *(q)) ? strcmp((p)+1, (q)+1) : *(p) - *(q))
-
- while ((l <= h) && (rc = FSTRCMP(s, rr[m].rw))) {
- if (rc < 0)
- h = m - 1;
- else
- l = m + 1;
- m = (h + l) / 2;
- }
-
- if (rc == 0)
- tok = rr[m].tok;
-
- switch (tok) {
- case tLOCALHOST:
- s = "${host}";
- /*FALLTHROUGH*/
- case 0:
- yylval.s = xstrdup(s);
- tok = tSTR;
- /*FALLTHROUGH*/
- default:
- return tok;
- }
-}
-
-
-int
-fsi_error(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- col_cleanup(0);
- fprintf(stderr, "%s:%d: ", fsi_filename ? fsi_filename : "/dev/stdin", ayylineno);
- vfprintf(stderr, fmt, ap);
- fputc('\n', stderr);
- parse_errors++;
- va_end(ap);
- return 0;
-}
-
-
-ioloc *
-current_location(void)
-{
- ioloc *ip = CALLOC(struct ioloc);
- ip->i_line = ayylineno;
- ip->i_file = fsi_filename;
- return ip;
-}
-
-
-/*
- * some systems such as DU-4.x have a different GNU flex in /usr/bin
- * which automatically generates yywrap macros and symbols. So I must
- * distinguish between them and when yywrap is actually needed.
- */
-#if !defined(yywrap) || defined(yylex)
-int yywrap(void)
-{
- return 1;
-}
-#endif /* not yywrap or yylex */
diff --git a/contrib/amd/fsinfo/fsi_util.c b/contrib/amd/fsinfo/fsi_util.c
deleted file mode 100644
index f8ff313cc426..000000000000
--- a/contrib/amd/fsinfo/fsi_util.c
+++ /dev/null
@@ -1,677 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/fsi_util.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <fsi_data.h>
-#include <fsinfo.h>
-
-/* static variables */
-static int show_range = 10;
-static int col = 0;
-static int total_shown = 0;
-static int total_mmm = 8;
-
-
-static int
-col_output(int len)
-{
- int wrapped = 0;
-
- col += len;
- if (col > 77) {
- fputc('\n', stdout);
- col = len;
- wrapped = 1;
- }
- return wrapped;
-}
-
-
-static void
-show_total(void)
-{
- if (total_mmm != -show_range + 1) {
- char n[8];
- int len;
-
- if (total_mmm < 0)
- fputc('*', stdout);
- xsnprintf(n, sizeof(n), "%d", total_shown);
- len = strlen(n);
- if (col_output(len))
- fputc(' ', stdout);
- fputs(n, stdout);
- fflush(stdout);
- total_mmm = -show_range;
- }
-}
-
-
-void
-col_cleanup(int eoj)
-{
- if (verbose < 0)
- return;
- if (eoj) {
- show_total();
- fputs(")]", stdout);
- }
- if (col) {
- fputc('\n', stdout);
- col = 0;
- }
-}
-
-
-/*
- * Lots of ways of reporting errors...
- */
-void
-error(char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- col_cleanup(0);
- fprintf(stderr, "%s: Error, ", progname);
- vfprintf(stderr, fmt, ap);
- fputc('\n', stderr);
- errors++;
- va_end(ap);
-}
-
-
-void
-lerror(ioloc *l, char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- col_cleanup(0);
- fprintf(stderr, "%s:%d: ", l->i_file, l->i_line);
- vfprintf(stderr, fmt, ap);
- fputc('\n', stderr);
- errors++;
- va_end(ap);
-}
-
-
-void
-lwarning(ioloc *l, char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- col_cleanup(0);
- fprintf(stderr, "%s:%d: ", l->i_file, l->i_line);
- vfprintf(stderr, fmt, ap);
- fputc('\n', stderr);
- va_end(ap);
-}
-
-
-void
-fatal(char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- col_cleanup(1);
- fprintf(stderr, "%s: Fatal, ", progname);
- vfprintf(stderr, fmt, ap);
- fputc('\n', stderr);
- va_end(ap);
- exit(1);
-}
-
-
-/*
- * Debug log
- */
-void
-fsi_log(char *fmt, ...)
-{
- va_list ap;
-
- if (verbose > 0) {
- va_start(ap, fmt);
- fputc('#', stdout);
- fprintf(stdout, "%s: ", progname);
- vfprintf(stdout, fmt, ap);
- putc('\n', stdout);
- va_end(ap);
- }
-}
-
-
-void
-info_hdr(FILE *ef, char *info)
-{
- fprintf(ef, "# *** NOTE: This file contains %s info\n", info);
-}
-
-
-void
-gen_hdr(FILE *ef, char *hn)
-{
- fprintf(ef, "# *** NOTE: Only for use on %s\n", hn);
-}
-
-
-static void
-make_banner(FILE *fp)
-{
- time_t t = time((time_t *) NULL);
- char *cp = ctime(&t);
-
- fprintf(fp,
- "\
-# *** This file was automatically generated -- DO NOT EDIT HERE ***\n\
-# \"%s\" run by %s@%s on %s\
-#\n\
-",
- progname, username, hostname, cp);
-}
-
-
-void
-show_new(char *msg)
-{
- if (verbose < 0)
- return;
-
- total_shown++;
- if (total_mmm > show_range) {
- show_total();
- } else if (total_mmm == 0) {
- fputc('*', stdout);
- fflush(stdout);
- col += 1;
- }
- total_mmm++;
-}
-
-
-void
-show_area_being_processed(char *area, int n)
-{
- static char *last_area = NULL;
-
- if (verbose < 0)
- return;
- if (last_area) {
- if (total_shown)
- show_total();
- fputs(")", stdout);
- col += 1;
- }
-
- if (!last_area || !STREQ(area, last_area)) {
- if (last_area) {
- col_cleanup(0);
- total_shown = 0;
- total_mmm = show_range + 1;
- }
- (void) col_output(strlen(area) + 2);
- fprintf(stdout, "[%s", area);
- last_area = area;
- }
-
- fputs(" (", stdout);
- col += 2;
- show_range = n;
- total_mmm = n + 1;
-
- fflush(stdout);
-}
-
-
-/*
- * Open a file with the given prefix and name
- */
-FILE *
-pref_open(char *pref, char *hn, void (*hdr) (FILE *, char *), char *arg)
-{
- char p[MAXPATHLEN];
- FILE *ef;
-
- xsnprintf(p, sizeof(p), "%s%s", pref, hn);
- fsi_log("Writing %s info for %s to %s", pref, hn, p);
- ef = fopen(p, "w");
- if (ef) {
- (*hdr) (ef, arg);
- make_banner(ef);
- } else {
- error("can't open %s for writing", p);
- }
-
- return ef;
-}
-
-
-int
-pref_close(FILE *fp)
-{
- return fclose(fp) == 0;
-}
-
-
-/*
- * Determine where Amd would automount the host/volname pair
- */
-void
-compute_automount_point(char *buf, size_t l, host *hp, char *vn)
-{
- xsnprintf(buf, l, "%s/%s%s", autodir, hp->h_lochost, vn);
-}
-
-
-/*
- * Data constructors..
- */
-automount *
-new_automount(char *name)
-{
- automount *ap = CALLOC(struct automount);
-
- ap->a_ioloc = current_location();
- ap->a_name = name;
- ap->a_volname = NULL;
- ap->a_mount = NULL;
- ap->a_opts = NULL;
- show_new("automount");
- return ap;
-}
-
-
-auto_tree *
-new_auto_tree(char *def, qelem *ap)
-{
- auto_tree *tp = CALLOC(struct auto_tree);
-
- tp->t_ioloc = current_location();
- tp->t_defaults = def;
- tp->t_mount = ap;
- show_new("auto_tree");
- return tp;
-}
-
-
-host *
-new_host(void)
-{
- host *hp = CALLOC(struct host);
-
- hp->h_ioloc = current_location();
- hp->h_mask = 0;
- show_new("host");
- return hp;
-}
-
-
-void
-set_host(host *hp, int k, char *v)
-{
- int m = 1 << k;
-
- if (hp->h_mask & m) {
- fsi_error("host field \"%s\" already set", host_strings[k]);
- return;
- }
- hp->h_mask |= m;
-
- switch (k) {
-
- case HF_HOST:{
- char *p = xstrdup(v);
- dict_ent *de = dict_locate(dict_of_hosts, v);
-
- if (de)
- fsi_error("duplicate host %s!", v);
- else
- dict_add(dict_of_hosts, v, (char *) hp);
- hp->h_hostname = v;
- domain_strip(p, hostname);
- if (strchr(p, '.') != 0)
- XFREE(p);
- else
- hp->h_lochost = p;
- }
- break;
-
- case HF_CONFIG:{
- qelem *q;
- qelem *vq = (qelem *) v;
-
- hp->h_mask &= ~m;
- if (hp->h_config)
- q = hp->h_config;
- else
- q = hp->h_config = new_que();
- ins_que(vq, q->q_back);
- }
- break;
-
- case HF_ETHER:{
- qelem *q;
- qelem *vq = (qelem *) v;
-
- hp->h_mask &= ~m;
- if (hp->h_ether)
- q = hp->h_ether;
- else
- q = hp->h_ether = new_que();
- ins_que(vq, q->q_back);
- }
- break;
-
- case HF_ARCH:
- hp->h_arch = v;
- break;
-
- case HF_OS:
- hp->h_os = v;
- break;
-
- case HF_CLUSTER:
- hp->h_cluster = v;
- break;
-
- default:
- abort();
- break;
- }
-}
-
-
-ether_if *
-new_ether_if(void)
-{
- ether_if *ep = CALLOC(struct ether_if);
-
- ep->e_mask = 0;
- ep->e_ioloc = current_location();
- show_new("ether_if");
- return ep;
-}
-
-
-void
-set_ether_if(ether_if *ep, int k, char *v)
-{
- int m = 1 << k;
-
- if (ep->e_mask & m) {
- fsi_error("netif field \"%s\" already set", ether_if_strings[k]);
- return;
- }
- ep->e_mask |= m;
-
- switch (k) {
-
- case EF_INADDR:{
- ep->e_inaddr.s_addr = inet_addr(v);
- if ((int) ep->e_inaddr.s_addr == (int) INADDR_NONE)
- fsi_error("malformed IP dotted quad: %s", v);
- XFREE(v);
- }
- break;
-
- case EF_NETMASK:{
- u_long nm = 0;
-
- if ((sscanf(v, "0x%lx", &nm) == 1 || sscanf(v, "%lx", &nm) == 1) && nm != 0)
- ep->e_netmask = htonl(nm);
- else
- fsi_error("malformed netmask: %s", v);
- XFREE(v);
- }
- break;
-
- case EF_HWADDR:
- ep->e_hwaddr = v;
- break;
-
- default:
- abort();
- break;
- }
-}
-
-
-void
-set_disk_fs(disk_fs *dp, int k, char *v)
-{
- int m = 1 << k;
-
- if (dp->d_mask & m) {
- fsi_error("fs field \"%s\" already set", disk_fs_strings[k]);
- return;
- }
- dp->d_mask |= m;
-
- switch (k) {
-
- case DF_FSTYPE:
- dp->d_fstype = v;
- break;
-
- case DF_OPTS:
- dp->d_opts = v;
- break;
-
- case DF_DUMPSET:
- dp->d_dumpset = v;
- break;
-
- case DF_LOG:
- dp->d_log = v;
- break;
-
- case DF_PASSNO:
- dp->d_passno = atoi(v);
- XFREE(v);
- break;
-
- case DF_FREQ:
- dp->d_freq = atoi(v);
- XFREE(v);
- break;
-
- case DF_MOUNT:
- dp->d_mount = &((fsi_mount *) v)->m_q;
- break;
-
- default:
- abort();
- break;
- }
-}
-
-
-disk_fs *
-new_disk_fs(void)
-{
- disk_fs *dp = CALLOC(struct disk_fs);
-
- dp->d_ioloc = current_location();
- show_new("disk_fs");
- return dp;
-}
-
-
-void
-set_mount(fsi_mount *mp, int k, char *v)
-{
- int m = 1 << k;
-
- if (mp->m_mask & m) {
- fsi_error("mount tree field \"%s\" already set", mount_strings[k]);
- return;
- }
- mp->m_mask |= m;
-
- switch (k) {
-
- case DM_VOLNAME:
- dict_add(dict_of_volnames, v, (char *) mp);
- mp->m_volname = v;
- break;
-
- case DM_EXPORTFS:
- mp->m_exportfs = v;
- break;
-
- case DM_SEL:
- mp->m_sel = v;
- break;
-
- default:
- abort();
- break;
- }
-}
-
-
-fsi_mount *
-new_mount(void)
-{
- fsi_mount *fp = CALLOC(struct fsi_mount);
-
- fp->m_ioloc = current_location();
- show_new("mount");
- return fp;
-}
-
-
-void
-set_fsmount(fsmount *fp, int k, char *v)
-{
- int m = 1 << k;
-
- if (fp->f_mask & m) {
- fsi_error("mount field \"%s\" already set", fsmount_strings[k]);
- return;
- }
- fp->f_mask |= m;
-
- switch (k) {
-
- case FM_LOCALNAME:
- fp->f_localname = v;
- break;
-
- case FM_VOLNAME:
- fp->f_volname = v;
- break;
-
- case FM_FSTYPE:
- fp->f_fstype = v;
- break;
-
- case FM_OPTS:
- fp->f_opts = v;
- break;
-
- case FM_FROM:
- fp->f_from = v;
- break;
-
- case FM_DIRECT:
- break;
-
- default:
- abort();
- break;
- }
-}
-
-
-fsmount *
-new_fsmount(void)
-{
- fsmount *fp = CALLOC(struct fsmount);
-
- fp->f_ioloc = current_location();
- show_new("fsmount");
- return fp;
-}
-
-
-void
-init_que(qelem *q)
-{
- q->q_forw = q->q_back = q;
-}
-
-
-qelem *
-new_que(void)
-{
- qelem *q = CALLOC(qelem);
-
- init_que(q);
- return q;
-}
-
-
-void
-ins_que(qelem *elem, qelem *pred)
-{
- qelem *p;
-
- p = pred->q_forw;
- elem->q_back = pred;
- elem->q_forw = p;
- pred->q_forw = elem;
- p->q_back = elem;
-}
-
-
-void
-rem_que(qelem *elem)
-{
- qelem *p, *p2;
-
- p = elem->q_forw;
- p2 = elem->q_back;
-
- p2->q_forw = p;
- p->q_back = p2;
-}
diff --git a/contrib/amd/fsinfo/fsinfo.8 b/contrib/amd/fsinfo/fsinfo.8
deleted file mode 100644
index f4a1afa94bfb..000000000000
--- a/contrib/amd/fsinfo/fsinfo.8
+++ /dev/null
@@ -1,227 +0,0 @@
-.\"
-.\" Copyright (c) 1997-2014 Erez Zadok
-.\" Copyright (c) 1993 Jan-Simon Pendry.
-.\" Copyright (c) 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.\" File: am-utils/fsinfo/fsinfo.8
-.\"
-.Dd August 31, 2016
-.Sh NAME
-.Nm fsinfo
-.Nd co-ordinate site-wide file system information
-.Sh SYNOPSIS
-.Nm
-.Op fl qv
-.Op Fl a Ar autodir
-.Op Fl b Ar bootparams
-.Op Fl d Ar dumpsets
-.Op Fl e Ar exports
-.Op Fl f Ar fstabs
-.Op Fl h Ar hostname
-.Op Fl m Ar automounts
-.Op Fl I Ar dir
-.Oo
-.Fl D
-.Ar name Ns Op = Ns Ar string
-.Oc
-.Oo
-.Fl U
-.Ar name Ns Op = Ns Ar string
-.Oc
-.Ar config ...
-.Sh DESCRIPTION
-.Bf -symbolic
-This command is obsolete.
-Users are advised to use
-.Xr autofs 5
-instead.
-.Ef
-.Pp
-The
-.Nm
-utility takes a set of system configuration information, and generates
-a coordinated set of
-.Xr amd 8 ,
-.Xr mount 8
-and
-.Xr mountd 8
-configuration files.
-.Pp
-The following options are available:
-.Bl -tag -width Fl
-.It Fl a Ar autodir
-Specifies the directory name in which to place the automounter's
-mount points.
-This defaults to
-.Pa /a .
-.It Fl b Ar bootparams_prefix
-Specifies the prefix for the
-.Pa bootparams
-file.
-If it is not given, then the file will not be generated.
-The file will be constructed for the destination machine and will be
-placed into a file named
-.Pa bootparams
-and prefixed by the
-.Ar bootparams_prefix
-string.
-The file generated contains a list of entries describing each
-diskless client that can boot from the destination machine.
-.It Fl d Ar dumpsets_prefix
-Specifies the prefix for the
-.Pa dumpsets
-file.
-If it is not specified, then the file will not be generated.
-The file will be for the destination machine and will be placed into a file
-named
-.Pa dumpsets
-prefixed by the
-.Ar dumpsets_prefix
-string.
-This file is for use by
-.Tn Imperial College's
-local backup system.
-.It Fl e Ar exports_prefix
-Defines the prefix for the
-.Pa exports
-files.
-If it is not given, then the file will not be generated.
-For each machine defined in the configuration files as having disks,
-and
-.Pa exports
-file is constructed and given a file name determined by the name of the
-machine, prefixed with the
-.Ar exports_prefix
-string.
-If a machine is defined as diskless, then no
-file will be created for it.
-The files contain entries
-for directories on the machine that may be exported to clients.
-.It Fl f Ar fstabs_prefix
-This defines the prefix for the
-.Pa fstab
-files.
-The files will only be created if this prefix is defined.
-For each machine defined in the configuration files, a
-.Pa fstab
-file is created with the file name determined by prefixing this
-.Ar fstabs_prefix
-string with the name of the machine.
-These files contain entries
-for file systems and partitions to mount at boot time.
-.It Fl h Ar hostname
-Defines the hostname of the destination machine to process for.
-If this is not specified, it defaults to the local machine name,
-as returned by
-.Xr gethostname 3 .
-.It Fl m Ar automounts_prefix
-Defines the prefix for the automounter files.
-The maps will
-only be produced if this option is specified.
-The mount maps
-suitable for the network defined by the configuration files will
-be placed into files with names calculated by prefixing the
-.Ar automounts_prefix
-string to the name of each map.
-.It Fl q
-Selects quite mode.
-Only error messages that are generated will
-be displayed.
-.It Fl v
-Selects verbose mode.
-When this is activated, more messages
-will be displayed, and all information discovered when performing the semantic
-analysis phase will be displayed.
-Each verbose message
-is output to the standard output on a line starting with a `#'
-character.
-.It Fl D Xo
-.Ar name Ns Op = Ns Ar string
-.Xc
-Defines a symbol
-.Ar name
-for the preprocessor when reading the configuration files.
-Equivalent to the
-.Em #define
-directive.
-.It Fl I Ar dir
-This option is passed into the preprocessor for the configuration
-files.
-It specifies directories in which to find include files.
-.It Fl U Ar name
-Removes and initial definition of the symbol
-.Ar name .
-Inverse of the
-.Fl D
-option.
-.It Ar config
-One or more configuration files to be passed as input to
-.Nm .
-.El
-.Pp
-The
-.Nm
-command is fully described in the document
-.%T "Amd - The 4.4BSD Automounter" .
-.Sh SEE ALSO
-.Xr amd 8 ,
-.Xr mount 8 ,
-.Xr mountd 8
-.Pp
-.Dq am-utils
-.Xr info 1
-entry.
-.Rs
-.%A Erez Zadok
-.%B "Linux NFS and Automounter Administration"
-.%O ISBN 0-7821-2739-8
-.%I Sybex
-.%D 2001
-.Re
-.Pp
-.Pa http://www.am-utils.org/
-.Rs
-.%T Amd \- The 4.4 BSD Automounter
-.Re
-.Sh HISTORY
-The
-.Nm
-command first appeared in
-.Bx 4.4 .
-.Sh AUTHORS
-.An Jan-Simon Pendry Aq jsp@doc.ic.ac.uk ,
-Department of Computing, Imperial College, London, UK.
-.Pp
-.An Erez Zadok Aq ezk@cs.sunysb.edu ,
-Computer Science Department, Stony Brook University, Stony Brook, New York, USA.
-.Pp
-Other authors and contributors to am-utils are listed in the
-.Pa AUTHORS
-file distributed with am-utils.
diff --git a/contrib/amd/fsinfo/fsinfo.c b/contrib/amd/fsinfo/fsinfo.c
deleted file mode 100644
index 93122eabbbb2..000000000000
--- a/contrib/amd/fsinfo/fsinfo.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/fsinfo.c
- *
- */
-
-/*
- * fsinfo
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <fsi_data.h>
-#include <fsinfo.h>
-#include <fsi_gram.h>
-
-/* globals */
-char **g_argv;
-char *autodir = "/a";
-char *progname;
-char hostname[MAXHOSTNAMELEN + 1];
-char *username;
-char idvbuf[1024];
-dict *dict_of_hosts;
-dict *dict_of_volnames;
-int errors;
-int file_io_errors;
-int parse_errors;
-int verbose;
-qelem *list_of_automounts;
-qelem *list_of_hosts;
-
-/*
- * Output file prefixes
- */
-char *bootparams_pref;
-char *dumpset_pref;
-char *exportfs_pref;
-char *fstab_pref;
-char *mount_pref;
-
-
-/*
- * Argument cracking...
- */
-static void
-fsi_get_args(int c, char *v[])
-{
- int ch;
- int usage = 0;
- char *iptr = idvbuf;
-
- /*
- * Determine program name
- */
- if (v[0]) {
- progname = strrchr(v[0], '/');
- if (progname && progname[1])
- progname++;
- else
- progname = v[0];
- }
-
- if (!progname)
- progname = "fsinfo";
-
- while ((ch = getopt(c, v, "a:b:d:e:f:h:m:D:U:I:qv")) != -1)
-
- switch (ch) {
-
- case 'a':
- autodir = optarg;
- break;
-
- case 'b':
- if (bootparams_pref)
- fatal("-b option specified twice");
- bootparams_pref = optarg;
- break;
-
- case 'd':
- if (dumpset_pref)
- fatal("-d option specified twice");
- dumpset_pref = optarg;
- break;
-
- case 'h':
- xstrlcpy(hostname, optarg, sizeof(hostname));
- break;
-
- case 'e':
- if (exportfs_pref)
- fatal("-e option specified twice");
- exportfs_pref = optarg;
- break;
-
- case 'f':
- if (fstab_pref)
- fatal("-f option specified twice");
- fstab_pref = optarg;
- break;
-
- case 'm':
- if (mount_pref)
- fatal("-m option specified twice");
- mount_pref = optarg;
- break;
-
- case 'q':
- verbose = -1;
- break;
-
- case 'v':
- verbose = 1;
- break;
-
- case 'I':
- case 'D':
- case 'U':
- /* sizeof(iptr) is actually that of idvbuf. See declaration above */
- xsnprintf(iptr, sizeof(idvbuf), "-%c%s ", ch, optarg);
- iptr += strlen(iptr);
- break;
-
- default:
- usage++;
- break;
- }
-
- if (c != optind) {
- g_argv = v + optind - 1;
-#ifdef yywrap
- if (yywrap())
-#endif /* yywrap */
- fatal("Cannot read any input files");
- } else {
- usage++;
- }
-
- if (usage) {
- fprintf(stderr,
- "\
-Usage: %s [-v] [-a autodir] [-h hostname] [-b bootparams] [-d dumpsets]\n\
-\t[-e exports] [-f fstabs] [-m automounts]\n\
-\t[-I dir] [-D|-U string[=string]] config ...\n", progname);
- exit(1);
- }
-
- if (g_argv[0])
- fsi_log("g_argv[0] = %s", g_argv[0]);
- else
- fsi_log("g_argv[0] = (nil)");
-}
-
-
-/*
- * Determine username of caller
- */
-static char *
-find_username(void)
-{
- const char *u = getlogin();
-
- if (!u) {
- struct passwd *pw = getpwuid(getuid());
- if (pw)
- u = pw->pw_name;
- }
-
- if (!u)
- u = getenv("USER");
- if (!u)
- u = getenv("LOGNAME");
- if (!u)
- u = "root";
-
- return xstrdup(u);
-}
-
-
-/*
- * MAIN
- */
-int
-main(int argc, char *argv[])
-{
- /*
- * Process arguments
- */
- fsi_get_args(argc, argv);
-
- /*
- * If no hostname given then use the local name
- */
- if (!*hostname && gethostname(hostname, sizeof(hostname)) < 0) {
- perror("gethostname");
- exit(1);
- }
- hostname[sizeof(hostname) - 1] = '\0';
-
- /*
- * Get the username
- */
- username = find_username();
-
- /*
- * New hosts and automounts
- */
- list_of_hosts = new_que();
- list_of_automounts = new_que();
-
- /*
- * New dictionaries
- */
- dict_of_volnames = new_dict();
- dict_of_hosts = new_dict();
-
- /*
- * Parse input
- */
- show_area_being_processed("read config", 11);
- if (fsi_parse())
- errors = 1;
- errors += file_io_errors + parse_errors;
-
- if (errors == 0) {
- /*
- * Do semantic analysis of input
- */
- analyze_hosts(list_of_hosts);
- analyze_automounts(list_of_automounts);
- }
-
- /*
- * Give up if errors
- */
- if (errors == 0) {
- /*
- * Output data files
- */
-
- write_atab(list_of_automounts);
- write_bootparams(list_of_hosts);
- write_dumpset(list_of_hosts);
- write_exportfs(list_of_hosts);
- write_fstab(list_of_hosts);
- }
- col_cleanup(1);
-
- exit(errors);
- return errors; /* should never reach here */
-}
diff --git a/contrib/amd/fsinfo/fsinfo.h b/contrib/amd/fsinfo/fsinfo.h
deleted file mode 100644
index 7a871631a0c6..000000000000
--- a/contrib/amd/fsinfo/fsinfo.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/fsinfo.h
- *
- */
-
-extern FILE *pref_open(char *pref, char *hn, void (*hdr) (FILE *, char *), char *arg);
-extern auto_tree *new_auto_tree(char *, qelem *);
-extern automount *new_automount(char *);
-extern char **g_argv;
-extern char *autodir;
-extern char *bootparams_pref;
-extern char *disk_fs_strings[];
-extern char *dumpset_pref;
-extern char *ether_if_strings[];
-extern char *exportfs_pref;
-extern char *fsmount_strings[];
-extern char *fstab_pref;
-extern char *host_strings[];
-extern char *mount_pref;
-extern char *mount_strings[];
-extern char *progname;
-extern char *username;
-extern char *xcalloc(int, int);
-extern char hostname[];
-extern char idvbuf[];
-extern dict *dict_of_hosts;
-extern dict *dict_of_volnames;
-extern dict *new_dict(void);
-extern dict_ent *dict_locate(dict *, char *);
-extern disk_fs *new_disk_fs(void);
-extern ether_if *new_ether_if(void);
-extern fsmount *new_fsmount(void);
-extern host *new_host(void);
-extern int dict_iter(dict *, int (*)(qelem *));
-extern int errors;
-extern int file_io_errors;
-extern int parse_errors;
-extern int pref_close(FILE *fp);
-extern int verbose;
-extern ioloc *current_location(void);
-extern fsi_mount *new_mount(void);
-extern qelem *new_que(void);
-extern void analyze_automounts(qelem *);
-extern void analyze_hosts(qelem *);
-extern void compute_automount_point(char *, size_t, host *, char *);
-extern void dict_add(dict *, char *, char *);
-extern void error(char *fmt, ...)
- __attribute__((__format__(__printf__, 1, 2)));
-extern void fatal(char *fmt, ...)
- __attribute__((__format__(__printf__, 1, 2)));
-extern void gen_hdr(FILE *ef, char *hn);
-extern void info_hdr(FILE *ef, char *info);
-extern void init_que(qelem *);
-extern void ins_que(qelem *, qelem *);
-extern void lerror(ioloc *l, char *fmt, ...)
- __attribute__((__format__(__printf__, 2, 3)));
-extern void fsi_log(char *fmt, ...)
- __attribute__((__format__(__printf__, 1, 2)));
-extern void lwarning(ioloc *l, char *fmt, ...)
- __attribute__((__format__(__printf__, 2, 3)));
-extern void rem_que(qelem *);
-extern void set_disk_fs(disk_fs *, int, char *);
-extern void set_fsmount(fsmount *, int, char *);
-extern void set_mount(fsi_mount *, int, char *);
-extern void show_area_being_processed(char *area, int n);
-extern void show_new(char *msg);
-extern void warning(void);
-
-extern int fsi_error(const char *fmt, ...)
- __attribute__((__format__(__printf__, 1, 2)));
-extern void domain_strip(char *otherdom, char *localdom);
-/*
- * some systems such as DU-4.x have a different GNU flex in /usr/bin
- * which automatically generates yywrap macros and symbols. So I must
- * distinguish between them and when yywrap is actually needed.
- */
-#ifndef yywrap
-extern int yywrap(void);
-#endif /* not yywrap */
-extern int fsi_parse(void);
-extern int write_atab(qelem *q);
-extern int write_bootparams(qelem *q);
-extern int write_dumpset(qelem *q);
-extern int write_exportfs(qelem *q);
-extern int write_fstab(qelem *q);
-extern void col_cleanup(int eoj);
-extern void set_host(host *hp, int k, char *v);
-extern void set_ether_if(ether_if *ep, int k, char *v);
-extern int fsi_lex(void);
-
-
-#define BITSET(m,b) ((m) |= (1<<(b)))
-#define AM_FIRST(ty, q) ((ty *) ((q)->q_forw))
-#define HEAD(ty, q) ((ty *) q)
-#define ISSET(m,b) ((m) & (1<<(b)))
-#define ITER(v, ty, q) for ((v) = AM_FIRST(ty,(q)); (v) != HEAD(ty,(q)); (v) = NEXT(ty,(v)))
-#define AM_LAST(ty, q) ((ty *) ((q)->q_back))
-#define NEXT(ty, q) ((ty *) (((qelem *) q)->q_forw))
diff --git a/contrib/amd/fsinfo/null_gram.c b/contrib/amd/fsinfo/null_gram.c
deleted file mode 100644
index 9b4e9f4a1cc6..000000000000
--- a/contrib/amd/fsinfo/null_gram.c
+++ /dev/null
@@ -1,1414 +0,0 @@
-/* A Bison parser, made by GNU Bison 3.0.2. */
-
-/* Bison implementation for Yacc-like parsers in C
-
- Copyright (C) 1984, 1989-1990, 2000-2013 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 3 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, see <http://www.gnu.org/licenses/>. */
-
-/* As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
-
-/* C LALR(1) parser skeleton written by Richard Stallman, by
- simplifying the original so-called "semantic" parser. */
-
-/* All symbols defined below should begin with yy or YY, to avoid
- infringing on user name space. This should be done even for local
- variables, as they might otherwise be expanded by user macros.
- There are some unavoidable exceptions within include files to
- define necessary library symbols; they are noted "INFRINGES ON
- USER NAME SPACE" below. */
-
-/* Identify Bison output. */
-#define YYBISON 1
-
-/* Bison version. */
-#define YYBISON_VERSION "3.0.2"
-
-/* Skeleton name. */
-#define YYSKELETON_NAME "yacc.c"
-
-/* Pure parsers. */
-#define YYPURE 0
-
-/* Push parsers. */
-#define YYPUSH 0
-
-/* Pull parsers. */
-#define YYPULL 1
-
-
-/* Substitute the variable and function names. */
-#define yyparse null_parse
-#define yylex null_lex
-#define yyerror null_error
-#define yydebug null_debug
-#define yynerrs null_nerrs
-
-#define yylval null_lval
-#define yychar null_char
-
-/* Copy the first part of user declarations. */
-#line 1 "../../fsinfo/null_gram.y" /* yacc.c:339 */
-
-void yyerror(const char *fmt, ...);
-extern int yylex(void);
-
-#line 79 "null_gram.c" /* yacc.c:339 */
-
-# ifndef YY_NULLPTR
-# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
-# else
-# define YY_NULLPTR 0
-# endif
-# endif
-
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* In a future release of Bison, this section will be replaced
- by #include "y.tab.h". */
-#ifndef YY_NULL_NULL_GRAM_H_INCLUDED
-# define YY_NULL_NULL_GRAM_H_INCLUDED
-/* Debug traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-#if YYDEBUG
-extern int null_debug;
-#endif
-
-
-/* Value type. */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef int YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-
-extern YYSTYPE null_lval;
-
-int null_parse (void);
-
-#endif /* !YY_NULL_NULL_GRAM_H_INCLUDED */
-
-/* Copy the second part of user declarations. */
-
-#line 126 "null_gram.c" /* yacc.c:358 */
-
-#ifdef short
-# undef short
-#endif
-
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#else
-typedef signed char yytype_int8;
-#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short int yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short int yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-# define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-# define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-# define YYSIZE_T size_t
-# else
-# define YYSIZE_T unsigned int
-# endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
-
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-# if ENABLE_NLS
-# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
-# endif
-# endif
-# ifndef YY_
-# define YY_(Msgid) Msgid
-# endif
-#endif
-
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__ \
- && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
- || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
-# else
-# define YY_ATTRIBUTE(Spec) /* empty */
-# endif
-#endif
-
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
-#endif
-
-#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-#if !defined _Noreturn \
- && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-# define _Noreturn __declspec (noreturn)
-# else
-# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
-# endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E. */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
-#else
-# define YYUSE(E) /* empty */
-#endif
-
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
-/* Suppress an incorrect diagnostic about yylval being uninitialized. */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
- _Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
- _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
- _Pragma ("GCC diagnostic pop")
-#else
-# define YY_INITIAL_VALUE(Value) Value
-#endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
-
-#if ! defined yyoverflow || YYERROR_VERBOSE
-
-/* The parser invokes alloca or malloc; define the necessary symbols. */
-
-# ifdef YYSTACK_USE_ALLOCA
-# if YYSTACK_USE_ALLOCA
-# ifdef __GNUC__
-# define YYSTACK_ALLOC __builtin_alloca
-# elif defined __BUILTIN_VA_ARG_INCR
-# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-# elif defined _AIX
-# define YYSTACK_ALLOC __alloca
-# elif defined _MSC_VER
-# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-# define alloca _alloca
-# else
-# define YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
- /* Use EXIT_SUCCESS as a witness for stdlib.h. */
-# ifndef EXIT_SUCCESS
-# define EXIT_SUCCESS 0
-# endif
-# endif
-# endif
-# endif
-# endif
-
-# ifdef YYSTACK_ALLOC
- /* Pacify GCC's 'empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-# ifndef YYSTACK_ALLOC_MAXIMUM
- /* The OS might guarantee only one guard page at the bottom of the stack,
- and a page size can be as small as 4096 bytes. So we cannot safely
- invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
- to allow for a few compiler-allocated temporary stack slots. */
-# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
-# endif
-# else
-# define YYSTACK_ALLOC YYMALLOC
-# define YYSTACK_FREE YYFREE
-# ifndef YYSTACK_ALLOC_MAXIMUM
-# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-# endif
-# if (defined __cplusplus && ! defined EXIT_SUCCESS \
- && ! ((defined YYMALLOC || defined malloc) \
- && (defined YYFREE || defined free)))
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef EXIT_SUCCESS
-# define EXIT_SUCCESS 0
-# endif
-# endif
-# ifndef YYMALLOC
-# define YYMALLOC malloc
-# if ! defined malloc && ! defined EXIT_SUCCESS
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-# endif
-# endif
-# ifndef YYFREE
-# define YYFREE free
-# if ! defined free && ! defined EXIT_SUCCESS
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-# endif
-# endif
-# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
-
-#if (! defined yyoverflow \
- && (! defined __cplusplus \
- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member. */
-union yyalloc
-{
- yytype_int16 yyss_alloc;
- YYSTYPE yyvs_alloc;
-};
-
-/* The size of the maximum gap between one aligned stack and the next. */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
- N elements. */
-# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
- + YYSTACK_GAP_MAXIMUM)
-
-# define YYCOPY_NEEDED 1
-
-/* Relocate STACK from its old location to the new one. The
- local variables YYSIZE and YYSTACKSIZE give the old and new number of
- elements in the stack, and YYPTR gives the new location of the
- stack. Advance YYPTR to a properly aligned location for the next
- stack. */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
- Stack = &yyptr->Stack_alloc; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (0)
-
-#endif
-
-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from SRC to DST. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(Dst, Src, Count) \
- __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
-# else
-# define YYCOPY(Dst, Src, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (Dst)[yyi] = (Src)[yyi]; \
- } \
- while (0)
-# endif
-# endif
-#endif /* !YYCOPY_NEEDED */
-
-/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 2
-/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 0
-
-/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 3
-/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 2
-/* YYNRULES -- Number of rules. */
-#define YYNRULES 2
-/* YYNSTATES -- Number of states. */
-#define YYNSTATES 3
-
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
- by yylex, with out-of-bounds checking. */
-#define YYUNDEFTOK 2
-#define YYMAXUTOK 257
-
-#define YYTRANSLATE(YYX) \
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
-
-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
- as returned by yylex, without out-of-bounds checking. */
-static const yytype_uint8 yytranslate[] =
-{
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 2
-};
-
-#if YYDEBUG
- /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
-static const yytype_uint8 yyrline[] =
-{
- 0, 8, 8
-};
-#endif
-
-#if YYDEBUG || YYERROR_VERBOSE || 0
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- First, the terminals, then, starting at YYNTOKENS, nonterminals. */
-static const char *const yytname[] =
-{
- "$end", "error", "$undefined", "$accept", "token", YY_NULLPTR
-};
-#endif
-
-# ifdef YYPRINT
-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
- (internal) symbol number NUM (which must be that of a token). */
-static const yytype_uint16 yytoknum[] =
-{
- 0, 256, 257
-};
-# endif
-
-#define YYPACT_NINF -1
-
-#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-1)))
-
-#define YYTABLE_NINF -1
-
-#define yytable_value_is_error(Yytable_value) \
- 0
-
- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- STATE-NUM. */
-static const yytype_int8 yypact[] =
-{
- -1, 0, -1
-};
-
- /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
- Performed when YYTABLE does not specify something else to do. Zero
- means the default is an error. */
-static const yytype_uint8 yydefact[] =
-{
- 2, 0, 1
-};
-
- /* YYPGOTO[NTERM-NUM]. */
-static const yytype_int8 yypgoto[] =
-{
- -1, -1
-};
-
- /* YYDEFGOTO[NTERM-NUM]. */
-static const yytype_int8 yydefgoto[] =
-{
- -1, 1
-};
-
- /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
- positive, shift that token. If negative, reduce the rule whose
- number is the opposite. If YYTABLE_NINF, syntax error. */
-static const yytype_uint8 yytable[] =
-{
- 2
-};
-
-static const yytype_uint8 yycheck[] =
-{
- 0
-};
-
- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
-static const yytype_uint8 yystos[] =
-{
- 0, 4, 0
-};
-
- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const yytype_uint8 yyr1[] =
-{
- 0, 3, 4
-};
-
- /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
-static const yytype_uint8 yyr2[] =
-{
- 0, 2, 0
-};
-
-
-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
-
-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrorlab
-
-
-#define YYRECOVERING() (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- YYPOPSTACK (yylen); \
- yystate = *yyssp; \
- goto yybackup; \
- } \
- else \
- { \
- yyerror (YY_("syntax error: cannot back up")); \
- YYERROR; \
- } \
-while (0)
-
-/* Error token number */
-#define YYTERROR 1
-#define YYERRCODE 256
-
-
-
-/* Enable debugging if requested. */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-# define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (0)
-
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
-
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yy_symbol_print (stderr, \
- Type, Value); \
- YYFPRINTF (stderr, "\n"); \
- } \
-} while (0)
-
-
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT. |
-`----------------------------------------*/
-
-static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-{
- FILE *yyo = yyoutput;
- YYUSE (yyo);
- if (!yyvaluep)
- return;
-# ifdef YYPRINT
- if (yytype < YYNTOKENS)
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# endif
- YYUSE (yytype);
-}
-
-
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
-
-static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-{
- YYFPRINTF (yyoutput, "%s %s (",
- yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
-
- yy_symbol_value_print (yyoutput, yytype, yyvaluep);
- YYFPRINTF (yyoutput, ")");
-}
-
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included). |
-`------------------------------------------------------------------*/
-
-static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-{
- YYFPRINTF (stderr, "Stack now");
- for (; yybottom <= yytop; yybottom++)
- {
- int yybot = *yybottom;
- YYFPRINTF (stderr, " %d", yybot);
- }
- YYFPRINTF (stderr, "\n");
-}
-
-# define YY_STACK_PRINT(Bottom, Top) \
-do { \
- if (yydebug) \
- yy_stack_print ((Bottom), (Top)); \
-} while (0)
-
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced. |
-`------------------------------------------------*/
-
-static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
-{
- unsigned long int yylno = yyrline[yyrule];
- int yynrhs = yyr2[yyrule];
- int yyi;
- YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
- yyrule - 1, yylno);
- /* The symbols being reduced. */
- for (yyi = 0; yyi < yynrhs; yyi++)
- {
- YYFPRINTF (stderr, " $%d = ", yyi + 1);
- yy_symbol_print (stderr,
- yystos[yyssp[yyi + 1 - yynrhs]],
- &(yyvsp[(yyi + 1) - (yynrhs)])
- );
- YYFPRINTF (stderr, "\n");
- }
-}
-
-# define YY_REDUCE_PRINT(Rule) \
-do { \
- if (yydebug) \
- yy_reduce_print (yyssp, yyvsp, Rule); \
-} while (0)
-
-/* Nonzero means print parse trace. It is left uninitialized so that
- multiple parsers can coexist. */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define YY_STACK_PRINT(Bottom, Top)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef YYINITDEPTH
-# define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
- if the built-in stack extension method is used).
-
- Do not make this value too large; the results are undefined if
- YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
- evaluated with infinite-precision integer arithmetic. */
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-# if defined __GLIBC__ && defined _STRING_H
-# define yystrlen strlen
-# else
-/* Return the length of YYSTR. */
-static YYSIZE_T
-yystrlen (const char *yystr)
-{
- YYSIZE_T yylen;
- for (yylen = 0; yystr[yylen]; yylen++)
- continue;
- return yylen;
-}
-# endif
-# endif
-
-# ifndef yystpcpy
-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-# define yystpcpy stpcpy
-# else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-{
- char *yyd = yydest;
- const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
-}
-# endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
- quotes and backslashes, so that it's suitable for yyerror. The
- heuristic is that double-quoting is unnecessary unless the string
- contains an apostrophe, a comma, or backslash (other than
- backslash-backslash). YYSTR is taken from yytname. If YYRES is
- null, do not copy; instead, return the length of what the result
- would have been. */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
- if (*yystr == '"')
- {
- YYSIZE_T yyn = 0;
- char const *yyp = yystr;
-
- for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
-
- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
- do_not_strip_quotes: ;
- }
-
- if (! yyres)
- return yystrlen (yystr);
-
- return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
- about the unexpected token YYTOKEN for the state stack whose top is
- YYSSP.
-
- Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
- not large enough to hold the message. In that case, also set
- *YYMSG_ALLOC to the required number of bytes. Return 2 if the
- required number of bytes is too large to store. */
-static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
- yytype_int16 *yyssp, int yytoken)
-{
- YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
- YYSIZE_T yysize = yysize0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- /* Internationalized format string. */
- const char *yyformat = YY_NULLPTR;
- /* Arguments of yyformat. */
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- /* Number of reported tokens (one for the "unexpected", one per
- "expected"). */
- int yycount = 0;
-
- /* There are many possibilities here to consider:
- - If this state is a consistent state with a default action, then
- the only way this function was invoked is if the default action
- is an error action. In that case, don't check for expected
- tokens because there are none.
- - The only way there can be no lookahead present (in yychar) is if
- this state is a consistent state with a default action. Thus,
- detecting the absence of a lookahead is sufficient to determine
- that there is no unexpected or expected token to report. In that
- case, just report a simple "syntax error".
- - Don't assume there isn't a lookahead just because this state is a
- consistent state with a default action. There might have been a
- previous inconsistent state, consistent state with a non-default
- action, or user semantic action that manipulated yychar.
- - Of course, the expected token list depends on states to have
- correct lookahead information, and it depends on the parser not
- to perform extra reductions after fetching a lookahead from the
- scanner and before detecting a syntax error. Thus, state merging
- (from LALR or IELR) and default reductions corrupt the expected
- token list. However, the list is correct for canonical LR with
- one exception: it will still contain any token that will not be
- accepted due to an error action in a later state.
- */
- if (yytoken != YYEMPTY)
- {
- int yyn = yypact[*yyssp];
- yyarg[yycount++] = yytname[yytoken];
- if (!yypact_value_is_default (yyn))
- {
- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. In other words, skip the first -YYN actions for
- this state because they are default actions. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yyx;
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
- && !yytable_value_is_error (yytable[yyx + yyn]))
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- {
- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
- if (! (yysize <= yysize1
- && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
- }
- }
- }
-
- switch (yycount)
- {
-# define YYCASE_(N, S) \
- case N: \
- yyformat = S; \
- break
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
- }
-
- {
- YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
- if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
- return 2;
- yysize = yysize1;
- }
-
- if (*yymsg_alloc < yysize)
- {
- *yymsg_alloc = 2 * yysize;
- if (! (yysize <= *yymsg_alloc
- && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
- *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
- return 1;
- }
-
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- {
- char *yyp = *yymsg;
- int yyi = 0;
- while ((*yyp = *yyformat) != '\0')
- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yyarg[yyi++]);
- yyformat += 2;
- }
- else
- {
- yyp++;
- yyformat++;
- }
- }
- return 0;
-}
-#endif /* YYERROR_VERBOSE */
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol. |
-`-----------------------------------------------*/
-
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-{
- YYUSE (yyvaluep);
- if (!yymsg)
- yymsg = "Deleting";
- YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
- YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- YYUSE (yytype);
- YY_IGNORE_MAYBE_UNINITIALIZED_END
-}
-
-
-
-
-/* The lookahead symbol. */
-int yychar;
-
-/* The semantic value of the lookahead symbol. */
-YYSTYPE yylval;
-/* Number of syntax errors so far. */
-int yynerrs;
-
-
-/*----------.
-| yyparse. |
-`----------*/
-
-int
-yyparse (void)
-{
- int yystate;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
-
- /* The stacks and their tools:
- 'yyss': related to states.
- 'yyvs': related to semantic values.
-
- Refer to the stacks through separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss;
- yytype_int16 *yyssp;
-
- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs;
- YYSTYPE *yyvsp;
-
- YYSIZE_T yystacksize;
-
- int yyn;
- int yyresult;
- /* Lookahead token as an internal (translated) token number. */
- int yytoken = 0;
- /* The variables used to return semantic value and location from the
- action routines. */
- YYSTYPE yyval;
-
-#if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
-#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
-
- /* The number of symbols on the RHS of the reduced rule.
- Keep to zero when no symbol should be popped. */
- int yylen = 0;
-
- yyssp = yyss = yyssa;
- yyvsp = yyvs = yyvsa;
- yystacksize = YYINITDEPTH;
-
- YYDPRINTF ((stderr, "Starting parse\n"));
-
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
- yychar = YYEMPTY; /* Cause a token to be read. */
- goto yysetstate;
-
-/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate. |
-`------------------------------------------------------------*/
- yynewstate:
- /* In all cases, when you get here, the value and location stacks
- have just been pushed. So pushing a state here evens the stacks. */
- yyssp++;
-
- yysetstate:
- *yyssp = yystate;
-
- if (yyss + yystacksize - 1 <= yyssp)
- {
- /* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = yyssp - yyss + 1;
-
-#ifdef yyoverflow
- {
- /* Give user a chance to reallocate the stack. Use copies of
- these so that the &'s don't force the real ones into
- memory. */
- YYSTYPE *yyvs1 = yyvs;
- yytype_int16 *yyss1 = yyss;
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. This used to be a
- conditional around just the two extra args, but that might
- be undefined if yyoverflow is a macro. */
- yyoverflow (YY_("memory exhausted"),
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
- &yystacksize);
-
- yyss = yyss1;
- yyvs = yyvs1;
- }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
- goto yyexhaustedlab;
-# else
- /* Extend the stack our own way. */
- if (YYMAXDEPTH <= yystacksize)
- goto yyexhaustedlab;
- yystacksize *= 2;
- if (YYMAXDEPTH < yystacksize)
- yystacksize = YYMAXDEPTH;
-
- {
- yytype_int16 *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss_alloc, yyss);
- YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-# undef YYSTACK_RELOCATE
- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
- }
-# endif
-#endif /* no yyoverflow */
-
- yyssp = yyss + yysize - 1;
- yyvsp = yyvs + yysize - 1;
-
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
-
- if (yyss + yystacksize - 1 <= yyssp)
- YYABORT;
- }
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
- if (yystate == YYFINAL)
- YYACCEPT;
-
- goto yybackup;
-
-/*-----------.
-| yybackup. |
-`-----------*/
-yybackup:
-
- /* Do appropriate processing given the current state. Read a
- lookahead token if we need one and don't already have one. */
-
- /* First try to decide what to do without reference to lookahead token. */
- yyn = yypact[yystate];
- if (yypact_value_is_default (yyn))
- goto yydefault;
-
- /* Not known => get a lookahead token if don't already have one. */
-
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
- if (yychar == YYEMPTY)
- {
- YYDPRINTF ((stderr, "Reading a token: "));
- yychar = yylex ();
- }
-
- if (yychar <= YYEOF)
- {
- yychar = yytoken = YYEOF;
- YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- yytoken = YYTRANSLATE (yychar);
- YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
- }
-
- /* If the proper action on seeing token YYTOKEN is to reduce or to
- detect an error, take that action. */
- yyn += yytoken;
- if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
- goto yydefault;
- yyn = yytable[yyn];
- if (yyn <= 0)
- {
- if (yytable_value_is_error (yyn))
- goto yyerrlab;
- yyn = -yyn;
- goto yyreduce;
- }
-
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus)
- yyerrstatus--;
-
- /* Shift the lookahead token. */
- YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
- /* Discard the shifted token. */
- yychar = YYEMPTY;
-
- yystate = yyn;
- YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- *++yyvsp = yylval;
- YY_IGNORE_MAYBE_UNINITIALIZED_END
-
- goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state. |
-`-----------------------------------------------------------*/
-yydefault:
- yyn = yydefact[yystate];
- if (yyn == 0)
- goto yyerrlab;
- goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- Do a reduction. |
-`-----------------------------*/
-yyreduce:
- /* yyn is the number of a rule to reduce with. */
- yylen = yyr2[yyn];
-
- /* If YYLEN is nonzero, implement the default value of the action:
- '$$ = $1'.
-
- Otherwise, the following line sets YYVAL to garbage.
- This behavior is undocumented and Bison
- users should not rely upon it. Assigning to YYVAL
- unconditionally makes the parser a bit smaller, and it avoids a
- GCC warning that YYVAL may be used uninitialized. */
- yyval = yyvsp[1-yylen];
-
-
- YY_REDUCE_PRINT (yyn);
- switch (yyn)
- {
-
-#line 1188 "null_gram.c" /* yacc.c:1646 */
- default: break;
- }
- /* User semantic actions sometimes alter yychar, and that requires
- that yytoken be updated with the new translation. We take the
- approach of translating immediately before every use of yytoken.
- One alternative is translating here after every semantic action,
- but that translation would be missed if the semantic action invokes
- YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
- if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
- incorrect destructor might then be invoked immediately. In the
- case of YYERROR or YYBACKUP, subsequent parser actions might lead
- to an incorrect destructor call or verbose syntax error message
- before the lookahead is translated. */
- YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-
- YYPOPSTACK (yylen);
- yylen = 0;
- YY_STACK_PRINT (yyss, yyssp);
-
- *++yyvsp = yyval;
-
- /* Now 'shift' the result of the reduction. Determine what state
- that goes to, based on the state we popped back to and the rule
- number reduced by. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
- if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTOKENS];
-
- goto yynewstate;
-
-
-/*--------------------------------------.
-| yyerrlab -- here on detecting error. |
-`--------------------------------------*/
-yyerrlab:
- /* Make sure we have latest lookahead translation. See comments at
- user semantic actions for why this is necessary. */
- yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
- /* If not already recovering from an error, report this error. */
- if (!yyerrstatus)
- {
- ++yynerrs;
-#if ! YYERROR_VERBOSE
- yyerror (YY_("syntax error"));
-#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
- yyssp, yytoken)
- {
- char const *yymsgp = YY_("syntax error");
- int yysyntax_error_status;
- yysyntax_error_status = YYSYNTAX_ERROR;
- if (yysyntax_error_status == 0)
- yymsgp = yymsg;
- else if (yysyntax_error_status == 1)
- {
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
- if (!yymsg)
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- yysyntax_error_status = 2;
- }
- else
- {
- yysyntax_error_status = YYSYNTAX_ERROR;
- yymsgp = yymsg;
- }
- }
- yyerror (yymsgp);
- if (yysyntax_error_status == 2)
- goto yyexhaustedlab;
- }
-# undef YYSYNTAX_ERROR
-#endif
- }
-
-
-
- if (yyerrstatus == 3)
- {
- /* If just tried and failed to reuse lookahead token after an
- error, discard it. */
-
- if (yychar <= YYEOF)
- {
- /* Return failure if at end of input. */
- if (yychar == YYEOF)
- YYABORT;
- }
- else
- {
- yydestruct ("Error: discarding",
- yytoken, &yylval);
- yychar = YYEMPTY;
- }
- }
-
- /* Else will try to reuse lookahead token after shifting the error
- token. */
- goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| yyerrorlab -- error raised explicitly by YYERROR. |
-`---------------------------------------------------*/
-yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
- if (/*CONSTCOND*/ 0)
- goto yyerrorlab;
-
- /* Do not reclaim the symbols of the rule whose action triggered
- this YYERROR. */
- YYPOPSTACK (yylen);
- yylen = 0;
- YY_STACK_PRINT (yyss, yyssp);
- yystate = *yyssp;
- goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR. |
-`-------------------------------------------------------------*/
-yyerrlab1:
- yyerrstatus = 3; /* Each real token shifted decrements this. */
-
- for (;;)
- {
- yyn = yypact[yystate];
- if (!yypact_value_is_default (yyn))
- {
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
- {
- yyn = yytable[yyn];
- if (0 < yyn)
- break;
- }
- }
-
- /* Pop the current state because it cannot handle the error token. */
- if (yyssp == yyss)
- YYABORT;
-
-
- yydestruct ("Error: popping",
- yystos[yystate], yyvsp);
- YYPOPSTACK (1);
- yystate = *yyssp;
- YY_STACK_PRINT (yyss, yyssp);
- }
-
- YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- *++yyvsp = yylval;
- YY_IGNORE_MAYBE_UNINITIALIZED_END
-
-
- /* Shift the error token. */
- YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-
- yystate = yyn;
- goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here. |
-`-------------------------------------*/
-yyacceptlab:
- yyresult = 0;
- goto yyreturn;
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here. |
-`-----------------------------------*/
-yyabortlab:
- yyresult = 1;
- goto yyreturn;
-
-#if !defined yyoverflow || YYERROR_VERBOSE
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here. |
-`-------------------------------------------------*/
-yyexhaustedlab:
- yyerror (YY_("memory exhausted"));
- yyresult = 2;
- /* Fall through. */
-#endif
-
-yyreturn:
- if (yychar != YYEMPTY)
- {
- /* Make sure we have latest lookahead translation. See comments at
- user semantic actions for why this is necessary. */
- yytoken = YYTRANSLATE (yychar);
- yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval);
- }
- /* Do not reclaim the symbols of the rule whose action triggered
- this YYABORT or YYACCEPT. */
- YYPOPSTACK (yylen);
- YY_STACK_PRINT (yyss, yyssp);
- while (yyssp != yyss)
- {
- yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp);
- YYPOPSTACK (1);
- }
-#ifndef yyoverflow
- if (yyss != yyssa)
- YYSTACK_FREE (yyss);
-#endif
-#if YYERROR_VERBOSE
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
-#endif
- return yyresult;
-}
diff --git a/contrib/amd/fsinfo/null_gram.h b/contrib/amd/fsinfo/null_gram.h
deleted file mode 100644
index 77c4ac78ff49..000000000000
--- a/contrib/amd/fsinfo/null_gram.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* A Bison parser, made by GNU Bison 3.0.2. */
-
-/* Bison interface for Yacc-like parsers in C
-
- Copyright (C) 1984, 1989-1990, 2000-2013 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 3 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, see <http://www.gnu.org/licenses/>. */
-
-/* As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
-
-#ifndef YY_NULL_NULL_GRAM_H_INCLUDED
-# define YY_NULL_NULL_GRAM_H_INCLUDED
-/* Debug traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-#if YYDEBUG
-extern int null_debug;
-#endif
-
-
-/* Value type. */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef int YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-
-extern YYSTYPE null_lval;
-
-int null_parse (void);
-
-#endif /* !YY_NULL_NULL_GRAM_H_INCLUDED */
diff --git a/contrib/amd/fsinfo/null_gram.y b/contrib/amd/fsinfo/null_gram.y
deleted file mode 100644
index d7313b9c49c2..000000000000
--- a/contrib/amd/fsinfo/null_gram.y
+++ /dev/null
@@ -1,8 +0,0 @@
-%{
-void yyerror(const char *fmt, ...);
-extern int yylex(void);
-%}
-
-%%
-
-token:
diff --git a/contrib/amd/fsinfo/null_lex.c b/contrib/amd/fsinfo/null_lex.c
deleted file mode 100644
index b890445686e1..000000000000
--- a/contrib/amd/fsinfo/null_lex.c
+++ /dev/null
@@ -1,1716 +0,0 @@
-
-#line 3 "lex.null_.c"
-
-#define YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-#define yy_create_buffer null__create_buffer
-#define yy_delete_buffer null__delete_buffer
-#define yy_flex_debug null__flex_debug
-#define yy_init_buffer null__init_buffer
-#define yy_flush_buffer null__flush_buffer
-#define yy_load_buffer_state null__load_buffer_state
-#define yy_switch_to_buffer null__switch_to_buffer
-#define yyin null_in
-#define yyleng null_leng
-#define yylex null_lex
-#define yylineno null_lineno
-#define yyout null_out
-#define yyrestart null_restart
-#define yytext null_text
-#define yywrap null_wrap
-#define yyalloc null_alloc
-#define yyrealloc null_realloc
-#define yyfree null_free
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* First, we deal with platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types.
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t;
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX (4294967295U)
-#endif
-
-#endif /* ! C99 */
-
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else /* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif /* defined (__STDC__) */
-#endif /* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index. If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition. This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN (yy_start) = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state. The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START (((yy_start) - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE null_restart(null_in )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
-#define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
-#endif
-
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-extern int null_leng;
-
-extern FILE *null_in, *null_out;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
- #define YY_LESS_LINENO(n)
-
-/* Return all but the first "n" matched characters back to the input stream. */
-#define yyless(n) \
- do \
- { \
- /* Undo effects of setting up null_text. */ \
- int yyless_macro_arg = (n); \
- YY_LESS_LINENO(yyless_macro_arg);\
- *yy_cp = (yy_hold_char); \
- YY_RESTORE_YY_MORE_OFFSET \
- (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
- YY_DO_BEFORE_ACTION; /* set up null_text again */ \
- } \
- while ( 0 )
-
-#define unput(c) yyunput( c, (yytext_ptr) )
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
- {
- FILE *yy_input_file;
-
- char *yy_ch_buf; /* input buffer */
- char *yy_buf_pos; /* current position in input buffer */
-
- /* Size of input buffer in bytes, not including room for EOB
- * characters.
- */
- yy_size_t yy_buf_size;
-
- /* Number of characters read into yy_ch_buf, not including EOB
- * characters.
- */
- int yy_n_chars;
-
- /* Whether we "own" the buffer - i.e., we know we created it,
- * and can realloc() it to grow it, and should free() it to
- * delete it.
- */
- int yy_is_our_buffer;
-
- /* Whether this is an "interactive" input source; if so, and
- * if we're using stdio for input, then we want to use getc()
- * instead of fread(), to make sure we stop fetching input after
- * each newline.
- */
- int yy_is_interactive;
-
- /* Whether we're considered to be at the beginning of a line.
- * If so, '^' rules will be active on the next match, otherwise
- * not.
- */
- int yy_at_bol;
-
- int yy_bs_lineno; /**< The line count. */
- int yy_bs_column; /**< The column count. */
-
- /* Whether to try to fill the input buffer when we reach the
- * end of it.
- */
- int yy_fill_buffer;
-
- int yy_buffer_status;
-
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
- /* When an EOF's been seen but there's still some text to process
- * then we mark the buffer as YY_EOF_PENDING, to indicate that we
- * shouldn't try reading from the input source any more. We might
- * still have a bunch of tokens to match, though, because of
- * possible backing-up.
- *
- * When we actually see the EOF, we change the status to "new"
- * (via null_restart()), so that the user can continue scanning by
- * just pointing null_in at a new input file.
- */
-#define YY_BUFFER_EOF_PENDING 2
-
- };
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-/* Stack of input buffers. */
-static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
-static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- *
- * Returns the top of the stack, or NULL.
- */
-#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
- ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
- : NULL)
-
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-
-/* yy_hold_char holds the character lost when null_text is formed. */
-static char yy_hold_char;
-static int yy_n_chars; /* number of characters read into yy_ch_buf */
-int null_leng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 0; /* whether we need to initialize */
-static int yy_start = 0; /* start state number */
-
-/* Flag which is used to allow null_wrap()'s to do buffer switches
- * instead of setting up a fresh null_in. A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void null_restart (FILE *input_file );
-void null__switch_to_buffer (YY_BUFFER_STATE new_buffer );
-YY_BUFFER_STATE null__create_buffer (FILE *file,int size );
-void null__delete_buffer (YY_BUFFER_STATE b );
-void null__flush_buffer (YY_BUFFER_STATE b );
-void null_push_buffer_state (YY_BUFFER_STATE new_buffer );
-void null_pop_buffer_state (void );
-
-static void null_ensure_buffer_stack (void );
-static void null__load_buffer_state (void );
-static void null__init_buffer (YY_BUFFER_STATE b,FILE *file );
-
-#define YY_FLUSH_BUFFER null__flush_buffer(YY_CURRENT_BUFFER )
-
-YY_BUFFER_STATE null__scan_buffer (char *base,yy_size_t size );
-YY_BUFFER_STATE null__scan_string (yyconst char *yy_str );
-YY_BUFFER_STATE null__scan_bytes (yyconst char *bytes,int len );
-
-void *null_alloc (yy_size_t );
-void *null_realloc (void *,yy_size_t );
-void null_free (void * );
-
-#define yy_new_buffer null__create_buffer
-
-#define yy_set_interactive(is_interactive) \
- { \
- if ( ! YY_CURRENT_BUFFER ){ \
- null_ensure_buffer_stack (); \
- YY_CURRENT_BUFFER_LVALUE = \
- null__create_buffer(null_in,YY_BUF_SIZE ); \
- } \
- YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
- }
-
-#define yy_set_bol(at_bol) \
- { \
- if ( ! YY_CURRENT_BUFFER ){\
- null_ensure_buffer_stack (); \
- YY_CURRENT_BUFFER_LVALUE = \
- null__create_buffer(null_in,YY_BUF_SIZE ); \
- } \
- YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
- }
-
-#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-
-typedef unsigned char YY_CHAR;
-
-FILE *null_in = (FILE *) 0, *null_out = (FILE *) 0;
-
-typedef int yy_state_type;
-
-extern int null_lineno;
-
-int null_lineno = 1;
-
-extern char *null_text;
-#define yytext_ptr null_text
-
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[] );
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up null_text.
- */
-#define YY_DO_BEFORE_ACTION \
- (yytext_ptr) = yy_bp; \
- null_leng = (size_t) (yy_cp - yy_bp); \
- (yy_hold_char) = *yy_cp; \
- *yy_cp = '\0'; \
- (yy_c_buf_p) = yy_cp;
-
-#define YY_NUM_RULES 1
-#define YY_END_OF_BUFFER 2
-/* This struct is not used in this scanner,
- but its presence is necessary. */
-struct yy_trans_info
- {
- flex_int32_t yy_verify;
- flex_int32_t yy_nxt;
- };
-static yyconst flex_int16_t yy_accept[6] =
- { 0,
- 0, 0, 2, 1, 0
- } ;
-
-static yyconst flex_int32_t yy_ec[256] =
- { 0,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1
- } ;
-
-static yyconst flex_int32_t yy_meta[2] =
- { 0,
- 1
- } ;
-
-static yyconst flex_int16_t yy_base[7] =
- { 0,
- 0, 0, 2, 3, 3, 0
- } ;
-
-static yyconst flex_int16_t yy_def[7] =
- { 0,
- 6, 6, 5, 5, 0, 5
- } ;
-
-static yyconst flex_int16_t yy_nxt[5] =
- { 0,
- 4, 5, 3, 5
- } ;
-
-static yyconst flex_int16_t yy_chk[5] =
- { 0,
- 6, 3, 5, 5
- } ;
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-extern int null__flex_debug;
-int null__flex_debug = 0;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *null_text;
-#line 1 "../../fsinfo/null_lex.l"
-#line 2 "../../fsinfo/null_lex.l"
-#include "null_gram.h"
-
-void null_error(const char *fmt, ...) {}
-int null_wrap(void) { return 0; }
-#define YY_NO_INPUT 1
-#line 481 "lex.null_.c"
-
-#define INITIAL 0
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#include <unistd.h>
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-static int yy_init_globals (void );
-
-/* Accessor methods to globals.
- These are made visible to non-reentrant scanners for convenience. */
-
-int null_lex_destroy (void );
-
-int null_get_debug (void );
-
-void null_set_debug (int debug_flag );
-
-YY_EXTRA_TYPE null_get_extra (void );
-
-void null_set_extra (YY_EXTRA_TYPE user_defined );
-
-FILE *null_get_in (void );
-
-void null_set_in (FILE * in_str );
-
-FILE *null_get_out (void );
-
-void null_set_out (FILE * out_str );
-
-int null_get_leng (void );
-
-char *null_get_text (void );
-
-int null_get_lineno (void );
-
-void null_set_lineno (int line_number );
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int null_wrap (void );
-#else
-extern int null_wrap (void );
-#endif
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
-#endif
-
-#ifndef YY_NO_INPUT
-
-#ifdef __cplusplus
-static int yyinput (void );
-#else
-static int input (void );
-#endif
-
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
-#define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO do { if (fwrite( null_text, null_leng, 1, null_out )) {} } while (0)
-#endif
-
-/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
- if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
- { \
- int c = '*'; \
- size_t n; \
- for ( n = 0; n < max_size && \
- (c = getc( null_in )) != EOF && c != '\n'; ++n ) \
- buf[n] = (char) c; \
- if ( c == '\n' ) \
- buf[n++] = (char) c; \
- if ( c == EOF && ferror( null_in ) ) \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- result = n; \
- } \
- else \
- { \
- errno=0; \
- while ( (result = fread(buf, 1, max_size, null_in))==0 && ferror(null_in)) \
- { \
- if( errno != EINTR) \
- { \
- YY_FATAL_ERROR( "input in flex scanner failed" ); \
- break; \
- } \
- errno=0; \
- clearerr(null_in); \
- } \
- }\
-\
-
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* end tables serialization structures and prototypes */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int null_lex (void);
-
-#define YY_DECL int null_lex (void)
-#endif /* !YY_DECL */
-
-/* Code executed at the beginning of each rule, after null_text and null_leng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
- YY_USER_ACTION
-
-/** The main scanner function which does all the work.
- */
-YY_DECL
-{
- register yy_state_type yy_current_state;
- register char *yy_cp, *yy_bp;
- register int yy_act;
-
-#line 9 "../../fsinfo/null_lex.l"
-
-#line 668 "lex.null_.c"
-
- if ( !(yy_init) )
- {
- (yy_init) = 1;
-
-#ifdef YY_USER_INIT
- YY_USER_INIT;
-#endif
-
- if ( ! (yy_start) )
- (yy_start) = 1; /* first start state */
-
- if ( ! null_in )
- null_in = stdin;
-
- if ( ! null_out )
- null_out = stdout;
-
- if ( ! YY_CURRENT_BUFFER ) {
- null_ensure_buffer_stack ();
- YY_CURRENT_BUFFER_LVALUE =
- null__create_buffer(null_in,YY_BUF_SIZE );
- }
-
- null__load_buffer_state( );
- }
-
- while ( 1 ) /* loops until end-of-file is reached */
- {
- yy_cp = (yy_c_buf_p);
-
- /* Support of null_text. */
- *yy_cp = (yy_hold_char);
-
- /* yy_bp points to the position in yy_ch_buf of the start of
- * the current run.
- */
- yy_bp = yy_cp;
-
- yy_current_state = (yy_start);
-yy_match:
- do
- {
- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
- if ( yy_accept[yy_current_state] )
- {
- (yy_last_accepting_state) = yy_current_state;
- (yy_last_accepting_cpos) = yy_cp;
- }
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 6 )
- yy_c = yy_meta[(unsigned int) yy_c];
- }
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- ++yy_cp;
- }
- while ( yy_base[yy_current_state] != 3 );
-
-yy_find_action:
- yy_act = yy_accept[yy_current_state];
- if ( yy_act == 0 )
- { /* have to back up */
- yy_cp = (yy_last_accepting_cpos);
- yy_current_state = (yy_last_accepting_state);
- yy_act = yy_accept[yy_current_state];
- }
-
- YY_DO_BEFORE_ACTION;
-
-do_action: /* This label is used only to access EOF actions. */
-
- switch ( yy_act )
- { /* beginning of action switch */
- case 0: /* must back up */
- /* undo the effects of YY_DO_BEFORE_ACTION */
- *yy_cp = (yy_hold_char);
- yy_cp = (yy_last_accepting_cpos);
- yy_current_state = (yy_last_accepting_state);
- goto yy_find_action;
-
-case 1:
-YY_RULE_SETUP
-#line 10 "../../fsinfo/null_lex.l"
-ECHO;
- YY_BREAK
-#line 756 "lex.null_.c"
-case YY_STATE_EOF(INITIAL):
- yyterminate();
-
- case YY_END_OF_BUFFER:
- {
- /* Amount of text matched not including the EOB char. */
- int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
-
- /* Undo the effects of YY_DO_BEFORE_ACTION. */
- *yy_cp = (yy_hold_char);
- YY_RESTORE_YY_MORE_OFFSET
-
- if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
- {
- /* We're scanning a new file or input source. It's
- * possible that this happened because the user
- * just pointed null_in at a new source and called
- * null_lex(). If so, then we have to assure
- * consistency between YY_CURRENT_BUFFER and our
- * globals. Here is the right place to do so, because
- * this is the first action (other than possibly a
- * back-up) that will match for the new input source.
- */
- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
- YY_CURRENT_BUFFER_LVALUE->yy_input_file = null_in;
- YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
- }
-
- /* Note that here we test for yy_c_buf_p "<=" to the position
- * of the first EOB in the buffer, since yy_c_buf_p will
- * already have been incremented past the NUL character
- * (since all states make transitions on EOB to the
- * end-of-buffer state). Contrast this with the test
- * in input().
- */
- if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
- { /* This was really a NUL. */
- yy_state_type yy_next_state;
-
- (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
-
- yy_current_state = yy_get_previous_state( );
-
- /* Okay, we're now positioned to make the NUL
- * transition. We couldn't have
- * yy_get_previous_state() go ahead and do it
- * for us because it doesn't know how to deal
- * with the possibility of jamming (and we don't
- * want to build jamming into it because then it
- * will run more slowly).
- */
-
- yy_next_state = yy_try_NUL_trans( yy_current_state );
-
- yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-
- if ( yy_next_state )
- {
- /* Consume the NUL. */
- yy_cp = ++(yy_c_buf_p);
- yy_current_state = yy_next_state;
- goto yy_match;
- }
-
- else
- {
- yy_cp = (yy_c_buf_p);
- goto yy_find_action;
- }
- }
-
- else switch ( yy_get_next_buffer( ) )
- {
- case EOB_ACT_END_OF_FILE:
- {
- (yy_did_buffer_switch_on_eof) = 0;
-
- if ( null_wrap( ) )
- {
- /* Note: because we've taken care in
- * yy_get_next_buffer() to have set up
- * null_text, we can now set up
- * yy_c_buf_p so that if some total
- * hoser (like flex itself) wants to
- * call the scanner after we return the
- * YY_NULL, it'll still work - another
- * YY_NULL will get returned.
- */
- (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
-
- yy_act = YY_STATE_EOF(YY_START);
- goto do_action;
- }
-
- else
- {
- if ( ! (yy_did_buffer_switch_on_eof) )
- YY_NEW_FILE;
- }
- break;
- }
-
- case EOB_ACT_CONTINUE_SCAN:
- (yy_c_buf_p) =
- (yytext_ptr) + yy_amount_of_matched_text;
-
- yy_current_state = yy_get_previous_state( );
-
- yy_cp = (yy_c_buf_p);
- yy_bp = (yytext_ptr) + YY_MORE_ADJ;
- goto yy_match;
-
- case EOB_ACT_LAST_MATCH:
- (yy_c_buf_p) =
- &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
-
- yy_current_state = yy_get_previous_state( );
-
- yy_cp = (yy_c_buf_p);
- yy_bp = (yytext_ptr) + YY_MORE_ADJ;
- goto yy_find_action;
- }
- break;
- }
-
- default:
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--no action found" );
- } /* end of action switch */
- } /* end of scanning one token */
-} /* end of null_lex */
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- * EOB_ACT_LAST_MATCH -
- * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- * EOB_ACT_END_OF_FILE - end of file
- */
-static int yy_get_next_buffer (void)
-{
- register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
- register char *source = (yytext_ptr);
- register int number_to_move, i;
- int ret_val;
-
- if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
- YY_FATAL_ERROR(
- "fatal flex scanner internal error--end of buffer missed" );
-
- if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
- { /* Don't try to fill the buffer, so this is an EOF. */
- if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
- {
- /* We matched a single character, the EOB, so
- * treat this as a final EOF.
- */
- return EOB_ACT_END_OF_FILE;
- }
-
- else
- {
- /* We matched some text prior to the EOB, first
- * process it.
- */
- return EOB_ACT_LAST_MATCH;
- }
- }
-
- /* Try to read more data. */
-
- /* First move last chars to start of buffer. */
- number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
-
- for ( i = 0; i < number_to_move; ++i )
- *(dest++) = *(source++);
-
- if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
- /* don't do the read, it's not guaranteed to return an EOF,
- * just force an EOF
- */
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
-
- else
- {
- int num_to_read =
- YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
- while ( num_to_read <= 0 )
- { /* Not enough room in the buffer - grow it. */
-
- /* just a shorter name for the current buffer */
- YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
-
- int yy_c_buf_p_offset =
- (int) ((yy_c_buf_p) - b->yy_ch_buf);
-
- if ( b->yy_is_our_buffer )
- {
- int new_size = b->yy_buf_size * 2;
-
- if ( new_size <= 0 )
- b->yy_buf_size += b->yy_buf_size / 8;
- else
- b->yy_buf_size *= 2;
-
- b->yy_ch_buf = (char *)
- /* Include room in for 2 EOB chars. */
- null_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
- }
- else
- /* Can't grow it, we don't own it. */
- b->yy_ch_buf = 0;
-
- if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR(
- "fatal error - scanner input buffer overflow" );
-
- (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
-
- num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
- number_to_move - 1;
-
- }
-
- if ( num_to_read > YY_READ_BUF_SIZE )
- num_to_read = YY_READ_BUF_SIZE;
-
- /* Read in more data. */
- YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
- (yy_n_chars), (size_t) num_to_read );
-
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
- }
-
- if ( (yy_n_chars) == 0 )
- {
- if ( number_to_move == YY_MORE_ADJ )
- {
- ret_val = EOB_ACT_END_OF_FILE;
- null_restart(null_in );
- }
-
- else
- {
- ret_val = EOB_ACT_LAST_MATCH;
- YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
- YY_BUFFER_EOF_PENDING;
- }
- }
-
- else
- ret_val = EOB_ACT_CONTINUE_SCAN;
-
- if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
- /* Extend the array by 50%, plus the number we really need. */
- yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) null_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
- if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
- }
-
- (yy_n_chars) += number_to_move;
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
-
- (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
- return ret_val;
-}
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
- static yy_state_type yy_get_previous_state (void)
-{
- register yy_state_type yy_current_state;
- register char *yy_cp;
-
- yy_current_state = (yy_start);
-
- for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
- {
- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
- if ( yy_accept[yy_current_state] )
- {
- (yy_last_accepting_state) = yy_current_state;
- (yy_last_accepting_cpos) = yy_cp;
- }
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 6 )
- yy_c = yy_meta[(unsigned int) yy_c];
- }
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- }
-
- return yy_current_state;
-}
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- * next_state = yy_try_NUL_trans( current_state );
- */
- static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
-{
- register int yy_is_jam;
- register char *yy_cp = (yy_c_buf_p);
-
- register YY_CHAR yy_c = 1;
- if ( yy_accept[yy_current_state] )
- {
- (yy_last_accepting_state) = yy_current_state;
- (yy_last_accepting_cpos) = yy_cp;
- }
- while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
- {
- yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 6 )
- yy_c = yy_meta[(unsigned int) yy_c];
- }
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 5);
-
- return yy_is_jam ? 0 : yy_current_state;
-}
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
- static int yyinput (void)
-#else
- static int input (void)
-#endif
-
-{
- int c;
-
- *(yy_c_buf_p) = (yy_hold_char);
-
- if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
- {
- /* yy_c_buf_p now points to the character we want to return.
- * If this occurs *before* the EOB characters, then it's a
- * valid NUL; if not, then we've hit the end of the buffer.
- */
- if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
- /* This was really a NUL. */
- *(yy_c_buf_p) = '\0';
-
- else
- { /* need more input */
- int offset = (yy_c_buf_p) - (yytext_ptr);
- ++(yy_c_buf_p);
-
- switch ( yy_get_next_buffer( ) )
- {
- case EOB_ACT_LAST_MATCH:
- /* This happens because yy_g_n_b()
- * sees that we've accumulated a
- * token and flags that we need to
- * try matching the token before
- * proceeding. But for input(),
- * there's no matching to consider.
- * So convert the EOB_ACT_LAST_MATCH
- * to EOB_ACT_END_OF_FILE.
- */
-
- /* Reset buffer status. */
- null_restart(null_in );
-
- /*FALLTHROUGH*/
-
- case EOB_ACT_END_OF_FILE:
- {
- if ( null_wrap( ) )
- return EOF;
-
- if ( ! (yy_did_buffer_switch_on_eof) )
- YY_NEW_FILE;
-#ifdef __cplusplus
- return yyinput();
-#else
- return input();
-#endif
- }
-
- case EOB_ACT_CONTINUE_SCAN:
- (yy_c_buf_p) = (yytext_ptr) + offset;
- break;
- }
- }
- }
-
- c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
- *(yy_c_buf_p) = '\0'; /* preserve null_text */
- (yy_hold_char) = *++(yy_c_buf_p);
-
- return c;
-}
-#endif /* ifndef YY_NO_INPUT */
-
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- *
- * @note This function does not reset the start condition to @c INITIAL .
- */
- void null_restart (FILE * input_file )
-{
-
- if ( ! YY_CURRENT_BUFFER ){
- null_ensure_buffer_stack ();
- YY_CURRENT_BUFFER_LVALUE =
- null__create_buffer(null_in,YY_BUF_SIZE );
- }
-
- null__init_buffer(YY_CURRENT_BUFFER,input_file );
- null__load_buffer_state( );
-}
-
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- *
- */
- void null__switch_to_buffer (YY_BUFFER_STATE new_buffer )
-{
-
- /* TODO. We should be able to replace this entire function body
- * with
- * null_pop_buffer_state();
- * null_push_buffer_state(new_buffer);
- */
- null_ensure_buffer_stack ();
- if ( YY_CURRENT_BUFFER == new_buffer )
- return;
-
- if ( YY_CURRENT_BUFFER )
- {
- /* Flush out information for old buffer. */
- *(yy_c_buf_p) = (yy_hold_char);
- YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
- }
-
- YY_CURRENT_BUFFER_LVALUE = new_buffer;
- null__load_buffer_state( );
-
- /* We don't actually know whether we did this switch during
- * EOF (null_wrap()) processing, but the only time this flag
- * is looked at is after null_wrap() is called, so it's safe
- * to go ahead and always set it.
- */
- (yy_did_buffer_switch_on_eof) = 1;
-}
-
-static void null__load_buffer_state (void)
-{
- (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
- (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
- null_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
- (yy_hold_char) = *(yy_c_buf_p);
-}
-
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- *
- * @return the allocated buffer state.
- */
- YY_BUFFER_STATE null__create_buffer (FILE * file, int size )
-{
- YY_BUFFER_STATE b;
-
- b = (YY_BUFFER_STATE) null_alloc(sizeof( struct yy_buffer_state ) );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in null__create_buffer()" );
-
- b->yy_buf_size = size;
-
- /* yy_ch_buf has to be 2 characters longer than the size given because
- * we need to put in 2 end-of-buffer characters.
- */
- b->yy_ch_buf = (char *) null_alloc(b->yy_buf_size + 2 );
- if ( ! b->yy_ch_buf )
- YY_FATAL_ERROR( "out of dynamic memory in null__create_buffer()" );
-
- b->yy_is_our_buffer = 1;
-
- null__init_buffer(b,file );
-
- return b;
-}
-
-/** Destroy the buffer.
- * @param b a buffer created with null__create_buffer()
- *
- */
- void null__delete_buffer (YY_BUFFER_STATE b )
-{
-
- if ( ! b )
- return;
-
- if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
- YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
- if ( b->yy_is_our_buffer )
- null_free((void *) b->yy_ch_buf );
-
- null_free((void *) b );
-}
-
-#ifndef __cplusplus
-extern int isatty (int );
-#endif /* __cplusplus */
-
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a null_restart() or at EOF.
- */
- static void null__init_buffer (YY_BUFFER_STATE b, FILE * file )
-
-{
- int oerrno = errno;
-
- null__flush_buffer(b );
-
- b->yy_input_file = file;
- b->yy_fill_buffer = 1;
-
- /* If b is the current buffer, then null__init_buffer was _probably_
- * called from null_restart() or through yy_get_next_buffer.
- * In that case, we don't want to reset the lineno or column.
- */
- if (b != YY_CURRENT_BUFFER){
- b->yy_bs_lineno = 1;
- b->yy_bs_column = 0;
- }
-
- b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-
- errno = oerrno;
-}
-
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- *
- */
- void null__flush_buffer (YY_BUFFER_STATE b )
-{
- if ( ! b )
- return;
-
- b->yy_n_chars = 0;
-
- /* We always need two end-of-buffer characters. The first causes
- * a transition to the end-of-buffer state. The second causes
- * a jam in that state.
- */
- b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
- b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
- b->yy_buf_pos = &b->yy_ch_buf[0];
-
- b->yy_at_bol = 1;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
- if ( b == YY_CURRENT_BUFFER )
- null__load_buffer_state( );
-}
-
-/** Pushes the new state onto the stack. The new state becomes
- * the current state. This function will allocate the stack
- * if necessary.
- * @param new_buffer The new state.
- *
- */
-void null_push_buffer_state (YY_BUFFER_STATE new_buffer )
-{
- if (new_buffer == NULL)
- return;
-
- null_ensure_buffer_stack();
-
- /* This block is copied from null__switch_to_buffer. */
- if ( YY_CURRENT_BUFFER )
- {
- /* Flush out information for old buffer. */
- *(yy_c_buf_p) = (yy_hold_char);
- YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
- YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
- }
-
- /* Only push if top exists. Otherwise, replace top. */
- if (YY_CURRENT_BUFFER)
- (yy_buffer_stack_top)++;
- YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
- /* copied from null__switch_to_buffer. */
- null__load_buffer_state( );
- (yy_did_buffer_switch_on_eof) = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- * The next element becomes the new top.
- *
- */
-void null_pop_buffer_state (void)
-{
- if (!YY_CURRENT_BUFFER)
- return;
-
- null__delete_buffer(YY_CURRENT_BUFFER );
- YY_CURRENT_BUFFER_LVALUE = NULL;
- if ((yy_buffer_stack_top) > 0)
- --(yy_buffer_stack_top);
-
- if (YY_CURRENT_BUFFER) {
- null__load_buffer_state( );
- (yy_did_buffer_switch_on_eof) = 1;
- }
-}
-
-/* Allocates the stack if it does not exist.
- * Guarantees space for at least one push.
- */
-static void null_ensure_buffer_stack (void)
-{
- int num_to_alloc;
-
- if (!(yy_buffer_stack)) {
-
- /* First allocation is just for 2 elements, since we don't know if this
- * scanner will even need a stack. We use 2 instead of 1 to avoid an
- * immediate realloc on the next call.
- */
- num_to_alloc = 1;
- (yy_buffer_stack) = (struct yy_buffer_state**)null_alloc
- (num_to_alloc * sizeof(struct yy_buffer_state*)
- );
- if ( ! (yy_buffer_stack) )
- YY_FATAL_ERROR( "out of dynamic memory in null_ensure_buffer_stack()" );
-
- memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
- (yy_buffer_stack_max) = num_to_alloc;
- (yy_buffer_stack_top) = 0;
- return;
- }
-
- if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-
- /* Increase the buffer to prepare for a possible push. */
- int grow_size = 8 /* arbitrary grow size */;
-
- num_to_alloc = (yy_buffer_stack_max) + grow_size;
- (yy_buffer_stack) = (struct yy_buffer_state**)null_realloc
- ((yy_buffer_stack),
- num_to_alloc * sizeof(struct yy_buffer_state*)
- );
- if ( ! (yy_buffer_stack) )
- YY_FATAL_ERROR( "out of dynamic memory in null_ensure_buffer_stack()" );
-
- /* zero only the new slots.*/
- memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
- (yy_buffer_stack_max) = num_to_alloc;
- }
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- *
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE null__scan_buffer (char * base, yy_size_t size )
-{
- YY_BUFFER_STATE b;
-
- if ( size < 2 ||
- base[size-2] != YY_END_OF_BUFFER_CHAR ||
- base[size-1] != YY_END_OF_BUFFER_CHAR )
- /* They forgot to leave room for the EOB's. */
- return 0;
-
- b = (YY_BUFFER_STATE) null_alloc(sizeof( struct yy_buffer_state ) );
- if ( ! b )
- YY_FATAL_ERROR( "out of dynamic memory in null__scan_buffer()" );
-
- b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
- b->yy_buf_pos = b->yy_ch_buf = base;
- b->yy_is_our_buffer = 0;
- b->yy_input_file = 0;
- b->yy_n_chars = b->yy_buf_size;
- b->yy_is_interactive = 0;
- b->yy_at_bol = 1;
- b->yy_fill_buffer = 0;
- b->yy_buffer_status = YY_BUFFER_NEW;
-
- null__switch_to_buffer(b );
-
- return b;
-}
-
-/** Setup the input buffer state to scan a string. The next call to null_lex() will
- * scan from a @e copy of @a str.
- * @param yystr a NUL-terminated string to scan
- *
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- * null__scan_bytes() instead.
- */
-YY_BUFFER_STATE null__scan_string (yyconst char * yystr )
-{
-
- return null__scan_bytes(yystr,strlen(yystr) );
-}
-
-/** Setup the input buffer state to scan the given bytes. The next call to null_lex() will
- * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
- *
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE null__scan_bytes (yyconst char * yybytes, int _yybytes_len )
-{
- YY_BUFFER_STATE b;
- char *buf;
- yy_size_t n;
- int i;
-
- /* Get memory for full buffer, including space for trailing EOB's. */
- n = _yybytes_len + 2;
- buf = (char *) null_alloc(n );
- if ( ! buf )
- YY_FATAL_ERROR( "out of dynamic memory in null__scan_bytes()" );
-
- for ( i = 0; i < _yybytes_len; ++i )
- buf[i] = yybytes[i];
-
- buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-
- b = null__scan_buffer(buf,n );
- if ( ! b )
- YY_FATAL_ERROR( "bad buffer in null__scan_bytes()" );
-
- /* It's okay to grow etc. this buffer, and we should throw it
- * away when we're done.
- */
- b->yy_is_our_buffer = 1;
-
- return b;
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-static void yy_fatal_error (yyconst char* msg )
-{
- (void) fprintf( stderr, "%s\n", msg );
- exit( YY_EXIT_FAILURE );
-}
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
- do \
- { \
- /* Undo effects of setting up null_text. */ \
- int yyless_macro_arg = (n); \
- YY_LESS_LINENO(yyless_macro_arg);\
- null_text[null_leng] = (yy_hold_char); \
- (yy_c_buf_p) = null_text + yyless_macro_arg; \
- (yy_hold_char) = *(yy_c_buf_p); \
- *(yy_c_buf_p) = '\0'; \
- null_leng = yyless_macro_arg; \
- } \
- while ( 0 )
-
-/* Accessor methods (get/set functions) to struct members. */
-
-/** Get the current line number.
- *
- */
-int null_get_lineno (void)
-{
-
- return null_lineno;
-}
-
-/** Get the input stream.
- *
- */
-FILE *null_get_in (void)
-{
- return null_in;
-}
-
-/** Get the output stream.
- *
- */
-FILE *null_get_out (void)
-{
- return null_out;
-}
-
-/** Get the length of the current token.
- *
- */
-int null_get_leng (void)
-{
- return null_leng;
-}
-
-/** Get the current token.
- *
- */
-
-char *null_get_text (void)
-{
- return null_text;
-}
-
-/** Set the current line number.
- * @param line_number
- *
- */
-void null_set_lineno (int line_number )
-{
-
- null_lineno = line_number;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- *
- * @see null__switch_to_buffer
- */
-void null_set_in (FILE * in_str )
-{
- null_in = in_str ;
-}
-
-void null_set_out (FILE * out_str )
-{
- null_out = out_str ;
-}
-
-int null_get_debug (void)
-{
- return null__flex_debug;
-}
-
-void null_set_debug (int bdebug )
-{
- null__flex_debug = bdebug ;
-}
-
-static int yy_init_globals (void)
-{
- /* Initialization is the same as for the non-reentrant scanner.
- * This function is called from null_lex_destroy(), so don't allocate here.
- */
-
- (yy_buffer_stack) = 0;
- (yy_buffer_stack_top) = 0;
- (yy_buffer_stack_max) = 0;
- (yy_c_buf_p) = (char *) 0;
- (yy_init) = 0;
- (yy_start) = 0;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
- null_in = stdin;
- null_out = stdout;
-#else
- null_in = (FILE *) 0;
- null_out = (FILE *) 0;
-#endif
-
- /* For future reference: Set errno on error, since we are called by
- * null_lex_init()
- */
- return 0;
-}
-
-/* null_lex_destroy is for both reentrant and non-reentrant scanners. */
-int null_lex_destroy (void)
-{
-
- /* Pop the buffer stack, destroying each element. */
- while(YY_CURRENT_BUFFER){
- null__delete_buffer(YY_CURRENT_BUFFER );
- YY_CURRENT_BUFFER_LVALUE = NULL;
- null_pop_buffer_state();
- }
-
- /* Destroy the stack itself. */
- null_free((yy_buffer_stack) );
- (yy_buffer_stack) = NULL;
-
- /* Reset the globals. This is important in a non-reentrant scanner so the next time
- * null_lex() is called, initialization will occur. */
- yy_init_globals( );
-
- return 0;
-}
-
-/*
- * Internal utility routines.
- */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
-{
- register int i;
- for ( i = 0; i < n; ++i )
- s1[i] = s2[i];
-}
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s )
-{
- register int n;
- for ( n = 0; s[n]; ++n )
- ;
-
- return n;
-}
-#endif
-
-void *null_alloc (yy_size_t size )
-{
- return (void *) malloc( size );
-}
-
-void *null_realloc (void * ptr, yy_size_t size )
-{
- /* The cast to (char *) in the following accommodates both
- * implementations that use char* generic pointers, and those
- * that use void* generic pointers. It works with the latter
- * because both ANSI C and C++ allow castless assignment from
- * any pointer type to void*, and deal with argument conversions
- * as though doing an assignment.
- */
- return (void *) realloc( (char *) ptr, size );
-}
-
-void null_free (void * ptr )
-{
- free( (char *) ptr ); /* see null_realloc() for (char *) cast */
-}
-
-#define YYTABLES_NAME "yytables"
-
-#line 10 "../../fsinfo/null_lex.l"
diff --git a/contrib/amd/fsinfo/null_lex.l b/contrib/amd/fsinfo/null_lex.l
deleted file mode 100644
index 46bb46381e43..000000000000
--- a/contrib/amd/fsinfo/null_lex.l
+++ /dev/null
@@ -1,9 +0,0 @@
-%{
-#include "null_gram.h"
-
-void null_error(const char *fmt, ...) {}
-int yywrap(void) { return 0; }
-%}
-%option nounput
-%option noinput
-%%
diff --git a/contrib/amd/fsinfo/wr_atab.c b/contrib/amd/fsinfo/wr_atab.c
deleted file mode 100644
index ac132aa76dc4..000000000000
--- a/contrib/amd/fsinfo/wr_atab.c
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/wr_atab.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <fsi_data.h>
-#include <fsinfo.h>
-
-
-/*
- * Write a sequence of automount mount map entries
- */
-static int
-write_amount_info(FILE *af, automount *ap, u_int sk)
-{
- int errors = 0;
-
- if (ap->a_mount) {
- /*
- * A pseudo-directory.
- * This can also be a top-level directory, in which
- * case the type:=auto is not wanted...
- *
- * type:=auto;fs:=${map};pref:=whatever/
- */
- automount *ap2;
- if (strlen(ap->a_name) > sk) {
- fprintf(af, "%s type:=auto;fs:=${map};pref:=%s/\n",
- ap->a_name + sk, ap->a_name + sk);
- }
- ITER(ap2, automount, ap->a_mount)
- errors += write_amount_info(af, ap2, sk);
- } else if (ap->a_hardwiredfs) {
-
- /*
- * A hardwired filesystem "hostname:path"
- * rhost:=hostname;rfs:=path
- */
- char *key = ap->a_name + sk;
- char *hostname = ap->a_hardwiredfs;
- char *path = strrchr(hostname, (int) ':');
-
- if (path == NULL) {
- fprintf(stderr, "%s: %s not an NFS filesystem\n", ap->a_name, ap->a_hardwiredfs);
- errors++;
- } else {
- *path = '\0';
- path++;
-
- /*
- * Output the map key
- */
- fputs(key, af);
- fprintf(af, " rhost:=%s", hostname);
- fprintf(af, ";rfs:=%s", path);
- if (ap->a_opts && !STREQ(ap->a_opts, "")) {
- fprintf(af, ";%s", ap->a_opts);
- }
- fputc('\n', af);
- path--;
- *path = ':';
- }
- } else if (ap->a_mounted) {
-
- /*
- * A mounted partition
- * type:=link [ link entries ] type:=nfs [ nfs entries ]
- */
- dict_data *dd;
- dict_ent *de = ap->a_mounted;
- int done_type_link = 0;
- char *key = ap->a_name + sk;
-
- /*
- * Output the map key
- */
- fputs(key, af);
-
- /*
- * First output any Link locations that would not
- * otherwise be correctly mounted. These refer
- * to filesystem which are not mounted in the same
- * place which the automounter would use.
- */
- ITER(dd, dict_data, &de->de_q) {
- fsi_mount *mp = (fsi_mount *) dd->dd_data;
- /*
- * If the mount point and the exported volname are the
- * same then this filesystem will be recognized by
- * the restart code - so we don't need to put out a
- * special rule for it.
- */
- if (mp->m_dk->d_host->h_lochost) {
- char amountpt[1024];
- compute_automount_point(amountpt, sizeof(amountpt),
- mp->m_dk->d_host, mp->m_exported->m_volname);
- if (!STREQ(mp->m_dk->d_mountpt, amountpt)) {
- /*
- * ap->a_volname is the name of the aliased volume
- * mp->m_name is the mount point of the filesystem
- * mp->m_volname is the volume name of the filesystems
- */
-
- /*
- * Find length of key and volume names
- */
- int avlen = strlen(ap->a_volname);
- int mnlen = strlen(mp->m_volname);
-
- /*
- * Make sure a -type:=link is output once
- */
- if (!done_type_link) {
- done_type_link = 1;
- fputs(" -type:=link", af);
- }
-
- /*
- * Output a selector for the hostname,
- * the device from which to mount and
- * where to mount. This will correspond
- * to the values output for the fstab.
- */
- if (mp->m_dk->d_host->h_lochost)
- fprintf(af, " host==%s", mp->m_dk->d_host->h_lochost);
- else
- fprintf(af, " hostd==%s", mp->m_dk->d_host->h_hostname);
- fprintf(af, ";fs:=%s", mp->m_name);
-
- /*
- * ... and a sublink if needed
- */
- if (mnlen < avlen) {
- char *sublink = ap->a_volname + mnlen + 1;
- fprintf(af, "/%s", sublink);
- }
- fputs(" ||", af);
- }
- }
- }
-
- /*
- * Next do the NFS locations
- */
- if (done_type_link)
- fputs(" -", af);
-
- ITER(dd, dict_data, &de->de_q) {
- fsi_mount *mp = (fsi_mount *) dd->dd_data;
- int namelen = mp->m_name_len;
- int exp_namelen = mp->m_exported->m_name_len;
- int volnlen = strlen(ap->a_volname);
- int mvolnlen = strlen(mp->m_volname);
-
- fputc(' ', af);
-
- /*
- * Output any selectors
- */
- if (mp->m_sel)
- fprintf(af, "%s;", mp->m_sel);
-
- /*
- * Print host and volname of exported filesystem
- */
- fprintf(af, "rhost:=%s",
- mp->m_dk->d_host->h_lochost ?
- mp->m_dk->d_host->h_lochost :
- mp->m_dk->d_host->h_hostname);
- fprintf(af, ";rfs:=%s", mp->m_exported->m_volname);
- if (ap->a_opts && !STREQ(ap->a_opts, "")) {
- fprintf(af, ";%s", ap->a_opts);
- }
-
- /*
- * Now determine whether a sublink is required.
- */
- if (exp_namelen < namelen || mvolnlen < volnlen) {
- char sublink[1024];
- sublink[0] = '\0';
- if (exp_namelen < namelen) {
- xstrlcat(sublink, mp->m_name + exp_namelen + 1, sizeof(sublink));
- if (mvolnlen < volnlen)
- xstrlcat(sublink, "/", sizeof(sublink));
- }
- if (mvolnlen < volnlen)
- xstrlcat(sublink, ap->a_volname + mvolnlen + 1, sizeof(sublink));
-
- fprintf(af, ";sublink:=%s", sublink);
- }
- }
- fputc('\n', af);
- } else if (ap->a_symlink) {
-
- /*
- * A specific link.
- *
- * type:=link;fs:=whatever
- */
- fprintf(af, "%s type:=link;fs:=%s\n", ap->a_name + sk, ap->a_symlink);
- }
-
- return errors;
-}
-
-
-/*
- * Write a single automount configuration file
- */
-static int
-write_amount( qelem *q, char *def)
-{
- automount *ap;
- int errors = 0;
- int direct = 0;
-
- /*
- * Output all indirect maps
- */
- ITER(ap, automount, q) {
- FILE *af;
- char *p;
-
- /*
- * If there is no a_mount node then this is really
- * a direct mount, so just keep a count and continue.
- * Direct mounts are output into a special file during
- * the second pass below.
- */
- if (!ap->a_mount) {
- direct++;
- continue;
- }
-
- p = strrchr(ap->a_name, '/');
- if (!p)
- p = ap->a_name;
- else
- p++;
-
- af = pref_open(mount_pref, p, gen_hdr, ap->a_name);
- if (af) {
- show_new(ap->a_name);
- fputs("/defaults ", af);
- if (*def)
- fprintf(af, "%s;", def);
- fputs("type:=nfs\n", af);
- errors += write_amount_info(af, ap, strlen(ap->a_name) + 1);
- errors += pref_close(af);
- }
- }
-
- /*
- * Output any direct map entries which were found during the
- * previous pass over the data.
- */
- if (direct) {
- FILE *af = pref_open(mount_pref, "direct.map", info_hdr, "direct mount");
-
- if (af) {
- show_new("direct mounts");
- fputs("/defaults ", af);
- if (*def)
- fprintf(af, "%s;", def);
- fputs("type:=nfs\n", af);
- ITER(ap, automount, q)
- if (!ap->a_mount)
- errors += write_amount_info(af, ap, 1);
- errors += pref_close(af);
- }
- }
- return errors;
-}
-
-
-/*
- * Write all the needed automount configuration files
- */
-int
-write_atab(qelem *q)
-{
- int errors = 0;
-
- if (mount_pref) {
- auto_tree *tp;
- show_area_being_processed("write automount", 5);
- ITER(tp, auto_tree, q)
- errors += write_amount(tp->t_mount, tp->t_defaults);
- }
-
- return errors;
-}
diff --git a/contrib/amd/fsinfo/wr_bparam.c b/contrib/amd/fsinfo/wr_bparam.c
deleted file mode 100644
index 00befa9cf582..000000000000
--- a/contrib/amd/fsinfo/wr_bparam.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/wr_bparam.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <fsi_data.h>
-#include <fsinfo.h>
-
-
-/*
- * Write a host/path in NFS format
- */
-static int
-write_nfsname(FILE *ef, fsmount *fp, char *hn)
-{
- int errors = 0;
- char *h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname);
-
- domain_strip(h, hn);
- fprintf(ef, "%s:%s", h, fp->f_volname);
- XFREE(h);
- return errors;
-}
-
-
-/*
- * Write a bootparams entry for a host
- */
-static int
-write_boot_info(FILE *ef, host *hp)
-{
- int errors = 0;
-
- fprintf(ef, "%s\troot=", hp->h_hostname);
- errors += write_nfsname(ef, hp->h_netroot, hp->h_hostname);
- fputs(" swap=", ef);
- errors += write_nfsname(ef, hp->h_netswap, hp->h_hostname);
- fputs("\n", ef);
-
- return 0;
-}
-
-
-/*
- * Output a bootparams file
- */
-int
-write_bootparams(qelem *q)
-{
- int errors = 0;
-
- if (bootparams_pref) {
- FILE *ef = pref_open(bootparams_pref, "bootparams", info_hdr, "bootparams");
- if (ef) {
- host *hp;
- ITER(hp, host, q)
- if (hp->h_netroot && hp->h_netswap)
- errors += write_boot_info(ef, hp);
- errors += pref_close(ef);
- } else {
- errors++;
- }
- }
-
- return errors;
-}
diff --git a/contrib/amd/fsinfo/wr_dumpset.c b/contrib/amd/fsinfo/wr_dumpset.c
deleted file mode 100644
index 916f95a5a23d..000000000000
--- a/contrib/amd/fsinfo/wr_dumpset.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/wr_dumpset.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <fsi_data.h>
-#include <fsinfo.h>
-
-
-static int
-write_dumpset_info(FILE *ef, qelem *q)
-{
- int errors = 0;
- disk_fs *dp;
-
- ITER(dp, disk_fs, q) {
- if (dp->d_dumpset) {
- fprintf(ef, "%s\t%s:%-30s\t# %s\n",
- dp->d_dumpset,
- dp->d_host->h_lochost ?
- dp->d_host->h_lochost :
- dp->d_host->h_hostname,
- dp->d_mountpt,
- dp->d_dev);
- }
- }
- return errors;
-}
-
-
-int
-write_dumpset(qelem *q)
-{
- int errors = 0;
-
- if (dumpset_pref) {
- FILE *ef = pref_open(dumpset_pref, "dumpsets", info_hdr, "exabyte dumpset");
- if (ef) {
- host *hp;
-
- ITER(hp, host, q) {
- if (hp->h_disk_fs) {
- errors += write_dumpset_info(ef, hp->h_disk_fs);
- }
- }
- errors += pref_close(ef);
- } else {
- errors++;
- }
- }
-
- return errors;
-}
diff --git a/contrib/amd/fsinfo/wr_exportfs.c b/contrib/amd/fsinfo/wr_exportfs.c
deleted file mode 100644
index c6e7936dd16d..000000000000
--- a/contrib/amd/fsinfo/wr_exportfs.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/wr_exportfs.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <fsi_data.h>
-#include <fsinfo.h>
-
-
-static int
-write_export_info(FILE *ef, qelem *q, int errors)
-{
- fsi_mount *mp;
-
- ITER(mp, fsi_mount, q) {
- if (mp->m_mask & (1 << DM_EXPORTFS))
- fprintf(ef, "%s\t%s\n", mp->m_volname, mp->m_exportfs);
- if (mp->m_mount)
- errors += write_export_info(ef, mp->m_mount, 0);
- }
-
- return errors;
-}
-
-
-static int
-write_dkexports(FILE *ef, qelem *q)
-{
- int errors = 0;
- disk_fs *dp;
-
- ITER(dp, disk_fs, q) {
- if (dp->d_mount)
- errors += write_export_info(ef, dp->d_mount, 0);
- }
-
- return errors;
-}
-
-
-int
-write_exportfs(qelem *q)
-{
- int errors = 0;
-
- if (exportfs_pref) {
- host *hp;
-
- show_area_being_processed("write exportfs", 5);
- ITER(hp, host, q) {
- if (hp->h_disk_fs) {
- FILE *ef = pref_open(exportfs_pref, hp->h_hostname, gen_hdr, hp->h_hostname);
- if (ef) {
- show_new(hp->h_hostname);
- errors += write_dkexports(ef, hp->h_disk_fs);
- errors += pref_close(ef);
- } else {
- errors++;
- }
- }
- }
- }
-
- return errors;
-}
diff --git a/contrib/amd/fsinfo/wr_fstab.c b/contrib/amd/fsinfo/wr_fstab.c
deleted file mode 100644
index 166353eb00f1..000000000000
--- a/contrib/amd/fsinfo/wr_fstab.c
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/fsinfo/wr_fstab.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <fsi_data.h>
-#include <fsinfo.h>
-
-#define GENERIC_OS_NAME "generic"
-
-/* forward definitions */
-static void write_aix1_dkfstab(FILE *ef, disk_fs *dp);
-static void write_aix1_dkrmount(FILE *ef, char *hn, fsmount *fp);
-static void write_aix3_dkfstab(FILE *ef, disk_fs *dp);
-static void write_aix3_dkrmount(FILE *ef, char *hn, fsmount *fp);
-static int write_dkfstab(FILE *ef, qelem *q, void (*output) (FILE *, disk_fs *));
-static int write_dkrmount(FILE *ef, qelem *q, char *hn, void (*output) (FILE *, char *, fsmount *));
-static void write_generic_dkfstab(FILE *ef, disk_fs *dp);
-static void write_generic_dkrmount(FILE *ef, char *hn, fsmount *fp);
-static void write_ultrix_dkfstab(FILE *ef, disk_fs *dp);
-static void write_ultrix_dkrmount(FILE *ef, char *hn, fsmount *fp);
-
-/* ----------------------------------------------- */
-
-static struct os_fstab_type {
- char *os_name;
- void (*op_fstab) (FILE *ef, disk_fs *dp);
- void (*op_mount) (FILE *ef, char *hn, fsmount *fp);
-} os_tabs[] = {
-
- {
- "aix1", write_aix1_dkfstab, write_aix1_dkrmount
- }, /* AIX 1 */
- {
- "aix3", write_aix3_dkfstab, write_aix3_dkrmount
- }, /* AIX 3 */
- {
- "generic", write_generic_dkfstab, write_generic_dkrmount
- }, /* Generic */
- {
- "u2_0", write_ultrix_dkfstab, write_ultrix_dkrmount
- }, /* Ultrix */
- {
- "u3_0", write_ultrix_dkfstab, write_ultrix_dkrmount
- }, /* Ultrix */
- {
- "u4_0", write_ultrix_dkfstab, write_ultrix_dkrmount
- }, /* Ultrix */
- {
- NULL, NULL, NULL
- }
-};
-
-
-/* ---------- AIX 1 ------------------------------ */
-
-/*
- * AIX 1 format
- */
-static void
-write_aix1_dkfstab(FILE *ef, disk_fs *dp)
-{
- char *hp = xstrdup(dp->d_host->h_hostname);
- char *p = strchr(hp, '.');
-
- if (p)
- *p = '\0';
-
- fprintf(ef, "\n%s:\n\tdev = %s\n\tvfs = %s\n\ttype = %s\n\tlog = %s\n\tvol = %s\n\topts = %s\n\tmount = true\n\tcheck = true\n\tfree = false\n",
- dp->d_mountpt,
- dp->d_dev,
- dp->d_fstype,
- dp->d_fstype,
- dp->d_log,
- dp->d_mountpt,
- dp->d_opts);
- XFREE(hp);
-}
-
-
-static void
-write_aix1_dkrmount(FILE *ef, char *hn, fsmount *fp)
-{
- char *h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname);
- char *hp = xstrdup(h);
- char *p = strchr(hp, '.');
-
- if (p)
- *p = '\0';
- domain_strip(h, hn);
- fprintf(ef, "\n%s:\n\tsite = %s\n\tdev = %s:%s\n\tvfs = %s\n\ttype = %s\n\tvol = %s\n\topts = %s\n\tmount = true\n\tcheck = true\n\tfree = false\n",
- fp->f_localname,
- hp,
- h,
- fp->f_volname,
- fp->f_fstype,
- fp->f_fstype,
- fp->f_localname,
- fp->f_opts);
-
- XFREE(hp);
- XFREE(h);
-}
-
-
-/* ---------- AIX 3 ------------------------------ */
-
-/*
- * AIX 3 format
- */
-static void
-write_aix3_dkfstab(FILE *ef, disk_fs *dp)
-{
- if (STREQ(dp->d_fstype, "jfs") &&
- NSTREQ(dp->d_dev, "/dev/", 5) &&
- !dp->d_log)
- error("aix 3 needs a log device for journalled filesystem (jfs) mounts");
-
- fprintf(ef, "\n%s:\n\tdev = %s\n\tvfs = %s\n\ttype = %s\n\tlog = %s\n\tvol = %s\n\topts = %s\n\tmount = true\n\tcheck = true\n\tfree = false\n",
- dp->d_mountpt,
- dp->d_dev,
- dp->d_fstype,
- dp->d_fstype,
- dp->d_log,
- dp->d_mountpt,
- dp->d_opts);
-}
-
-
-static void
-write_aix3_dkrmount(FILE *ef, char *hn, fsmount *fp)
-{
- char *h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname);
-
- domain_strip(h, hn);
- fprintf(ef, "\n%s:\n\tdev = %s:%s\n\tvfs = %s\n\ttype = %s\n\tvol = %s\n\topts = %s\n\tmount = true\n\tcheck = true\n\tfree = false\n",
- fp->f_localname,
- h,
- fp->f_volname,
- fp->f_fstype,
- fp->f_fstype,
- fp->f_localname,
- fp->f_opts);
-
- XFREE(h);
-}
-
-
-/* ---------- Ultrix ----------------------------- */
-
-static void
-write_ultrix_dkfstab(FILE *ef, disk_fs *dp)
-{
- fprintf(ef, "%s:%s:%s:%s:%d:%d\n",
- dp->d_dev,
- dp->d_mountpt,
- dp->d_fstype,
- dp->d_opts,
- dp->d_freq,
- dp->d_passno);
-}
-
-
-static void
-write_ultrix_dkrmount(FILE *ef, char *hn, fsmount *fp)
-{
- char *h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname);
-
- domain_strip(h, hn);
- fprintf(ef, "%s@%s:%s:%s:%s:0:0\n",
- fp->f_volname,
- h,
- fp->f_localname,
- fp->f_fstype,
- fp->f_opts);
- XFREE(h);
-}
-
-
-/* ---------- Generic ---------------------------- */
-
-/*
- * Generic (BSD, SunOS, HPUX) format
- */
-static void
-write_generic_dkfstab(FILE *ef, disk_fs *dp)
-{
- fprintf(ef, "%s %s %s %s %d %d\n",
- dp->d_dev,
- dp->d_mountpt,
- dp->d_fstype,
- dp->d_opts,
- dp->d_freq,
- dp->d_passno);
-}
-
-
-static void
-write_generic_dkrmount(FILE *ef, char *hn, fsmount *fp)
-{
- char *h;
-
- if (fp->f_ref) {
- h = xstrdup(fp->f_ref->m_dk->d_host->h_hostname);
- } else {
- h = xstrdup(fp->f_from);
- }
- domain_strip(h, hn);
- fprintf(ef, "%s:%s %s %s %s 0 0\n",
- h,
- fp->f_volname,
- fp->f_localname,
- fp->f_fstype,
- fp->f_opts);
- XFREE(h);
-}
-
-
-static struct os_fstab_type *
-find_fstab_type(host *hp)
-{
- struct os_fstab_type *op = NULL;
- char *os_name = NULL;
-
-again:;
- if (os_name == 0) {
- if (ISSET(hp->h_mask, HF_OS))
- os_name = hp->h_os;
- else
- os_name = GENERIC_OS_NAME;
- }
- for (op = os_tabs; op->os_name; op++)
- if (STREQ(os_name, op->os_name))
- return op;
-
- os_name = GENERIC_OS_NAME;
- goto again;
-}
-
-
-static int
-write_dkfstab(FILE *ef, qelem *q, void (*output) (FILE *, disk_fs *))
-{
- int errors = 0;
- disk_fs *dp;
-
- ITER(dp, disk_fs, q)
- if (!STREQ(dp->d_fstype, "export"))
- (*output) (ef, dp);
-
- return errors;
-}
-
-
-static int
-write_dkrmount(FILE *ef, qelem *q, char *hn, void (*output) (FILE *, char *, fsmount *))
-{
- int errors = 0;
- fsmount *fp;
-
- ITER(fp, fsmount, q)
- (*output) (ef, hn, fp);
-
- return errors;
-}
-
-
-int
-write_fstab(qelem *q)
-{
- int errors = 0;
-
- if (fstab_pref) {
- host *hp;
-
- show_area_being_processed("write fstab", 4);
- ITER(hp, host, q) {
- if (hp->h_disk_fs || hp->h_mount) {
- FILE *ef = pref_open(fstab_pref, hp->h_hostname, gen_hdr, hp->h_hostname);
- if (ef) {
- struct os_fstab_type *op = find_fstab_type(hp);
- show_new(hp->h_hostname);
- if (hp->h_disk_fs)
- errors += write_dkfstab(ef, hp->h_disk_fs, op->op_fstab);
- else
- fsi_log("No local disk mounts on %s", hp->h_hostname);
-
- if (hp->h_mount)
- errors += write_dkrmount(ef, hp->h_mount, hp->h_hostname, op->op_mount);
-
- pref_close(ef);
- }
- } else {
- error("no disk mounts on %s", hp->h_hostname);
- }
- }
- }
- return errors;
-}
diff --git a/contrib/amd/hlfsd/hlfsd.8 b/contrib/amd/hlfsd/hlfsd.8
deleted file mode 100644
index 78db8bf1bcb4..000000000000
--- a/contrib/amd/hlfsd/hlfsd.8
+++ /dev/null
@@ -1,380 +0,0 @@
-.\"
-.\" Copyright (c) 1997-2014 Erez Zadok
-.\" Copyright (c) 1989 Jan-Simon Pendry
-.\" Copyright (c) 1989 Imperial College of Science, Technology & Medicine
-.\" Copyright (c) 1989 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" Jan-Simon Pendry at Imperial College, London.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.\" File: am-utils/hlfsd/hlfsd.8
-.\"
-.\" HLFSD was written at Columbia University Computer Science Department, by
-.\" Erez Zadok <ezk@cs.columbia.edu> and Alexander Dupuy <dupuy@smarts.com>
-.\" It is distributed under the same terms and conditions as AMD.
-.\"
-.Dd February 26, 2016
-.Dt HLFSD 8
-.Os
-.Sh NAME
-.Nm hlfsd
-.Nd home-link file system daemon
-.Sh SYNOPSIS
-.Nm
-.Op Fl fhnpvC
-.Op Fl a Ar alt_dir
-.Op Fl c Ar cache-interval
-.Op Fl g Ar group
-.Op Fl i Ar reload-interval
-.Op Fl l Ar logfile
-.Op Fl o Ar mount-options
-.Op Fl x Ar log-options
-.Op Fl D Ar debug-options
-.Op Fl P Ar password-file
-.Op Ar linkname Op Ar subdir
-.Sh DESCRIPTION
-.Bf -symbolic
-This daemon is obsolete.
-Users are advised to use
-.Xr autofs 5
-instead.
-.Ef
-.Pp
-The
-.Nm
-utility
-is a daemon which implements a file system containing a symbolic link to
-subdirectory within a user's home directory, depending on the user
-which accessed that link.
-It was primarily designed to redirect
-incoming mail to users' home directories, so that it can read from
-anywhere.
-.Pp
-The
-.Nm
-utility
-operates by mounting itself as an NFS server for the directory containing
-.Ar linkname ,
-which defaults to
-.Pa /hlfs/home .
-Lookups within that directory are handled by
-.Nm ,
-which uses the password map to determine how to resolve the lookup.
-The directory will be created if it does not already exist.
-The symbolic link will be to the accessing user's home directory, with
-.Ar subdir
-appended to it.
-If not specified,
-.Ar subdir
-defaults to
-.Pa .hlfsdir .
-This directory will also be created if it does not already exist.
-.Pp
-A
-.Dv SIGTERM
-sent to
-.Nm
-will cause it to shutdown.
-A
-.Dv SIGHUP
-will flush the internal
-caches, and reload the password map.
-It will also close and
-reopen the log file, to enable the original log file to be
-removed or rotated.
-A
-.Dv SIGUSR1
-will cause it to dump its internal
-table of user IDs and home directories to the file
-.Pa /usr/tmp/hlfsd.dump.XXXXXX .
-.Sh OPTIONS
-.Bl -tag -width indent
-.It Fl a Ar alt_dir
-Alternate directory.
-The name of the directory to which
-the symbolic link returned by
-.Nm
-will point, if it cannot access the home directory of the user.
-This
-defaults to
-.Pa /var/hlfs .
-This directory will be created if it does not exist.
-It is expected
-that either users will read these files, or the system administrators
-will run a script to resend this
-.Dq lost mail
-to its owner.
-.It Fl c Ar cache-interval
-Caching interval.
-The
-.Nm
-utility
-will cache the validity of home directories for this interval, in
-seconds.
-Entries which have been verified within the last
-.Ar cache-interval
-seconds will not be verified again, since the operation could
-be expensive, and the entries are most likely still valid.
-After the interval has expired,
-.Nm
-will re-verify the validity of the user's home directory, and
-reset the cache time-counter.
-The default value for
-.Ar cache-interval
-is 300 seconds (5 minutes).
-.It Fl f
-Force fast startup.
-This option tells
-.Nm
-to skip startup-time consistency checks such as existence of mount
-directory, alternate spool directory, symlink to be hidden under the
-mount directory, their permissions and validity.
-.It Fl g Ar group
-Set the special group
-.Dv HLFS_GID
-to
-.Ar group .
-Programs such as
-.Xr comsat 8 ,
-(which access the mailboxes of other users) must be setgid
-.Dv HLFS_GID
-to work properly.
-The default group is
-.Dq Li hlfs .
-If no group is provided,
-and there is no group
-.Dq Li hlfs ,
-this feature is disabled.
-.It Fl h
-Help.
-Print a brief help message, and exit.
-.It Fl i Ar reload-interval
-Map-reloading interval.
-Each
-.Ar reload-interval
-seconds,
-.Nm
-will reload the password map.
-The
-.Nm
-utility
-needs the password map for the UIDs and home directory pathnames.
-The
-.Nm
-utility schedules a
-.Dv SIGALRM
-to reload the password maps.
-A
-.Dv SIGHUP
-sent to
-.Nm
-will force it to reload the maps immediately.
-The default
-value for
-.Ar reload-interval
-is 900 seconds (15 minutes).
-.It Fl l Ar logfile
-Specify a log file to which
-.Nm
-will record events.
-If
-.Ar logfile
-is the string
-.Dq Li syslog
-then the log messages will be sent to the system log daemon by
-.Xr syslog 3 ,
-using the
-.Dv LOG_DAEMON
-facility.
-This is also the default.
-.It Fl n
-No verify.
-The
-.Nm
-utility
-will not verify the validity of the symbolic link it will be
-returning, or that the user's home directory contains
-sufficient disk-space for spooling.
-This can speed up
-.Nm
-at the cost of possibly returning symbolic links to home
-directories which are not currently accessible or are full.
-By default,
-.Nm
-validates the symbolic-link in the background.
-The
-.Fl n
-option overrides the meaning of the
-.Fl c
-option, since no caching is necessary.
-.It Fl o Ar mount-options
-Mount options.
-Mount options which
-.Nm
-will use to mount itself on top of
-.Ar dirname .
-By default,
-.Ar mount-options
-is set to
-.Dq Li ro .
-If the system supports symbolic-link caching, default
-options are set to
-.Dq Li ro,nocache .
-.It Fl p
-Print PID.
-Outputs the process ID of
-.Nm
-to standard output where it can be saved into a file.
-.It Fl v
-Version.
-Displays version information to standard error.
-.It Fl x Ar log-options
-Specify run-time logging options.
-The options are a comma separated
-list chosen from:
-.Li fatal , error , user , warn , info , map , stats , all .
-.It Fl C
-Force
-.Nm
-to run on systems that cannot turn off the NFS attribute-cache.
-Use of
-this option on those systems is discouraged, as it may result in loss
-or mis-delivery of mail.
-The option is ignored on systems that can turn
-off the attribute-cache.
-.It Fl D Ar log-options
-Select from a variety of debugging options.
-Prefixing an
-option with the string
-.Dq Li no
-reverses the effect of that option.
-Options are cumulative.
-The most useful option is
-.Dq Li all .
-Since this option is only used for debugging other options are not
-documented here.
-A fuller description is available in the program
-source.
-A
-.Dv SIGUSR1
-sent to
-.Nm
-will cause it to dump its internal password map to the file
-.Pa /usr/tmp/hlfsd.dump.XXXXXX .
-.It Fl P Ar password-file
-Read the user-name, user-id, and home directory information from the file
-.Ar password-file .
-Normally,
-.Nm
-will use
-.Xr getpwent 3
-to read the password database.
-This option allows you to override the
-default database, and is useful if you want to map users' mail files to a
-directory other than their home directory.
-Only the username, uid, and
-home-directory fields of the file
-.Ar password-file
-are read and checked.
-All other fields are ignored.
-The file
-.Ar password-file
-must otherwise be compliant with
-.Ux
-System 7 colon-delimited format
-.Xr passwd 5 .
-.El
-.Sh FILES
-.Bl -tag -width ".Pa /var/hlfs"
-.It Pa /hlfs
-directory under which
-.Nm
-mounts itself and manages the symbolic link
-.Pa home .
-.It Pa .hlfsdir
-default sub-directory in the user's home directory, to which the
-.Pa home
-symbolic link returned by
-.Nm
-points.
-.It Pa /var/hlfs
-directory to which
-.Pa home
-symbolic link returned by
-.Nm
-points if it is unable to verify the that
-user's home directory is accessible.
-.El
-.Sh "SEE ALSO"
-.Xr mail 1 ,
-.Xr getgrent 3 ,
-.Xr getpwent 3 ,
-.Xr mnttab 4 ,
-.Xr passwd 4 ,
-.Xr mtab 5 ,
-.Xr amd 8 ,
-.Xr automount 8 ,
-.Xr cron 8 ,
-.Xr mount 8 ,
-.Xr sendmail 8 ,
-.Xr umount 8
-.Rs
-.%T HLFSD: Delivering Email to Your $HOME
-.%B Proc. LISA-VII, The 7th Usenix System Administration Conference
-.%D November 1993
-.Re
-.Pp
-.Dq am-utils
-.Xr info 1
-entry.
-.Rs
-.%A Erez Zadok
-.%B "Linux NFS and Automounter Administration"
-.%O ISBN 0-7821-2739-8
-.%I Sybex
-.%D 2001
-.Re
-.Pp
-.Pa http://www.am-utils.org/
-.Sh HISTORY
-The
-.Nm
-utility appeared in
-.Fx 3.0 .
-.Sh AUTHORS
-.An Erez Zadok Aq ezk@cs.sunysb.edu ,
-Computer Science Department, Stony Brook University, Stony Brook, New York, USA.
-.Pp
-.An Alexander Dupuy Aq dupuy@smarts.com ,
-System Management ARTS, White Plains, New York, USA.
-.Pp
-Other authors and contributors to am-utils are listed in the
-.Pa AUTHORS
-file distributed with am-utils.
diff --git a/contrib/amd/hlfsd/hlfsd.c b/contrib/amd/hlfsd/hlfsd.c
deleted file mode 100644
index 686bb63db239..000000000000
--- a/contrib/amd/hlfsd/hlfsd.c
+++ /dev/null
@@ -1,921 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/hlfsd/hlfsd.c
- *
- * HLFSD was written at Columbia University Computer Science Department, by
- * Erez Zadok <ezk@cs.columbia.edu> and Alexander Dupuy <dupuy@cs.columbia.edu>
- * It is being distributed under the same terms and conditions as amd does.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <hlfsd.h>
-
-/*
- * STATIC VARIABLES:
- */
-static RETSIGTYPE proceed(int);
-static RETSIGTYPE reaper(int);
-static RETSIGTYPE reload(int);
-static char *hlfs_group = DEFAULT_HLFS_GROUP;
-static char default_dir_name[] = DEFAULT_DIRNAME;
-static char *dir_name = default_dir_name;
-static int printpid = 0;
-static int stoplight = 0;
-static void hlfsd_init(void);
-static void usage(void);
-
-static struct itimerval reloadinterval = {
- {DEFAULT_INTERVAL, 0},
- {DEFAULT_INTERVAL, 0}
-};
-
-/*
- * default mount options.
- */
-static char default_mntopts[] = "ro,noac";
-
-/*
- * GLOBALS:
- */
-SVCXPRT *nfsxprt;
-char *alt_spooldir = ALT_SPOOLDIR;
-char *home_subdir = HOME_SUBDIR;
-char *logfile = DEFAULT_LOGFILE;
-char *passwdfile = NULL; /* alternate passwd file to use */
-char *slinkname = NULL;
-char hostname[MAXHOSTNAMELEN + 1] = "localhost";
-u_int cache_interval = DEFAULT_CACHE_INTERVAL;
-gid_t hlfs_gid = (gid_t) INVALIDID;
-int masterpid = 0;
-int noverify = 0;
-int orig_umask = 022;
-int serverpid = 0;
-nfstime startup;
-u_short nfs_port;
-
-/* symbol must be available always */
-#ifdef MNTTAB_FILE_NAME
-char *mnttab_file_name = MNTTAB_FILE_NAME;
-#else /* not MNTTAB_FILE_NAME */
-char *mnttab_file_name = NULL;
-#endif /* not MNTTAB_FILE_NAME */
-
-/* forward declarations */
-void hlfsd_going_down(int rc);
-void fatalerror(char *str);
-
-
-static void
-usage(void)
-{
- fprintf(stderr,
- "Usage: %s [-Cfhnpv] [-a altdir] [-c cache-interval] [-g group]\n",
- am_get_progname());
- fprintf(stderr, "\t[-i interval] [-l logfile] [-o mntopts] [-P passwdfile]\n");
- show_opts('x', xlog_opt);
-#ifdef DEBUG
- show_opts('D', dbg_opt);
-#endif /* DEBUG */
- fprintf(stderr, "\t[dir_name [subdir]]\n");
- exit(2);
-}
-
-
-void
-fatalerror(char *str)
-{
-#define ERRM ": %m"
- size_t l = strlen(str) + sizeof(ERRM) - 1;
- char *tmp = strnsave(str, l);
- xstrlcat(tmp, ERRM, l);
- fatal(tmp);
-}
-
-
-int
-main(int argc, char *argv[])
-{
- char *dot;
- char *mntopts = (char *) NULL;
- char hostpid_fs[MAXHOSTNAMELEN + 1 + 16]; /* room for ":(pid###)" */
- char progpid_fs[PROGNAMESZ + 1 + 11]; /* room for ":pid" */
- char preopts[128];
- char *progname;
- int forcecache = 0;
- int forcefast = 0;
- int genflags = 0;
- int opt, ret;
- int opterrs = 0;
- int retry;
- int soNFS; /* NFS socket */
- int s = -99;
- mntent_t mnt;
- nfs_args_t nfs_args;
- am_nfs_handle_t anh;
- struct dirent *direntry;
- struct group *grp;
- struct stat stmodes;
- DIR *mountdir;
- MTYPE_TYPE type = MOUNT_TYPE_NFS;
-
-#ifdef HAVE_SIGACTION
- struct sigaction sa;
-#endif /* not HAVE_SIGACTION */
-
-#ifndef HAVE_TRANSPORT_TYPE_TLI
- struct sockaddr_in localsocket;
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
-
- /* get program name and truncate so we don't overflow progpid_fs */
-
- if ((progname = strrchr(argv[0], '/')) != NULL)
- progname++;
- else
- progname = argv[0];
- if ((int) strlen(progname) > PROGNAMESZ) /* truncate to reasonable size */
- progname[PROGNAMESZ] = '\0';
- am_set_progname(progname);
-
- while ((opt = getopt(argc, argv, "a:c:CD:fg:hi:l:no:pP:x:v")) != -1)
- switch (opt) {
-
- case 'a':
- if (!optarg || optarg[0] != '/') {
- printf("%s: invalid directory for -a: %s\n",
- am_get_progname(), optarg);
- exit(3);
- }
- alt_spooldir = optarg;
- break;
-
- case 'c':
- if (!atoi(optarg)) {
- printf("%s: invalid interval for -c: %s\n",
- am_get_progname(), optarg);
- exit(3);
- }
- cache_interval = atoi(optarg);
- break;
-
- case 'C':
- forcecache++;
- break;
-
- case 'f':
- forcefast++;
- break;
-
- case 'g':
- hlfs_group = optarg;
- break;
-
- case 'i':
- if (!atoi(optarg)) {
- printf("%s: invalid interval for -i: %s\n",
- am_get_progname(), optarg);
- exit(3);
- }
- reloadinterval.it_interval.tv_sec = atoi(optarg);
- reloadinterval.it_value.tv_sec = atoi(optarg);
- break;
-
- case 'l':
- logfile = optarg;
- break;
-
- case 'n':
- noverify++;
- break;
-
- case 'o':
- mntopts = optarg;
- break;
-
- case 'p':
- printpid++;
- break;
-
- case 'P':
- passwdfile = optarg;
- break;
-
- case 'v':
- fprintf(stderr, "%s\n", HLFSD_VERSION);
- exit(0);
-
- case 'x':
- opterrs += switch_option(optarg);
- break;
-
- case 'D':
-#ifdef DEBUG
- opterrs += debug_option(optarg);
-#else /* not DEBUG */
- fprintf(stderr, "%s: not compiled with DEBUG -- sorry.\n", am_get_progname());
-#endif /* not DEBUG */
- break;
-
- case 'h':
- case '?':
- opterrs++;
- }
-
- /* need my pid before any dlog/plog */
- am_set_mypid();
-#ifdef DEBUG
- switch_option("debug");
-#endif /* DEBUG */
-
-/*
- * Terminate if did not ask to forcecache (-C) and hlfsd would not be able
- * to set the minimum cache intervals.
- */
-#if !defined(MNT2_NFS_OPT_ACREGMIN) && !defined(MNT2_NFS_OPT_NOAC) && !defined(HAVE_NFS_ARGS_T_ACREGMIN)
- if (!forcecache) {
- fprintf(stderr, "%s: will not be able to turn off attribute caches.\n", am_get_progname());
- exit(1);
- }
-#endif /* !defined(MNT2_NFS_OPT_ACREGMIN) && !defined(MNT2_NFS_OPT_NOAC) && !defined(HAVE_NFS_ARGS_T_ACREGMIN) */
-
-
- switch (argc - optind) {
- case 2:
- home_subdir = argv[optind + 1];
- case 1:
- dir_name = argv[optind];
- case 0:
- break;
- default:
- opterrs++;
- }
-
- if (opterrs)
- usage();
-
- /* ensure that only root can run hlfsd */
- if (geteuid()) {
- fprintf(stderr, "hlfsd can only be run as root\n");
- exit(1);
- }
- setbuf(stdout, (char *) NULL);
- umask(0);
-
- /* find gid for hlfs_group */
- if ((grp = getgrnam(hlfs_group)) == (struct group *) NULL) {
- fprintf(stderr, "%s: cannot get gid for group \"%s\".\n",
- am_get_progname(), hlfs_group);
- } else {
- hlfs_gid = grp->gr_gid;
- }
-
- /* get hostname for logging and open log before we reset umask */
- if (gethostname(hostname, sizeof(hostname)) == -1) {
- fprintf(stderr, "%s: gethostname failed \"%s\".\n",
- am_get_progname(), strerror(errno));
- exit(1);
- }
- hostname[sizeof(hostname) - 1] = '\0';
- if ((dot = strchr(hostname, '.')) != NULL)
- *dot = '\0';
- orig_umask = umask(0);
- if (logfile)
- switch_to_logfile(logfile, orig_umask, 0);
-
-#ifndef MOUNT_TABLE_ON_FILE
- if (amuDebug(D_MTAB))
- dlog("-D mtab option ignored");
-#endif /* not MOUNT_TABLE_ON_FILE */
-
- /* avoid hanging on other NFS servers if started elsewhere */
- if (chdir("/") < 0)
- fatal("cannot chdir to /: %m");
-
- if (geteuid() != 0)
- fatal("must be root to mount filesystems");
-
- /*
- * dir_name must match "^(/.*)/([^/]+)$", and is split at last '/' with
- * slinkname = `basename $dir_name` - requires dir_name be writable
- */
-
- if (dir_name[0] != '/'
- || ((slinkname = strrchr(dir_name, '/')), *slinkname++ = '\0',
- (dir_name[0] == '\0' || slinkname[0] == '\0'))) {
- if (slinkname)
- *--slinkname = '/';
- printf("%s: invalid mount directory/link %s\n",
- am_get_progname(), dir_name);
- exit(3);
- }
-
- if (!forcefast) {
- /* make sure mount point exists and is at least mode 555 */
- if (stat(dir_name, &stmodes) < 0)
- if (errno != ENOENT || mkdirs(dir_name, 0555) < 0
- || stat(dir_name, &stmodes) < 0)
- fatalerror(dir_name);
-
- if ((stmodes.st_mode & 0555) != 0555) {
- fprintf(stderr, "%s: directory %s not read/executable\n",
- am_get_progname(), dir_name);
- plog(XLOG_WARNING, "directory %s not read/executable",
- dir_name);
- }
-
- /* warn if extraneous stuff will be hidden by mount */
- if ((mountdir = opendir(dir_name)) == NULL)
- fatalerror(dir_name);
-
- while ((direntry = readdir(mountdir)) != NULL) {
- if (!NSTREQ(".", direntry->d_name, NAMLEN(direntry)) &&
- !NSTREQ("..", direntry->d_name, NAMLEN(direntry)) &&
- !NSTREQ(slinkname, direntry->d_name, NAMLEN(direntry)))
- break;
- }
-
- if (direntry != NULL) {
- fprintf(stderr, "%s: %s/%s will be hidden by mount\n",
- am_get_progname(), dir_name, direntry->d_name);
- plog(XLOG_WARNING, "%s/%s will be hidden by mount\n",
- dir_name, direntry->d_name);
- }
- closedir(mountdir);
-
- /* make sure alternate spool dir exists */
- if ((errno = mkdirs(alt_spooldir, OPEN_SPOOLMODE))) {
- fprintf(stderr, "%s: cannot create alternate dir ",
- am_get_progname());
- perror(alt_spooldir);
- plog(XLOG_ERROR, "cannot create alternate dir %s: %m",
- alt_spooldir);
- }
- chmod(alt_spooldir, OPEN_SPOOLMODE);
-
- /* create failsafe link to alternate spool directory */
- *(slinkname-1) = '/'; /* unsplit dir_name to include link */
- if (lstat(dir_name, &stmodes) == 0 &&
- (stmodes.st_mode & S_IFMT) != S_IFLNK) {
- fprintf(stderr, "%s: failsafe %s not a symlink\n",
- am_get_progname(), dir_name);
- plog(XLOG_WARNING, "failsafe %s not a symlink\n",
- dir_name);
- } else {
- unlink(dir_name);
-
- if (symlink(alt_spooldir, dir_name) < 0) {
- fprintf(stderr,
- "%s: cannot create failsafe symlink %s -> ",
- am_get_progname(), dir_name);
- perror(alt_spooldir);
- plog(XLOG_WARNING,
- "cannot create failsafe symlink %s -> %s: %m",
- dir_name, alt_spooldir);
- }
- }
-
- *(slinkname-1) = '\0'; /* resplit dir_name */
- } /* end of "if (!forcefast) {" */
-
- /*
- * Register hlfsd as an nfs service with the portmapper.
- */
- ret = create_nfs_service(&soNFS, &nfs_port, &nfsxprt, nfs_program_2,
- NFS_VERSION);
- if (ret != 0)
- fatal("cannot create NFS service");
-
-#ifdef HAVE_SIGACTION
- sa.sa_handler = proceed;
- sa.sa_flags = 0;
- sigemptyset(&(sa.sa_mask));
- sigaddset(&(sa.sa_mask), SIGUSR2);
- sigaction(SIGUSR2, &sa, NULL);
-#else /* not HAVE_SIGACTION */
- signal(SIGUSR2, proceed);
-#endif /* not HAVE_SIGACTION */
-
- plog(XLOG_INFO, "Initializing hlfsd...");
- hlfsd_init(); /* start up child (forking) to run svc_run */
-
-#ifdef HAVE_SIGACTION
- sa.sa_handler = reaper;
- sa.sa_flags = 0;
- sigemptyset(&(sa.sa_mask));
- sigaddset(&(sa.sa_mask), SIGCHLD);
- sigaction(SIGCHLD, &sa, NULL);
-#else /* not HAVE_SIGACTION */
- signal(SIGCHLD, reaper);
-#endif /* not HAVE_SIGACTION */
-
- /*
- * In the parent, if -D nodaemon, we don't need to
- * set this signal handler.
- */
- if (amuDebug(D_DAEMON)) {
- s = -99;
- while (stoplight != SIGUSR2) {
- plog(XLOG_INFO, "parent waits for child to setup (stoplight=%d)", stoplight);
-#ifdef HAVE_SIGSUSPEND
- {
- sigset_t mask;
- sigemptyset(&mask);
- s = sigsuspend(&mask); /* wait for child to set up */
- }
-#else /* not HAVE_SIGSUSPEND */
- s = sigpause(0); /* wait for child to set up */
-#endif /* not HAVE_SIGSUSPEND */
- sleep(1);
- }
- }
-
- /*
- * setup options to mount table (/etc/{mtab,mnttab}) entry
- */
- xsnprintf(hostpid_fs, sizeof(hostpid_fs),
- "%s:(pid%d)", hostname, masterpid);
- memset((char *) &mnt, 0, sizeof(mnt));
- mnt.mnt_dir = dir_name; /* i.e., "/mail" */
- mnt.mnt_fsname = hostpid_fs;
- if (mntopts) {
- mnt.mnt_opts = mntopts;
- } else {
- xstrlcpy(preopts, default_mntopts, sizeof(preopts));
- /*
- * Turn off all kinds of attribute and symlink caches as
- * much as possible. Also make sure that mount does not
- * show up to df.
- */
-#ifdef MNTTAB_OPT_INTR
- xstrlcat(preopts, ",", sizeof(preopts));
- xstrlcat(preopts, MNTTAB_OPT_INTR, sizeof(preopts));
-#endif /* MNTTAB_OPT_INTR */
-#ifdef MNTTAB_OPT_IGNORE
- xstrlcat(preopts, ",", sizeof(preopts));
- xstrlcat(preopts, MNTTAB_OPT_IGNORE, sizeof(preopts));
-#endif /* MNTTAB_OPT_IGNORE */
-#ifdef MNT2_GEN_OPT_CACHE
- xstrlcat(preopts, ",nocache", sizeof(preopts));
-#endif /* MNT2_GEN_OPT_CACHE */
-#ifdef MNT2_NFS_OPT_SYMTTL
- xstrlcat(preopts, ",symttl=0", sizeof(preopts));
-#endif /* MNT2_NFS_OPT_SYMTTL */
- mnt.mnt_opts = preopts;
- }
-
- /*
- * Make sure that amd's top-level NFS mounts are hidden by default
- * from df.
- * If they don't appear to support the either the "ignore" mnttab
- * option entry, or the "auto" one, set the mount type to "nfs".
- */
-#ifdef HIDE_MOUNT_TYPE
- mnt.mnt_type = HIDE_MOUNT_TYPE;
-#else /* not HIDE_MOUNT_TYPE */
- mnt.mnt_type = "nfs";
-#endif /* not HIDE_MOUNT_TYPE */
- /* some systems don't have a mount type, but a mount flag */
-
-#ifndef HAVE_TRANSPORT_TYPE_TLI
- amu_get_myaddress(&localsocket.sin_addr, NULL);
- localsocket.sin_family = AF_INET;
- localsocket.sin_port = htons(nfsxprt->xp_port);
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
- /*
- * Update hostname field.
- * Make some name prog:pid (i.e., hlfsd:174) for hostname
- */
- xsnprintf(progpid_fs, sizeof(progpid_fs),
- "%s:%d", am_get_progname(), masterpid);
-
- /* Most kernels have a name length restriction. */
- if ((int) strlen(progpid_fs) >= (int) MAXHOSTNAMELEN)
- xstrlcpy(progpid_fs + MAXHOSTNAMELEN - 3, "..",
- sizeof(progpid_fs) - MAXHOSTNAMELEN + 3);
-
- genflags = compute_mount_flags(&mnt);
-
- retry = hasmntval(&mnt, MNTTAB_OPT_RETRY);
- if (retry <= 0)
- retry = 1; /* XXX */
-
- memmove(&anh.v2, root_fhp, sizeof(*root_fhp));
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- compute_nfs_args(&nfs_args,
- &mnt,
- genflags,
- nfsncp,
- NULL, /* remote host IP addr is set below */
- NFS_VERSION, /* version 2 */
- "udp", /* XXX: shouldn't this be "udp"? */
- &anh,
- progpid_fs, /* host name for kernel */
- hostpid_fs); /* filesystem name for kernel */
- /*
- * IMPORTANT: set the correct IP address AFTERWARDS. It cannot
- * be done using the normal mechanism of compute_nfs_args(), because
- * that one will allocate a new address and use NFS_SA_DREF() to copy
- * parts to it, while assuming that the ip_addr passed is always
- * a "struct sockaddr_in". That assumption is incorrect on TLI systems,
- * because they define a special macro HOST_SELF which is DIFFERENT
- * than localhost (127.0.0.1)!
- */
- nfs_args.addr = &nfsxprt->xp_ltaddr;
-#else /* not HAVE_TRANSPORT_TYPE_TLI */
- compute_nfs_args(&nfs_args,
- &mnt,
- genflags,
- NULL,
- &localsocket,
- NFS_VERSION, /* version 2 */
- "udp", /* XXX: shouldn't this be "udp"? */
- &anh,
- progpid_fs, /* host name for kernel */
- hostpid_fs); /* filesystem name for kernel */
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-
- /*************************************************************************
- * NOTE: while compute_nfs_args() works ok for regular NFS mounts *
- * the toplvl one is not, and so some options must be corrected by hand *
- * more carefully, *after* compute_nfs_args() runs. *
- *************************************************************************/
- compute_automounter_nfs_args(&nfs_args, &mnt);
-
-/*
- * For some reason, this mount may have to be done in the background, if I am
- * using -D daemon. I suspect that the actual act of mounting requires
- * calling to hlfsd itself to invoke one or more of its nfs calls, to stat
- * /mail. That means that even if you say -D daemon, at least the mount
- * of hlfsd itself on top of /mail will be done in the background.
- * The other alternative I have is to run svc_run, but set a special
- * signal handler to perform the mount in N seconds via some alarm.
- * -Erez Zadok.
- */
- if (!amuDebug(D_DAEMON)) { /* Normal case */
- plog(XLOG_INFO, "normal NFS mounting hlfsd service points");
- if (mount_fs(&mnt, genflags, (caddr_t) &nfs_args, retry, type, 0, NULL, mnttab_file_name, 0) < 0)
- fatal("nfsmount: %m");
- } else { /* asked for -D daemon */
- if (fork() == 0) { /* child runs mount */
- am_set_mypid();
- foreground = 0;
- plog(XLOG_INFO, "child NFS mounting hlfsd service points");
- if (mount_fs(&mnt, genflags, (caddr_t) &nfs_args, retry, type, 0, NULL, mnttab_file_name, 0) < 0) {
- fatal("nfsmount: %m");
- }
- exit(0); /* all went well */
- } else { /* fork failed or parent running */
- plog(XLOG_INFO, "parent waiting 1sec for mount...");
- }
- }
-
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- /*
- * XXX: this free_knetconfig() was not done for hlfsd before,
- * and apparently there was a reason for it, but why? -Erez
- */
- free_knetconfig(nfs_args.knconf);
- /*
- * local automounter mounts do not allocate a special address, so
- * no need to XFREE(nfs_args.addr) under TLI.
- */
-#endif /* HAVE_TRANSPORT_TYPE_TLI */
-
- if (printpid)
- printf("%d\n", masterpid);
-
- plog(XLOG_INFO, "hlfsd ready to serve");
- /*
- * If asked not to fork a daemon (-D nodaemon), then hlfsd_init()
- * will not run svc_run. We must start svc_run here.
- */
- if (!amuDebug(D_DAEMON)) {
- plog(XLOG_DEBUG, "starting no-daemon debugging svc_run");
- svc_run();
- }
-
- cleanup(0); /* should never happen here */
- return (0); /* everything went fine? */
-}
-
-
-static void
-hlfsd_init(void)
-{
- int child = 0;
-#ifdef HAVE_SIGACTION
- struct sigaction sa;
-#endif /* HAVE_SIGACTION */
-
- /*
- * Initialize file handles.
- */
- plog(XLOG_INFO, "initializing hlfsd file handles");
- hlfsd_init_filehandles();
-
- /*
- * If -D daemon then we must fork.
- */
- if (amuDebug(D_DAEMON))
- child = fork();
-
- if (child < 0)
- fatal("fork: %m");
-
- if (child != 0) { /* parent process - save child pid */
- masterpid = child;
- am_set_mypid(); /* for logging routines */
- return;
- }
-
- /*
- * CHILD CODE:
- * initialize server
- */
-
- plog(XLOG_INFO, "initializing home directory database");
- plt_init(); /* initialize database */
- plog(XLOG_INFO, "home directory database initialized");
-
- masterpid = serverpid = am_set_mypid(); /* for logging routines */
-
- /*
- * SIGALRM/SIGHUP: reload password database if timer expired
- * or user sent HUP signal.
- */
-#ifdef HAVE_SIGACTION
- sa.sa_handler = reload;
- sa.sa_flags = 0;
- sigemptyset(&(sa.sa_mask));
- sigaddset(&(sa.sa_mask), SIGALRM);
- sigaddset(&(sa.sa_mask), SIGHUP);
- sigaction(SIGALRM, &sa, NULL);
- sigaction(SIGHUP, &sa, NULL);
-#else /* not HAVE_SIGACTION */
- signal(SIGALRM, reload);
- signal(SIGHUP, reload);
-#endif /* not HAVE_SIGACTION */
-
- /*
- * SIGTERM: cleanup and exit.
- */
-#ifdef HAVE_SIGACTION
- sa.sa_handler = cleanup;
- sa.sa_flags = 0;
- sigemptyset(&(sa.sa_mask));
- sigaddset(&(sa.sa_mask), SIGTERM);
- sigaction(SIGTERM, &sa, NULL);
-#else /* not HAVE_SIGACTION */
- signal(SIGTERM, cleanup);
-#endif /* not HAVE_SIGACTION */
-
- /*
- * SIGCHLD: interlock synchronization and testing
- */
-#ifdef HAVE_SIGACTION
- sa.sa_handler = interlock;
- sa.sa_flags = 0;
- sigemptyset(&(sa.sa_mask));
- sigaddset(&(sa.sa_mask), SIGCHLD);
- sigaction(SIGCHLD, &sa, NULL);
-#else /* not HAVE_SIGACTION */
- signal(SIGCHLD, interlock);
-#endif /* not HAVE_SIGACTION */
-
- /*
- * SIGUSR1: dump internal hlfsd maps/cache to file
- */
-#ifdef HAVE_SIGACTION
-# if defined(DEBUG) || defined(DEBUG_PRINT)
- sa.sa_handler = plt_print;
-# else /* not defined(DEBUG) || defined(DEBUG_PRINT) */
- sa.sa_handler = SIG_IGN;
-# endif /* not defined(DEBUG) || defined(DEBUG_PRINT) */
- sa.sa_flags = 0;
- sigemptyset(&(sa.sa_mask));
- sigaddset(&(sa.sa_mask), SIGUSR1);
- sigaction(SIGUSR1, &sa, NULL);
-#else /* not HAVE_SIGACTION */
-# if defined(DEBUG) || defined(DEBUG_PRINT)
- signal(SIGUSR1, plt_print);
-# else /* not defined(DEBUG) || defined(DEBUG_PRINT) */
- signal(SIGUSR1, SIG_IGN);
-# endif /* not defined(DEBUG) || defined(DEBUG_PRINT) */
-#endif /* not HAVE_SIGACTION */
-
- if (setitimer(ITIMER_REAL, &reloadinterval, (struct itimerval *) NULL) < 0)
- fatal("setitimer: %m");
-
- clocktime(&startup);
-
- /*
- * If -D daemon, then start serving here in the child,
- * and the parent will exit. But if -D nodaemon, then
- * skip this code and make sure svc_run is entered elsewhere.
- */
- if (amuDebug(D_DAEMON)) {
- /*
- * Dissociate from the controlling terminal
- */
- amu_release_controlling_tty();
-
- /*
- * signal parent we are ready. parent should
- * mount(2) and die.
- */
- if (kill(getppid(), SIGUSR2) < 0)
- fatal("kill: %m");
- plog(XLOG_INFO, "starting svc_run");
- svc_run();
- cleanup(0); /* should never happen, just in case */
- }
-
-}
-
-
-static RETSIGTYPE
-proceed(int signum)
-{
- stoplight = signum;
-}
-
-
-static RETSIGTYPE
-reload(int signum)
-{
- int child;
- int status;
-
- if (getpid() != masterpid)
- return;
-
- /*
- * If received a SIGHUP, close and reopen the log file (so that it
- * can be rotated)
- */
- if (signum == SIGHUP && logfile)
- switch_to_logfile(logfile, orig_umask, 0);
-
- /*
- * parent performs the reload, while the child continues to serve
- * clients accessing the home dir link.
- */
- if ((child = fork()) > 0) {
- serverpid = child; /* parent runs here */
- am_set_mypid();
-
- plt_init();
-
- if (kill(child, SIGKILL) < 0) {
- plog(XLOG_ERROR, "kill child: %m");
- } else { /* wait for child to die before continue */
- if (wait(&status) != child) {
- /*
- * I took out this line because it generates annoying output. It
- * indicates a very small bug in hlfsd which is totally harmless.
- * It causes hlfsd to work a bit harder than it should.
- * Nevertheless, I intend on fixing it in a future release.
- * -Erez Zadok <ezk@cs.columbia.edu>
- */
- /* plog(XLOG_ERROR, "unknown child"); */
- }
- }
- serverpid = masterpid;
- } else if (child < 0) {
- plog(XLOG_ERROR, "unable to fork: %m");
- } else {
- /* let child handle requests while we reload */
- serverpid = getpid();
- am_set_mypid();
- }
-}
-
-
-RETSIGTYPE
-cleanup(int signum)
-{
- struct stat stbuf;
- int umount_result;
-
- if (amuDebug(D_DAEMON)) {
- if (getpid() != masterpid)
- return;
-
- if (fork() != 0) {
- masterpid = 0;
- am_set_mypid();
- return;
- }
- }
- am_set_mypid();
-
- for (;;) {
- while ((umount_result = UMOUNT_FS(dir_name, mnttab_file_name, 0)) == EBUSY) {
- dlog("cleanup(): umount delaying for 10 seconds");
- sleep(10);
- }
- if (stat(dir_name, &stbuf) == 0 && stbuf.st_ino == ROOTID) {
- plog(XLOG_ERROR, "unable to unmount %s", dir_name);
- plog(XLOG_ERROR, "suspending, unmount before terminating");
- kill(am_mypid, SIGSTOP);
- continue; /* retry unmount */
- }
- break;
- }
-
- if (amuDebug(D_DAEMON)) {
- plog(XLOG_INFO, "cleanup(): killing processes and terminating");
- kill(masterpid, SIGKILL);
- kill(serverpid, SIGKILL);
- }
-
- plog(XLOG_INFO, "hlfsd terminating with status 0\n");
- _exit(0);
-}
-
-
-static RETSIGTYPE
-reaper(int signum)
-{
- int result;
-
- if (wait(&result) == masterpid) {
- _exit(4);
- }
-}
-
-
-void
-hlfsd_going_down(int rc)
-{
- int mypid = getpid(); /* XXX: should this be the global am_mypid */
-
- if (mypid == masterpid)
- cleanup(0);
- else if (mypid == serverpid)
- kill(masterpid, SIGTERM);
-
- exit(rc);
-}
-
-
-void
-fatal(char *mess)
-{
- if (logfile && !STREQ(logfile, "stderr")) {
- char lessmess[128];
- int messlen;
-
- messlen = strlen(mess);
-
- if (!STREQ(&mess[messlen + 1 - sizeof(ERRM)], ERRM))
- fprintf(stderr, "%s: %s\n", am_get_progname(), mess);
- else {
- xstrlcpy(lessmess, mess, sizeof(lessmess));
- lessmess[messlen - 4] = '\0';
-
- fprintf(stderr, "%s: %s: %s\n",
- am_get_progname(), lessmess, strerror(errno));
- }
- }
- plog(XLOG_FATAL, "%s", mess);
-
- hlfsd_going_down(1);
-}
diff --git a/contrib/amd/hlfsd/hlfsd.h b/contrib/amd/hlfsd/hlfsd.h
deleted file mode 100644
index d5eefedfa61b..000000000000
--- a/contrib/amd/hlfsd/hlfsd.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/hlfsd/hlfsd.h
- *
- * HLFSD was written at Columbia University Computer Science Department, by
- * Erez Zadok <ezk@cs.columbia.edu> and Alexander Dupuy <dupuy@cs.columbia.edu>
- * It is being distributed under the same terms and conditions as amd does.
- */
-
-#ifndef _HLFSD_HLFS_H
-#define _HLFSD_HLFS_H
-
-/*
- * MACROS AND CONSTANTS:
- */
-
-#define HLFSD_VERSION "hlfsd 1.2 (1993-2002)"
-#define PERS_SPOOLMODE 0755
-#define OPEN_SPOOLMODE 01777
-#define DOTSTRING "."
-
-/*
- * ROOTID and SLINKID are the fixed "faked" node IDs (inodes) for
- * the '.' (also '..') and the one symlink within the hlfs.
- * They must always be unique, and should never match what a UID
- * could be.
- * They used to be -1 and -2, respectively.
- *
- * I used to cast these to (uid_t) but it failed to compile
- * with /opt/SUNWspro/bin/cc because uid_t is long, while struct fattr's
- * uid field is u_int. Then it failed to compile on some linux systems
- * which define uid_t to be unsigned short, so I used the lowest common
- * size which is unsigned short.
- */
-/*
- * XXX: this will cause problems to systems with UIDs greater than
- * MAX_UNSIGNED_SHORT-3.
- */
-#define ROOTID (((unsigned short) ~0) - 1)
-#define SLINKID (((unsigned short) ~0) - 2)
-#ifndef INVALIDID
-/* this is also defined in include/am_utils.h */
-# define INVALIDID (((unsigned short) ~0) - 3)
-#endif /* not INVALIDID */
-
-#define DOTCOOKIE 1
-#define DOTDOTCOOKIE 2
-#define SLINKCOOKIE 3
-
-#define ALT_SPOOLDIR "/var/hlfs" /* symlink to use if others fail */
-#define HOME_SUBDIR ".hlfsdir" /* dirname in user's home dir */
-#define DEFAULT_DIRNAME "/hlfs/home"
-#define DEFAULT_INTERVAL 900 /* secs b/t re-reads of the password maps */
-#define DEFAULT_CACHE_INTERVAL 300 /* secs during which assume a link is up */
-#define DEFAULT_HLFS_GROUP "hlfs" /* Group name for special hlfs_gid */
-
-#define PROGNAMESZ (MAXHOSTNAMELEN - 5)
-
-#ifdef HAVE_SYSLOG
-# define DEFAULT_LOGFILE "syslog"
-#else /* not HAVE)_SYSLOG */
-# define DEFAULT_LOGFILE 0
-#endif /* not HAVE)_SYSLOG */
-
-
-/*
- * TYPEDEFS:
- */
-typedef struct uid2home_t uid2home_t;
-typedef struct username2uid_t username2uid_t;
-
-
-/*
- * STRUCTURES:
- */
-struct uid2home_t {
- uid_t uid; /* XXX: with or without UID_OFFSET? */
- pid_t child;
- char *home; /* really allocated */
- char *uname; /* an xref ptr to username2uid_t->username */
- u_long last_access_time;
- int last_status; /* 0=used $HOME/.hlfsspool; !0=used alt dir */
-};
-
-struct username2uid_t {
- char *username; /* really allocated */
- uid_t uid; /* XXX: with or without UID_OFFSET? */
- char *home; /* an xref ptr to uid2home_t->home */
-};
-
-/*
- * EXTERNALS:
- */
-extern RETSIGTYPE cleanup(int);
-extern RETSIGTYPE interlock(int);
-extern SVCXPRT *nfs_program_2_transp; /* For quick_reply() */
-extern SVCXPRT *nfsxprt;
-extern char *alt_spooldir;
-extern char *home_subdir;
-extern char *homedir(int, int);
-extern char *mailbox(int, char *);
-extern char *passwdfile;
-extern char *slinkname;
-extern gid_t hlfs_gid;
-extern u_int cache_interval;
-extern int noverify;
-extern int serverpid;
-extern int untab_index(char *username);
-extern am_nfs_fh *root_fhp;
-extern am_nfs_fh root;
-extern nfstime startup;
-extern uid2home_t *plt_search(u_int);
-extern username2uid_t *untab; /* user name table */
-extern void fatal(char *);
-extern void plt_init(void);
-extern void hlfsd_init_filehandles(void);
-
-#if defined(DEBUG) || defined(DEBUG_PRINT)
-extern void plt_dump(uid2home_t *, pid_t);
-extern void plt_print(int);
-#endif /* defined(DEBUG) || defined(DEBUG_PRINT) */
-
-#endif /* _HLFSD_HLFS_H */
diff --git a/contrib/amd/hlfsd/homedir.c b/contrib/amd/hlfsd/homedir.c
deleted file mode 100644
index 462b42380ca3..000000000000
--- a/contrib/amd/hlfsd/homedir.c
+++ /dev/null
@@ -1,806 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/hlfsd/homedir.c
- *
- * HLFSD was written at Columbia University Computer Science Department, by
- * Erez Zadok <ezk@cs.columbia.edu> and Alexander Dupuy <dupuy@cs.columbia.edu>
- * It is being distributed under the same terms and conditions as amd does.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <hlfsd.h>
-
-
-/*
- * STATIC VARIABLES AND FUNCTIONS:
- */
-static FILE *passwd_fp = NULL;
-static char pw_name[16], pw_dir[128];
-static int cur_pwtab_num = 0, max_pwtab_num = 0;
-static int hlfsd_diskspace(char *);
-static int hlfsd_stat(char *, struct stat *);
-static int passwd_line = 0;
-static int plt_reset(void);
-static struct passwd passwd_ent;
-static uid2home_t *lastchild;
-static uid2home_t *pwtab;
-static void delay(uid2home_t *, int);
-static void table_add(u_int, const char *, const char *);
-static char mboxfile[MAXPATHLEN];
-static char *root_home; /* root's home directory */
-
-/* GLOBAL FUNCTIONS */
-char *homeof(char *username);
-int uidof(char *username);
-
-/* GLOBALS VARIABLES */
-username2uid_t *untab; /* user name table */
-
-/*
- * Return the home directory pathname for the user with uid "userid".
- */
-char *
-homedir(int userid, int groupid)
-{
- static char linkval[MAXPATHLEN + 1];
- static struct timeval tp;
- uid2home_t *found;
- char *homename;
- struct stat homestat;
- int old_groupid, old_userid;
-
- if ((found = plt_search(userid)) == (uid2home_t *) NULL) {
- return alt_spooldir; /* use alt spool for unknown uid */
- }
- homename = found->home;
-
- if (homename[0] != '/' || homename[1] == '\0') {
- found->last_status = 1;
- return alt_spooldir; /* use alt spool for / or rel. home */
- }
- if ((int) userid == 0) /* force all uid 0 to use root's home */
- xsnprintf(linkval, sizeof(linkval), "%s/%s", root_home, home_subdir);
- else
- xsnprintf(linkval, sizeof(linkval), "%s/%s", homename, home_subdir);
-
- if (noverify) {
- found->last_status = 0;
- return linkval;
- }
-
- /*
- * To optimize hlfsd, we don't actually check the validity of the
- * symlink if it has been checked in the last N seconds. It is
- * very likely that the link, machine, and filesystem are still
- * valid, as long as N is small. But if N is large, that may not be
- * true. That's why the default N is 5 minutes, but we allow the
- * user to override this value via a command line option. Note that
- * we do not update the last_access_time each time it is accessed,
- * but only once every N seconds.
- */
- if (gettimeofday(&tp, (struct timezone *) NULL) < 0) {
- tp.tv_sec = 0;
- } else {
- if ((tp.tv_sec - found->last_access_time) < cache_interval) {
- if (found->last_status == 0) {
- return linkval;
- } else {
- return alt_spooldir;
- }
- } else {
- found->last_access_time = tp.tv_sec;
- }
- }
-
- /*
- * Only run this forking code if ask for -D fork (default).
- * Disable forking using -D nofork.
- */
- if (amuDebug(D_FORK)) {
- /* fork child to process request if none in progress */
- if (found->child && kill(found->child, 0))
- found->child = 0;
-
- if (found->child)
- delay(found, 5); /* wait a bit if in progress */
- if (found->child) { /* better safe than sorry - maybe */
- found->last_status = 1;
- return alt_spooldir;
- }
- if ((found->child = fork()) < 0) {
- found->last_status = 1;
- return alt_spooldir;
- }
- if (found->child) { /* PARENT */
- if (lastchild)
- dlog("cache spill uid = %ld, pid = %ld, home = %s",
- (long) lastchild->uid, (long) lastchild->child,
- lastchild->home);
- lastchild = found;
- return (char *) NULL; /* return NULL to parent, so it can continue */
- }
- }
-
- /*
- * CHILD: (or parent if -D fork)
- *
- * Check and create dir if needed.
- * Check disk space and/or quotas too.
- *
- * We don't need to set the _last_status field of found after the fork
- * in the child, b/c that information would be later determined in
- * nfsproc_readlink_2() and the correct exit status would be returned
- * to the parent upon SIGCHLD in interlock().
- *
- */
- am_set_mypid(); /* for logging routines */
- if ((old_groupid = setgid(groupid)) < 0) {
- plog(XLOG_WARNING, "could not setgid to %d: %m", groupid);
- return linkval;
- }
- if ((old_userid = seteuid(userid)) < 0) {
- plog(XLOG_WARNING, "could not seteuid to %d: %m", userid);
- setgid(old_groupid);
- return linkval;
- }
- if (hlfsd_stat(linkval, &homestat) < 0) {
- if (errno == ENOENT) { /* make the spool dir if possible */
- /* don't use recursive mkdirs here */
- if (mkdir(linkval, PERS_SPOOLMODE) < 0) {
- seteuid(old_userid);
- setgid(old_groupid);
- plog(XLOG_WARNING, "can't make directory %s: %m", linkval);
- return alt_spooldir;
- }
- /* fall through to testing the disk space / quota */
- } else { /* the home dir itself must not exist then */
- seteuid(old_userid);
- setgid(old_groupid);
- plog(XLOG_WARNING, "bad link to %s: %m", linkval);
- return alt_spooldir;
- }
- }
-
- /*
- * If gets here, then either the spool dir in the home dir exists,
- * or it was just created. In either case, we now need to
- * test if we can create a small file and write at least one
- * byte into it. This will test that we have both enough inodes
- * and disk blocks to spare, or they fall within the user's quotas too.
- * We are still seteuid to the user at this point.
- */
- if (hlfsd_diskspace(linkval) < 0) {
- seteuid(old_userid);
- setgid(old_groupid);
- plog(XLOG_WARNING, "no more space in %s: %m", linkval);
- return alt_spooldir;
- } else {
- seteuid(old_userid);
- setgid(old_groupid);
- return linkval;
- }
-}
-
-
-static int
-hlfsd_diskspace(char *path)
-{
- char buf[MAXPATHLEN];
- int fd, len;
-
- xsnprintf(buf, sizeof(buf), "%s/._hlfstmp_%lu", path, (long) getpid());
- if ((fd = open(buf, O_RDWR | O_CREAT, 0600)) < 0) {
- plog(XLOG_ERROR, "cannot open %s: %m", buf);
- return -1;
- }
- len = strlen(buf);
- if (write(fd, buf, len) < len) {
- plog(XLOG_ERROR, "cannot write \"%s\" (%d bytes) to %s : %m", buf, len, buf);
- close(fd);
- unlink(buf); /* cleanup just in case */
- return -1;
- }
- if (unlink(buf) < 0) {
- plog(XLOG_ERROR, "cannot unlink %s : %m", buf);
- }
- close(fd);
- return 0;
-}
-
-
-static int
-hlfsd_stat(char *path, struct stat *statp)
-{
- if (stat(path, statp) < 0)
- return -1;
- else if (!S_ISDIR(statp->st_mode)) {
- errno = ENOTDIR;
- return -1;
- }
- return 0;
-}
-
-
-static void
-delay(uid2home_t *found, int secs)
-{
- struct timeval tv;
-
- if (found)
- dlog("delaying on child %ld for %d seconds", (long) found->child, secs);
-
- tv.tv_usec = 0;
-
- do {
- tv.tv_sec = secs;
- if (select(0, NULL, NULL, NULL, &tv) == 0)
- break;
- } while (--secs && found->child);
-}
-
-
-/*
- * This function is called when a child has terminated after
- * servicing an nfs request. We need to check the exit status and
- * update the last_status field of the requesting user.
- */
-RETSIGTYPE
-interlock(int signum)
-{
- int child;
- uid2home_t *lostchild;
- int status;
-
-#ifdef HAVE_WAITPID
- while ((child = waitpid((pid_t) -1, &status, WNOHANG)) > 0) {
-#else /* not HAVE_WAITPID */
- while ((child = wait3(&status, WNOHANG, (struct rusage *) NULL)) > 0) {
-#endif /* not HAVE_WAITPID */
-
- /* high chances this was the last child forked */
- if (lastchild && lastchild->child == child) {
- lastchild->child = 0;
-
- if (WIFEXITED(status))
- lastchild->last_status = WEXITSTATUS(status);
- lastchild = (uid2home_t *) NULL;
- } else {
- /* and if not, we have to search for it... */
- for (lostchild = pwtab; lostchild < &pwtab[cur_pwtab_num]; lostchild++) {
- if (lostchild->child == child) {
- if (WIFEXITED(status))
- lostchild->last_status = WEXITSTATUS(status);
- lostchild->child = 0;
- break;
- }
- }
- }
- }
-}
-
-
-/*
- * PASSWORD AND USERNAME LOOKUP TABLES FUNCTIONS
- */
-
-/*
- * get index of UserName table entry which matches username.
- * must not return uid_t because we want to return a negative number.
- */
-int
-untab_index(char *username)
-{
- int max, min, mid, cmp;
-
- max = cur_pwtab_num - 1;
- min = 0;
-
- do {
- mid = (max + min) / 2;
- cmp = strcmp(untab[mid].username, username);
- if (cmp == 0) /* record found! */
- return mid;
- if (cmp > 0)
- max = mid;
- else
- min = mid;
- } while (max > min + 1);
-
- if (STREQ(untab[max].username, username))
- return max;
- if (STREQ(untab[min].username, username))
- return min;
-
- /* if gets here then record was not found */
- return -1;
-}
-
-
-/*
- * Don't make this return a uid_t, because we need to return negative
- * numbers as well (error codes.)
- */
-int
-uidof(char *username)
-{
- int idx;
-
- if ((idx = untab_index(username)) < 0) /* not found */
- return INVALIDID; /* an invalid user id */
- return untab[idx].uid;
-}
-
-
-/*
- * Don't make this return a uid_t, because we need to return negative
- * numbers as well (error codes.)
- */
-char *
-homeof(char *username)
-{
- int idx;
-
- if ((idx = untab_index(username)) < 0) /* not found */
- return (char *) NULL; /* an invalid user id */
- return untab[idx].home;
-}
-
-
-char *
-mailbox(int uid, char *username)
-{
- char *home;
-
- if (uid < 0)
- return (char *) NULL; /* not found */
-
- if ((home = homeof(username)) == (char *) NULL)
- return (char *) NULL;
- if (STREQ(home, "/"))
- xsnprintf(mboxfile, sizeof(mboxfile),
- "/%s/%s", home_subdir, username);
- else
- xsnprintf(mboxfile, sizeof(mboxfile),
- "%s/%s/%s", home, home_subdir, username);
- return mboxfile;
-}
-
-
-static int
-plt_compare_fxn(const voidp x, const voidp y)
-
-{
- uid2home_t *i = (uid2home_t *) x;
- uid2home_t *j = (uid2home_t *) y;
-
- return i->uid - j->uid;
-}
-
-
-static int
-unt_compare_fxn(const voidp x, const voidp y)
-{
- username2uid_t *i = (username2uid_t *) x;
- username2uid_t *j = (username2uid_t *) y;
-
- return strcmp(i->username, j->username);
-}
-
-
-/* perform initialization of user passwd database */
-static void
-hlfsd_setpwent(void)
-{
- if (!passwdfile) {
- setpwent();
- return;
- }
-
- passwd_fp = fopen(passwdfile, "r");
- if (!passwd_fp) {
- plog(XLOG_ERROR, "unable to read passwd file %s: %m", passwdfile);
- return;
- }
- plog(XLOG_INFO, "reading password entries from file %s", passwdfile);
-
- passwd_line = 0;
- memset((char *) &passwd_ent, 0, sizeof(struct passwd));
- passwd_ent.pw_name = (char *) &pw_name;
- passwd_ent.pw_dir = (char *) &pw_dir;
-}
-
-
-/* perform de-initialization of user passwd database */
-static void
-hlfsd_endpwent(void)
-{
- if (!passwdfile) {
- /*
- * Don't actually run this because we will be making more passwd calls
- * afterwards. On Solaris 2.5.1, making getpwent() calls after calling
- * endpwent() results in a memory leak! (and no, even Purify didn't
- * detect it...)
- *
- endpwent();
- */
- return;
- }
-
- if (passwd_fp) {
- fclose(passwd_fp);
- }
-}
-
-
-/* perform record reading/parsing of individual passwd database records */
-static struct passwd *
-hlfsd_getpwent(void)
-{
- char buf[256], *cp;
-
- /* check if to perform standard unix function */
- if (!passwdfile) {
- return getpwent();
- }
-
- /* return here to read another entry */
-readent:
-
- /* return NULL if reached end of file */
- if (feof(passwd_fp))
- return NULL;
-
- pw_name[0] = pw_dir[0] = '\0';
-
- /* read records */
- buf[0] = '\0';
- if (fgets(buf, 256, passwd_fp) == NULL)
- return NULL;
- passwd_line++;
- if (buf[0] == '\0')
- goto readent;
-
- /* read user name */
- cp = strtok(buf, ":");
- if (!cp || cp[0] == '\0') {
- plog(XLOG_ERROR, "no user name on line %d of %s", passwd_line, passwdfile);
- goto readent;
- }
- /* pw_name will show up in passwd_ent.pw_name */
- xstrlcpy(pw_name, cp, sizeof(pw_name));
-
- /* skip passwd */
- strtok(NULL, ":");
-
- /* read uid */
- cp = strtok(NULL, ":");
- if (!cp || cp[0] == '\0') {
- plog(XLOG_ERROR, "no uid on line %d of %s", passwd_line, passwdfile);
- goto readent;
- }
- passwd_ent.pw_uid = atoi(cp);
-
- /* skip gid and gcos */
- strtok(NULL, ":");
- strtok(NULL, ":");
-
- /* read home dir */
- cp = strtok(NULL, ":");
- if (!cp || cp[0] == '\0') {
- plog(XLOG_ERROR, "no home dir on line %d of %s", passwd_line, passwdfile);
- goto readent;
- }
- /* pw_dir will show up in passwd_ent.pw_dir */
- xstrlcpy(pw_dir, cp, sizeof(pw_dir));
-
- /* the rest of the fields are unimportant and not being considered */
-
- plog(XLOG_USER, "hlfsd_getpwent: name=%s, uid=%ld, dir=%s",
- passwd_ent.pw_name, (long) passwd_ent.pw_uid, passwd_ent.pw_dir);
-
- return &passwd_ent;
-}
-
-
-/*
- * read and hash the passwd file or NIS map
- */
-void
-plt_init(void)
-{
- struct passwd *pent_p;
-
- if (plt_reset() < 0) /* could not reset table. skip. */
- return;
-
- plog(XLOG_INFO, "reading password map");
-
- hlfsd_setpwent(); /* prepare to read passwd entries */
- while ((pent_p = hlfsd_getpwent()) != (struct passwd *) NULL) {
- table_add(pent_p->pw_uid, pent_p->pw_dir, pent_p->pw_name);
- if (STREQ("root", pent_p->pw_name)) {
- int len;
- if (root_home)
- XFREE(root_home);
- root_home = xstrdup(pent_p->pw_dir);
- len = strlen(root_home);
- /* remove any trailing '/' chars from root's home (even if just one) */
- while (len > 0 && root_home[len - 1] == '/') {
- len--;
- root_home[len] = '\0';
- }
- }
- }
- hlfsd_endpwent();
-
- qsort((char *) pwtab, cur_pwtab_num, sizeof(uid2home_t),
- plt_compare_fxn);
- qsort((char *) untab, cur_pwtab_num, sizeof(username2uid_t),
- unt_compare_fxn);
-
- if (!root_home)
- root_home = xstrdup("");
-
- plog(XLOG_INFO, "password map read and sorted");
-}
-
-
-/*
- * This is essentially so that we don't reset known good lookup tables when a
- * YP server goes down.
- */
-static int
-plt_reset(void)
-{
- int i;
-
- hlfsd_setpwent();
- if (hlfsd_getpwent() == (struct passwd *) NULL) {
- hlfsd_endpwent();
- return -1; /* did not reset table */
- }
- hlfsd_endpwent();
-
- lastchild = (uid2home_t *) NULL;
-
- if (max_pwtab_num > 0) /* was used already. cleanup old table */
- for (i = 0; i < cur_pwtab_num; ++i) {
- if (pwtab[i].home) {
- XFREE(pwtab[i].home);
- pwtab[i].home = (char *) NULL;
- }
- pwtab[i].uid = INVALIDID; /* not a valid uid (yet...) */
- pwtab[i].child = (pid_t) 0;
- pwtab[i].uname = (char *) NULL; /* only a ptr to untab[i].username */
- if (untab[i].username) {
- XFREE(untab[i].username);
- untab[i].username = (char *) NULL;
- }
- untab[i].uid = INVALIDID; /* invalid uid */
- untab[i].home = (char *) NULL; /* only a ptr to pwtab[i].home */
- }
- cur_pwtab_num = 0; /* zero current size */
-
- if (root_home)
- XFREE(root_home);
-
- return 0; /* resetting ok */
-}
-
-
-/*
- * u: uid number
- * h: home directory
- * n: user ID name
- */
-static void
-table_add(u_int u, const char *h, const char *n)
-{
- int i;
-
- if (max_pwtab_num <= 0) { /* was never initialized */
- max_pwtab_num = 1;
- pwtab = (uid2home_t *) xmalloc(max_pwtab_num *
- sizeof(uid2home_t));
- memset((char *) &pwtab[0], 0, max_pwtab_num * sizeof(uid2home_t));
- untab = (username2uid_t *) xmalloc(max_pwtab_num *
- sizeof(username2uid_t));
- memset((char *) &untab[0], 0, max_pwtab_num * sizeof(username2uid_t));
- }
-
- /* check if need more space. */
- if (cur_pwtab_num + 1 > max_pwtab_num) {
- /* need more space in table */
- max_pwtab_num *= 2;
- plog(XLOG_INFO, "reallocating table spaces to %d entries", max_pwtab_num);
- pwtab = (uid2home_t *) xrealloc(pwtab,
- sizeof(uid2home_t) * max_pwtab_num);
- untab = (username2uid_t *) xrealloc(untab,
- sizeof(username2uid_t) *
- max_pwtab_num);
- /* zero out newly added entries */
- for (i=cur_pwtab_num; i<max_pwtab_num; ++i) {
- memset((char *) &pwtab[i], 0, sizeof(uid2home_t));
- memset((char *) &untab[i], 0, sizeof(username2uid_t));
- }
- }
-
- /* do NOT add duplicate entries (this is an O(N^2) algorithm... */
- for (i=0; i<cur_pwtab_num; ++i)
- if (u == pwtab[i].uid && u != 0 ) {
- dlog("ignoring duplicate home %s for uid %d (already %s)",
- h, u, pwtab[i].home);
- return;
- }
-
- /* add new password entry */
- pwtab[cur_pwtab_num].home = xstrdup(h);
- pwtab[cur_pwtab_num].child = 0;
- pwtab[cur_pwtab_num].last_access_time = 0;
- pwtab[cur_pwtab_num].last_status = 0; /* assume best: used homedir */
- pwtab[cur_pwtab_num].uid = u;
-
- /* add new userhome entry */
- untab[cur_pwtab_num].username = xstrdup(n);
-
- /* just a second pointer */
- pwtab[cur_pwtab_num].uname = untab[cur_pwtab_num].username;
- untab[cur_pwtab_num].uid = u;
- untab[cur_pwtab_num].home = pwtab[cur_pwtab_num].home; /* a ptr */
-
- /* increment counter */
- ++cur_pwtab_num;
-}
-
-
-/*
- * return entry in lookup table
- */
-uid2home_t *
-plt_search(u_int u)
-{
- int max, min, mid;
-
- /*
- * empty table should not happen,
- * but I have a bug with signals to trace...
- */
- if (pwtab == (uid2home_t *) NULL)
- return (uid2home_t *) NULL;
-
- max = cur_pwtab_num - 1;
- min = 0;
-
- do {
- mid = (max + min) / 2;
- if (pwtab[mid].uid == u) /* record found! */
- return &pwtab[mid];
- if (pwtab[mid].uid > u)
- max = mid;
- else
- min = mid;
- } while (max > min + 1);
-
- if (pwtab[max].uid == u)
- return &pwtab[max];
- if (pwtab[min].uid == u)
- return &pwtab[min];
-
- /* if gets here then record was not found */
- return (uid2home_t *) NULL;
-}
-
-
-#if defined(DEBUG) || defined(DEBUG_PRINT)
-void
-plt_print(int signum)
-{
- FILE *dumpfile;
- int dumpfd;
- char dumptmp[] = "/usr/tmp/hlfsd.dump.XXXXXX";
- int i;
-
-#ifdef HAVE_MKSTEMP
- dumpfd = mkstemp(dumptmp);
-#else /* not HAVE_MKSTEMP */
- mktemp(dumptmp);
- if (!dumptmp) {
- plog(XLOG_ERROR, "cannot create temporary dump file");
- return;
- }
- dumpfd = open(dumptmp, O_RDONLY);
-#endif /* not HAVE_MKSTEMP */
- if (dumpfd < 0) {
- plog(XLOG_ERROR, "cannot open temporary dump file");
- return;
- }
- if ((dumpfile = fdopen(dumpfd, "a")) != NULL) {
- plog(XLOG_INFO, "dumping internal state to file %s", dumptmp);
- fprintf(dumpfile, "\n\nNew plt_dump():\n");
- for (i = 0; i < cur_pwtab_num; ++i)
- fprintf(dumpfile,
- "%4d %5lu %10lu %1d %4lu \"%s\" uname=\"%s\"\n",
- i,
- (long) pwtab[i].child,
- pwtab[i].last_access_time,
- pwtab[i].last_status,
- (long) pwtab[i].uid,
- pwtab[i].home,
- pwtab[i].uname);
- fprintf(dumpfile, "\nUserName table by plt_print():\n");
- for (i = 0; i < cur_pwtab_num; ++i)
- fprintf(dumpfile, "%4d : \"%s\" %4lu \"%s\"\n", i,
- untab[i].username, (long) untab[i].uid, untab[i].home);
- close(dumpfd);
- fclose(dumpfile);
- }
-}
-
-
-void
-plt_dump(uid2home_t *lastc, pid_t this)
-{
- FILE *dumpfile;
- int i;
-
- if ((dumpfile = fopen("/var/tmp/hlfsdump", "a")) != NULL) {
- fprintf(dumpfile, "\n\nNEW PLT_DUMP -- ");
- fprintf(dumpfile, "lastchild->child=%d ",
- (int) (lastc ? lastc->child : -999));
- fprintf(dumpfile, ", child from wait3=%lu:\n", (long) this);
- for (i = 0; i < cur_pwtab_num; ++i)
- fprintf(dumpfile, "%4d %5lu: %4lu \"%s\" uname=\"%s\"\n", i,
- (long) pwtab[i].child, (long) pwtab[i].uid,
- pwtab[i].home, pwtab[i].uname);
- fprintf(dumpfile, "\nUserName table by plt_dump():\n");
- for (i = 0; i < cur_pwtab_num; ++i)
- fprintf(dumpfile, "%4d : \"%s\" %4lu \"%s\"\n", i,
- untab[i].username, (long) untab[i].uid, untab[i].home);
- fprintf(dumpfile, "ezk: ent=%d, uid=%lu, home=\"%s\"\n",
- untab_index("ezk"),
- (long) untab[untab_index("ezk")].uid,
- pwtab[untab[untab_index("ezk")].uid].home);
- fprintf(dumpfile, "rezk: ent=%d, uid=%lu, home=\"%s\"\n",
- untab_index("rezk"),
- (long) untab[untab_index("rezk")].uid,
- pwtab[untab[untab_index("rezk")].uid].home);
- fclose(dumpfile);
- }
-}
-#endif /* defined(DEBUG) || defined(DEBUG_PRINT) */
diff --git a/contrib/amd/hlfsd/nfs_prot_svc.c b/contrib/amd/hlfsd/nfs_prot_svc.c
deleted file mode 100644
index babaa846a224..000000000000
--- a/contrib/amd/hlfsd/nfs_prot_svc.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/hlfsd/nfs_prot_svc.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <hlfsd.h>
-
-/* EXTERNAL FUNCTIONS */
-extern voidp nfsproc_null_2_svc(voidp, struct svc_req *);
-extern nfsattrstat *nfsproc_getattr_2_svc(am_nfs_fh *, struct svc_req *);
-extern nfsattrstat *nfsproc_setattr_2_svc(nfssattrargs *, struct svc_req *);
-extern voidp nfsproc_root_2_svc(voidp, struct svc_req *);
-extern nfsdiropres *nfsproc_lookup_2_svc(nfsdiropargs *, struct svc_req *);
-extern nfsreadlinkres *nfsproc_readlink_2_svc(am_nfs_fh *, struct svc_req *);
-extern nfsreadres *nfsproc_read_2_svc(nfsreadargs *, struct svc_req *);
-extern voidp nfsproc_writecache_2_svc(voidp, struct svc_req *);
-extern nfsattrstat *nfsproc_write_2_svc(nfswriteargs *, struct svc_req *);
-extern nfsdiropres *nfsproc_create_2_svc(nfscreateargs *, struct svc_req *);
-extern nfsstat *nfsproc_remove_2_svc(nfsdiropargs *, struct svc_req *);
-extern nfsstat *nfsproc_rename_2_svc(nfsrenameargs *, struct svc_req *);
-extern nfsstat *nfsproc_link_2_svc(nfslinkargs *, struct svc_req *);
-extern nfsstat *nfsproc_symlink_2_svc(nfssymlinkargs *, struct svc_req *);
-extern nfsdiropres *nfsproc_mkdir_2_svc(nfscreateargs *, struct svc_req *);
-extern nfsstat *nfsproc_rmdir_2_svc(nfsdiropargs *, struct svc_req *);
-extern nfsreaddirres *nfsproc_readdir_2_svc(nfsreaddirargs *, struct svc_req *);
-extern nfsstatfsres *nfsproc_statfs_2_svc(am_nfs_fh *, struct svc_req *);
-
-/* GLOBALS */
-SVCXPRT *nfs_program_2_transp;
-
-/* TYPEDEFS */
-typedef char *(*nfssvcproc_t)(voidp, struct svc_req *);
-
-
-void
-nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp)
-{
- union {
- am_nfs_fh nfsproc_getattr_2_arg;
- nfssattrargs nfsproc_setattr_2_arg;
- nfsdiropargs nfsproc_lookup_2_arg;
- am_nfs_fh nfsproc_readlink_2_arg;
- nfsreadargs nfsproc_read_2_arg;
- nfswriteargs nfsproc_write_2_arg;
- nfscreateargs nfsproc_create_2_arg;
- nfsdiropargs nfsproc_remove_2_arg;
- nfsrenameargs nfsproc_rename_2_arg;
- nfslinkargs nfsproc_link_2_arg;
- nfssymlinkargs nfsproc_symlink_2_arg;
- nfscreateargs nfsproc_mkdir_2_arg;
- nfsdiropargs nfsproc_rmdir_2_arg;
- nfsreaddirargs nfsproc_readdir_2_arg;
- am_nfs_fh nfsproc_statfs_2_arg;
- } argument;
- char *result;
- xdrproc_t xdr_argument, xdr_result;
- nfssvcproc_t local;
-
- nfs_program_2_transp = NULL;
-
- switch (rqstp->rq_proc) {
-
- case NFSPROC_NULL:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_void;
- local = (nfssvcproc_t) nfsproc_null_2_svc;
- break;
-
- case NFSPROC_GETATTR:
- xdr_argument = (xdrproc_t) xdr_nfs_fh;
- xdr_result = (xdrproc_t) xdr_attrstat;
- local = (nfssvcproc_t) nfsproc_getattr_2_svc;
- break;
-
- case NFSPROC_SETATTR:
- xdr_argument = (xdrproc_t) xdr_sattrargs;
- xdr_result = (xdrproc_t) xdr_attrstat;
- local = (nfssvcproc_t) nfsproc_setattr_2_svc;
- break;
-
- case NFSPROC_ROOT:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_void;
- local = (nfssvcproc_t) nfsproc_root_2_svc;
- break;
-
- case NFSPROC_LOOKUP:
- xdr_argument = (xdrproc_t) xdr_diropargs;
- xdr_result = (xdrproc_t) xdr_diropres;
- local = (nfssvcproc_t) nfsproc_lookup_2_svc;
- /*
- * Cheap way to pass transp down to afs_lookuppn so it can
- * be stored in the am_node structure and later used for
- * quick_reply().
- */
- nfs_program_2_transp = transp;
- break;
-
- case NFSPROC_READLINK:
- xdr_argument = (xdrproc_t) xdr_nfs_fh;
- xdr_result = (xdrproc_t) xdr_readlinkres;
- local = (nfssvcproc_t) nfsproc_readlink_2_svc;
- break;
-
- case NFSPROC_READ:
- xdr_argument = (xdrproc_t) xdr_readargs;
- xdr_result = (xdrproc_t) xdr_readres;
- local = (nfssvcproc_t) nfsproc_read_2_svc;
- break;
-
- case NFSPROC_WRITECACHE:
- xdr_argument = (xdrproc_t) xdr_void;
- xdr_result = (xdrproc_t) xdr_void;
- local = (nfssvcproc_t) nfsproc_writecache_2_svc;
- break;
-
- case NFSPROC_WRITE:
- xdr_argument = (xdrproc_t) xdr_writeargs;
- xdr_result = (xdrproc_t) xdr_attrstat;
- local = (nfssvcproc_t) nfsproc_write_2_svc;
- break;
-
- case NFSPROC_CREATE:
- xdr_argument = (xdrproc_t) xdr_createargs;
- xdr_result = (xdrproc_t) xdr_diropres;
- local = (nfssvcproc_t) nfsproc_create_2_svc;
- break;
-
- case NFSPROC_REMOVE:
- xdr_argument = (xdrproc_t) xdr_diropargs;
- xdr_result = (xdrproc_t) xdr_nfsstat;
- local = (nfssvcproc_t) nfsproc_remove_2_svc;
- break;
-
- case NFSPROC_RENAME:
- xdr_argument = (xdrproc_t) xdr_renameargs;
- xdr_result = (xdrproc_t) xdr_nfsstat;
- local = (nfssvcproc_t) nfsproc_rename_2_svc;
- break;
-
- case NFSPROC_LINK:
- xdr_argument = (xdrproc_t) xdr_linkargs;
- xdr_result = (xdrproc_t) xdr_nfsstat;
- local = (nfssvcproc_t) nfsproc_link_2_svc;
- break;
-
- case NFSPROC_SYMLINK:
- xdr_argument = (xdrproc_t) xdr_symlinkargs;
- xdr_result = (xdrproc_t) xdr_nfsstat;
- local = (nfssvcproc_t) nfsproc_symlink_2_svc;
- break;
-
- case NFSPROC_MKDIR:
- xdr_argument = (xdrproc_t) xdr_createargs;
- xdr_result = (xdrproc_t) xdr_diropres;
- local = (nfssvcproc_t) nfsproc_mkdir_2_svc;
- break;
-
- case NFSPROC_RMDIR:
- xdr_argument = (xdrproc_t) xdr_diropargs;
- xdr_result = (xdrproc_t) xdr_nfsstat;
- local = (nfssvcproc_t) nfsproc_rmdir_2_svc;
- break;
-
- case NFSPROC_READDIR:
- xdr_argument = (xdrproc_t) xdr_readdirargs;
- xdr_result = (xdrproc_t) xdr_readdirres;
- local = (nfssvcproc_t) nfsproc_readdir_2_svc;
- break;
-
- case NFSPROC_STATFS:
- xdr_argument = (xdrproc_t) xdr_nfs_fh;
- xdr_result = (xdrproc_t) xdr_statfsres;
- local = (nfssvcproc_t) nfsproc_statfs_2_svc;
- break;
-
- default:
- svcerr_noproc(transp);
- return;
- }
-
- memset((char *) &argument, 0, sizeof(argument));
- if (!svc_getargs(transp,
- (XDRPROC_T_TYPE) xdr_argument,
- (SVC_IN_ARG_TYPE) &argument)) {
- plog(XLOG_ERROR,
- "NFS xdr decode failed for %d %d %d",
- (int) rqstp->rq_prog, (int) rqstp->rq_vers, (int) rqstp->rq_proc);
- svcerr_decode(transp);
- return;
- }
- result = (*local) (&argument, rqstp);
-
- nfs_program_2_transp = NULL;
-
- if (result != NULL && !svc_sendreply(transp,
- (XDRPROC_T_TYPE) xdr_result,
- result)) {
- svcerr_systemerr(transp);
- }
- if (!svc_freeargs(transp,
- (XDRPROC_T_TYPE) xdr_argument,
- (SVC_IN_ARG_TYPE) & argument)) {
- plog(XLOG_FATAL, "unable to free rpc arguments in nfs_program_2");
- going_down(1);
- }
-}
diff --git a/contrib/amd/hlfsd/stubs.c b/contrib/amd/hlfsd/stubs.c
deleted file mode 100644
index b26e5f4dc637..000000000000
--- a/contrib/amd/hlfsd/stubs.c
+++ /dev/null
@@ -1,529 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/hlfsd/stubs.c
- *
- * HLFSD was written at Columbia University Computer Science Department, by
- * Erez Zadok <ezk@cs.columbia.edu> and Alexander Dupuy <dupuy@cs.columbia.edu>
- * It is being distributed under the same terms and conditions as amd does.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <hlfsd.h>
-
-/*
- * STATIC VARIABLES:
- */
-static nfsfattr rootfattr = {NFDIR, 0040555, 2, 0, 0, 512, 512, 0,
- 1, 0, ROOTID};
-static nfsfattr slinkfattr = {NFLNK, 0120777, 1, 0, 0, NFS_MAXPATHLEN, 512, 0,
- (NFS_MAXPATHLEN + 1) / 512, 0, SLINKID};
- /* user name file attributes */
-static nfsfattr un_fattr = {NFLNK, 0120777, 1, 0, 0, NFS_MAXPATHLEN, 512, 0,
- (NFS_MAXPATHLEN + 1) / 512, 0, INVALIDID};
-static int started;
-static am_nfs_fh slink;
-static am_nfs_fh un_fhandle;
-
-/*
- * GLOBALS:
- */
-am_nfs_fh root;
-am_nfs_fh *root_fhp = &root;
-
-
-/* initialize NFS file handles for hlfsd */
-void
-hlfsd_init_filehandles(void)
-{
- u_int ui;
-
- ui = ROOTID;
- memcpy(root.fh_data, &ui, sizeof(ui));
-
- ui = SLINKID;
- memcpy(slink.fh_data, &ui, sizeof(ui));
-
- ui = INVALIDID;
- memcpy(un_fhandle.fh_data, &ui, sizeof(ui));
-}
-
-
-voidp
-nfsproc_null_2_svc(voidp argp, struct svc_req *rqstp)
-{
- static char res;
-
- return (voidp) &res;
-}
-
-
-/* compare if two filehandles are equal */
-static int
-eq_fh(const am_nfs_fh *fh1, const am_nfs_fh *fh2)
-{
- return (!memcmp((char *) fh1, (char *) fh2, sizeof(am_nfs_fh)));
-}
-
-
-nfsattrstat *
-nfsproc_getattr_2_svc(am_nfs_fh *argp, struct svc_req *rqstp)
-{
- static nfsattrstat res;
- uid_t uid = (uid_t) INVALIDID;
- gid_t gid = (gid_t) INVALIDID;
-
- if (!started) {
- started++;
- rootfattr.na_ctime = startup;
- rootfattr.na_mtime = startup;
- slinkfattr.na_ctime = startup;
- slinkfattr.na_mtime = startup;
- un_fattr.na_ctime = startup;
- un_fattr.na_mtime = startup;
- }
-
- if (getcreds(rqstp, &uid, &gid, nfsxprt) < 0) {
- res.ns_status = NFSERR_STALE;
- return &res;
- }
- if (eq_fh(argp, &root)) {
-#if 0
- /*
- * XXX: increment mtime of parent directory, causes NFS clients to
- * invalidate their cache for that directory.
- * Some NFS clients may need this code.
- */
- if (uid != rootfattr.na_uid) {
- clocktime(&rootfattr.na_mtime);
- rootfattr.na_uid = uid;
- }
-#endif /* 0 */
- res.ns_status = NFS_OK;
- res.ns_u.ns_attr_u = rootfattr;
- } else if (eq_fh(argp, &slink)) {
-
-#ifndef MNT2_NFS_OPT_SYMTTL
- /*
- * This code is needed to defeat Solaris 2.4's (and newer) symlink
- * values cache. It forces the last-modified time of the symlink to be
- * current. It is not needed if the O/S has an nfs flag to turn off the
- * symlink-cache at mount time (such as Irix 5.x and 6.x). -Erez.
- *
- * Additionally, Linux currently ignores the nt_useconds field,
- * so we must update the nt_seconds field every time.
- */
- if (uid != slinkfattr.na_uid) {
- clocktime(&slinkfattr.na_mtime);
- slinkfattr.na_uid = uid;
- }
-#endif /* not MNT2_NFS_OPT_SYMTTL */
-
- res.ns_status = NFS_OK;
- res.ns_u.ns_attr_u = slinkfattr;
- } else {
- if (gid != hlfs_gid) {
- res.ns_status = NFSERR_STALE;
- } else {
- (void)memcpy(&uid, argp->fh_data, sizeof(uid));
- if (plt_search(uid) != (uid2home_t *) NULL) {
- res.ns_status = NFS_OK;
- un_fattr.na_fileid = uid;
- res.ns_u.ns_attr_u = un_fattr;
- dlog("nfs_getattr: successful search for uid=%ld, gid=%ld",
- (long) uid, (long) gid);
- } else { /* not found */
- res.ns_status = NFSERR_STALE;
- }
- }
- }
- return &res;
-}
-
-
-nfsattrstat *
-nfsproc_setattr_2_svc(nfssattrargs *argp, struct svc_req *rqstp)
-{
- static nfsattrstat res = {NFSERR_ROFS};
-
- return &res;
-}
-
-
-voidp
-nfsproc_root_2_svc(voidp argp, struct svc_req *rqstp)
-{
- static char res;
-
- return (voidp) &res;
-}
-
-
-nfsdiropres *
-nfsproc_lookup_2_svc(nfsdiropargs *argp, struct svc_req *rqstp)
-{
- static nfsdiropres res;
- int idx;
- uid_t uid = (uid_t) INVALIDID;
- gid_t gid = (gid_t) INVALIDID;
-
- if (!started) {
- started++;
- rootfattr.na_ctime = startup;
- rootfattr.na_mtime = startup;
- slinkfattr.na_ctime = startup;
- slinkfattr.na_mtime = startup;
- un_fattr.na_ctime = startup;
- un_fattr.na_mtime = startup;
- }
-
- if (eq_fh(&argp->da_fhandle, &slink)) {
- res.dr_status = NFSERR_NOTDIR;
- return &res;
- }
-
- if (getcreds(rqstp, &uid, &gid, nfsxprt) < 0) {
- res.dr_status = NFSERR_NOENT;
- return &res;
- }
- if (eq_fh(&argp->da_fhandle, &root)) {
- if (argp->da_name[0] == '.' &&
- (argp->da_name[1] == '\0' ||
- (argp->da_name[1] == '.' &&
- argp->da_name[2] == '\0'))) {
-#if 0
- /*
- * XXX: increment mtime of parent directory, causes NFS clients to
- * invalidate their cache for that directory.
- * Some NFS clients may need this code.
- */
- if (uid != rootfattr.na_uid) {
- clocktime(&rootfattr.na_mtime);
- rootfattr.na_uid = uid;
- }
-#endif /* 0 */
- res.dr_u.dr_drok_u.drok_fhandle = root;
- res.dr_u.dr_drok_u.drok_attributes = rootfattr;
- res.dr_status = NFS_OK;
- return &res;
- }
-
- if (STREQ(argp->da_name, slinkname)) {
-#ifndef MNT2_NFS_OPT_SYMTTL
- /*
- * This code is needed to defeat Solaris 2.4's (and newer) symlink
- * values cache. It forces the last-modified time of the symlink to be
- * current. It is not needed if the O/S has an nfs flag to turn off the
- * symlink-cache at mount time (such as Irix 5.x and 6.x). -Erez.
- *
- * Additionally, Linux currently ignores the nt_useconds field,
- * so we must update the nt_seconds field every time.
- */
- if (uid != slinkfattr.na_uid) {
- clocktime(&slinkfattr.na_mtime);
- slinkfattr.na_uid = uid;
- }
-#endif /* not MNT2_NFS_OPT_SYMTTL */
- res.dr_u.dr_drok_u.drok_fhandle = slink;
- res.dr_u.dr_drok_u.drok_attributes = slinkfattr;
- res.dr_status = NFS_OK;
- return &res;
- }
-
- if (gid != hlfs_gid) {
- res.dr_status = NFSERR_NOENT;
- return &res;
- }
-
- /* if gets here, gid == hlfs_gid */
- if ((idx = untab_index(argp->da_name)) < 0) {
- res.dr_status = NFSERR_NOENT;
- return &res;
- } else { /* entry found and gid is permitted */
- un_fattr.na_fileid = untab[idx].uid;
- res.dr_u.dr_drok_u.drok_attributes = un_fattr;
- memset(&un_fhandle, 0, sizeof(un_fhandle));
- memcpy(un_fhandle.fh_data, &untab[idx].uid, sizeof(untab[idx].uid));
- xstrlcpy((char *) &un_fhandle.fh_data[sizeof(int)],
- untab[idx].username,
- sizeof(am_nfs_fh) - sizeof(int));
- res.dr_u.dr_drok_u.drok_fhandle = un_fhandle;
- res.dr_status = NFS_OK;
- dlog("nfs_lookup: successful lookup for uid=%ld, gid=%ld: username=%s",
- (long) uid, (long) gid, untab[idx].username);
- return &res;
- }
- } /* end of "if (eq_fh(argp->dir.data, root.data)) {" */
-
- res.dr_status = NFSERR_STALE;
- return &res;
-}
-
-
-nfsreadlinkres *
-nfsproc_readlink_2_svc(am_nfs_fh *argp, struct svc_req *rqstp)
-{
- static nfsreadlinkres res;
- uid_t userid = (uid_t) INVALIDID;
- gid_t groupid = hlfs_gid + 1; /* anything not hlfs_gid */
- int retval = 0;
- char *path_val = NULL;
- char *username;
- static uid_t last_uid = (uid_t) INVALIDID;
-
- if (eq_fh(argp, &root)) {
- res.rlr_status = NFSERR_ISDIR;
- } else if (eq_fh(argp, &slink)) {
- if (getcreds(rqstp, &userid, &groupid, nfsxprt) < 0)
- return (nfsreadlinkres *) NULL;
-
- clocktime(&slinkfattr.na_atime);
-
- res.rlr_status = NFS_OK;
- if (groupid == hlfs_gid) {
- res.rlr_u.rlr_data_u = DOTSTRING;
- } else if (!(res.rlr_u.rlr_data_u = path_val = homedir(userid, groupid))) {
- /*
- * parent process (fork in homedir()) continues
- * processing, by getting a NULL returned as a
- * "special". Child returns result.
- */
- return NULL;
- }
-
- } else { /* check if asked for user mailbox */
-
- if (getcreds(rqstp, &userid, &groupid, nfsxprt) < 0) {
- return (nfsreadlinkres *) NULL;
- }
-
- if (groupid == hlfs_gid) {
- memcpy(&userid, argp->fh_data, sizeof(userid));
- username = (char *) &argp->fh_data[sizeof(int)];
- if (!(res.rlr_u.rlr_data_u = mailbox(userid, username)))
- return (nfsreadlinkres *) NULL;
- } else {
- res.rlr_status = NFSERR_STALE;
- }
- }
-
- /* print info, but try to avoid repetitions */
- if (userid != last_uid) {
- plog(XLOG_USER, "mailbox for uid=%ld, gid=%ld is %s",
- (long) userid, (long) groupid, (char *) res.rlr_u.rlr_data_u);
- last_uid = userid;
- }
-
- /* I don't think it will pass this if -D fork */
- if (serverpid == getpid())
- return &res;
-
- if (!svc_sendreply(nfsxprt, (XDRPROC_T_TYPE) xdr_readlinkres, (SVC_IN_ARG_TYPE) &res))
- svcerr_systemerr(nfsxprt);
-
- /*
- * Child exists here. We need to determine which
- * exist status to return. The exit status
- * is gathered using wait() and determines
- * if we returned $HOME/.hlfsspool or $ALTDIR. The parent
- * needs this info so it can update the lookup table.
- */
- if (path_val && alt_spooldir && STREQ(path_val, alt_spooldir))
- retval = 1; /* could not get real home dir (or uid 0 user) */
- else
- retval = 0;
-
- /*
- * If asked for -D nofork, then must return the value,
- * NOT exit, or else the main hlfsd server exits.
- * If -D fork (default), then we do want to exit from the process.
- * Bug: where is that status information being collected?
- */
- if (amuDebug(D_FORK))
- exit(retval);
- else
- return &res;
-}
-
-
-nfsreadres *
-nfsproc_read_2_svc(nfsreadargs *argp, struct svc_req *rqstp)
-{
- static nfsreadres res = {NFSERR_ACCES};
-
- return &res;
-}
-
-
-voidp
-nfsproc_writecache_2_svc(voidp argp, struct svc_req *rqstp)
-{
- static char res;
-
- return (voidp) &res;
-}
-
-
-nfsattrstat *
-nfsproc_write_2_svc(nfswriteargs *argp, struct svc_req *rqstp)
-{
- static nfsattrstat res = {NFSERR_ROFS};
-
- return &res;
-}
-
-
-nfsdiropres *
-nfsproc_create_2_svc(nfscreateargs *argp, struct svc_req *rqstp)
-{
- static nfsdiropres res = {NFSERR_ROFS};
-
- return &res;
-}
-
-
-nfsstat *
-nfsproc_remove_2_svc(nfsdiropargs *argp, struct svc_req *rqstp)
-{
- static nfsstat res = {NFSERR_ROFS};
-
- return &res;
-}
-
-
-nfsstat *
-nfsproc_rename_2_svc(nfsrenameargs *argp, struct svc_req *rqstp)
-{
- static nfsstat res = {NFSERR_ROFS};
-
- return &res;
-}
-
-
-nfsstat *
-nfsproc_link_2_svc(nfslinkargs *argp, struct svc_req *rqstp)
-{
- static nfsstat res = {NFSERR_ROFS};
-
- return &res;
-}
-
-
-nfsstat *
-nfsproc_symlink_2_svc(nfssymlinkargs *argp, struct svc_req *rqstp)
-{
- static nfsstat res = {NFSERR_ROFS};
-
- return &res;
-}
-
-
-nfsdiropres *
-nfsproc_mkdir_2_svc(nfscreateargs *argp, struct svc_req *rqstp)
-{
- static nfsdiropres res = {NFSERR_ROFS};
-
- return &res;
-}
-
-
-nfsstat *
-nfsproc_rmdir_2_svc(nfsdiropargs *argp, struct svc_req *rqstp)
-{
- static nfsstat res = {NFSERR_ROFS};
-
- return &res;
-}
-
-
-nfsreaddirres *
-nfsproc_readdir_2_svc(nfsreaddirargs *argp, struct svc_req *rqstp)
-{
- static nfsreaddirres res;
- static nfsentry slinkent = {SLINKID, NULL, {SLINKCOOKIE}};
- static nfsentry dotdotent = {ROOTID, "..", {DOTDOTCOOKIE}, &slinkent};
- static nfsentry dotent = {ROOTID, ".", {DOTCOOKIE}, &dotdotent};
-
- slinkent.ne_name = slinkname;
-
- if (eq_fh(&argp->rda_fhandle, &slink)) {
- res.rdr_status = NFSERR_NOTDIR;
- } else if (eq_fh(&argp->rda_fhandle, &root)) {
- clocktime(&rootfattr.na_atime);
-
- res.rdr_status = NFS_OK;
- switch (argp->rda_cookie[0]) {
- case 0:
- res.rdr_u.rdr_reply_u.dl_entries = &dotent;
- break;
- case DOTCOOKIE:
- res.rdr_u.rdr_reply_u.dl_entries = &dotdotent;
- break;
- case DOTDOTCOOKIE:
- res.rdr_u.rdr_reply_u.dl_entries = &slinkent;
- break;
- case SLINKCOOKIE:
- res.rdr_u.rdr_reply_u.dl_entries = (nfsentry *) NULL;
- break;
- }
- res.rdr_u.rdr_reply_u.dl_eof = TRUE;
- } else {
- res.rdr_status = NFSERR_STALE;
- }
- return &res;
-}
-
-
-nfsstatfsres *
-nfsproc_statfs_2_svc(am_nfs_fh *argp, struct svc_req *rqstp)
-{
- static nfsstatfsres res = {NFS_OK};
-
- res.sfr_u.sfr_reply_u.sfrok_tsize = 1024;
- res.sfr_u.sfr_reply_u.sfrok_bsize = 1024;
-
- /*
- * Some "df" programs automatically assume that file systems
- * with zero blocks are meta-filesystems served by automounters.
- */
- res.sfr_u.sfr_reply_u.sfrok_blocks = 0;
- res.sfr_u.sfr_reply_u.sfrok_bfree = 0;
- res.sfr_u.sfr_reply_u.sfrok_bavail = 0;
-
- return &res;
-}
diff --git a/contrib/amd/include/am_compat.h b/contrib/amd/include/am_compat.h
deleted file mode 100644
index 3463f3fa591c..000000000000
--- a/contrib/amd/include/am_compat.h
+++ /dev/null
@@ -1,472 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/include/am_compat.h
- *
- */
-
-/*
- *
- * This file contains compatibility functions and macros, all of which
- * should be auto-discovered, but for one reason or another (mostly
- * brain-damage on the part of system designers and header files) they cannot.
- *
- * Each compatibility macro/function must include instructions on how/when
- * it can be removed the am-utils code.
- *
- */
-
-#ifndef _AM_COMPAT_H
-# define _AM_COMPAT_H
-
-/*
- * incomplete mount options definitions (sunos4, irix6, linux, etc.)
- */
-
-
-/*
- * Complete MNTTAB_OPT_* options based on MNT2_NFS_OPT_* mount options.
- */
-#if defined(MNT2_NFS_OPT_ACDIRMAX) && !defined(MNTTAB_OPT_ACDIRMAX)
-# define MNTTAB_OPT_ACDIRMAX "acdirmax"
-#endif /* defined(MNT2_NFS_OPT_ACDIRMAX) && !defined(MNTTAB_OPT_ACDIRMAX) */
-
-#if defined(MNT2_NFS_OPT_ACDIRMIN) && !defined(MNTTAB_OPT_ACDIRMIN)
-# define MNTTAB_OPT_ACDIRMIN "acdirmin"
-#endif /* defined(MNT2_NFS_OPT_ACDIRMIN) && !defined(MNTTAB_OPT_ACDIRMIN) */
-
-#if defined(MNT2_NFS_OPT_ACREGMAX) && !defined(MNTTAB_OPT_ACREGMAX)
-# define MNTTAB_OPT_ACREGMAX "acregmax"
-#endif /* defined(MNT2_NFS_OPT_ACREGMAX) && !defined(MNTTAB_OPT_ACREGMAX) */
-
-#if defined(MNT2_NFS_OPT_ACREGMIN) && !defined(MNTTAB_OPT_ACREGMIN)
-# define MNTTAB_OPT_ACREGMIN "acregmin"
-#endif /* defined(MNT2_NFS_OPT_ACREGMIN) && !defined(MNTTAB_OPT_ACREGMIN) */
-
-#if !defined(MNTTAB_OPT_IGNORE)
-/* SunOS 4.1.x and others define "noauto" option, but not "auto" */
-# if defined(MNTTAB_OPT_NOAUTO) && !defined(MNTTAB_OPT_AUTO)
-# define MNTTAB_OPT_AUTO "auto"
-# endif /* defined(MNTTAB_OPT_NOAUTO) && !defined(MNTTAB_OPT_AUTO) */
-#endif /* !defined(MNTTAB_OPT_IGNORE) */
-
-#if defined(MNT2_NFS_OPT_NOAC) && !defined(MNTTAB_OPT_NOAC)
-# define MNTTAB_OPT_NOAC "noac"
-#endif /* defined(MNT2_NFS_OPT_NOAC) && !defined(MNTTAB_OPT_NOAC) */
-
-#if defined(MNT2_NFS_OPT_NOACL) && !defined(MNTTAB_OPT_NOACL)
-# define MNTTAB_OPT_NOACL "noacl"
-#endif /* defined(MNT2_NFS_OPT_NOACL) && !defined(MNTTAB_OPT_NOACL) */
-
-#if defined(MNT2_NFS_OPT_NOCONN) && !defined(MNTTAB_OPT_NOCONN)
-# define MNTTAB_OPT_NOCONN "noconn"
-# ifndef MNTTAB_OPT_CONN
-# define MNTTAB_OPT_CONN "conn"
-# endif /* MNTTAB_OPT_CONN */
-#endif /* defined(MNT2_NFS_OPT_NOCONN) && !defined(MNTTAB_OPT_NOCONN) */
-
-#if defined(MNT2_NFS_OPT_PGTHRESH) && !defined(MNTTAB_OPT_PGTHRESH)
-# define MNTTAB_OPT_PGTHRESH "pgthresh"
-#endif /* defined(MNT2_NFS_OPT_PGTHRESH) && !defined(MNTTAB_OPT_PGTHRESH) */
-
-#if defined(MNT2_NFS_OPT_PRIVATE) && !defined(MNTTAB_OPT_PRIVATE)
-# define MNTTAB_OPT_PRIVATE "private"
-#endif /* defined(MNT2_NFS_OPT_PRIVATE) && !defined(MNTTAB_OPT_PRIVATE) */
-
-#if defined(MNT2_NFS_OPT_RETRANS) && !defined(MNTTAB_OPT_RETRANS)
-# define MNTTAB_OPT_RETRANS "retrans"
-#endif /* defined(MNT2_NFS_OPT_RETRANS) && !defined(MNTTAB_OPT_RETRANS) */
-
-#if defined(MNT2_NFS_OPT_RSIZE) && !defined(MNTTAB_OPT_RSIZE)
-# define MNTTAB_OPT_RSIZE "rsize"
-#endif /* defined(MNT2_NFS_OPT_RSIZE) && !defined(MNTTAB_OPT_RSIZE) */
-
-#if defined(MNT2_NFS_OPT_SOFT) && !defined(MNTTAB_OPT_SOFT)
-# define MNTTAB_OPT_SOFT "soft"
-# ifndef MNTTAB_OPT_HARD
-# define MNTTAB_OPT_HARD "hard"
-# endif /* not MNTTAB_OPT_HARD */
-#endif /* defined(MNT2_NFS_OPT_SOFT) && !defined(MNTTAB_OPT_SOFT) */
-
-#if defined(MNT2_NFS_OPT_TIMEO) && !defined(MNTTAB_OPT_TIMEO)
-# define MNTTAB_OPT_TIMEO "timeo"
-#endif /* defined(MNT2_NFS_OPT_TIMEO) && !defined(MNTTAB_OPT_TIMEO) */
-
-#if defined(MNT2_NFS_OPT_WSIZE) && !defined(MNTTAB_OPT_WSIZE)
-# define MNTTAB_OPT_WSIZE "wsize"
-#endif /* defined(MNT2_NFS_OPT_WSIZE) && !defined(MNTTAB_OPT_WSIZE) */
-
-#if defined(MNT2_NFS_OPT_MAXGRPS) && !defined(MNTTAB_OPT_MAXGROUPS)
-# define MNTTAB_OPT_MAXGROUPS "maxgroups"
-#endif /* defined(MNT2_NFS_OPT_MAXGRPS) && !defined(MNTTAB_OPT_MAXGROUPS) */
-
-#if defined(MNT2_NFS_OPT_PROPLIST) && !defined(MNTTAB_OPT_PROPLIST)
-# define MNTTAB_OPT_PROPLIST "proplist"
-#endif /* defined(MNT2_NFS_OPT_PROPLIST) && !defined(MNTTAB_OPT_PROPLIST) */
-
-#if defined(MNT2_NFS_OPT_NONLM) && !defined(MNTTAB_OPT_NOLOCK)
-# define MNTTAB_OPT_NOLOCK "nolock"
-#endif /* defined(MNT2_NFS_OPT_NONLM) && !defined(MNTTAB_OPT_NOLOCK) */
-
-#if defined(MNT2_NFS_OPT_XLATECOOKIE) && !defined(MNTTAB_OPT_XLATECOOKIE)
-# define MNTTAB_OPT_XLATECOOKIE "xlatecookie"
-#endif /* defined(MNT2_NFS_OPT_XLATECOOKIE) && !defined(MNTTAB_OPT_XLATECOOKIE) */
-
-/*
- * Complete MNTTAB_OPT_* options based on MNT2_CDFS_OPT_* mount options.
- */
-#if defined(MNT2_CDFS_OPT_DEFPERM) && !defined(MNTTAB_OPT_DEFPERM)
-# define MNTTAB_OPT_DEFPERM "defperm"
-#endif /* defined(MNT2_CDFS_OPT_DEFPERM) && !defined(MNTTAB_OPT_DEFPERM) */
-
-#if defined(MNT2_CDFS_OPT_NODEFPERM) && !defined(MNTTAB_OPT_NODEFPERM)
-# define MNTTAB_OPT_NODEFPERM "nodefperm"
-/*
- * DEC OSF/1 V3.x/Digital UNIX V4.0 have M_NODEFPERM only, but
- * both mnttab ops.
- */
-# ifndef MNTTAB_OPT_DEFPERM
-# define MNTTAB_OPT_DEFPERM "defperm"
-# endif /* not MNTTAB_OPT_DEFPERM */
-#endif /* defined(MNT2_CDFS_OPT_NODEFPERM) && !defined(MNTTAB_OPT_NODEFPERM) */
-
-#if defined(MNT2_CDFS_OPT_NOVERSION) && !defined(MNTTAB_OPT_NOVERSION)
-# define MNTTAB_OPT_NOVERSION "noversion"
-#endif /* defined(MNT2_CDFS_OPT_NOVERSION) && !defined(MNTTAB_OPT_NOVERSION) */
-
-#if defined(MNT2_CDFS_OPT_RRIP) && !defined(MNTTAB_OPT_RRIP)
-# define MNTTAB_OPT_RRIP "rrip"
-#endif /* defined(MNT2_CDFS_OPT_RRIP) && !defined(MNTTAB_OPT_RRIP) */
-#if defined(MNT2_CDFS_OPT_NORRIP) && !defined(MNTTAB_OPT_NORRIP)
-# define MNTTAB_OPT_NORRIP "norrip"
-#endif /* defined(MNT2_CDFS_OPT_NORRIP) && !defined(MNTTAB_OPT_NORRIP) */
-
-#if defined(MNT2_CDFS_OPT_GENS) && !defined(MNTTAB_OPT_GENS)
-# define MNTTAB_OPT_GENS "gens"
-#endif /* defined(MNT2_CDFS_OPT_GENS) && !defined(MNTTAB_OPT_GENS) */
-
-#if defined(MNT2_CDFS_OPT_EXTATT) && !defined(MNTTAB_OPT_EXTATT)
-# define MNTTAB_OPT_EXTATT "extatt"
-#endif /* defined(MNT2_CDFS_OPT_EXTATT) && !defined(MNTTAB_OPT_EXTATT) */
-
-#if defined(MNT2_CDFS_OPT_NOJOLIET) && !defined(MNTTAB_OPT_NOJOLIET)
-# define MNTTAB_OPT_NOJOLIET "nojoliet"
-#endif /* defined(MNT2_CDFS_OPT_NOJOLIET) && !defined(MNTTAB_OPT_NOJOLIET) */
-
-#if defined(MNT2_CDFS_OPT_NOCASETRANS) && !defined(MNTTAB_OPT_NOCASETRANS)
-# define MNTTAB_OPT_NOCASETRANS "nocasetrans"
-#endif /* defined(MNT2_CDFS_OPT_NOCASETRANS) && !defined(MNTTAB_OPT_NOCASETRANS) */
-
-#if defined(MNT2_CDFS_OPT_RRCASEINS) && !defined(MNTTAB_OPT_RRCASEINS)
-# define MNTTAB_OPT_RRCASEINS "rrcaseins"
-#endif /* defined(MNT2_CDFS_OPT_RRCASEINS) && !defined(MNTTAB_OPT_RRCASEINS) */
-
-/*
- * Complete MNTTAB_OPT_* options based on MNT2_UDF_OPT_* mount options.
- */
-#if defined(MNT2_UDF_OPT_CLOSESESSION) && !defined(MNTTAB_OPT_CLOSESESSION)
-# define MNTTAB_OPT_CLOSESESSION "closesession"
-#endif /* defined(MNT2_UDF_OPT_CLOSESESSION) && !defined(MNTTAB_OPT_CLOSESESSION) */
-
-/*
- * Complete MNTTAB_OPT_* options based on MNT2_PCFS_OPT_* mount options.
- */
-#if defined(MNT2_PCFS_OPT_LONGNAME) && !defined(MNTTAB_OPT_LONGNAME)
-# define MNTTAB_OPT_LONGNAME "longnames"
-#endif /* defined(MNT2_PCFS_OPT_LONGNAME) && !defined(MNTTAB_OPT_LONGNAME) */
-#if defined(MNT2_PCFS_OPT_NOWIN95) && !defined(MNTTAB_OPT_NOWIN95)
-# define MNTTAB_OPT_NOWIN95 "nowin95"
-#endif /* defined(MNT2_PCFS_OPT_NOWIN95) && !defined(MNTTAB_OPT_NOWIN95) */
-#if defined(MNT2_PCFS_OPT_SHORTNAME) && !defined(MNTTAB_OPT_SHORTNAME)
-# define MNTTAB_OPT_SHORTNAME "shortnames"
-#endif /* defined(MNT2_PCFS_OPT_SHORTNAME) && !defined(MNTTAB_OPT_SHORTNAME) */
-
-/*
- * Complete MNTTAB_OPT_* options based on MNT2_GEN_OPT_* mount options.
- */
-#if defined(MNT2_GEN_OPT_GRPID) && !defined(MNTTAB_OPT_GRPID)
-# define MNTTAB_OPT_GRPID "grpid"
-#endif /* defined(MNT2_GEN_OPT_GRPID) && !defined(MNTTAB_OPT_GRPID) */
-
-#if defined(MNT2_GEN_OPT_NOCACHE) && !defined(MNTTAB_OPT_NOCACHE)
-# define MNTTAB_OPT_NOCACHE "nocache"
-#endif /* defined(MNT2_GEN_OPT_NOCACHE) && !defined(MNTTAB_OPT_NOCACHE) */
-
-#if defined(MNT2_GEN_OPT_NOSUID) && !defined(MNTTAB_OPT_NOSUID)
-# define MNTTAB_OPT_NOSUID "nosuid"
-#endif /* defined(MNT2_GEN_OPT_NOSUID) && !defined(MNTTAB_OPT_NOSUID) */
-
-#if defined(MNT2_GEN_OPT_OVERLAY) && !defined(MNTTAB_OPT_OVERLAY)
-# define MNTTAB_OPT_OVERLAY "overlay"
-#endif /* defined(MNT2_GEN_OPT_OVERLAY) && !defined(MNTTAB_OPT_OVERLAY) */
-
-/*
- * Complete MNTTAB_OPT_* options and their inverse based on MNT2_GEN_OPT_*
- * options.
- */
-#if defined(MNT2_GEN_OPT_NODEV) && !defined(MNTTAB_OPT_NODEV)
-# define MNTTAB_OPT_NODEV "nodev"
-#endif /* defined(MNT2_GEN_OPT_NODEV) && !defined(MNTTAB_OPT_NODEV) */
-
-#if defined(MNT2_GEN_OPT_NOEXEC) && !defined(MNTTAB_OPT_NOEXEC)
-# define MNTTAB_OPT_NOEXEC "noexec"
-/* this is missing under some versions of Linux */
-# ifndef MNTTAB_OPT_EXEC
-# define MNTTAB_OPT_EXEC "exec"
-# endif /* not MNTTAB_OPT_EXEC */
-#endif /* defined(MNT2_GEN_OPT_NOEXEC) && !defined(MNTTAB_OPT_NOEXEC) */
-
-#if defined(MNT2_GEN_OPT_QUOTA) && !defined(MNTTAB_OPT_QUOTA)
-# define MNTTAB_OPT_QUOTA "quota"
-#endif /* defined(MNT2_GEN_OPT_QUOTA) && !defined(MNTTAB_OPT_QUOTA) */
-
-#if defined(MNT2_GEN_OPT_SYNC) && !defined(MNTTAB_OPT_SYNC)
-# define MNTTAB_OPT_SYNC "sync"
-#endif /* defined(MNT2_GEN_OPT_SYNC) && !defined(MNTTAB_OPT_SYNC) */
-
-#if defined(MNT2_GEN_OPT_LOG) && !defined(MNTTAB_OPT_LOG)
-# define MNTTAB_OPT_LOG "log"
-#endif /* defined(MNT2_GEN_OPT_LOG) && !defined(MNTTAB_OPT_LOG) */
-
-#if defined(MNT2_GEN_OPT_NOATIME) && !defined(MNTTAB_OPT_NOATIME)
-# define MNTTAB_OPT_NOATIME "noatime"
-#endif /* defined(MNT2_GEN_OPT_NOATIME) && !defined(MNTTAB_OPT_NOATIME) */
-
-#if defined(MNT2_GEN_OPT_NODEVMTIME) && !defined(MNTTAB_OPT_NODEVMTIME)
-# define MNTTAB_OPT_NODEVMTIME "nodevmtime"
-#endif /* defined(MNT2_GEN_OPT_NODEVMTIME) && !defined(MNTTAB_OPT_NODEVMTIME) */
-
-#if defined(MNT2_GEN_OPT_SOFTDEP) && !defined(MNTTAB_OPT_SOFTDEP)
-# define MNTTAB_OPT_SOFTDEP "softdep"
-#endif /* defined(MNT2_GEN_OPT_SOFTDEP) && !defined(MNTTAB_OPT_SOFTDEP) */
-
-#if defined(MNT2_GEN_OPT_SYMPERM) && !defined(MNTTAB_OPT_SYMPERM)
-# define MNTTAB_OPT_SYMPERM "symperm"
-#endif /* defined(MNT2_GEN_OPT_SYMPERM) && !defined(MNTTAB_OPT_SYMPERM) */
-
-#if defined(MNT2_GEN_OPT_UNION) && !defined(MNTTAB_OPT_UNION)
-# define MNTTAB_OPT_UNION "union"
-#endif /* defined(MNT2_GEN_OPT_UNION) && !defined(MNTTAB_OPT_UNION) */
-
-/*
- * Add missing MNTTAB_OPT_* options.
- */
-#ifndef MNTTAB_OPT_ACTIMEO
-# define MNTTAB_OPT_ACTIMEO "actimeo"
-#endif /* not MNTTAB_OPT_ACTIMEO */
-
-#ifndef MNTTAB_OPT_INTR
-# define MNTTAB_OPT_INTR "intr"
-#endif /* not MNTTAB_OPT_INTR */
-
-#ifndef MNTTAB_OPT_PORT
-# define MNTTAB_OPT_PORT "port"
-#endif /* not MNTTAB_OPT_PORT */
-
-#ifndef MNTTAB_OPT_PUBLIC
-# define MNTTAB_OPT_PUBLIC "public"
-#endif /* not MNTTAB_OPT_PUBLIC */
-
-#ifndef MNTTAB_OPT_RETRANS
-# define MNTTAB_OPT_RETRANS "retrans"
-#endif /* not MNTTAB_OPT_RETRANS */
-
-#ifndef MNTTAB_OPT_RETRY
-# define MNTTAB_OPT_RETRY "retry"
-#endif /* not MNTTAB_OPT_RETRY */
-
-#ifndef MNTTAB_OPT_RO
-# define MNTTAB_OPT_RO "ro"
-#endif /* not MNTTAB_OPT_RO */
-
-#ifndef MNTTAB_OPT_RSIZE
-# define MNTTAB_OPT_RSIZE "rsize"
-#endif /* not MNTTAB_OPT_RSIZE */
-
-#ifndef MNTTAB_OPT_RW
-# define MNTTAB_OPT_RW "rw"
-#endif /* not MNTTAB_OPT_RW */
-
-#ifndef MNTTAB_OPT_TIMEO
-# define MNTTAB_OPT_TIMEO "timeo"
-#endif /* not MNTTAB_OPT_TIMEO */
-
-#ifndef MNTTAB_OPT_WSIZE
-# define MNTTAB_OPT_WSIZE "wsize"
-#endif /* not MNTTAB_OPT_WSIZE */
-
-/* next four are useful for pcfs mounts */
-#ifndef MNTTAB_OPT_USER
-# define MNTTAB_OPT_USER "user"
-#endif /* not MNTTAB_OPT_USER */
-#ifndef MNTTAB_OPT_GROUP
-# define MNTTAB_OPT_GROUP "group"
-#endif /* not MNTTAB_OPT_GROUP */
-#ifndef MNTTAB_OPT_MASK
-# define MNTTAB_OPT_MASK "mask"
-#endif /* not MNTTAB_OPT_MASK */
-#ifndef MNTTAB_OPT_DIRMASK
-# define MNTTAB_OPT_DIRMASK "dirmask"
-#endif /* not MNTTAB_OPT_DIRMASK */
-
-/* useful for udf mounts */
-#ifndef MNTTAB_OPT_USER
-# define MNTTAB_OPT_USER "user"
-#endif /* not MNTTAB_OPT_USER */
-#ifndef MNTTAB_OPT_GROUP
-# define MNTTAB_OPT_GROUP "group"
-#endif /* not MNTTAB_OPT_GROUP */
-#ifndef MNTTAB_OPT_GMTOFF
-# define MNTTAB_OPT_GMTOFF "gmtoff"
-#endif /* not MNTTAB_OPT_GMTOFF */
-#ifndef MNTTAB_OPT_SESSIONNR
-# define MNTTAB_OPT_SESSIONNR "sessionnr"
-#endif /* not MNTTAB_OPT_SESSIONNR */
-
-/*
- * Incomplete filesystem definitions (sunos4, irix6, solaris2)
- */
-#if defined(HAVE_FS_CDFS) && defined(MOUNT_TYPE_CDFS) && !defined(MNTTYPE_CDFS)
-# define MNTTYPE_CDFS "hsfs"
-#endif /* defined(HAVE_FS_CDFS) && defined(MOUNT_TYPE_CDFS) && !defined(MNTTYPE_CDFS) */
-
-#ifndef cdfs_args_t
-/*
- * Solaris has an HSFS filesystem, but does not define hsfs_args.
- * XXX: the definition here for solaris is wrong, since under solaris,
- * hsfs_args should be a single integer used as a bit-field for options.
- * so this code has to be fixed later. -Erez.
- */
-struct hsfs_args {
- char *fspec; /* name of filesystem to mount */
- int norrip;
-};
-# define cdfs_args_t struct hsfs_args
-# define HAVE_CDFS_ARGS_T_NORRIP
-#endif /* not cdfs_args_t */
-
-/*
- * if does not define struct pc_args, assume integer bit-field (irix6)
- */
-#if defined(HAVE_FS_PCFS) && !defined(pcfs_args_t)
-# define pcfs_args_t u_int
-#endif /* defined(HAVE_FS_PCFS) && !defined(pcfs_args_t) */
-
-/*
- * if does not define struct ufs_args, assume integer bit-field (linux)
- */
-#if defined(HAVE_FS_UFS) && !defined(ufs_args_t)
-# define ufs_args_t u_int
-#endif /* defined(HAVE_FS_UFS) && !defined(ufs_args_t) */
-
-/*
- * if does not define struct udf_args, assume integer bit-field (linux)
- */
-#if defined(HAVE_FS_UDF) && !defined(udf_args_t)
-# define udf_args_t u_int
-#endif /* defined(HAVE_FS_UDF) && !defined(udf_args_t) */
-
-/*
- * if does not define struct efs_args, assume integer bit-field (linux)
- */
-#if defined(HAVE_FS_EFS) && !defined(efs_args_t)
-# define efs_args_t u_int
-#endif /* defined(HAVE_FS_EFS) && !defined(efs_args_t) */
-
-#if defined(HAVE_FS_TMPFS) && !defined(tmpfs_args_t)
-# define tmpfs_args_t u_int
-#endif /* defined(HAVE_FS_TMPFS) && !defined(tmpfs_args_t) */
-
-/*
- * if does not define struct xfs_args, assume integer bit-field (linux)
- */
-#if defined(HAVE_FS_XFS) && !defined(xfs_args_t)
-# define xfs_args_t u_int
-#endif /* defined(HAVE_FS_XFS) && !defined(xfs_args_t) */
-#if defined(HAVE_FS_EXT) && !defined(ext_args_t)
-# define ext_args_t u_int
-#endif /* defined(HAVE_FS_EXT) && !defined(ext_args_t) */
-
-#if defined(HAVE_FS_AUTOFS) && defined(MOUNT_TYPE_AUTOFS) && !defined(MNTTYPE_AUTOFS)
-# define MNTTYPE_AUTOFS "autofs"
-#endif /* defined(HAVE_FS_AUTOFS) && defined(MOUNT_TYPE_AUTOFS) && !defined(MNTTYPE_AUTOFS) */
-
-/*
- * If NFS3, then make sure that "proto" and "vers" mnttab options
- * are available.
- */
-#ifdef HAVE_FS_NFS3
-# ifndef MNTTAB_OPT_VERS
-# define MNTTAB_OPT_VERS "vers"
-# endif /* not MNTTAB_OPT_VERS */
-# ifndef MNTTAB_OPT_PROTO
-# define MNTTAB_OPT_PROTO "proto"
-# endif /* not MNTTAB_OPT_PROTO */
-#endif /* not HAVE_FS_NFS3 */
-
-/*
- * If NFS4, then make sure that the "sec" mnttab option is available.
- */
-#ifdef HAVE_FS_NFS4
-# ifndef MNTTAB_OPT_SEC
-# define MNTTAB_OPT_SEC "sec"
-# endif /* not MNTTAB_OPT_SEC */
-#endif /* not HAVE_FS_NFS4 */
-/*
- * If loop device (header file) exists, define mount table option
- */
-#if defined(HAVE_LOOP_DEVICE) && !defined(MNTTAB_OPT_LOOP)
-# define MNTTAB_OPT_LOOP "loop"
-#endif /* defined(HAVE_LOOP_DEVICE) && !defined(MNTTAB_OPT_LOOP) */
-
-/*
- * Define a dummy struct netconfig for non-TLI systems
- */
-#if !defined(HAVE_NETCONFIG_H) && !defined(HAVE_SYS_NETCONFIG_H)
-struct netconfig {
- int dummy;
-};
-#endif /* not HAVE_NETCONFIG_H and not HAVE_SYS_NETCONFIG_H */
-
-/* some OSs don't define INADDR_NONE and assume it's unsigned -1 */
-#ifndef INADDR_NONE
-# define INADDR_NONE 0xffffffffU
-#endif /* INADDR_NONE */
-/* some OSs don't define INADDR_LOOPBACK */
-#ifndef INADDR_LOOPBACK
-# define INADDR_LOOPBACK 0x7f000001
-#endif /* not INADDR_LOOPBACK */
-
-#endif /* not _AM_COMPAT_H */
diff --git a/contrib/amd/include/am_defs.h b/contrib/amd/include/am_defs.h
deleted file mode 100644
index bb867a49b5a5..000000000000
--- a/contrib/amd/include/am_defs.h
+++ /dev/null
@@ -1,1614 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/include/am_defs.h
- * $Id: am_defs.h,v 1.15.2.16 2004/05/12 15:54:31 ezk Exp $
- * $FreeBSD$
- *
- */
-
-/*
- * Definitions that are not specific to the am-utils package, but
- * are rather generic, and can be used elsewhere.
- */
-
-#ifndef _AM_DEFS_H
-#define _AM_DEFS_H
-
-/*
- * Actions to take if ANSI C.
- */
-#if STDC_HEADERS
-# include <string.h>
-/* for function prototypes */
-# define P(x) x
-# define P_void void
-#else /* not STDC_HEADERS */
-/* empty function prototypes */
-# define P(x) ()
-# define P_void
-# ifndef HAVE_STRCHR
-# define strchr index
-# define strrchr rindex
-# endif /* not HAVE_STRCHR */
-char *strchr(), *strrchr();
-#endif /* not STDC_HEADERS */
-
-/*
- * Handle gcc __attribute__ if available.
- */
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later. */
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
-# define __attribute__(Spec) /* empty */
-# endif /* __GNUC__ < 2 ... */
-/*
- * The __-protected variants of `format' and `printf' attributes
- * are accepted by gcc versions 2.6.4 (effectively 2.7) and later.
- */
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
-# define __format__ format
-# define __printf__ printf
-# endif /* __GNUC__ < 2 ... */
-#endif /* not __attribute__ */
-
-#define __IGNORE(result) \
- __ignore((unsigned long)result)
-
-static inline void
-__ignore(unsigned long result) {
- (void)&result;
-}
-
-/*
- * How to handle signals of any type
- */
-#ifdef HAVE_SYS_WAIT_H
-# include <sys/wait.h>
-#endif /* HAVE_SYS_WAIT_H */
-#ifndef WEXITSTATUS
-# define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
-#endif /* not WEXITSTATUS */
-#ifndef WIFEXITED
-# define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
-#endif /* not WIFEXITED */
-
-/*
- * Actions to take regarding <time.h> and <sys/time.h>.
- */
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# ifdef _ALL_SOURCE
-/*
- * AIX 5.2 needs struct sigevent from signal.h to be defined, but I
- * don't want to move the inclusion of signal.h this early into this
- * file. Luckily, amd doesn't need the size of this structure in any
- * other structure that it uses. So we sidestep it for now.
- */
-struct sigevent;
-# endif /* _ALL_SOURCE */
-# include <time.h>
-#else /* not TIME_WITH_SYS_TIME */
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else /* not HAVE_SYS_TIME_H */
-# include <time.h>
-# endif /* not HAVE_SYS_TIME_H */
-#endif /* not TIME_WITH_SYS_TIME */
-
-/*
- * Actions to take if <machine/endian.h> exists.
- */
-#ifdef HAVE_MACHINE_ENDIAN_H
-# include <machine/endian.h>
-#endif /* HAVE_MACHINE_ENDIAN_H */
-
-/*
- * Big-endian or little-endian?
- */
-#ifndef BYTE_ORDER
-# if defined(WORDS_BIGENDIAN)
-# define ARCH_ENDIAN "big"
-# else /* not WORDS_BIGENDIAN */
-# define ARCH_ENDIAN "little"
-# endif /* not WORDS_BIGENDIAN */
-#else
-# if BYTE_ORDER == BIG_ENDIAN
-# define ARCH_ENDIAN "big"
-# else
-# define ARCH_ENDIAN "little"
-# endif
-#endif
-
-/*
- * Actions to take if HAVE_SYS_TYPES_H is defined.
- */
-#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif /* HAVE_SYS_TYPES_H */
-
-/*
- * Actions to take if HAVE_LIMITS_H is defined.
- */
-#if HAVE_LIMITS_H_H
-# include <limits.h>
-#endif /* HAVE_LIMITS_H */
-
-/*
- * Actions to take if HAVE_UNISTD_H is defined.
- */
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-
-/* after <unistd.h>, check if this is a POSIX.1 system */
-#ifdef _POSIX_VERSION
-/* Code for POSIX.1 systems. */
-#endif /* _POSIX_VERSION */
-
-/*
- * Variable length argument lists.
- * Must use only one of the two!
- */
-#ifdef HAVE_STDARG_H
-# include <stdarg.h>
-/*
- * On Solaris 2.6, <sys/varargs.h> is included in <sys/fs/autofs.h>
- * So this ensures that only one is included.
- */
-# ifndef _SYS_VARARGS_H
-# define _SYS_VARARGS_H
-# endif /* not _SYS_VARARGS_H */
-#else /* not HAVE_STDARG_H */
-# ifdef HAVE_VARARGS_H
-# include <varargs.h>
-# endif /* HAVE_VARARGS_H */
-#endif /* not HAVE_STDARG_H */
-
-/*
- * Pick the right header file and macros for directory processing functions.
- */
-#if HAVE_DIRENT_H
-# include <dirent.h>
-# define NAMLEN(dirent) strlen((dirent)->d_name)
-#else /* not HAVE_DIRENT_H */
-# define dirent direct
-# define NAMLEN(dirent) (dirent)->d_namlen
-# if HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif /* HAVE_SYS_NDIR_H */
-# if HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif /* HAVE_SYS_DIR_H */
-# if HAVE_NDIR_H
-# include <ndir.h>
-# endif /* HAVE_NDIR_H */
-#endif /* not HAVE_DIRENT_H */
-
-/*
- * Actions to take if HAVE_FCNTL_H is defined.
- */
-#if HAVE_FCNTL_H
-# include <fcntl.h>
-#endif /* HAVE_FCNTL_H */
-
-/*
- * Actions to take if HAVE_MEMORY_H is defined.
- */
-#if HAVE_MEMORY_H
-# include <memory.h>
-#endif /* HAVE_MEMORY_H */
-
-/*
- * Actions to take if HAVE_SYS_FILE_H is defined.
- */
-#if HAVE_SYS_FILE_H
-# include <sys/file.h>
-#endif /* HAVE_SYS_FILE_H */
-
-/*
- * Actions to take if HAVE_SYS_IOCTL_H is defined.
- */
-#if HAVE_SYS_IOCTL_H
-# include <sys/ioctl.h>
-#endif /* HAVE_SYS_IOCTL_H */
-
-/*
- * Actions to take if HAVE_SYSLOG_H or HAVE_SYS_SYSLOG_H is defined.
- */
-#ifdef HAVE_SYSLOG_H
-# include <syslog.h>
-#else /* not HAVE_SYSLOG_H */
-# if HAVE_SYS_SYSLOG_H
-# include <sys/syslog.h>
-# endif /* HAVE_SYS_SYSLOG_H */
-#endif /* HAVE_SYSLOG_H */
-
-/*
- * Actions to take if <sys/param.h> exists.
- */
-#ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif /* HAVE_SYS_PARAM_H */
-
-/*
- * Actions to take if <sys/socket.h> exists.
- */
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif /* HAVE_SYS_SOCKET_H */
-
-/*
- * Actions to take if <rpc/rpc.h> exists.
- */
-#ifdef HAVE_RPC_RPC_H
-/*
- * Turn on PORTMAP, so that additional header files would get included
- * and the important definition for UDPMSGSIZE is included too.
- */
-# ifndef PORTMAP
-# define PORTMAP
-# endif /* not PORTMAP */
-# include <rpc/rpc.h>
-# ifndef XDRPROC_T_TYPE
-typedef bool_t (*xdrproc_t) __P ((XDR *, __ptr_t, ...));
-# endif /* not XDRPROC_T_TYPE */
-#endif /* HAVE_RPC_RPC_H */
-
-/*
- * Actions to take if <rpc/types.h> exists.
- */
-#ifdef HAVE_RPC_TYPES_H
-# include <rpc/types.h>
-#endif /* HAVE_RPC_TYPES_H */
-
-/*
- * Actions to take if <rpc/xdr.h> exists.
- */
-/* Prevent multiple inclusion on Ultrix 4 */
-#if defined(HAVE_RPC_XDR_H) && !defined(__XDR_HEADER__)
-# include <rpc/xdr.h>
-#endif /* defined(HAVE_RPC_XDR_H) && !defined(__XDR_HEADER__) */
-
-/*
- * Actions to take if <malloc.h> exists.
- * Don't include malloc.h if stdlib.h exists, because modern
- * systems complain if you use malloc.h instead of stdlib.h.
- * XXX: let's hope there are no systems out there that need both.
- */
-#if defined(HAVE_MALLOC_H) && !defined(HAVE_STDLIB_H)
-# include <malloc.h>
-#endif /* defined(HAVE_MALLOC_H) && !defined(HAVE_STDLIB_H) */
-
-/*
- * Actions to take if <mntent.h> exists.
- */
-#ifdef HAVE_MNTENT_H
-/* some systems need <stdio.h> before <mntent.h> is included */
-# ifdef HAVE_STDIO_H
-# include <stdio.h>
-# endif /* HAVE_STDIO_H */
-# include <mntent.h>
-#endif /* HAVE_MNTENT_H */
-
-/*
- * Actions to take if <sys/fsid.h> exists.
- */
-#ifdef HAVE_SYS_FSID_H
-# include <sys/fsid.h>
-#endif /* HAVE_SYS_FSID_H */
-
-/*
- * Actions to take if <sys/utsname.h> exists.
- */
-#ifdef HAVE_SYS_UTSNAME_H
-# include <sys/utsname.h>
-#endif /* HAVE_SYS_UTSNAME_H */
-
-/*
- * Actions to take if <sys/mntent.h> exists.
- */
-#ifdef HAVE_SYS_MNTENT_H
-# include <sys/mntent.h>
-#endif /* HAVE_SYS_MNTENT_H */
-
-/*
- * Actions to take if <ndbm.h> or <db1/ndbm.h> exist.
- * Should be included before <rpcsvc/yp_prot.h> because on some systems
- * like Linux, it also defines "struct datum".
- */
-#ifdef HAVE_MAP_NDBM
-# include NEW_DBM_H
-# ifndef DATUM
-/* ensure that struct datum is not included again from <rpcsvc/yp_prot.h> */
-# define DATUM
-# endif /* not DATUM */
-#endif /* HAVE_MAP_NDBM */
-
-/*
- * Actions to take if <net/errno.h> exists.
- */
-#ifdef HAVE_NET_ERRNO_H
-# include <net/errno.h>
-#endif /* HAVE_NET_ERRNO_H */
-
-/*
- * Actions to take if <net/if.h> exists.
- */
-#ifdef HAVE_NET_IF_H
-# include <net/if.h>
-#endif /* HAVE_NET_IF_H */
-
-/*
- * Actions to take if <net/route.h> exists.
- */
-#ifdef HAVE_NET_ROUTE_H
-# include <net/route.h>
-#endif /* HAVE_NET_ROUTE_H */
-
-/*
- * Actions to take if <sys/mbuf.h> exists.
- */
-#ifdef HAVE_SYS_MBUF_H
-# include <sys/mbuf.h>
-/*
- * OSF4 (DU-4.0) defines m_next and m_data also in <sys/mount.h> so I must
- # undefine them here to avoid conflicts.
- */
-# ifdef m_next
-# undef m_next
-# endif /* m_next */
-# ifdef m_data
-# undef m_data
-# endif /* m_data */
-/*
- * AIX 3 defines MFREE and m_flags also in <sys/mount.h>.
- */
-# ifdef m_flags
-# undef m_flags
-# endif /* m_flags */
-# ifdef MFREE
-# undef MFREE
-# endif /* MFREE */
-#endif /* HAVE_SYS_MBUF_H */
-
-/*
- * Actions to take if <sys/mman.h> exists.
- */
-#ifdef HAVE_SYS_MMAN_H
-# include <sys/mman.h>
-#endif /* HAVE_SYS_MMAN_H */
-
-/*
- * Actions to take if <netdb.h> exists.
- */
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif /* HAVE_NETDB_H */
-
-/*
- * Actions to take if <netdir.h> exists.
- */
-#ifdef HAVE_NETDIR_H
-# include <netdir.h>
-#endif /* HAVE_NETDIR_H */
-
-/*
- * Actions to take if <net/if_var.h> exists.
- */
-#ifdef HAVE_NET_IF_VAR_H
-# include <net/if_var.h>
-#endif /* HAVE_NET_IF_VAR_H */
-
-/*
- * Actions to take if <netinet/if_ether.h> exists.
- */
-#ifdef HAVE_NETINET_IF_ETHER_H
-# include <netinet/if_ether.h>
-#endif /* HAVE_NETINET_IF_ETHER_H */
-
-/*
- * Actions to take if <netinet/in.h> exists.
- */
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif /* HAVE_NETINET_IN_H */
-
-/*
- * Actions to take if <rpcsvc/yp_prot.h> exists.
- */
-#ifdef HAVE_RPCSVC_YP_PROT_H
-# ifdef HAVE_BAD_HEADERS
-/* avoid circular dependency in aix 4.3 with <rpcsvc/ypclnt.h> */
-struct ypall_callback;
-# endif /* HAVE_BAD_HEADERS */
-# include <rpcsvc/yp_prot.h>
-#endif /* HAVE_RPCSVC_YP_PROT_H */
-
-/*
- * Actions to take if <rpcsvc/ypclnt.h> exists.
- */
-#ifdef HAVE_RPCSVC_YPCLNT_H
-# include <rpcsvc/ypclnt.h>
-#endif /* HAVE_RPCSVC_YPCLNT_H */
-
-/*
- * Actions to take if <sys/ucred.h> exists.
- */
-#ifdef HAVE_SYS_UCRED_H
-# include <sys/ucred.h>
-#endif /* HAVE_SYS_UCRED_H */
-
-
-/*
- * Actions to take if <sys/mount.h> exists.
- */
-#ifdef HAVE_SYS_MOUNT_H
-/*
- * Some operating systems must define these variables to get
- * NFS and other definitions included.
- */
-# ifndef NFSCLIENT
-# define NFSCLIENT 1
-# endif /* not NFSCLIENT */
-# ifndef NFS
-# define NFS 1
-# endif /* not NFS */
-# ifndef PCFS
-# define PCFS 1
-# endif /* not PCFS */
-# ifndef LOFS
-# define LOFS 1
-# endif /* not LOFS */
-# ifndef RFS
-# define RFS 1
-# endif /* not RFS */
-# ifndef MSDOSFS
-# define MSDOSFS 1
-# endif /* not MSDOSFS */
-# ifndef MFS
-# define MFS 1
-# endif /* not MFS */
-# ifndef CD9660
-# define CD9660 1
-# endif /* not CD9660 */
-# include <sys/mount.h>
-#endif /* HAVE_SYS_MOUNT_H */
-
-#ifdef HAVE_SYS_VMOUNT_H
-# include <sys/vmount.h>
-#endif /* HAVE_SYS_VMOUNT_H */
-
-/*
- * Actions to take if <linux/fs.h> exists.
- * There is no point in including this on a glibc2 system,
- * we're only asking for trouble
- */
-#if defined HAVE_LINUX_FS_H && (!defined __GLIBC__ || __GLIBC__ < 2)
-/*
- * There are various conflicts in definitions between RedHat Linux, newer
- * 2.2 kernels, and <netinet/in.h> and <linux/fs.h>.
- */
-# ifdef HAVE_SOCKETBITS_H
-/* conflicts with <socketbits.h> */
-# define _LINUX_SOCKET_H
-# undef BLKFLSBUF
-# undef BLKGETSIZE
-# undef BLKRAGET
-# undef BLKRASET
-# undef BLKROGET
-# undef BLKROSET
-# undef BLKRRPART
-# undef MS_MGC_VAL
-# undef MS_RMT_MASK
-# if defined(__GLIBC__) && __GLIBC__ >= 2
-/* conflicts with <waitflags.h> */
-# undef WNOHANG
-# undef WUNTRACED
-# endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */
-/* conflicts with <statfsbuf.h> */
-# define _SYS_STATFS_H
-# endif /* HAVE_SOCKETBITS_H */
-
-# ifdef _SYS_WAIT_H
-# if defined(__GLIBC__) && __GLIBC__ >= 2
-/* conflicts with <bits/waitflags.h> (RedHat/Linux 6.0 and kernels 2.2 */
-# undef WNOHANG
-# undef WUNTRACED
-# endif /* defined(__GLIBC__) && __GLIBC__ >= 2 */
-# endif /* _SYS_WAIT_H */
-
-# ifdef HAVE_LINUX_POSIX_TYPES_H
-# include <linux/posix_types.h>
-# endif /* HAVE_LINUX_POSIX_TYPES_H */
-# ifndef _LINUX_BYTEORDER_GENERIC_H
-# define _LINUX_BYTEORDER_GENERIC_H
-# endif /* _LINUX_BYTEORDER_GENERIC_H */
-/* conflicts with <sys/mount.h> in 2.[12] kernels */
-# ifdef _SYS_MOUNT_H
-# undef BLKFLSBUF
-# undef BLKGETSIZE
-# undef BLKRAGET
-# undef BLKRASET
-# undef BLKROGET
-# undef BLKROSET
-# undef BLKRRPART
-# undef BLOCK_SIZE
-# undef MS_MANDLOCK
-# undef MS_MGC_VAL
-# undef MS_NOATIME
-# undef MS_NODEV
-# undef MS_NODIRATIME
-# undef MS_NOEXEC
-# undef MS_NOSUID
-# undef MS_RDONLY
-# undef MS_REMOUNT
-# undef MS_RMT_MASK
-# undef MS_SYNCHRONOUS
-# undef S_APPEND
-# undef S_IMMUTABLE
-/* conflicts with <statfsbuf.h> */
-# define _SYS_STATFS_H
-# endif /* _SYS_MOUNT_H */
-# ifndef _LINUX_STRING_H_
-# define _LINUX_STRING_H_
-# endif /* not _LINUX_STRING_H_ */
-# ifdef HAVE_LINUX_KDEV_T_H
-# define __KERNEL__
-# include <linux/kdev_t.h>
-# undef __KERNEL__
-# endif /* HAVE_LINUX_KDEV_T_H */
-# ifdef HAVE_LINUX_LIST_H
-# define __KERNEL__
-# include <linux/list.h>
-# undef __KERNEL__
-# endif /* HAVE_LINUX_LIST_H */
-# include <linux/fs.h>
-#endif /* HAVE_LINUX_FS_H && (!__GLIBC__ || __GLIBC__ < 2) */
-
-#ifdef HAVE_CDFS_CDFS_MOUNT_H
-# include <cdfs/cdfs_mount.h>
-#endif /* HAVE_CDFS_CDFS_MOUNT_H */
-
-#ifdef HAVE_CDFS_CDFSMOUNT_H
-# include <cdfs/cdfsmount.h>
-#endif /* HAVE_CDFS_CDFSMOUNT_H */
-
-/*
- * Actions to take if <linux/loop.h> exists.
- */
-#ifdef HAVE_LINUX_LOOP_H
-# ifdef HAVE_LINUX_POSIX_TYPES_H
-# include <linux/posix_types.h>
-# endif /* HAVE_LINUX_POSIX_TYPES_H */
-/* next dev_t lines needed due to changes in kernel code */
-# undef dev_t
-# define dev_t unsigned short /* compatible with Red Hat and SuSE */
-# include <linux/loop.h>
-#endif /* HAVE_LINUX_LOOP_H */
-
-/*
- * AUTOFS PROTOCOL HEADER FILES:
- */
-
-/*
- * Actions to take if <linux/auto_fs[4].h> exists.
- * We really don't want <linux/fs.h> pulled in here
- */
-#ifndef _LINUX_FS_H
-#define _LINUX_FS_H
-#endif /* _LINUX_FS_H */
-#ifdef HAVE_LINUX_AUTO_FS4_H
-# include <linux/auto_fs4.h>
-#else /* not HAVE_LINUX_AUTO_FS4_H */
-# ifdef HAVE_LINUX_AUTO_FS_H
-# include <linux/auto_fs.h>
-# endif /* HAVE_LINUX_AUTO_FS_H */
-#endif /* not HAVE_LINUX_AUTO_FS4_H */
-
-/*
- * Actions to take if <sys/fs/autofs.h> exists.
- */
-#ifdef HAVE_SYS_FS_AUTOFS_H
-# include <sys/fs/autofs.h>
-#endif /* HAVE_SYS_FS_AUTOFS_H */
-
-/*
- * Actions to take if <rpcsvc/autofs_prot.h> or <sys/fs/autofs_prot.h> exist.
- */
-#ifdef HAVE_RPCSVC_AUTOFS_PROT_H
-# include <rpcsvc/autofs_prot.h>
-#else /* not HAVE_RPCSVC_AUTOFS_PROT_H */
-# ifdef HAVE_SYS_FS_AUTOFS_PROT_H
-# include <sys/fs/autofs_prot.h>
-# endif /* HAVE_SYS_FS_AUTOFS_PROT_H */
-#endif /* not HAVE_RPCSVC_AUTOFS_PROT_H */
-
-/*
- * Actions to take if <lber.h> exists.
- * This header file is required before <ldap.h> can be included.
- */
-#ifdef HAVE_LBER_H
-# include <lber.h>
-#endif /* HAVE_LBER_H */
-
-/*
- * Actions to take if <ldap.h> exists.
- */
-#ifdef HAVE_LDAP_H
-# include <ldap.h>
-#endif /* HAVE_LDAP_H */
-
-/****************************************************************************
- ** IMPORTANT!!! **
- ** We always include am-utils' amu_autofs_prot.h. **
- ** That is actually defined in "conf/autofs/autofs_${autofs_style}.h" **
- ****************************************************************************/
-#include <amu_autofs_prot.h>
-
-
-/*
- * NFS PROTOCOL HEADER FILES:
- */
-
-/*
- * Actions to take if <nfs/export.h> exists.
- */
-#ifdef HAVE_NFS_EXPORT_H
-# include <nfs/export.h>
-#endif /* HAVE_NFS_EXPORT_H */
-
-/****************************************************************************
- ** IMPORTANT!!! **
- ** We always include am-utils' amu_nfs_prot.h. **
- ** That is actually defined in "conf/nfs_prot/nfs_prot_${host_os_name}.h" **
- ****************************************************************************/
-#include <amu_nfs_prot.h>
-
-/*
- * DO NOT INCLUDE THESE FILES:
- * They conflicts with other NFS headers and are generally not needed.
- */
-#ifdef DO_NOT_INCLUDE
-# ifdef HAVE_NFS_NFS_CLNT_H
-# include <nfs/nfs_clnt.h>
-# endif /* HAVE_NFS_NFS_CLNT_H */
-# ifdef HAVE_LINUX_NFS_H
-# include <linux/nfs.h>
-# endif /* HAVE_LINUX_NFS_H */
-#endif /* DO NOT INCLUDE */
-
-/*
- * Actions to take if one of the nfs headers exists.
- */
-#ifdef HAVE_NFS_NFS_GFS_H
-# include <nfs/nfs_gfs.h>
-#endif /* HAVE_NFS_NFS_GFS_H */
-#ifdef HAVE_NFS_MOUNT_H
-# include <nfs/mount.h>
-#endif /* HAVE_NFS_MOUNT_H */
-#ifdef HAVE_NFS_NFS_MOUNT_H_off
-/* broken on nextstep3 (includes non-existing headers) */
-# include <nfs/nfs_mount.h>
-#endif /* HAVE_NFS_NFS_MOUNT_H */
-#ifdef HAVE_NFS_PATHCONF_H
-# include <nfs/pathconf.h>
-#endif /* HAVE_NFS_PATHCONF_H */
-#ifdef HAVE_SYS_FS_NFS_MOUNT_H
-# include <sys/fs/nfs/mount.h>
-#endif /* HAVE_SYS_FS_NFS_MOUNT_H */
-#ifdef HAVE_SYS_FS_NFS_NFS_CLNT_H
-# include <sys/fs/nfs/nfs_clnt.h>
-#endif /* HAVE_SYS_FS_NFS_NFS_CLNT_H */
-#ifdef HAVE_SYS_FS_NFS_CLNT_H
-# include <sys/fs/nfs_clnt.h>
-#endif /* HAVE_SYS_FS_NFS_CLNT_H */
-
-/* complex rules for linux/nfs_mount.h: broken on so many systems */
-#ifdef HAVE_LINUX_NFS_MOUNT_H
-# ifndef _LINUX_NFS_H
-# define _LINUX_NFS_H
-# endif /* not _LINUX_NFS_H */
-# ifndef _LINUX_NFS2_H
-# define _LINUX_NFS2_H
-# endif /* not _LINUX_NFS2_H */
-# ifndef _LINUX_NFS3_H
-# define _LINUX_NFS3_H
-# endif /* not _LINUX_NFS3_H */
-# ifndef _LINUX_NFS_FS_H
-# define _LINUX_NFS_FS_H
-# endif /* not _LINUX_NFS_FS_H */
-# ifndef _LINUX_IN_H
-# define _LINUX_IN_H
-# endif /* not _LINUX_IN_H */
-# ifndef __KERNEL__
-# define __KERNEL__
-# endif /* __KERNEL__ */
-# include <linux/nfs_mount.h>
-# undef __KERNEL__
-#endif /* HAVE_LINUX_NFS_MOUNT_H */
-
-/*
- * Actions to take if <pwd.h> exists.
- */
-#ifdef HAVE_PWD_H
-# include <pwd.h>
-#endif /* HAVE_PWD_H */
-
-/*
- * Actions to take if <hesiod.h> exists.
- */
-#ifdef HAVE_HESIOD_H
-# include <hesiod.h>
-#endif /* HAVE_HESIOD_H */
-
-/*
- * Actions to take if <arpa/nameser.h> exists.
- * Should be included before <resolv.h>.
- */
-#ifdef HAVE_ARPA_NAMESER_H
-# ifdef NOERROR
-# undef NOERROR
-# endif /* NOERROR */
-/*
- * Conflicts with <sys/tpicommon.h> which is included from <sys/tiuser.h>
- * on Solaris 2.6 systems. So undefine it first.
- */
-# ifdef T_UNSPEC
-# undef T_UNSPEC
-# endif /* T_UNSPEC */
-# include <arpa/nameser.h>
-#endif /* HAVE_ARPA_NAMESER_H */
-
-/*
- * Actions to take if <arpa/inet.h> exists.
- */
-#ifdef HAVE_ARPA_INET_H
-# ifdef HAVE_BAD_HEADERS
-/* aix 4.3: avoid including <net/if_dl.h> */
-struct sockaddr_dl;
-# endif /* HAVE_BAD_HEADERS */
-# include <arpa/inet.h>
-#endif /* HAVE_ARPA_INET_H */
-
-/*
- * Actions to take if <resolv.h> exists.
- */
-#ifdef HAVE_RESOLV_H
-/*
- * On AIX 5.2, both <resolv.h> and <arpa/nameser_compat.h> define MAXDNAME,
- * if compiling with gcc -D_USE_IRS (so that we get extern definitions for
- * hstrerror() and others).
- */
-# if defined(_AIX) && defined(MAXDNAME) && defined(_USE_IRS)
-# undef MAXDNAME
-# endif /* defined(_AIX) && defined(MAXDNAME) && defined(_USE_IRS) */
-# include <resolv.h>
-#endif /* HAVE_RESOLV_H */
-
-/*
- * Actions to take if <sys/uio.h> exists.
- */
-#ifdef HAVE_SYS_UIO_H
-# include <sys/uio.h>
-#endif /* HAVE_SYS_UIO_H */
-
-/*
- * Actions to take if <sys/fs/cachefs_fs.h> exists.
- */
-#ifdef HAVE_SYS_FS_CACHEFS_FS_H
-# include <sys/fs/cachefs_fs.h>
-#endif /* HAVE_SYS_FS_CACHEFS_FS_H */
-
-/*
- * Actions to take if <sys/fs/pc_fs.h> exists.
- */
-#ifdef HAVE_SYS_FS_PC_FS_H
-# include <sys/fs/pc_fs.h>
-#endif /* HAVE_SYS_FS_PC_FS_H */
-
-/*
- * Actions to take if <msdosfs/msdosfsmount.h> exists.
- */
-#ifdef HAVE_MSDOSFS_MSDOSFSMOUNT_H
-# include <msdosfs/msdosfsmount.h>
-#endif /* HAVE_MSDOSFS_MSDOSFSMOUNT_H */
-#ifdef HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H
-# include <fs/msdosfs/msdosfsmount.h>
-#endif /* HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H */
-
-/*
- * Actions to take if <fs/msdosfs/msdosfsmount.h> exists.
- */
-#ifdef HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H
-# include <fs/msdosfs/msdosfsmount.h>
-#endif /* HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H */
-
-/*
- * Actions to take if <sys/fs/tmp.h> exists.
- */
-#ifdef HAVE_SYS_FS_TMP_H
-# include <sys/fs/tmp.h>
-#endif /* HAVE_SYS_FS_TMP_H */
-#ifdef HAVE_FS_TMPFS_TMPFS_ARGS_H
-# include <fs/tmpfs/tmpfs_args.h>
-#endif /* HAVE_FS_TMPFS_TMPFS_ARGS_H */
-
-
-/*
- * Actions to take if <sys/fs/ufs_mount.h> exists.
- */
-#ifdef HAVE_SYS_FS_UFS_MOUNT_H
-# include <sys/fs/ufs_mount.h>
-#endif /* HAVE_SYS_FS_UFS_MOUNT_H */
-/*
- * HAVE_UFS_UFS_UFSMOUNT_H should NOT be defined on netbsd/openbsd because it
- * causes errors with other header files. Instead, add it to the specific
- * conf/nfs_prot_*.h file.
- */
-#ifdef HAVE_UFS_UFS_UFSMOUNT_H
-# include <ufs/ufs/ufsmount.h>
-#endif /* HAVE_UFS_UFS_UFSMOUNT_H */
-
-/*
- * Actions to take if <sys/fs/efs_clnt.h> exists.
- */
-#ifdef HAVE_SYS_FS_EFS_CLNT_H
-# include <sys/fs/efs_clnt.h>
-#endif /* HAVE_SYS_FS_EFS_CLNT_H */
-#ifdef HAVE_FS_EFS_EFS_MOUNT_H
-# include <fs/efs/efs_mount.h>
-#endif /* HAVE_FS_EFS_EFS_MOUNT_H */
-
-/*
- * Actions to take if <sys/fs/xfs_clnt.h> exists.
- */
-#ifdef HAVE_SYS_FS_XFS_CLNT_H
-# include <sys/fs/xfs_clnt.h>
-#endif /* HAVE_SYS_FS_XFS_CLNT_H */
-
-/*
- * Actions to take if <assert.h> exists.
- */
-#ifdef HAVE_ASSERT_H
-# include <assert.h>
-#endif /* HAVE_ASSERT_H */
-
-/*
- * Actions to take if <cfs.h> exists.
- */
-#ifdef HAVE_CFS_H
-# include <cfs.h>
-#endif /* HAVE_CFS_H */
-
-/*
- * Actions to take if <cluster.h> exists.
- */
-#ifdef HAVE_CLUSTER_H
-# include <cluster.h>
-#endif /* HAVE_CLUSTER_H */
-
-/*
- * Actions to take if <ctype.h> exists.
- */
-#ifdef HAVE_CTYPE_H
-# include <ctype.h>
-#endif /* HAVE_CTYPE_H */
-
-/*
- * Actions to take if <errno.h> exists.
- */
-#ifdef HAVE_ERRNO_H
-# include <errno.h>
-#else
-/*
- * Actions to take if <sys/errno.h> exists.
- */
-# ifdef HAVE_SYS_ERRNO_H
-# include <sys/errno.h>
-extern int errno;
-# endif /* HAVE_SYS_ERRNO_H */
-#endif /* HAVE_ERRNO_H */
-
-/*
- * Actions to take if <grp.h> exists.
- */
-#ifdef HAVE_GRP_H
-# include <grp.h>
-#endif /* HAVE_GRP_H */
-
-/*
- * Actions to take if <hsfs/hsfs.h> exists.
- */
-#ifdef HAVE_HSFS_HSFS_H
-# include <hsfs/hsfs.h>
-#endif /* HAVE_HSFS_HSFS_H */
-
-/*
- * Actions to take if <cdfs/cdfsmount.h> exists.
- */
-#ifdef HAVE_CDFS_CDFSMOUNT_H
-# include <cdfs/cdfsmount.h>
-#endif /* HAVE_CDFS_CDFSMOUNT_H */
-
-/*
- * Actions to take if <isofs/cd9660/cd9660_mount.h> exists.
- */
-#ifdef HAVE_ISOFS_CD9660_CD9660_MOUNT_H
-# include <isofs/cd9660/cd9660_mount.h>
-#endif /* HAVE_ISOFS_CD9660_CD9660_MOUNT_H */
-
-/*
- * Actions to take if <fs/udf/udf_mount.h> exists.
- */
-#ifdef HAVE_FS_UDF_UDF_MOUNT_H
-# include <fs/udf/udf_mount.h>
-#endif /* HAVE_FS_UDF_UDF_MOUNT_H */
-
-/*
- * Actions to take if <mount.h> exists.
- */
-#ifdef HAVE_MOUNT_H
-# include <mount.h>
-#endif /* HAVE_MOUNT_H */
-
-/*
- * Actions to take if <nsswitch.h> exists.
- */
-#ifdef HAVE_NSSWITCH_H
-# include <nsswitch.h>
-#endif /* HAVE_NSSWITCH_H */
-
-/*
- * Actions to take if <rpc/auth_des.h> exists.
- */
-#ifdef HAVE_RPC_AUTH_DES_H
-# include <rpc/auth_des.h>
-#endif /* HAVE_RPC_AUTH_DES_H */
-
-/*
- * Actions to take if <rpc/pmap_clnt.h> exists.
- */
-#ifdef HAVE_RPC_PMAP_CLNT_H
-# include <rpc/pmap_clnt.h>
-#endif /* HAVE_RPC_PMAP_CLNT_H */
-
-/*
- * Actions to take if <rpc/pmap_prot.h> exists.
- */
-#ifdef HAVE_RPC_PMAP_PROT_H
-# include <rpc/pmap_prot.h>
-#endif /* HAVE_RPC_PMAP_PROT_H */
-
-
-/*
- * Actions to take if <rpcsvc/mount.h> exists.
- * AIX does not protect against this file doubly included,
- * so I have to do my own protection here.
- */
-#ifdef HAVE_RPCSVC_MOUNT_H
-# ifndef _RPCSVC_MOUNT_H
-# include <rpcsvc/mount.h>
-# endif /* not _RPCSVC_MOUNT_H */
-#endif /* HAVE_RPCSVC_MOUNT_H */
-
-/*
- * Actions to take if <rpcsvc/nis.h> exists.
- */
-#ifdef HAVE_RPCSVC_NIS_H
-/*
- * Solaris 10 (build 72) defines GROUP_OBJ in <sys/acl.h>, which is included
- * in many other header files. <rpcsvc/nis.h> uses GROUP_OBJ inside enum
- * zotypes. So if you're unlucky enough to include both headers, you get a
- * compile error because the two symbols conflict.
- * A similar conflict arises with Sun cc and the definition of "GROUP".
- *
- * Temp hack: undefine acl.h's GROUP_OBJ and GROUP because they're not needed
- * for am-utils.
- */
-# ifdef GROUP_OBJ
-# undef GROUP_OBJ
-# endif /* GROUP_OBJ */
-# ifdef GROUP
-# undef GROUP
-# endif /* GROUP */
-# include <rpcsvc/nis.h>
-#endif /* HAVE_RPCSVC_NIS_H */
-
-/*
- * Actions to take if <setjmp.h> exists.
- */
-#ifdef HAVE_SETJMP_H
-# include <setjmp.h>
-#endif /* HAVE_SETJMP_H */
-
-/*
- * Actions to take if <signal.h> exists.
- */
-#ifdef HAVE_SIGNAL_H
-# include <signal.h>
-#endif /* HAVE_SIGNAL_H */
-
-/*
- * Actions to take if <string.h> exists.
- */
-#ifdef HAVE_STRING_H
-# include <string.h>
-#endif /* HAVE_STRING_H */
-
-/*
- * Actions to take if <strings.h> exists.
- */
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif /* HAVE_STRINGS_H */
-
-/*
- * Actions to take if <sys/config.h> exists.
- */
-#ifdef HAVE_SYS_CONFIG_H
-# include <sys/config.h>
-#endif /* HAVE_SYS_CONFIG_H */
-
-/*
- * Actions to take if <sys/dg_mount.h> exists.
- */
-#ifdef HAVE_SYS_DG_MOUNT_H
-# include <sys/dg_mount.h>
-#endif /* HAVE_SYS_DG_MOUNT_H */
-
-/*
- * Actions to take if <sys/fs_types.h> exists.
- */
-#ifdef HAVE_SYS_FS_TYPES_H
-/*
- * Define KERNEL here to avoid multiple definitions of gt_names[] on
- * Ultrix 4.3.
- */
-# define KERNEL
-# include <sys/fs_types.h>
-# undef KERNEL
-#endif /* HAVE_SYS_FS_TYPES_H */
-
-/*
- * Actions to take if <sys/fstyp.h> exists.
- */
-#ifdef HAVE_SYS_FSTYP_H
-# include <sys/fstyp.h>
-#endif /* HAVE_SYS_FSTYP_H */
-
-/*
- * Actions to take if <sys/lock.h> exists.
- */
-#ifdef HAVE_SYS_LOCK_H
-# include <sys/lock.h>
-#endif /* HAVE_SYS_LOCK_H */
-
-/*
- * Actions to take if <sys/machine.h> exists.
- */
-#ifdef HAVE_SYS_MACHINE_H
-# include <sys/machine.h>
-#endif /* HAVE_SYS_MACHINE_H */
-
-/*
- * Actions to take if <sys/mntctl.h> exists.
- */
-#ifdef HAVE_SYS_MNTCTL_H
-# include <sys/mntctl.h>
-#endif /* HAVE_SYS_MNTCTL_H */
-
-/*
- * Actions to take if <sys/mnttab.h> exists.
- */
-#ifdef HAVE_SYS_MNTTAB_H
-# include <sys/mnttab.h>
-#endif /* HAVE_SYS_MNTTAB_H */
-
-/*
- * Actions to take if <mnttab.h> exists.
- * Do not include it if MNTTAB is already defined because it probably
- * came from <sys/mnttab.h> and we do not want conflicting definitions.
- */
-#if defined(HAVE_MNTTAB_H) && !defined(MNTTAB)
-# include <mnttab.h>
-#endif /* defined(HAVE_MNTTAB_H) && !defined(MNTTAB) */
-
-/*
- * Actions to take if <netconfig.h> exists.
- */
-#ifdef HAVE_NETCONFIG_H
-# include <netconfig.h>
-/* Some systems (Solaris 2.5.1) don't declare this external */
-extern char *nc_sperror(void);
-#endif /* HAVE_NETCONFIG_H */
-
-/*
- * Actions to take if <sys/netconfig.h> exists.
- */
-#ifdef HAVE_SYS_NETCONFIG_H
-# include <sys/netconfig.h>
-#endif /* HAVE_SYS_NETCONFIG_H */
-
-/*
- * Actions to take if <sys/pathconf.h> exists.
- */
-#ifdef HAVE_SYS_PATHCONF_H
-# include <sys/pathconf.h>
-#endif /* HAVE_SYS_PATHCONF_H */
-
-/*
- * Actions to take if <sys/resource.h> exists.
- */
-#ifdef HAVE_SYS_RESOURCE_H
-# include <sys/resource.h>
-#endif /* HAVE_SYS_RESOURCE_H */
-
-/*
- * Actions to take if <sys/sema.h> exists.
- */
-#ifdef HAVE_SYS_SEMA_H
-# include <sys/sema.h>
-#endif /* HAVE_SYS_SEMA_H */
-
-/*
- * Actions to take if <sys/signal.h> exists.
- */
-#ifdef HAVE_SYS_SIGNAL_H
-# include <sys/signal.h>
-#endif /* HAVE_SYS_SIGNAL_H */
-
-/*
- * Actions to take if <sys/sockio.h> exists.
- */
-#ifdef HAVE_SYS_SOCKIO_H
-# include <sys/sockio.h>
-#endif /* HAVE_SYS_SOCKIO_H */
-
-/*
- * Actions to take if <sys/syscall.h> exists.
- */
-#ifdef HAVE_SYS_SYSCALL_H
-# include <sys/syscall.h>
-#endif /* HAVE_SYS_SYSCALL_H */
-
-/*
- * Actions to take if <sys/syslimits.h> exists.
- */
-#ifdef HAVE_SYS_SYSLIMITS_H
-# include <sys/syslimits.h>
-#endif /* HAVE_SYS_SYSLIMITS_H */
-
-/*
- * Actions to take if <tiuser.h> exists.
- */
-#ifdef HAVE_TIUSER_H
-/*
- * Some systems like AIX have multiple definitions for T_NULL and others
- * that are defined first in <arpa/nameser.h>.
- */
-# ifdef HAVE_ARPA_NAMESER_H
-# ifdef T_NULL
-# undef T_NULL
-# endif /* T_NULL */
-# ifdef T_UNSPEC
-# undef T_UNSPEC
-# endif /* T_UNSPEC */
-# ifdef T_IDLE
-# undef T_IDLE
-# endif /* T_IDLE */
-# endif /* HAVE_ARPA_NAMESER_H */
-# include <tiuser.h>
-#endif /* HAVE_TIUSER_H */
-
-/*
- * Actions to take if <sys/tiuser.h> exists.
- */
-#ifdef HAVE_SYS_TIUSER_H
-# include <sys/tiuser.h>
-#endif /* HAVE_SYS_TIUSER_H */
-
-/*
- * Actions to take if <sys/statfs.h> exists.
- */
-#ifdef HAVE_SYS_STATFS_H
-# include <sys/statfs.h>
-#endif /* HAVE_SYS_STATFS_H */
-
-/*
- * Actions to take if <sys/statvfs.h> exists.
- */
-#ifdef HAVE_SYS_STATVFS_H
-# include <sys/statvfs.h>
-#endif /* HAVE_SYS_STATVFS_H */
-
-/*
- * Actions to take if <sys/vfs.h> exists.
- */
-#ifdef HAVE_SYS_VFS_H
-# include <sys/vfs.h>
-#endif /* HAVE_SYS_VFS_H */
-
-/*
- * Actions to take if <sys/vmount.h> exists.
- */
-#ifdef HAVE_SYS_VMOUNT_H
-# include <sys/vmount.h>
-#endif /* HAVE_SYS_VMOUNT_H */
-
-/*
- * Actions to take if <ufs/ufs_mount.h> exists.
- */
-#ifdef HAVE_UFS_UFS_MOUNT_H
-# include <ufs/ufs_mount.h>
-#endif /* HAVE_UFS_UFS_MOUNT_H */
-
-/*
- * Are S_ISDIR, S_ISREG, et al broken? If not, include <sys/stat.h>.
- * Turned off the not using sys/stat.h based on if the macros are
- * "broken", because they incorrectly get reported as broken on
- * ncr2.
- */
-#ifndef STAT_MACROS_BROKEN_notused
-/*
- * RedHat Linux 4.2 (alpha) has a problem in the headers that causes
- * duplicate definitions, and also some other nasty bugs. Upgrade to Redhat
- * 5.0!
- */
-# ifdef HAVE_SYS_STAT_H
-/* avoid duplicates or conflicts with <linux/stat.h> (RedHat alpha linux) */
-# if defined(S_IFREG) && defined(HAVE_STATBUF_H)
-# include <statbuf.h>
-# undef S_IFBLK
-# undef S_IFCHR
-# undef S_IFDIR
-# undef S_IFIFO
-# undef S_IFLNK
-# undef S_IFMT
-# undef S_IFREG
-# undef S_IFSOCK
-# undef S_IRGRP
-# undef S_IROTH
-# undef S_IRUSR
-# undef S_IRWXG
-# undef S_IRWXO
-# undef S_IRWXU
-# undef S_ISBLK
-# undef S_ISCHR
-# undef S_ISDIR
-# undef S_ISFIFO
-# undef S_ISGID
-# undef S_ISLNK
-# undef S_ISREG
-# undef S_ISSOCK
-# undef S_ISUID
-# undef S_ISVTX
-# undef S_IWGRP
-# undef S_IWOTH
-# undef S_IWUSR
-# undef S_IXGRP
-# undef S_IXOTH
-# undef S_IXUSR
-# endif /* defined(S_IFREG) && defined(HAVE_STATBUF_H) */
-# include <sys/stat.h>
-# endif /* HAVE_SYS_STAT_H */
-#endif /* not STAT_MACROS_BROKEN_notused */
-
-/*
- * Actions to take if <stdio.h> exists.
- */
-#ifdef HAVE_STDIO_H
-# include <stdio.h>
-#endif /* HAVE_STDIO_H */
-
-/*
- * Actions to take if <stdlib.h> exists.
- */
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif /* HAVE_STDLIB_H */
-
-/*
- * Actions to take if <regex.h> exists.
- */
-#ifdef HAVE_REGEX_H
-# include <regex.h>
-#endif /* HAVE_REGEX_H */
-
-/*
- * Actions to take if <tcpd.h> exists.
- */
-#if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP)
-# include <tcpd.h>
-#endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */
-
-
-/****************************************************************************/
-/*
- * Specific macros we're looking for.
- */
-#ifndef HAVE_MEMSET
-# ifdef HAVE_BZERO
-# define memset(ptr, val, len) bzero((ptr), (len))
-# else /* not HAVE_BZERO */
-# error Cannot find either memset or bzero!
-# endif /* not HAVE_BZERO */
-#endif /* not HAVE_MEMSET */
-
-#ifndef HAVE_MEMMOVE
-# ifdef HAVE_BCOPY
-# define memmove(to, from, len) bcopy((from), (to), (len))
-# else /* not HAVE_BCOPY */
-# error Cannot find either memmove or bcopy!
-# endif /* not HAVE_BCOPY */
-#endif /* not HAVE_MEMMOVE */
-
-/*
- * memcmp() is more problematic:
- * Systems that don't have it, but have bcmp(), will use bcmp() instead.
- * Those that have it, but it is bad (SunOS 4 doesn't handle
- * 8 bit comparisons correctly), will get to use am_memcmp().
- * Otherwise if you have memcmp() and it is good, use it.
- */
-#ifdef HAVE_MEMCMP
-# ifdef HAVE_BAD_MEMCMP
-# define memcmp am_memcmp
-extern int am_memcmp(const voidp s1, const voidp s2, size_t len);
-# endif /* HAVE_BAD_MEMCMP */
-#else /* not HAVE_MEMCMP */
-# ifdef HAVE_BCMP
-# define memcmp(a, b, len) bcmp((a), (b), (len))
-# endif /* HAVE_BCMP */
-#endif /* not HAVE_MEMCMP */
-
-#ifndef HAVE_SETEUID
-# ifdef HAVE_SETRESUID
-# define seteuid(x) setresuid(-1,(x),-1)
-# else /* not HAVE_SETRESUID */
-# error Cannot find either seteuid or setresuid!
-# endif /* not HAVE_SETRESUID */
-#endif /* not HAVE_SETEUID */
-
-/*
- * Define type of mntent_t.
- * Defaults to struct mntent, else struct mnttab. If neither is found, and
- * the operating system does keep not mount tables in the kernel, then flag
- * it as an error. If neither is found and the OS keeps mount tables in the
- * kernel, then define our own version of mntent; it will be needed for amd
- * to keep its own internal version of the mount tables.
- */
-#ifdef HAVE_STRUCT_MNTENT
-typedef struct mntent mntent_t;
-#else /* not HAVE_STRUCT_MNTENT */
-# ifdef HAVE_STRUCT_MNTTAB
-typedef struct mnttab mntent_t;
-/* map struct mnttab field names to struct mntent field names */
-# define mnt_fsname mnt_special
-# define mnt_dir mnt_mountp
-# define mnt_opts mnt_mntopts
-# define mnt_type mnt_fstype
-# else /* not HAVE_STRUCT_MNTTAB */
-# ifdef MOUNT_TABLE_ON_FILE
-# error Could not find definition for struct mntent or struct mnttab!
-# else /* not MOUNT_TABLE_ON_FILE */
-typedef struct _am_mntent {
- char *mnt_fsname; /* name of mounted file system */
- char *mnt_dir; /* file system path prefix */
- char *mnt_type; /* MNTTAB_TYPE_* */
- char *mnt_opts; /* MNTTAB_OPT_* */
- int mnt_freq; /* dump frequency, in days */
- int mnt_passno; /* pass number on parallel fsck */
-} mntent_t;
-# endif /* not MOUNT_TABLE_ON_FILE */
-# endif /* not HAVE_STRUCT_MNTTAB */
-#endif /* not HAVE_STRUCT_MNTENT */
-
-/*
- * Provide FD_* macros for systems that lack them.
- */
-#ifndef FD_SET
-# define FD_SET(fd, set) (*(set) |= (1 << (fd)))
-# define FD_ISSET(fd, set) (*(set) & (1 << (fd)))
-# define FD_CLR(fd, set) (*(set) &= ~(1 << (fd)))
-# define FD_ZERO(set) (*(set) = 0)
-#endif /* not FD_SET */
-
-
-/*
- * Complete external definitions missing from some systems.
- */
-
-#ifndef HAVE_EXTERN_SYS_ERRLIST
-extern const char *const sys_errlist[];
-#endif /* not HAVE_EXTERN_SYS_ERRLIST */
-
-#ifndef HAVE_EXTERN_OPTARG
-extern char *optarg;
-extern int optind;
-#endif /* not HAVE_EXTERN_OPTARG */
-
-#if defined(HAVE_CLNT_SPCREATEERROR) && !defined(HAVE_EXTERN_CLNT_SPCREATEERROR)
-extern char *clnt_spcreateerror(const char *s);
-#endif /* defined(HAVE_CLNT_SPCREATEERROR) && !defined(HAVE_EXTERN_CLNT_SPCREATEERROR) */
-
-#if defined(HAVE_CLNT_SPERRNO) && !defined(HAVE_EXTERN_CLNT_SPERRNO)
-extern char *clnt_sperrno(const enum clnt_stat num);
-#endif /* defined(HAVE_CLNT_SPERRNO) && !defined(HAVE_EXTERN_CLNT_SPERRNO) */
-
-#ifndef HAVE_EXTERN_FREE
-extern void free(voidp);
-#endif /* not HAVE_EXTERN_FREE */
-
-#if defined(HAVE_GET_MYADDRESS) && !defined(HAVE_EXTERN_GET_MYADDRESS)
-extern void get_myaddress(struct sockaddr_in *addr);
-#endif /* defined(HAVE_GET_MYADDRESS) && !defined(HAVE_EXTERN_GET_MYADDRESS) */
-
-#if defined(HAVE_GETDOMAINNAME) && !defined(HAVE_EXTERN_GETDOMAINNAME)
-# if defined(HAVE_MAP_NIS) || defined(HAVE_MAP_NISPLUS)
-extern int getdomainname(char *name, int namelen);
-# endif /* defined(HAVE_MAP_NIS) || defined(HAVE_MAP_NISPLUS) */
-#endif /* defined(HAVE_GETDOMAINNAME) && !defined(HAVE_EXTERN_GETDOMAINNAME) */
-
-#if defined(HAVE_GETDTABLESIZE) && !defined(HAVE_EXTERN_GETDTABLESIZE)
-extern int getdtablesize(void);
-#endif /* defined(HAVE_GETDTABLESIZE) && !defined(HAVE_EXTERN_GETDTABLESIZE) */
-
-#if defined(HAVE_GETHOSTNAME) && !defined(HAVE_EXTERN_GETHOSTNAME)
-extern int gethostname(char *name, int namelen);
-#endif /* defined(HAVE_GETHOSTNAME) && !defined(HAVE_EXTERN_GETHOSTNAME) */
-
-#ifndef HAVE_EXTERN_GETLOGIN
-extern char *getlogin(void);
-#endif /* not HAVE_EXTERN_GETLOGIN */
-
-#if defined(HAVE_GETPAGESIZE) && !defined(HAVE_EXTERN_GETPAGESIZE)
-extern int getpagesize(void);
-#endif /* defined(HAVE_GETPAGESIZE) && !defined(HAVE_EXTERN_GETPAGESIZE) */
-
-#ifndef HAVE_EXTERN_GETWD
-extern char *getwd(char *s);
-#endif /* not HAVE_EXTERN_GETWD */
-
-#if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) && !defined(HAVE_EXTERN_HOSTS_CTL)
-extern int hosts_ctl(char *daemon, char *client_name, char *client_addr, char *client_user);
-#endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) && !defined(HAVE_EXTERN_HOSTS_CTL) */
-
-#ifndef HAVE_EXTERN_INNETGR
-extern int innetgr(char *, char *, char *, char *);
-#endif /* not HAVE_EXTERN_INNETGR */
-
-#if defined(HAVE_MKSTEMP) && !defined(HAVE_EXTERN_MKSTEMP)
-extern int mkstemp(char *);
-#endif /* defined(HAVE_MKSTEMP) && !defined(HAVE_EXTERN_MKSTEMP) */
-
-#ifndef HAVE_EXTERN_SBRK
-extern caddr_t sbrk(int incr);
-#endif /* not HAVE_EXTERN_SBRK */
-
-#if defined(HAVE_SETEUID) && !defined(HAVE_EXTERN_SETEUID)
-extern int seteuid(uid_t euid);
-#endif /* not defined(HAVE_SETEUID) && !defined(HAVE_EXTERN_SETEUID) */
-
-#if defined(HAVE_SETITIMER) && !defined(HAVE_EXTERN_SETITIMER)
-extern int setitimer(int, struct itimerval *, struct itimerval *);
-#endif /* defined(HAVE_SETITIMER) && !defined(HAVE_EXTERN_SETITIMER) */
-
-#ifndef HAVE_EXTERN_SLEEP
-extern unsigned int sleep(unsigned int seconds);
-#endif /* not HAVE_EXTERN_SETITIMER */
-
-#ifndef HAVE_EXTERN_STRCASECMP
-/*
- * define this extern even if function does not exist, for it will
- * be filled in by libamu/strcasecmp.c
- */
-extern int strcasecmp(const char *s1, const char *s2);
-#endif /* not HAVE_EXTERN_STRCASECMP */
-
-#ifndef HAVE_EXTERN_STRLCAT
-/*
- * define this extern even if function does not exist, for it will
- * be filled in by libamu/strlcat.c
- */
-extern size_t strlcat(char *dst, const char *src, size_t siz);
-#endif /* not HAVE_EXTERN_STRLCAT */
-
-#ifndef HAVE_EXTERN_STRLCPY
-/*
- * define this extern even if function does not exist, for it will
- * be filled in by libamu/strlcpy.c
- */
-extern size_t strlcpy(char *dst, const char *src, size_t siz);
-#endif /* not HAVE_EXTERN_STRLCPY */
-
-#if defined(HAVE_STRSTR) && !defined(HAVE_EXTERN_STRSTR)
-extern char *strstr(const char *s1, const char *s2);
-#endif /* defined(HAVE_STRSTR) && !defined(HAVE_EXTERN_STRSTR) */
-
-#if defined(HAVE_USLEEP) && !defined(HAVE_EXTERN_USLEEP)
-extern int usleep(u_int useconds);
-#endif /* defined(HAVE_USLEEP) && !defined(HAVE_EXTERN_USLEEP) */
-
-#ifndef HAVE_EXTERN_UALARM
-extern u_int ualarm(u_int usecs, u_int interval);
-#endif /* not HAVE_EXTERN_UALARM */
-
-#if defined(HAVE_WAIT3) && !defined(HAVE_EXTERN_WAIT3)
-extern int wait3(int *statusp, int options, struct rusage *rusage);
-#endif /* defined(HAVE_WAIT3) && !defined(HAVE_EXTERN_WAIT3) */
-
-#if defined(HAVE_VSNPRINTF) && !defined(HAVE_EXTERN_VSNPRINTF)
-extern int vsnprintf(char *, int, const char *, ...);
-#endif /* defined(HAVE_VSNPRINTF) && !defined(HAVE_EXTERN_VSNPRINTF) */
-
-#ifndef HAVE_EXTERN_XDR_CALLMSG
-extern bool_t xdr_callmsg(XDR *xdrs, struct rpc_msg *msg);
-#endif /* not HAVE_EXTERN_XDR_CALLMSG */
-
-#ifndef HAVE_EXTERN_XDR_OPAQUE_AUTH
-extern bool_t xdr_opaque_auth(XDR *xdrs, struct opaque_auth *auth);
-#endif /* not HAVE_EXTERN_XDR_OPAQUE_AUTH */
-
-/****************************************************************************/
-/*
- * amd-specific header files.
- */
-#ifdef THIS_HEADER_FILE_IS_INCLUDED_ABOVE
-# include <amu_nfs_prot.h>
-#endif /* THIS_HEADER_FILE_IS_INCLUDED_ABOVE */
-#include <am_compat.h>
-#include <am_xdr_func.h>
-#include <am_utils.h>
-#include <amq_defs.h>
-#include <aux_conf.h>
-
-
-/****************************************************************************/
-/*
- * External definitions that depend on other macros available (or not)
- * and those are probably declared in any of the above headers.
- */
-
-#ifdef HAVE_HASMNTOPT
-# ifdef HAVE_BAD_HASMNTOPT
-extern char *amu_hasmntopt(mntent_t *mnt, char *opt);
-# else /* not HAVE_BAD_HASMNTOPT */
-# define amu_hasmntopt hasmntopt
-# endif /* not HAVE_BAD_HASMNTOPT */
-#else /* not HAVE_HASMNTOPT */
-extern char *amu_hasmntopt(mntent_t *mnt, char *opt);
-#endif /* not HAVE_HASMNTOPT */
-
-#endif /* not _AM_DEFS_H */
diff --git a/contrib/amd/include/am_utils.h b/contrib/amd/include/am_utils.h
deleted file mode 100644
index 0de881ad8c85..000000000000
--- a/contrib/amd/include/am_utils.h
+++ /dev/null
@@ -1,536 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/include/am_utils.h
- *
- */
-
-/*
- * Definitions that are specific to the am-utils package.
- */
-
-#ifndef _AM_UTILS_H
-#define _AM_UTILS_H
-
-
-#include "aux_conf.h"
-
-/**************************************************************************/
-/*** MACROS ***/
-/**************************************************************************/
-
-/*
- * General macros.
- */
-#ifndef FALSE
-# define FALSE 0
-#endif /* not FALSE */
-#ifndef TRUE
-# define TRUE 1
-#endif /* not TRUE */
-#ifndef MAX
-# define MAX(a, b) ((a) > (b) ? (a) : (b))
-#endif /* not MAX */
-#ifndef MIN
-# define MIN(a, b) ((a) < (b) ? (a) : (b))
-#endif /* not MIN */
-
-#define ONE_HOUR (60 * 60) /* One hour in seconds */
-
-#ifndef MAXHOSTNAMELEN
-# ifdef HOSTNAMESZ
-# define MAXHOSTNAMELEN HOSTNAMESZ
-# else /* not HOSTNAMESZ */
-# define MAXHOSTNAMELEN 256
-# endif /* not HOSTNAMESZ */
-#endif /* not MAXHOSTNAMELEN */
-
-/*
- * for hlfsd, and amd for detecting uid/gid
- */
-#ifndef INVALIDID
-/* this is also defined in include/am_utils.h */
-# define INVALIDID (((unsigned short) ~0) - 3)
-#endif /* not INVALIDID */
-
-/*
- * String comparison macros
- */
-#define STREQ(s1, s2) (strcmp((s1), (s2)) == 0)
-#define STRCEQ(s1, s2) (strcasecmp((s1), (s2)) == 0)
-#define NSTREQ(s1, s2, n) (strncmp((s1), (s2), (n)) == 0)
-#define NSTRCEQ(s1, s2, n) (strncasecmp((s1), (s2), (n)) == 0)
-#define FSTREQ(s1, s2) ((*(s1) == *(s2)) && STREQ((s1),(s2)))
-
-/*
- * Logging options/flags
- */
-#define XLOG_FATAL 0x0001
-#define XLOG_ERROR 0x0002
-#define XLOG_USER 0x0004
-#define XLOG_WARNING 0x0008
-#define XLOG_INFO 0x0010
-#define XLOG_DEBUG 0x0020
-#define XLOG_MAP 0x0040
-#define XLOG_STATS 0x0080
-/* log option compositions */
-#define XLOG_MASK 0x00ff /* mask for all flags */
-#define XLOG_MANDATORY (XLOG_FATAL|XLOG_ERROR) /* cannot turn these off */
-#define XLOG_ALL (XLOG_FATAL|XLOG_ERROR|XLOG_USER|XLOG_WARNING|XLOG_INFO|XLOG_MAP|XLOG_STATS)
-/* default: fatal + error + user + warning + info */
-#define XLOG_DEFAULT (XLOG_MASK & (XLOG_ALL & ~XLOG_MAP & ~XLOG_STATS))
-
-/* default: no logging options */
-
-#define NO_SUBNET "notknown" /* default subnet name for no subnet */
-#define NEXP_AP (1022) /* gdmr: was 254 */
-#define NEXP_AP_MARGIN (128) /* ???? not used */
-
-/*
- * Linked list macros
- */
-#define AM_FIRST(ty, q) ((ty *) ((q)->q_forw))
-#define AM_LAST(ty, q) ((ty *) ((q)->q_back))
-#define NEXT(ty, q) ((ty *) (((qelem *) q)->q_forw))
-#define PREV(ty, q) ((ty *) (((qelem *) q)->q_back))
-#define HEAD(ty, q) ((ty *) q)
-#define ITER(v, ty, q) \
- for ((v) = AM_FIRST(ty,(q)); (v) != HEAD(ty,(q)); (v) = NEXT(ty,(v)))
-
-/* allocate anything of type ty */
-#define ALLOC(ty) ((ty *) xmalloc(sizeof(ty)))
-#define CALLOC(ty) ((ty *) xzalloc(sizeof(ty)))
-/* simply allocate b bytes */
-#define SALLOC(b) xmalloc((b))
-
-/*
- * Systems which have the mount table in a file need to read it before
- * they can perform an unmount() system call.
- */
-#define UMOUNT_FS(dir, mtb_name, unmount_flags) umount_fs(dir, mtb_name, unmount_flags)
-/* next two are imported via $srcdir/conf/umount/umount_*.c */
-extern int umount_fs(char *mntdir, const char *mnttabname, u_int unmount_flags);
-#ifdef MNT2_GEN_OPT_FORCE
-extern int umount2_fs(const char *mntdir, u_int unmount_flags);
-#endif /* MNT2_GEN_OPT_FORCE */
-
-/* unmount-related flags (special handling of autofs, forced/lazy, etc.) */
-#define AMU_UMOUNT_FORCE 0x1
-#define AMU_UMOUNT_DETACH 0x2
-#define AMU_UMOUNT_AUTOFS 0x4
-
-/*
- * The following values can be tuned...
- */
-#define ALLOWED_MOUNT_TIME 40 /* 40s for a mount */
-
-/*
- * RPC-related macros.
- */
-#define RPC_XID_PORTMAP 0
-#define RPC_XID_MOUNTD 1
-#define RPC_XID_NFSPING 2
-#define RPC_XID_WEBNFS 3
-#define RPC_XID_MASK (0x0f) /* 16 id's for now */
-#define MK_RPC_XID(type_id, uniq) ((type_id) | ((uniq) << 4))
-
-/*
- * What level of AMD are we backward compatible with?
- * This only applies to externally visible characteristics.
- * Rev.Minor.Branch.Patch (2 digits each)
- */
-#define AMD_COMPAT 5000000 /* 5.0 */
-
-
-/**************************************************************************/
-/*** STRUCTURES AND TYPEDEFS ***/
-/**************************************************************************/
-
-/* some typedefs must come first */
-typedef char *amq_string;
-typedef struct _qelem qelem;
-typedef struct mntlist mntlist;
-
-/*
- * Linked list
- * (the name 'struct qelem' conflicts with linux's unistd.h)
- */
-struct _qelem {
- qelem *q_forw;
- qelem *q_back;
-};
-
-/*
- * Option tables
- */
-struct opt_tab {
- char *opt;
- int flag;
-};
-
-/*
- * Server states
- */
-typedef enum {
- Start,
- Run,
- Finishing,
- Quit,
- Done
-} serv_state;
-
-
-/*
- * List of mount table entries
- */
-struct mntlist {
- struct mntlist *mnext;
- mntent_t *mnt;
-};
-
-/*
- * Mount map
- */
-typedef struct mnt_map mnt_map;
-
-
-/**************************************************************************/
-/*** EXTERNALS ***/
-/**************************************************************************/
-
-/*
- * Useful constants
- */
-extern char *mnttab_file_name; /* Mount table */
-extern char *cpu; /* "CPU type" */
-extern char *endian; /* "big" */
-extern char *hostdomain; /* "southseas.nz" */
-extern char copyright[]; /* Copyright info */
-extern char version[]; /* Version info */
-
-/*
- * Global variables.
- */
-extern AUTH *nfs_auth; /* Dummy authorization for remote servers */
-extern FILE *logfp; /* Log file */
-extern SVCXPRT *nfsxprt;
-extern char *PrimNetName; /* Name of primary connected network */
-extern char *PrimNetNum; /* Name of primary connected network */
-extern char *SubsNetName; /* Name of subsidiary connected network */
-extern char *SubsNetNum; /* Name of subsidiary connected network */
-
-extern void am_set_progname(char *pn); /* "amd" */
-extern const char *am_get_progname(void); /* "amd" */
-extern void am_set_hostname(char *hn);
-extern const char *am_get_hostname(void);
-extern pid_t am_set_mypid(void);
-extern pid_t am_mypid;
-
-extern int foreground; /* Foreground process */
-extern int orig_umask; /* umask() on startup */
-extern serv_state amd_state; /* Should we go now */
-extern struct in_addr myipaddr; /* (An) IP address of this host */
-extern struct opt_tab xlog_opt[];
-extern u_short nfs_port; /* Our NFS service port */
-
-/*
- * Global routines
- */
-extern CLIENT *get_mount_client(char *unused_host, struct sockaddr_in *sin, struct timeval *tv, int *sock, u_long mnt_version);
-extern RETSIGTYPE sigchld(int);
-extern bool_t xdr_amq_string(XDR *xdrs, amq_string *objp);
-extern bool_t xdr_dirpath(XDR *xdrs, dirpath *objp);
-extern char **strsplit(char *, int, int);
-extern char *expand_selectors(char *);
-extern char *get_version_string(void);
-extern char *inet_dquad(char *, size_t, u_long);
-extern char *print_wires(void);
-extern char *str3cat(char *, char *, char *, char *);
-extern char *strvcat(const char *, ...);
-extern char *strealloc(char *, char *);
-extern char *strip_selectors(char *, char *);
-extern char *strnsave(const char *, int);
-extern int amu_close(int fd);
-extern int bind_resv_port(int, u_short *);
-extern int cmdoption(char *, struct opt_tab *, u_int *);
-extern int compute_automounter_mount_flags(mntent_t *);
-extern int compute_mount_flags(mntent_t *);
-extern void discard_nfs_args(void *, u_long);
-extern u_long get_amd_program_number(void);
-extern int getcreds(struct svc_req *, uid_t *, gid_t *, SVCXPRT *);
-extern int hasmntval(mntent_t *, char *);
-extern unsigned int hasmntvalerr(mntent_t *, char *, int *);
-extern char *hasmntstr(mntent_t *, char *);
-extern char *hasmnteq(mntent_t *, char *);
-extern char *haseq(char *);
-extern int is_network_member(const char *net);
-extern int is_interface_local(u_long);
-extern int islocalnet(u_long);
-extern int make_rpc_packet(char *, int, u_long, struct rpc_msg *, voidp, XDRPROC_T_TYPE, AUTH *);
-extern int mkdirs(char *, int);
-extern int mount_fs(mntent_t *, int, caddr_t, int, MTYPE_TYPE, u_long, const char *, const char *, int);
-extern void nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp);
-extern void nfs_program_3(struct svc_req *rqstp, SVCXPRT *transp);
-#define get_nfs_dispatcher_version(a) \
- ((a) == nfs_program_2 ? NFS_VERSION : NFS_VERSION3)
-extern int pickup_rpc_reply(voidp, int, voidp, XDRPROC_T_TYPE);
-extern int switch_option(char *);
-extern int switch_to_logfile(char *logfile, int orig_umask, int truncate_log);
-extern mntlist *read_mtab(char *, const char *);
-#ifndef HAVE_TRANSPORT_TYPE_TLI
-extern struct sockaddr_in *amu_svc_getcaller(SVCXPRT *xprt);
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-extern time_t time(time_t *);
-extern void amu_get_myaddress(struct in_addr *iap, const char *preferred_localhost);
-extern void amu_release_controlling_tty(void);
-extern void compute_automounter_nfs_args(nfs_args_t *nap, mntent_t *mntp);
-extern void discard_mntlist(mntlist *mp);
-extern void free_mntlist(mntlist *);
-extern void getwire(char **name1, char **number1);
-extern void going_down(int);
-extern void mnt_free(mntent_t *);
-extern void plog(int, const char *,...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-extern void rmdirs(char *);
-extern void rpc_msg_init(struct rpc_msg *, u_long, u_long, u_long);
-extern void set_amd_program_number(u_long program);
-extern void show_opts(int ch, struct opt_tab *);
-extern void unregister_amq(void);
-extern voidp xmalloc(int);
-extern voidp xrealloc(voidp, int);
-extern voidp xzalloc(int);
-extern char *xstrdup(const char *);
-extern int check_pmap_up(char *host, struct sockaddr_in* sin);
-extern u_long get_nfs_version(char *host, struct sockaddr_in *sin, u_long nfs_version, const char *proto, u_long def);
-extern int nfs_valid_version(u_long vers);
-extern long get_server_pid(void);
-extern void setup_sighandler(int signum, void (*handler)(int));
-extern time_t clocktime(nfstime *nt);
-
-#if defined(DEBUG) && (defined(HAVE_C99_VARARGS_MACROS) || defined(HAVE_GCC_VARARGS_MACROS))
-# ifdef HAVE_C99_VARARGS_MACROS
-#define xsnprintf(str,size,fmt,...) _xsnprintf(__FILE__,__LINE__,(str),(size),(fmt),__VA_ARGS__)
-# endif /* HAVE_C99_VARARGS_MACROS */
-# ifdef HAVE_GCC_VARARGS_MACROS
-#define xsnprintf(str,size,fmt,args...) _xsnprintf(__FILE__,__LINE__,(str),(size),(fmt),args)
-# endif /* HAVE_GCC_VARARGS_MACROS */
-extern int _xsnprintf(const char *filename, int lineno, char *str, size_t size, const char *format, ...);
-#define xvsnprintf(str,size,fmt,ap) _xvsnprintf(__FILE__,__LINE__,(str),(size),(fmt),(ap))
-extern int _xvsnprintf(const char *filename, int lineno, char *str, size_t size, const char *format, va_list ap);
-#else /* not DEBUG or no C99/GCC-style vararg cpp macros supported */
-extern int xsnprintf(char *str, size_t size, const char *format, ...);
-extern int xvsnprintf(char *str, size_t size, const char *format, va_list ap);
-#endif /* not DEBUG or no C99/GCC-style vararg cpp macros supported */
-
-#ifdef DEBUG
-extern void _xstrlcat(const char *filename, int lineno, char *dst, const char *src, size_t len);
-# define xstrlcat(d,s,l) _xstrlcat(__FILE__,__LINE__,(d),(s),(l))
-extern void _xstrlcpy(const char *filename, int lineno, char *dst, const char *src, size_t len);
-# define xstrlcpy(d,s,l) _xstrlcpy(__FILE__,__LINE__,(d),(s),(l))
-#else /* not DEBUG */
-extern void xstrlcat(char *dst, const char *src, size_t len);
-extern void xstrlcpy(char *dst, const char *src, size_t len);
-#endif /* not DEBUG */
-
-#ifdef MOUNT_TABLE_ON_FILE
-extern void rewrite_mtab(mntlist *, const char *);
-extern void unlock_mntlist(void);
-extern void write_mntent(mntent_t *, const char *);
-#endif /* MOUNT_TABLE_ON_FILE */
-
-#if defined(HAVE_SYSLOG_H) || defined(HAVE_SYS_SYSLOG_H)
-extern int syslogging;
-#endif /* defined(HAVE_SYSLOG_H) || defined(HAVE_SYS_SYSLOG_H) */
-
-extern void compute_nfs_args(void *nap, mntent_t *mntp, int genflags, struct netconfig *nfsncp, struct sockaddr_in *ip_addr, u_long nfs_version, char *nfs_proto, am_nfs_handle_t *fhp, char *host_name, char *fs_name);
-extern void destroy_nfs_args(void *nap, u_long nfs_version);
-extern int create_amq_service(int *udp_soAMQp, SVCXPRT **udp_amqpp, struct netconfig **udp_amqncpp, int *tcp_soAMQp, SVCXPRT **tcp_amqpp, struct netconfig **tcp_amqncpp, u_short preferred_amq_port);
-extern int create_nfs_service(int *soNFSp, u_short *nfs_portp, SVCXPRT **nfs_xprtp, void (*dispatch_fxn)(struct svc_req *rqstp, SVCXPRT *transp), u_long nfs_version);
-extern int amu_svc_register(SVCXPRT *, u_long, u_long, void (*)(struct svc_req *, SVCXPRT *), u_long, struct netconfig *);
-
-#ifdef HAVE_TRANSPORT_TYPE_TLI
-
-extern int get_knetconfig(struct knetconfig **kncpp, struct netconfig *in_ncp, char *nc_protoname);
-extern struct netconfig *nfsncp;
-extern void free_knetconfig(struct knetconfig *kncp);
-
-#endif /* HAVE_TRANSPORT_TYPE_TLI */
-
-#ifdef HAVE_FS_AUTOFS
-extern int register_autofs_service(char *autofs_conftype, void (*autofs_dispatch)(struct svc_req *rqstp, SVCXPRT *xprt));
-extern int unregister_autofs_service(char *autofs_conftype);
-#endif /* HAVE_FS_AUTOFS */
-
-
-#ifndef HAVE_STRUCT_FHSTATUS_FHS_FH
-# define fhs_fh fhstatus_u.fhs_fhandle
-#endif /* not HAVE_STRUCT_FHSTATUS_FHS_FH */
-
-
-/*
- * Network File System: the old faithful generation NFS V.2
- */
-#ifndef NFS_VERSION2
-# define NFS_VERSION2 ((u_int) 2)
-#endif /* not NFS_VERSION2 */
-
-/*
- * Network File System: the not so new anymore generation NFS V.3
- */
-#ifdef HAVE_FS_NFS3
-# ifndef NFS_VERSION3
-# define NFS_VERSION3 ((u_int) 3)
-# endif /* not NFS_VERSION3 */
-#endif /* HAVE_FS_NFS3 */
-
-/*
- * Network File System: the new generation NFS V.4
- */
-#ifdef HAVE_FS_NFS4
-# ifndef NFS_VERSION4
-# define NFS_VERSION4 ((u_int) 4)
-# endif /* not NFS_VERSION4 */
-#endif /* HAVE_FS_NFS4 */
-
-/**************************************************************************/
-/*** DEBUGGING ***/
-/**************************************************************************/
-
-/*
- * DEBUGGING:
- */
-
-#ifdef DEBUG
-
-# define D_DAEMON 0x0001 /* Enter daemon mode */
-# define D_TRACE 0x0002 /* Do protocol trace */
-# define D_FULL 0x0004 /* Do full trace */
-# define D_MTAB 0x0008 /* Use local mtab */
-# define D_AMQ 0x0010 /* Register amq program */
-# define D_STR 0x0020 /* Debug string munging */
-# ifdef DEBUG_MEM
-# define D_MEM 0x0040 /* Trace memory allocations */
-# else /* not DEBUG_MEM */
-# define D_MEM 0x0000 /* Dummy */
-# endif /* not DEBUG_MEM */
-# define D_FORK 0x0080 /* Fork server (hlfsd only) */
-# define D_INFO 0x0100 /* info service specific debugging (hesiod, nis, etc) */
-# define D_HRTIME 0x0200 /* Print high resolution time stamps */
-# define D_XDRTRACE 0x0400 /* Trace xdr routines */
-# define D_READDIR 0x0800 /* Show browsable_dir progress */
-/* debug option compositions */
-# define D_MASK 0x0fff /* mask of known flags */
-# define D_BASIC (D_TRACE|D_FULL|D_STR|D_MEM|D_INFO|D_XDRTRACE|D_READDIR)
-# define D_CONTROL (D_DAEMON|D_AMQ|D_FORK)
-/* immutable flags: cannot be changed via "amq -D" */
-# define D_IMMUTABLE (D_MTAB | D_CONTROL)
-# define D_ALL (D_BASIC | D_CONTROL)
-# define D_DEFAULT (D_MASK & D_ALL & ~D_XDRTRACE)
-/* test mode: nodaemon, noamq, nofork, (local) mtab */
-# define D_TEST (D_BASIC | D_MTAB)
-
-# define amuDebug(x) (debug_flags & (x))
-# define dlog if (amuDebug(D_FULL)) dplog
-
-/* my favorite debugging tool -Erez */
-#define EZKDBG plog(XLOG_INFO,"EZK:%s:%s:%d\n",__FILE__,__FUNCTION__,__LINE__)
-
-# ifdef DEBUG_MEM
-/*
- * If debugging memory, then call a special freeing function that logs
- * more info, and resets the pointer to NULL so it cannot be used again.
- */
-# define XFREE(x) dxfree(__FILE__,__LINE__,x)
-extern void dxfree(char *file, int line, voidp ptr);
-extern void malloc_verify(void);
-# else /* not DEBUG_MEM */
-/*
- * If regular debugging, then free the pointer and reset to NULL.
- * This should remain so for as long as am-utils is in alpha/beta testing.
- */
-# define XFREE(x) do { free((voidp)x); x = NULL;} while (0)
-# endif /* not DEBUG_MEM */
-
-/* functions that depend solely on debugging */
-extern void print_nfs_args(const void *, u_long nfs_version);
-extern int debug_option (char *opt);
-extern void dplog(const char *fmt, ...)
- __attribute__ ((__format__ (__printf__, 1, 2)));
-
-#else /* not DEBUG */
-
-/* set dummy flags to zero */
-# define D_DAEMON 0x0001 /* Enter daemon mode */
-# define D_TRACE 0x0000 /* dummy: Do protocol trace */
-# define D_FULL 0x0000 /* dummy: Do full trace */
-# define D_MTAB 0x0000 /* dummy: Use local mtab */
-# define D_AMQ 0x0010 /* Register amq program */
-# define D_STR 0x0000 /* dummy: Debug string munging */
-# define D_MEM 0x0000 /* dummy: Trace memory allocations */
-# define D_FORK 0x0080 /* Fork server (hlfsd only) */
-# define D_INFO 0x0000 /* dummy: info service debugging */
-# define D_HRTIME 0x0000 /* dummy: hi-res time stamps */
-# define D_XDRTRACE 0x0000 /* dummy: Trace xdr routines */
-# define D_READDIR 0x0000 /* dummy: browsable_dir progress */
-# define D_CONTROL (D_DAEMON|D_AMQ|D_FORK)
-# define amuDebug(x) (debug_flags & (x))
-/*
- * If not debugging, then also reset the pointer.
- * It's safer -- and besides, free() should do that anyway.
- */
-# define XFREE(x) do { free((voidp)x); x = NULL;} while (0)
-
-# if defined(HAVE_GCC_VARARGS_MACROS)
-# define dlog(fmt...)
-# elif defined(HAVE_C99_VARARGS_MACROS)
-# define dlog(...)
-# else /* no c99 varargs */
-/* this define means that we CCP leaves code behind the (list,of,args) */
-# define dlog
-# endif /* no c99 varargs */
-
-# define print_nfs_args(nap, nfs_version)
-# define debug_option(x) (1)
-
-#endif /* not DEBUG */
-
-extern u_int debug_flags; /* Debug options */
-extern struct opt_tab dbg_opt[];
-
-/**************************************************************************/
-/*** MISC (stuff left to autoconfiscate) ***/
-/**************************************************************************/
-
-#endif /* not _AM_UTILS_H */
diff --git a/contrib/amd/include/am_xdr_func.h b/contrib/amd/include/am_xdr_func.h
deleted file mode 100644
index 3659942ecb6a..000000000000
--- a/contrib/amd/include/am_xdr_func.h
+++ /dev/null
@@ -1,1330 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/include/am_xdr_func.h
- *
- */
-
-#ifdef HAVE_FS_NFS3
-
-#define AM_MOUNTVERS3 ((unsigned long)(3))
-
-#define AM_FHSIZE3 64 /* size in bytes of a file handle (v3) */
-#define AM_NFS3_WRITEVERFSIZE 8
-#define AM_NFS3_CREATEVERFSIZE 8
-#define AM_NFS3_COOKIEVERFSIZE 8
-#define AM_ACCESS3_READ 0x0001
-#define AM_ACCESS3_LOOKUP 0x0002
-#define AM_ACCESS3_MODIFY 0x0004
-#define AM_ACCESS3_EXTEND 0x0008
-#define AM_ACCESS3_DELETE 0x0010
-#define AM_ACCESS3_EXECUTE 0x0020
-#define AM_FSF3_LINK 0x0001
-#define AM_FSF3_SYMLINK 0x0002
-#define AM_FSF3_HOMOGENEOUS 0x0008
-#define AM_FSF3_CANSETTIME 0x0010
-
-typedef char am_cookieverf3[AM_NFS3_COOKIEVERFSIZE];
-
-typedef uint64 am_cookie3;
-
-/* NFSv3 handle */
-struct am_nfs_fh3 {
- u_int am_fh3_length;
- char am_fh3_data[AM_FHSIZE3];
-};
-typedef struct am_nfs_fh3 am_nfs_fh3;
-
-#define AM_NFSPROC3_LOOKUP ((u_long) 3)
-enum am_nfsstat3 {
- AM_NFS3_OK = 0,
- AM_NFS3ERR_PERM = 1,
- AM_NFS3ERR_NOENT = 2,
- AM_NFS3ERR_IO = 5,
- AM_NFS3ERR_NXIO = 6,
- AM_NFS3ERR_ACCES = 13,
- AM_NFS3ERR_EXIST = 17,
- AM_NFS3ERR_XDEV = 18,
- AM_NFS3ERR_NODEV = 19,
- AM_NFS3ERR_NOTDIR = 20,
- AM_NFS3ERR_ISDIR = 21,
- AM_NFS3ERR_INVAL = 22,
- AM_NFS3ERR_FBIG = 27,
- AM_NFS3ERR_NOSPC = 28,
- AM_NFS3ERR_ROFS = 30,
- AM_NFS3ERR_MLINK = 31,
- AM_NFS3ERR_NAMETOOLONG = 63,
- AM_NFS3ERR_NOTEMPTY = 66,
- AM_NFS3ERR_DQUOT = 69,
- AM_NFS3ERR_STALE = 70,
- AM_NFS3ERR_REMOTE = 71,
- AM_NFS3ERR_BADHANDLE = 10001,
- AM_NFS3ERR_NOT_SYNC = 10002,
- AM_NFS3ERR_BAD_COOKIE = 10003,
- AM_NFS3ERR_NOTSUPP = 10004,
- AM_NFS3ERR_TOOSMALL = 10005,
- AM_NFS3ERR_SERVERFAULT = 10006,
- AM_NFS3ERR_BADTYPE = 10007,
- AM_NFS3ERR_JUKEBOX = 10008
-};
-typedef enum am_nfsstat3 am_nfsstat3;
-
-typedef struct {
- u_int fhandle3_len;
- char *fhandle3_val;
-} am_fhandle3;
-
-enum am_mountstat3 {
- AM_MNT3_OK = 0,
- AM_MNT3ERR_PERM = 1,
- AM_MNT3ERR_NOENT = 2,
- AM_MNT3ERR_IO = 5,
- AM_MNT3ERR_ACCES = 13,
- AM_MNT3ERR_NOTDIR = 20,
- AM_MNT3ERR_INVAL = 22,
- AM_MNT3ERR_NAMETOOLONG = 63,
- AM_MNT3ERR_NOTSUPP = 10004,
- AM_MNT3ERR_SERVERFAULT = 10006
-};
-typedef enum am_mountstat3 am_mountstat3;
-
-struct am_mountres3_ok {
- am_fhandle3 fhandle;
- struct {
- u_int auth_flavors_len;
- int *auth_flavors_val;
- } auth_flavors;
-};
-typedef struct am_mountres3_ok am_mountres3_ok;
-
-struct am_mountres3 {
- am_mountstat3 fhs_status;
- union {
- am_mountres3_ok mountinfo;
- } mountres3_u;
-};
-typedef struct am_mountres3 am_mountres3;
-
-typedef char *am_filename3;
-
-struct am_diropargs3 {
- am_nfs_fh3 dir;
- am_filename3 name;
-};
-typedef struct am_diropargs3 am_diropargs3;
-
-enum am_ftype3 {
- AM_NF3REG = 1,
- AM_NF3DIR = 2,
- AM_NF3BLK = 3,
- AM_NF3CHR = 4,
- AM_NF3LNK = 5,
- AM_NF3SOCK = 6,
- AM_NF3FIFO = 7,
-};
-typedef enum am_ftype3 am_ftype3;
-
-typedef u_int am_mode3;
-
-typedef u_int am_uid3;
-
-typedef u_int am_gid3;
-
-typedef uint64 am_size3;
-
-typedef uint64 am_fileid3;
-
-struct am_specdata3 {
- u_int specdata1;
- u_int specdata2;
-};
-typedef struct am_specdata3 am_specdata3;
-
-struct am_nfstime3 {
- u_int seconds;
- u_int nseconds;
-};
-typedef struct am_nfstime3 am_nfstime3;
-
-struct am_fattr3 {
- am_ftype3 type;
- am_mode3 mode;
- u_int nlink;
- am_uid3 uid;
- am_gid3 gid;
- am_size3 size;
- am_size3 used;
- am_specdata3 rdev;
- uint64 fsid;
- am_fileid3 fileid;
- am_nfstime3 atime;
- am_nfstime3 mtime;
- am_nfstime3 ctime;
-};
-typedef struct am_fattr3 am_fattr3;
-
-struct am_post_op_attr {
- bool_t attributes_follow;
- union {
- am_fattr3 attributes;
- } am_post_op_attr_u;
-};
-typedef struct am_post_op_attr am_post_op_attr;
-
-enum am_stable_how {
- AM_UNSTABLE = 0,
- AM_DATA_SYNC = 1,
- AM_FILE_SYNC = 2,
-};
-typedef enum am_stable_how am_stable_how;
-
-typedef uint64 am_offset3;
-
-typedef u_int am_count3;
-
-struct am_wcc_attr {
- am_size3 size;
- am_nfstime3 mtime;
- am_nfstime3 ctime;
-};
-typedef struct am_wcc_attr am_wcc_attr;
-
-struct am_pre_op_attr {
- bool_t attributes_follow;
- union {
- am_wcc_attr attributes;
- } am_pre_op_attr_u;
-};
-typedef struct am_pre_op_attr am_pre_op_attr;
-
-struct am_wcc_data {
- am_pre_op_attr before;
- am_post_op_attr after;
-};
-typedef struct am_wcc_data am_wcc_data;
-
-struct am_WRITE3args {
- am_nfs_fh3 file;
- am_offset3 offset;
- am_count3 count;
- am_stable_how stable;
- struct {
- u_int data_len;
- char *data_val;
- } data;
-};
-typedef struct am_WRITE3args am_WRITE3args;
-
-typedef char am_writeverf3[AM_NFS3_WRITEVERFSIZE];
-
-struct am_WRITE3resok {
- am_wcc_data file_wcc;
- am_count3 count;
- am_stable_how committed;
- am_writeverf3 verf;
-};
-typedef struct am_WRITE3resok am_WRITE3resok;
-
-struct am_WRITE3resfail {
- am_wcc_data file_wcc;
-};
-typedef struct am_WRITE3resfail am_WRITE3resfail;
-
-struct am_WRITE3res {
- am_nfsstat3 status;
- union {
- am_WRITE3resok ok;
- am_WRITE3resfail fail;
- } res_u;
-};
-typedef struct am_WRITE3res am_WRITE3res;
-
-struct am_LOOKUP3args {
- am_diropargs3 what;
-};
-typedef struct am_LOOKUP3args am_LOOKUP3args;
-
-struct am_LOOKUP3resok {
- am_nfs_fh3 object;
- am_post_op_attr obj_attributes;
- am_post_op_attr dir_attributes;
-};
-typedef struct am_LOOKUP3resok am_LOOKUP3resok;
-
-struct am_LOOKUP3resfail {
- am_post_op_attr dir_attributes;
-};
-typedef struct am_LOOKUP3resfail am_LOOKUP3resfail;
-
-struct am_LOOKUP3res {
- am_nfsstat3 status;
- union {
- am_LOOKUP3resok ok;
- am_LOOKUP3resfail fail;
- } res_u;
-};
-typedef struct am_LOOKUP3res am_LOOKUP3res;
-
-struct am_COMMIT3args {
- am_nfs_fh3 file;
- am_offset3 offset;
- am_count3 count;
-};
-typedef struct am_COMMIT3args am_COMMIT3args;
-
-struct am_COMMIT3resok {
- am_wcc_data file_wcc;
- am_writeverf3 verf;
-};
-typedef struct am_COMMIT3resok am_COMMIT3resok;
-
-struct am_COMMIT3resfail {
- am_wcc_data file_wcc;
-};
-typedef struct am_COMMIT3resfail am_COMMIT3resfail;
-
-struct am_COMMIT3res {
- am_nfsstat3 status;
- union {
- am_COMMIT3resok ok;
- am_COMMIT3resfail fail;
- } res_u;
-};
-typedef struct am_COMMIT3res am_COMMIT3res;
-
-struct am_ACCESS3args {
- am_nfs_fh3 object;
- u_int access;
-};
-typedef struct am_ACCESS3args am_ACCESS3args;
-
-struct am_ACCESS3resok {
- am_post_op_attr obj_attributes;
- u_int access;
-};
-typedef struct am_ACCESS3resok am_ACCESS3resok;
-
-struct am_ACCESS3resfail {
- am_post_op_attr obj_attributes;
-};
-typedef struct am_ACCESS3resfail am_ACCESS3resfail;
-
-struct am_ACCESS3res {
- am_nfsstat3 status;
- union {
- am_ACCESS3resok ok;
- am_ACCESS3resfail fail;
- } res_u;
-};
-typedef struct am_ACCESS3res am_ACCESS3res;
-
-struct am_GETATTR3args {
- am_nfs_fh3 object;
-};
-typedef struct am_GETATTR3args am_GETATTR3args;
-
-struct am_GETATTR3resok {
- am_fattr3 obj_attributes;
-};
-typedef struct am_GETATTR3resok am_GETATTR3resok;
-
-struct am_GETATTR3res {
- am_nfsstat3 status;
- union {
- am_GETATTR3resok ok;
- } res_u;
-};
-typedef struct am_GETATTR3res am_GETATTR3res;
-
-enum am_time_how {
- AM_DONT_CHANGE = 0,
- AM_SET_TO_SERVER_TIME = 1,
- AM_SET_TO_CLIENT_TIME = 2,
-};
-typedef enum am_time_how am_time_how;
-
-struct am_set_mode3 {
- bool_t set_it;
- union {
- am_mode3 mode;
- } am_set_mode3_u;
-};
-typedef struct am_set_mode3 am_set_mode3;
-
-struct am_set_uid3 {
- bool_t set_it;
- union {
- am_uid3 uid;
- } am_set_uid3_u;
-};
-typedef struct am_set_uid3 am_set_uid3;
-
-struct am_set_gid3 {
- bool_t set_it;
- union {
- am_gid3 gid;
- } am_set_gid3_u;
-};
-typedef struct am_set_gid3 am_set_gid3;
-
-struct am_set_size3 {
- bool_t set_it;
- union {
- am_size3 size;
- } am_set_size3_u;
-};
-typedef struct am_set_size3 am_set_size3;
-
-struct am_set_atime {
- am_time_how set_it;
- union {
- am_nfstime3 atime;
- } am_set_atime_u;
-};
-typedef struct am_set_atime am_set_atime;
-
-struct am_set_mtime {
- am_time_how set_it;
- union {
- am_nfstime3 mtime;
- } am_set_mtime_u;
-};
-typedef struct am_set_mtime am_set_mtime;
-
-struct am_sattr3 {
- am_set_mode3 mode;
- am_set_uid3 uid;
- am_set_gid3 gid;
- am_set_size3 size;
- am_set_atime atime;
- am_set_mtime mtime;
-};
-typedef struct am_sattr3 am_sattr3;
-
-enum am_createmode3 {
- AM_UNCHECKED = 0,
- AM_GUARDED = 1,
- AM_EXCLUSIVE = 2,
-};
-typedef enum am_createmode3 am_createmode3;
-
-typedef char am_createverf3[AM_NFS3_CREATEVERFSIZE];
-
-struct am_createhow3 {
- am_createmode3 mode;
- union {
- am_sattr3 obj_attributes;
- am_sattr3 g_obj_attributes;
- am_createverf3 verf;
- } am_createhow3_u;
-};
-typedef struct am_createhow3 am_createhow3;
-
-struct am_CREATE3args {
- am_diropargs3 where;
- am_createhow3 how;
-};
-typedef struct am_CREATE3args am_CREATE3args;
-
-struct am_post_op_fh3 {
- bool_t handle_follows;
- union {
- am_nfs_fh3 handle;
- } am_post_op_fh3_u;
-};
-typedef struct am_post_op_fh3 am_post_op_fh3;
-
-struct am_CREATE3resok {
- am_post_op_fh3 obj;
- am_post_op_attr obj_attributes;
- am_wcc_data dir_wcc;
-};
-typedef struct am_CREATE3resok am_CREATE3resok;
-
-struct am_CREATE3resfail {
- am_wcc_data dir_wcc;
-};
-typedef struct am_CREATE3resfail am_CREATE3resfail;
-
-struct am_CREATE3res {
- am_nfsstat3 status;
- union {
- am_CREATE3resok ok;
- am_CREATE3resfail fail;
- } res_u;
-};
-typedef struct am_CREATE3res am_CREATE3res;
-
-struct am_REMOVE3args {
- am_diropargs3 object;
-};
-typedef struct am_REMOVE3args am_REMOVE3args;
-
-struct am_REMOVE3resok {
- am_wcc_data dir_wcc;
-};
-typedef struct am_REMOVE3resok am_REMOVE3resok;
-
-struct am_REMOVE3resfail {
- am_wcc_data dir_wcc;
-};
-typedef struct am_REMOVE3resfail am_REMOVE3resfail;
-
-struct am_REMOVE3res {
- am_nfsstat3 status;
- union {
- am_REMOVE3resok ok;
- am_REMOVE3resfail fail;
- } res_u;
-};
-typedef struct am_REMOVE3res am_REMOVE3res;
-
-struct am_READ3args {
- am_nfs_fh3 file;
- am_offset3 offset;
- am_count3 count;
-};
-typedef struct am_READ3args am_READ3args;
-
-struct am_READ3resok {
- am_post_op_attr file_attributes;
- am_count3 count;
- bool_t eof;
- struct {
- u_int data_len;
- char *data_val;
- } data;
-};
-typedef struct am_READ3resok am_READ3resok;
-
-struct am_READ3resfail {
- am_post_op_attr file_attributes;
-};
-typedef struct am_READ3resfail am_READ3resfail;
-
-struct am_READ3res {
- am_nfsstat3 status;
- union {
- am_READ3resok ok;
- am_READ3resfail fail;
- } res_u;
-};
-typedef struct am_READ3res am_READ3res;
-
-struct am_FSINFO3args {
- am_nfs_fh3 fsroot;
-};
-typedef struct am_FSINFO3args am_FSINFO3args;
-
-struct am_FSINFO3resok {
- am_post_op_attr obj_attributes;
- u_int rtmax;
- u_int rtpref;
- u_int rtmult;
- u_int wtmax;
- u_int wtpref;
- u_int wtmult;
- u_int dtpref;
- am_size3 maxfilesize;
- am_nfstime3 time_delta;
- u_int properties;
-};
-typedef struct am_FSINFO3resok am_FSINFO3resok;
-
-struct am_FSINFO3resfail {
- am_post_op_attr obj_attributes;
-};
-typedef struct am_FSINFO3resfail am_FSINFO3resfail;
-
-struct am_FSINFO3res {
- am_nfsstat3 status;
- union {
- am_FSINFO3resok ok;
- am_FSINFO3resfail fail;
- } res_u;
-};
-typedef struct am_FSINFO3res am_FSINFO3res;
-
-struct am_FSSTAT3args {
- am_nfs_fh3 fsroot;
-};
-typedef struct am_FSSTAT3args am_FSSTAT3args;
-
-struct am_FSSTAT3resok {
- am_post_op_attr obj_attributes;
- am_size3 tbytes;
- am_size3 fbytes;
- am_size3 abytes;
- am_size3 tfiles;
- am_size3 ffiles;
- am_size3 afiles;
- u_int invarsec;
-};
-typedef struct am_FSSTAT3resok am_FSSTAT3resok;
-
-struct am_FSSTAT3resfail {
- am_post_op_attr obj_attributes;
-};
-typedef struct am_FSSTAT3resfail am_FSSTAT3resfail;
-
-struct am_FSSTAT3res {
- am_nfsstat3 status;
- union {
- am_FSSTAT3resok ok;
- am_FSSTAT3resfail fail;
- } res_u;
-};
-typedef struct am_FSSTAT3res am_FSSTAT3res;
-
-struct am_PATHCONF3args {
- am_nfs_fh3 object;
-};
-typedef struct am_PATHCONF3args am_PATHCONF3args;
-
-struct am_PATHCONF3resok {
- am_post_op_attr obj_attributes;
- u_int linkmax;
- u_int name_max;
- bool_t no_trunc;
- bool_t chown_restricted;
- bool_t case_insensitive;
- bool_t case_preserving;
-};
-typedef struct am_PATHCONF3resok am_PATHCONF3resok;
-
-struct am_PATHCONF3resfail {
- am_post_op_attr obj_attributes;
-};
-typedef struct am_PATHCONF3resfail am_PATHCONF3resfail;
-
-struct am_PATHCONF3res {
- am_nfsstat3 status;
- union {
- am_PATHCONF3resok ok;
- am_PATHCONF3resfail fail;
- } res_u;
-};
-typedef struct am_PATHCONF3res am_PATHCONF3res;
-
-typedef char *am_nfspath3;
-
-struct am_symlinkdata3 {
- am_sattr3 symlink_attributes;
- am_nfspath3 symlink_data;
-};
-typedef struct am_symlinkdata3 am_symlinkdata3;
-
-struct am_SYMLINK3args {
- am_diropargs3 where;
- am_symlinkdata3 symlink;
-};
-typedef struct am_SYMLINK3args am_SYMLINK3args;
-
-struct am_SYMLINK3resok {
- am_post_op_fh3 obj;
- am_post_op_attr obj_attributes;
- am_wcc_data dir_wcc;
-};
-typedef struct am_SYMLINK3resok am_SYMLINK3resok;
-
-struct am_SYMLINK3resfail {
- am_wcc_data dir_wcc;
-};
-typedef struct am_SYMLINK3resfail am_SYMLINK3resfail;
-
-struct am_SYMLINK3res {
- am_nfsstat3 status;
- union {
- am_SYMLINK3resok ok;
- am_SYMLINK3resfail fail;
- } res_u;
-};
-typedef struct am_SYMLINK3res am_SYMLINK3res;
-
-struct am_READLINK3args {
- am_nfs_fh3 symlink;
-};
-typedef struct am_READLINK3args am_READLINK3args;
-
-struct am_READLINK3resok {
- am_post_op_attr symlink_attributes;
- am_nfspath3 data;
-};
-typedef struct am_READLINK3resok am_READLINK3resok;
-
-struct am_READLINK3resfail {
- am_post_op_attr symlink_attributes;
-};
-typedef struct am_READLINK3resfail am_READLINK3resfail;
-
-struct am_READLINK3res {
- am_nfsstat3 status;
- union {
- am_READLINK3resok ok;
- am_READLINK3resfail fail;
- } res_u;
-};
-typedef struct am_READLINK3res am_READLINK3res;
-
-struct am_devicedata3 {
- am_sattr3 dev_attributes;
- am_specdata3 spec;
-};
-typedef struct am_devicedata3 am_devicedata3;
-
-struct am_mknoddata3 {
- am_ftype3 type;
- union {
- am_devicedata3 chr_device;
- am_devicedata3 blk_device;
- am_sattr3 sock_attributes;
- am_sattr3 pipe_attributes;
- } am_mknoddata3_u;
-};
-typedef struct am_mknoddata3 am_mknoddata3;
-
-struct am_MKNOD3args {
- am_diropargs3 where;
- am_mknoddata3 what;
-};
-typedef struct am_MKNOD3args am_MKNOD3args;
-
-struct am_MKNOD3resok {
- am_post_op_fh3 obj;
- am_post_op_attr obj_attributes;
- am_wcc_data dir_wcc;
-};
-typedef struct am_MKNOD3resok am_MKNOD3resok;
-
-struct am_MKNOD3resfail {
- am_wcc_data dir_wcc;
-};
-typedef struct am_MKNOD3resfail am_MKNOD3resfail;
-
-struct am_MKNOD3res {
- am_nfsstat3 status;
- union {
- am_MKNOD3resok ok;
- am_MKNOD3resfail fail;
- } res_u;
-};
-typedef struct am_MKNOD3res am_MKNOD3res;
-
-struct am_MKDIR3args {
- am_diropargs3 where;
- am_sattr3 attributes;
-};
-typedef struct am_MKDIR3args am_MKDIR3args;
-
-struct am_MKDIR3resok {
- am_post_op_fh3 obj;
- am_post_op_attr obj_attributes;
- am_wcc_data dir_wcc;
-};
-typedef struct am_MKDIR3resok am_MKDIR3resok;
-
-struct am_MKDIR3resfail {
- am_wcc_data dir_wcc;
-};
-typedef struct am_MKDIR3resfail am_MKDIR3resfail;
-
-struct am_MKDIR3res {
- am_nfsstat3 status;
- union {
- am_MKDIR3resok ok;
- am_MKDIR3resfail fail;
- } res_u;
-};
-typedef struct am_MKDIR3res am_MKDIR3res;
-
-struct am_RMDIR3args {
- am_diropargs3 object;
-};
-typedef struct am_RMDIR3args am_RMDIR3args;
-
-struct am_RMDIR3resok {
- am_wcc_data dir_wcc;
-};
-typedef struct am_RMDIR3resok am_RMDIR3resok;
-
-struct am_RMDIR3resfail {
- am_wcc_data dir_wcc;
-};
-typedef struct am_RMDIR3resfail am_RMDIR3resfail;
-
-struct am_RMDIR3res {
- am_nfsstat3 status;
- union {
- am_RMDIR3resok ok;
- am_RMDIR3resfail fail;
- } res_u;
-};
-typedef struct am_RMDIR3res am_RMDIR3res;
-
-struct am_RENAME3args {
- am_diropargs3 from;
- am_diropargs3 to;
-};
-typedef struct am_RENAME3args am_RENAME3args;
-
-struct am_RENAME3resok {
- am_wcc_data fromdir_wcc;
- am_wcc_data todir_wcc;
-};
-typedef struct am_RENAME3resok am_RENAME3resok;
-
-struct am_RENAME3resfail {
- am_wcc_data fromdir_wcc;
- am_wcc_data todir_wcc;
-};
-typedef struct am_RENAME3resfail am_RENAME3resfail;
-
-struct am_RENAME3res {
- am_nfsstat3 status;
- union {
- am_RENAME3resok ok;
- am_RENAME3resfail fail;
- } res_u;
-};
-typedef struct am_RENAME3res am_RENAME3res;
-
-struct am_READDIRPLUS3args {
- am_nfs_fh3 dir;
- am_cookie3 cookie;
- am_cookieverf3 cookieverf;
- am_count3 dircount;
- am_count3 maxcount;
-};
-typedef struct am_READDIRPLUS3args am_READDIRPLUS3args;
-
-struct am_entryplus3 {
- am_fileid3 fileid;
- am_filename3 name;
- am_cookie3 cookie;
- am_post_op_attr name_attributes;
- am_post_op_fh3 name_handle;
- struct am_entryplus3 *nextentry;
-};
-typedef struct am_entryplus3 am_entryplus3;
-
-struct am_dirlistplus3 {
- am_entryplus3 *entries;
- bool_t eof;
-};
-typedef struct am_dirlistplus3 am_dirlistplus3;
-
-struct am_READDIRPLUS3resok {
- am_post_op_attr dir_attributes;
- am_cookieverf3 cookieverf;
- am_dirlistplus3 reply;
-};
-typedef struct am_READDIRPLUS3resok am_READDIRPLUS3resok;
-
-struct am_READDIRPLUS3resfail {
- am_post_op_attr dir_attributes;
-};
-typedef struct am_READDIRPLUS3resfail am_READDIRPLUS3resfail;
-
-struct am_READDIRPLUS3res {
- am_nfsstat3 status;
- union {
- am_READDIRPLUS3resok ok;
- am_READDIRPLUS3resfail fail;
- } res_u;
-};
-typedef struct am_READDIRPLUS3res am_READDIRPLUS3res;
-
-struct am_READDIR3args {
- am_nfs_fh3 dir;
- am_cookie3 cookie;
- am_cookieverf3 cookieverf;
- am_count3 count;
-};
-typedef struct am_READDIR3args am_READDIR3args;
-
-struct am_entry3 {
- am_fileid3 fileid;
- am_filename3 name;
- am_cookie3 cookie;
- struct am_entry3 *nextentry;
-};
-typedef struct am_entry3 am_entry3;
-
-struct am_dirlist3 {
- am_entry3 *entries;
- bool_t eof;
-};
-typedef struct am_dirlist3 am_dirlist3;
-
-struct am_READDIR3resok {
- am_post_op_attr dir_attributes;
- am_cookieverf3 cookieverf;
- am_dirlist3 reply;
-};
-typedef struct am_READDIR3resok am_READDIR3resok;
-
-struct am_READDIR3resfail {
- am_post_op_attr dir_attributes;
-};
-typedef struct am_READDIR3resfail am_READDIR3resfail;
-
-struct am_READDIR3res {
- am_nfsstat3 status;
- union {
- am_READDIR3resok ok;
- am_READDIR3resfail fail;
- } res_u;
-};
-typedef struct am_READDIR3res am_READDIR3res;
-
-struct am_LINK3args {
- am_nfs_fh3 file;
- am_diropargs3 link;
-};
-typedef struct am_LINK3args am_LINK3args;
-
-struct am_LINK3resok {
- am_post_op_attr file_attributes;
- am_wcc_data linkdir_wcc;
-};
-typedef struct am_LINK3resok am_LINK3resok;
-
-struct am_LINK3resfail {
- am_post_op_attr file_attributes;
- am_wcc_data linkdir_wcc;
-};
-typedef struct am_LINK3resfail am_LINK3resfail;
-
-struct am_LINK3res {
- am_nfsstat3 status;
- union {
- am_LINK3resok ok;
- am_LINK3resfail fail;
- } res_u;
-};
-typedef struct am_LINK3res am_LINK3res;
-
-struct am_sattrguard3 {
- bool_t check;
- union {
- am_nfstime3 obj_ctime;
- } am_sattrguard3_u;
-};
-typedef struct am_sattrguard3 am_sattrguard3;
-
-struct am_SETATTR3args {
- am_nfs_fh3 object;
- am_sattr3 new_attributes;
- am_sattrguard3 guard;
-};
-typedef struct am_SETATTR3args am_SETATTR3args;
-
-struct am_SETATTR3resok {
- am_wcc_data obj_wcc;
-};
-typedef struct am_SETATTR3resok am_SETATTR3resok;
-
-struct am_SETATTR3resfail {
- am_wcc_data obj_wcc;
-};
-typedef struct am_SETATTR3resfail am_SETATTR3resfail;
-
-struct am_SETATTR3res {
- am_nfsstat3 status;
- union {
- am_SETATTR3resok ok;
- am_SETATTR3resfail fail;
- } res_u;
-};
-typedef struct am_SETATTR3res am_SETATTR3res;
-#endif /* HAVE_FS_NFS3 */
-
-/*
- * Multi-protocol NFS file handle
- */
-union am_nfs_handle {
- /* placeholder for V4 file handle */
-#ifdef HAVE_FS_NFS3
- am_nfs_fh3 v3; /* NFS version 3 handle */
-#endif /* HAVE_FS_NFS3 */
- am_nfs_fh v2; /* NFS version 2 handle */
-};
-typedef union am_nfs_handle am_nfs_handle_t;
-
-
-/*
- * Definitions of all possible xdr functions that are otherwise
- * not defined elsewhere.
- */
-
-#ifndef _AM_XDR_FUNC_H
-#define _AM_XDR_FUNC_H
-
-#ifndef HAVE_XDR_ATTRSTAT
-bool_t xdr_attrstat(XDR *xdrs, nfsattrstat *objp);
-#endif /* not HAVE_XDR_ATTRSTAT */
-#ifndef HAVE_XDR_CREATEARGS
-bool_t xdr_createargs(XDR *xdrs, nfscreateargs *objp);
-#endif /* not HAVE_XDR_CREATEARGS */
-#ifndef HAVE_XDR_DIRLIST
-bool_t xdr_dirlist(XDR *xdrs, nfsdirlist *objp);
-#endif /* not HAVE_XDR_DIRLIST */
-#ifndef HAVE_XDR_DIROPARGS
-bool_t xdr_diropargs(XDR *xdrs, nfsdiropargs *objp);
-#endif /* not HAVE_XDR_DIROPARGS */
-#ifndef HAVE_XDR_DIROPOKRES
-bool_t xdr_diropokres(XDR *xdrs, nfsdiropokres *objp);
-#endif /* not HAVE_XDR_DIROPOKRES */
-#ifndef HAVE_XDR_DIROPRES
-bool_t xdr_diropres(XDR *xdrs, nfsdiropres *objp);
-#endif /* not HAVE_XDR_DIROPRES */
-#ifndef HAVE_XDR_DIRPATH
-bool_t xdr_dirpath(XDR *xdrs, dirpath *objp);
-#endif /* not HAVE_XDR_DIRPATH */
-#ifndef HAVE_XDR_ENTRY
-bool_t xdr_entry(XDR *xdrs, nfsentry *objp);
-#endif /* not HAVE_XDR_ENTRY */
-#ifndef HAVE_XDR_EXPORTNODE
-bool_t xdr_exportnode(XDR *xdrs, exportnode *objp);
-#endif /* not HAVE_XDR_EXPORTNODE */
-#ifndef HAVE_XDR_EXPORTS
-bool_t xdr_exports(XDR *xdrs, exports *objp);
-#endif /* not HAVE_XDR_EXPORTS */
-#ifndef HAVE_XDR_FATTR
-bool_t xdr_fattr(XDR *xdrs, nfsfattr *objp);
-#endif /* not HAVE_XDR_FATTR */
-#ifndef HAVE_XDR_FHANDLE
-bool_t xdr_fhandle(XDR *xdrs, fhandle objp);
-#endif /* not HAVE_XDR_FHANDLE */
-#ifndef HAVE_XDR_FHSTATUS
-bool_t xdr_fhstatus(XDR *xdrs, fhstatus *objp);
-#endif /* not HAVE_XDR_FHSTATUS */
-#ifndef HAVE_XDR_FILENAME
-bool_t xdr_filename(XDR *xdrs, filename *objp);
-#endif /* not HAVE_XDR_FILENAME */
-#ifndef HAVE_XDR_FTYPE
-bool_t xdr_ftype(XDR *xdrs, nfsftype *objp);
-#endif /* not HAVE_XDR_FTYPE */
-#ifndef HAVE_XDR_GROUPNODE
-bool_t xdr_groupnode(XDR *xdrs, groupnode *objp);
-#endif /* not HAVE_XDR_GROUPNODE */
-#ifndef HAVE_XDR_GROUPS
-bool_t xdr_groups(XDR *xdrs, groups *objp);
-#endif /* not HAVE_XDR_GROUPS */
-#ifndef HAVE_XDR_LINKARGS
-bool_t xdr_linkargs(XDR *xdrs, nfslinkargs *objp);
-#endif /* not HAVE_XDR_LINKARGS */
-#ifndef HAVE_XDR_MOUNTBODY
-bool_t xdr_mountbody(XDR *xdrs, mountbody *objp);
-#endif /* not HAVE_XDR_MOUNTBODY */
-#ifndef HAVE_XDR_MOUNTLIST
-bool_t xdr_mountlist(XDR *xdrs, mountlist *objp);
-#endif /* not HAVE_XDR_MOUNTLIST */
-#ifndef HAVE_XDR_NAME
-bool_t xdr_name(XDR *xdrs, name *objp);
-#endif /* not HAVE_XDR_NAME */
-#ifndef HAVE_XDR_NFS_FH
-bool_t xdr_nfs_fh(XDR *xdrs, am_nfs_fh *objp);
-#endif /* not HAVE_XDR_NFS_FH */
-#ifndef HAVE_XDR_NFSCOOKIE
-bool_t xdr_nfscookie(XDR *xdrs, nfscookie objp);
-#endif /* not HAVE_XDR_NFSCOOKIE */
-#ifndef HAVE_XDR_NFSPATH
-bool_t xdr_nfspath(XDR *xdrs, nfspath *objp);
-#endif /* not HAVE_XDR_NFSPATH */
-#ifndef HAVE_XDR_NFSSTAT
-bool_t xdr_nfsstat(XDR *xdrs, nfsstat *objp);
-#endif /* not HAVE_XDR_NFSSTAT */
-#ifndef HAVE_XDR_NFSTIME
-bool_t xdr_nfstime(XDR *xdrs, nfstime *objp);
-#endif /* not HAVE_XDR_NFSTIME */
-#ifndef HAVE_XDR_POINTER
-bool_t xdr_pointer(register XDR *xdrs, char **objpp, u_int obj_size, XDRPROC_T_TYPE xdr_obj);
-#endif /* not HAVE_XDR_POINTER */
-#ifndef HAVE_XDR_READARGS
-bool_t xdr_readargs(XDR *xdrs, nfsreadargs *objp);
-#endif /* not HAVE_XDR_READARGS */
-#ifndef HAVE_XDR_READDIRARGS
-bool_t xdr_readdirargs(XDR *xdrs, nfsreaddirargs *objp);
-#endif /* not HAVE_XDR_READDIRARGS */
-#ifndef HAVE_XDR_READDIRRES
-bool_t xdr_readdirres(XDR *xdrs, nfsreaddirres *objp);
-#endif /* not HAVE_XDR_READDIRRES */
-#ifndef HAVE_XDR_READLINKRES
-bool_t xdr_readlinkres(XDR *xdrs, nfsreadlinkres *objp);
-#endif /* not HAVE_XDR_READLINKRES */
-#ifndef HAVE_XDR_READOKRES
-bool_t xdr_readokres(XDR *xdrs, nfsreadokres *objp);
-#endif /* not HAVE_XDR_READOKRES */
-#ifndef HAVE_XDR_READRES
-bool_t xdr_readres(XDR *xdrs, nfsreadres *objp);
-#endif /* not HAVE_XDR_READRES */
-#ifndef HAVE_XDR_RENAMEARGS
-bool_t xdr_renameargs(XDR *xdrs, nfsrenameargs *objp);
-#endif /* not HAVE_XDR_RENAMEARGS */
-#ifndef HAVE_XDR_SATTR
-bool_t xdr_sattr(XDR *xdrs, nfssattr *objp);
-#endif /* not HAVE_XDR_SATTR */
-#ifndef HAVE_XDR_SATTRARGS
-bool_t xdr_sattrargs(XDR *xdrs, nfssattrargs *objp);
-#endif /* not HAVE_XDR_SATTRARGS */
-#ifndef HAVE_XDR_STATFSOKRES
-bool_t xdr_statfsokres(XDR *xdrs, nfsstatfsokres *objp);
-#endif /* not HAVE_XDR_STATFSOKRES */
-#ifndef HAVE_XDR_STATFSRES
-bool_t xdr_statfsres(XDR *xdrs, nfsstatfsres *objp);
-#endif /* not HAVE_XDR_STATFSRES */
-#ifndef HAVE_XDR_SYMLINKARGS
-bool_t xdr_symlinkargs(XDR *xdrs, nfssymlinkargs *objp);
-#endif /* not HAVE_XDR_SYMLINKARGS */
-#ifndef HAVE_XDR_WRITEARGS
-bool_t xdr_writeargs(XDR *xdrs, nfswriteargs *objp);
-#endif /* not HAVE_XDR_WRITEARGS */
-
-/*
- * NFS3 XDR FUNCTIONS:
- */
-#ifdef HAVE_FS_NFS3
-#define AM_NFS3_NULL 0
-void * am_nfs3_null_3(void *, CLIENT *);
-void * am_nfs3_null_3_svc(void *, struct svc_req *);
-#define AM_NFS3_GETATTR 1
-am_GETATTR3res * am_nfs3_getattr_3(am_GETATTR3args *, CLIENT *);
-am_GETATTR3res * am_nfs3_getattr_3_svc(am_GETATTR3args *, struct svc_req *);
-#define AM_NFS3_SETATTR 2
-am_SETATTR3res * am_nfs3_setattr_3(am_SETATTR3args *, CLIENT *);
-am_SETATTR3res * am_nfs3_setattr_3_svc(am_SETATTR3args *, struct svc_req *);
-#define AM_NFS3_LOOKUP 3
-am_LOOKUP3res * am_nfs3_lookup_3(am_LOOKUP3args *, CLIENT *);
-am_LOOKUP3res * am_nfs3_lookup_3_svc(am_LOOKUP3args *, struct svc_req *);
-#define AM_NFS3_ACCESS 4
-am_ACCESS3res * am_nfs3_access_3(am_ACCESS3args *, CLIENT *);
-am_ACCESS3res * am_nfs3_access_3_svc(am_ACCESS3args *, struct svc_req *);
-#define AM_NFS3_READLINK 5
-am_READLINK3res * am_nfs3_readlink_3(am_READLINK3args *, CLIENT *);
-am_READLINK3res * am_nfs3_readlink_3_svc(am_READLINK3args *, struct svc_req *);
-#define AM_NFS3_READ 6
-am_READ3res * am_nfs3_read_3(am_READ3args *, CLIENT *);
-am_READ3res * am_nfs3_read_3_svc(am_READ3args *, struct svc_req *);
-#define AM_NFS3_WRITE 7
-am_WRITE3res * am_nfs3_write_3(am_WRITE3args *, CLIENT *);
-am_WRITE3res * am_nfs3_write_3_svc(am_WRITE3args *, struct svc_req *);
-#define AM_NFS3_CREATE 8
-am_CREATE3res * am_nfs3_create_3(am_CREATE3args *, CLIENT *);
-am_CREATE3res * am_nfs3_create_3_svc(am_CREATE3args *, struct svc_req *);
-#define AM_NFS3_MKDIR 9
-am_MKDIR3res * am_nfs3_mkdir_3(am_MKDIR3args *, CLIENT *);
-am_MKDIR3res * am_nfs3_mkdir_3_svc(am_MKDIR3args *, struct svc_req *);
-#define AM_NFS3_SYMLINK 10
-am_SYMLINK3res * am_nfs3_symlink_3(am_SYMLINK3args *, CLIENT *);
-am_SYMLINK3res * am_nfs3_symlink_3_svc(am_SYMLINK3args *, struct svc_req *);
-#define AM_NFS3_MKNOD 11
-am_MKNOD3res * am_nfs3_mknod_3(am_MKNOD3args *, CLIENT *);
-am_MKNOD3res * am_nfs3_mknod_3_svc(am_MKNOD3args *, struct svc_req *);
-#define AM_NFS3_REMOVE 12
-am_REMOVE3res * am_nfs3_remove_3(am_REMOVE3args *, CLIENT *);
-am_REMOVE3res * am_nfs3_remove_3_svc(am_REMOVE3args *, struct svc_req *);
-#define AM_NFS3_RMDIR 13
-am_RMDIR3res * am_nfs3_rmdir_3(am_RMDIR3args *, CLIENT *);
-am_RMDIR3res * am_nfs3_rmdir_3_svc(am_RMDIR3args *, struct svc_req *);
-#define AM_NFS3_RENAME 14
-am_RENAME3res * am_nfs3_rename_3(am_RENAME3args *, CLIENT *);
-am_RENAME3res * am_nfs3_rename_3_svc(am_RENAME3args *, struct svc_req *);
-#define AM_NFS3_LINK 15
-am_LINK3res * am_nfs3_link_3(am_LINK3args *, CLIENT *);
-am_LINK3res * am_nfs3_link_3_svc(am_LINK3args *, struct svc_req *);
-#define AM_NFS3_READDIR 16
-am_READDIR3res * am_nfs3_readdir_3(am_READDIR3args *, CLIENT *);
-am_READDIR3res * am_nfs3_readdir_3_svc(am_READDIR3args *, struct svc_req *);
-#define AM_NFS3_READDIRPLUS 17
-am_READDIRPLUS3res * am_nfs3_readdirplus_3(am_READDIRPLUS3args *, CLIENT *);
-am_READDIRPLUS3res * am_nfs3_readdirplus_3_svc(am_READDIRPLUS3args *, struct svc_req *);
-#define AM_NFS3_FSSTAT 18
-am_FSSTAT3res * am_nfs3_fsstat_3(am_FSSTAT3args *, CLIENT *);
-am_FSSTAT3res * am_nfs3_fsstat_3_svc(am_FSSTAT3args *, struct svc_req *);
-#define AM_NFS3_FSINFO 19
-am_FSINFO3res * am_nfs3_fsinfo_3(am_FSINFO3args *, CLIENT *);
-am_FSINFO3res * am_nfs3_fsinfo_3_svc(am_FSINFO3args *, struct svc_req *);
-#define AM_NFS3_PATHCONF 20
-am_PATHCONF3res * am_nfs3_pathconf_3(am_PATHCONF3args *, CLIENT *);
-am_PATHCONF3res * am_nfs3_pathconf_3_svc(am_PATHCONF3args *, struct svc_req *);
-#define AM_NFS3_COMMIT 21
-am_COMMIT3res * am_nfs3_commit_3(am_COMMIT3args *, CLIENT *);
-am_COMMIT3res * am_nfs3_commit_3_svc(am_COMMIT3args *, struct svc_req *);
-int nfs_program_3_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
-
-bool_t xdr_am_fhandle3(XDR *xdrs, am_fhandle3 *objp);
-bool_t xdr_am_mountstat3(XDR *xdrs, am_mountstat3 *objp);
-bool_t xdr_am_mountres3_ok(XDR *xdrs, am_mountres3_ok *objp);
-bool_t xdr_am_mountres3(XDR *xdrs, am_mountres3 *objp);
-bool_t xdr_am_diropargs3(XDR *xdrs, am_diropargs3 *objp);
-bool_t xdr_am_filename3(XDR *xdrs, am_filename3 *objp);
-bool_t xdr_am_LOOKUP3args(XDR *xdrs, am_LOOKUP3args *objp);
-bool_t xdr_am_LOOKUP3res(XDR *xdrs, am_LOOKUP3res *objp);
-bool_t xdr_am_LOOKUP3resfail(XDR *xdrs, am_LOOKUP3resfail *objp);
-bool_t xdr_am_LOOKUP3resok(XDR *xdrs, am_LOOKUP3resok *objp);
-bool_t xdr_am_nfsstat3(XDR *xdrs, am_nfsstat3 *objp);
-bool_t xdr_am_nfs_fh3(XDR *xdrs, am_nfs_fh3 *objp);
-bool_t xdr_am_cookieverf3 (XDR *, am_cookieverf3);
-bool_t xdr_uint64 (XDR *, uint64*);
-bool_t xdr_am_cookie3 (XDR *, am_cookie3*);
-bool_t xdr_am_nfs_fh3 (XDR *, am_nfs_fh3*);
-bool_t xdr_am_nfsstat3 (XDR *, am_nfsstat3*);
-bool_t xdr_am_filename3 (XDR *, am_filename3*);
-bool_t xdr_am_diropargs3 (XDR *, am_diropargs3*);
-bool_t xdr_am_ftype3 (XDR *, am_ftype3*);
-bool_t xdr_am_mode3 (XDR *, am_mode3*);
-bool_t xdr_am_uid3 (XDR *, am_uid3*);
-bool_t xdr_am_gid3 (XDR *, am_gid3*);
-bool_t xdr_am_size3 (XDR *, am_size3*);
-bool_t xdr_am_fileid3 (XDR *, am_fileid3*);
-bool_t xdr_am_specdata3 (XDR *, am_specdata3*);
-bool_t xdr_am_nfstime3 (XDR *, am_nfstime3*);
-bool_t xdr_am_fattr3 (XDR *, am_fattr3*);
-bool_t xdr_am_post_op_attr (XDR *, am_post_op_attr*);
-bool_t xdr_am_stable_how (XDR *, am_stable_how*);
-bool_t xdr_am_offset3 (XDR *, am_offset3*);
-bool_t xdr_am_count3 (XDR *, am_count3*);
-bool_t xdr_am_wcc_attr (XDR *, am_wcc_attr*);
-bool_t xdr_am_pre_op_attr (XDR *, am_pre_op_attr*);
-bool_t xdr_am_wcc_data (XDR *, am_wcc_data*);
-bool_t xdr_am_WRITE3args (XDR *, am_WRITE3args*);
-bool_t xdr_am_writeverf3 (XDR *, am_writeverf3);
-bool_t xdr_am_WRITE3resok (XDR *, am_WRITE3resok*);
-bool_t xdr_am_WRITE3resfail (XDR *, am_WRITE3resfail*);
-bool_t xdr_am_WRITE3res (XDR *, am_WRITE3res*);
-bool_t xdr_am_LOOKUP3args (XDR *, am_LOOKUP3args*);
-bool_t xdr_am_LOOKUP3resok (XDR *, am_LOOKUP3resok*);
-bool_t xdr_am_LOOKUP3resfail (XDR *, am_LOOKUP3resfail*);
-bool_t xdr_am_LOOKUP3res (XDR *, am_LOOKUP3res*);
-bool_t xdr_am_COMMIT3args (XDR *, am_COMMIT3args*);
-bool_t xdr_am_COMMIT3resok (XDR *, am_COMMIT3resok*);
-bool_t xdr_am_COMMIT3resfail (XDR *, am_COMMIT3resfail*);
-bool_t xdr_am_COMMIT3res (XDR *, am_COMMIT3res*);
-bool_t xdr_am_ACCESS3args (XDR *, am_ACCESS3args*);
-bool_t xdr_am_ACCESS3resok (XDR *, am_ACCESS3resok*);
-bool_t xdr_am_ACCESS3resfail (XDR *, am_ACCESS3resfail*);
-bool_t xdr_am_ACCESS3res (XDR *, am_ACCESS3res*);
-bool_t xdr_am_GETATTR3args (XDR *, am_GETATTR3args*);
-bool_t xdr_am_GETATTR3resok (XDR *, am_GETATTR3resok*);
-bool_t xdr_am_GETATTR3res (XDR *, am_GETATTR3res*);
-bool_t xdr_am_time_how (XDR *, am_time_how*);
-bool_t xdr_am_set_mode3 (XDR *, am_set_mode3*);
-bool_t xdr_am_set_uid3 (XDR *, am_set_uid3*);
-bool_t xdr_am_set_gid3 (XDR *, am_set_gid3*);
-bool_t xdr_am_set_size3 (XDR *, am_set_size3*);
-bool_t xdr_am_set_atime (XDR *, am_set_atime*);
-bool_t xdr_am_set_mtime (XDR *, am_set_mtime*);
-bool_t xdr_am_sattr3 (XDR *, am_sattr3*);
-bool_t xdr_am_createmode3 (XDR *, am_createmode3*);
-bool_t xdr_am_createverf3 (XDR *, am_createverf3);
-bool_t xdr_am_createhow3 (XDR *, am_createhow3*);
-bool_t xdr_am_CREATE3args (XDR *, am_CREATE3args*);
-bool_t xdr_am_post_op_fh3 (XDR *, am_post_op_fh3*);
-bool_t xdr_am_CREATE3resok (XDR *, am_CREATE3resok*);
-bool_t xdr_am_CREATE3resfail (XDR *, am_CREATE3resfail*);
-bool_t xdr_am_CREATE3res (XDR *, am_CREATE3res*);
-bool_t xdr_am_REMOVE3args (XDR *, am_REMOVE3args*);
-bool_t xdr_am_REMOVE3resok (XDR *, am_REMOVE3resok*);
-bool_t xdr_am_REMOVE3resfail (XDR *, am_REMOVE3resfail*);
-bool_t xdr_am_REMOVE3res (XDR *, am_REMOVE3res*);
-bool_t xdr_am_READ3args (XDR *, am_READ3args*);
-bool_t xdr_am_READ3resok (XDR *, am_READ3resok*);
-bool_t xdr_am_READ3resfail (XDR *, am_READ3resfail*);
-bool_t xdr_am_READ3res (XDR *, am_READ3res*);
-bool_t xdr_am_FSINFO3args (XDR *, am_FSINFO3args*);
-bool_t xdr_am_FSINFO3resok (XDR *, am_FSINFO3resok*);
-bool_t xdr_am_FSINFO3resfail (XDR *, am_FSINFO3resfail*);
-bool_t xdr_am_FSINFO3res (XDR *, am_FSINFO3res*);
-bool_t xdr_am_FSSTAT3args (XDR *, am_FSSTAT3args*);
-bool_t xdr_am_FSSTAT3resok (XDR *, am_FSSTAT3resok*);
-bool_t xdr_am_FSSTAT3resfail (XDR *, am_FSSTAT3resfail*);
-bool_t xdr_am_FSSTAT3res (XDR *, am_FSSTAT3res*);
-bool_t xdr_am_PATHCONF3args (XDR *, am_PATHCONF3args*);
-bool_t xdr_am_PATHCONF3resok (XDR *, am_PATHCONF3resok*);
-bool_t xdr_am_PATHCONF3resfail (XDR *, am_PATHCONF3resfail*);
-bool_t xdr_am_PATHCONF3res (XDR *, am_PATHCONF3res*);
-bool_t xdr_am_nfspath3 (XDR *, am_nfspath3*);
-bool_t xdr_am_symlinkdata3 (XDR *, am_symlinkdata3*);
-bool_t xdr_am_SYMLINK3args (XDR *, am_SYMLINK3args*);
-bool_t xdr_am_SYMLINK3resok (XDR *, am_SYMLINK3resok*);
-bool_t xdr_am_SYMLINK3resfail (XDR *, am_SYMLINK3resfail*);
-bool_t xdr_am_SYMLINK3res (XDR *, am_SYMLINK3res*);
-bool_t xdr_am_READLINK3args (XDR *, am_READLINK3args*);
-bool_t xdr_am_READLINK3resok (XDR *, am_READLINK3resok*);
-bool_t xdr_am_READLINK3resfail (XDR *, am_READLINK3resfail*);
-bool_t xdr_am_READLINK3res (XDR *, am_READLINK3res*);
-bool_t xdr_am_devicedata3 (XDR *, am_devicedata3*);
-bool_t xdr_am_mknoddata3 (XDR *, am_mknoddata3*);
-bool_t xdr_am_MKNOD3args (XDR *, am_MKNOD3args*);
-bool_t xdr_am_MKNOD3resok (XDR *, am_MKNOD3resok*);
-bool_t xdr_am_MKNOD3resfail (XDR *, am_MKNOD3resfail*);
-bool_t xdr_am_MKNOD3res (XDR *, am_MKNOD3res*);
-bool_t xdr_am_MKDIR3args (XDR *, am_MKDIR3args*);
-bool_t xdr_am_MKDIR3resok (XDR *, am_MKDIR3resok*);
-bool_t xdr_am_MKDIR3resfail (XDR *, am_MKDIR3resfail*);
-bool_t xdr_am_MKDIR3res (XDR *, am_MKDIR3res*);
-bool_t xdr_am_RMDIR3args (XDR *, am_RMDIR3args*);
-bool_t xdr_am_RMDIR3resok (XDR *, am_RMDIR3resok*);
-bool_t xdr_am_RMDIR3resfail (XDR *, am_RMDIR3resfail*);
-bool_t xdr_am_RMDIR3res (XDR *, am_RMDIR3res*);
-bool_t xdr_am_RENAME3args (XDR *, am_RENAME3args*);
-bool_t xdr_am_RENAME3resok (XDR *, am_RENAME3resok*);
-bool_t xdr_am_RENAME3resfail (XDR *, am_RENAME3resfail*);
-bool_t xdr_am_RENAME3res (XDR *, am_RENAME3res*);
-bool_t xdr_am_READDIRPLUS3args (XDR *, am_READDIRPLUS3args*);
-bool_t xdr_am_entryplus3 (XDR *, am_entryplus3*);
-bool_t xdr_am_dirlistplus3 (XDR *, am_dirlistplus3*);
-bool_t xdr_am_READDIRPLUS3resok (XDR *, am_READDIRPLUS3resok*);
-bool_t xdr_am_READDIRPLUS3resfail (XDR *, am_READDIRPLUS3resfail*);
-bool_t xdr_am_READDIRPLUS3res (XDR *, am_READDIRPLUS3res*);
-bool_t xdr_am_READDIR3args (XDR *, am_READDIR3args*);
-bool_t xdr_am_entry3 (XDR *, am_entry3*);
-bool_t xdr_am_dirlist3 (XDR *, am_dirlist3*);
-bool_t xdr_am_READDIR3resok (XDR *, am_READDIR3resok*);
-bool_t xdr_am_READDIR3resfail (XDR *, am_READDIR3resfail*);
-bool_t xdr_am_READDIR3res (XDR *, am_READDIR3res*);
-bool_t xdr_am_LINK3args (XDR *, am_LINK3args*);
-bool_t xdr_am_LINK3resok (XDR *, am_LINK3resok*);
-bool_t xdr_am_LINK3resfail (XDR *, am_LINK3resfail*);
-bool_t xdr_am_LINK3res (XDR *, am_LINK3res*);
-bool_t xdr_am_sattrguard3 (XDR *, am_sattrguard3*);
-bool_t xdr_am_SETATTR3args (XDR *, am_SETATTR3args*);
-bool_t xdr_am_SETATTR3resok (XDR *, am_SETATTR3resok*);
-bool_t xdr_am_SETATTR3resfail (XDR *, am_SETATTR3resfail*);
-bool_t xdr_am_SETATTR3res (XDR *, am_SETATTR3res*);
-#endif /* HAVE_FS_NFS3 */
-
-#endif /* not _AM_XDR_FUNC_H */
diff --git a/contrib/amd/include/amq_defs.h b/contrib/amd/include/amq_defs.h
deleted file mode 100644
index 4db5133cba42..000000000000
--- a/contrib/amd/include/amq_defs.h
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/include/amq_defs.h
- *
- */
-
-#ifndef _AMQ_DEFS_H
-#define _AMQ_DEFS_H
-
-/*
- * MACROS
- */
-#ifndef AMQ_SIZE
-# define AMQ_SIZE 16384
-#endif /* not AMQ_SIZE */
-#define AMQ_STRLEN 16384
-#define AMQ_PROGRAM ((u_long)300019)
-#define AMQ_VERSION ((u_long)1)
-#define AMQPROC_NULL ((u_long)0)
-#define AMQPROC_MNTTREE ((u_long)1)
-#define AMQPROC_UMNT ((u_long)2) /* asynchronous unmount */
-#define AMQPROC_STATS ((u_long)3)
-#define AMQPROC_EXPORT ((u_long)4)
-#define AMQPROC_SETOPT ((u_long)5)
-#define AMQPROC_GETMNTFS ((u_long)6)
-#define AMQPROC_MOUNT ((u_long)7)
-#define AMQPROC_GETVERS ((u_long)8)
-#define AMQPROC_GETPID ((u_long)9)
-#define AMQPROC_PAWD ((u_long)10)
-#define AMQPROC_SYNC_UMNT ((u_long)11) /* synchronous unmount */
-#define AMQPROC_GETMAPINFO ((u_long)12)
-
-/*
- * TYPEDEFS
- */
-typedef time_t *time_type;
-typedef struct amq_mount_info amq_mount_info;
-typedef struct amq_map_info amq_map_info;
-typedef struct amq_mount_stats amq_mount_stats;
-typedef struct amq_mount_tree amq_mount_tree;
-typedef struct amq_setopt amq_setopt;
-typedef struct amq_sync_umnt amq_sync_umnt;
-typedef amq_mount_tree *amq_mount_tree_p;
-
-/*
- * STRUCTURES:
- */
-struct amq_mount_tree {
- amq_string mt_mountinfo;
- amq_string mt_directory;
- amq_string mt_mountpoint;
- amq_string mt_type;
- time_type mt_mounttime;
- u_short mt_mountuid;
- int mt_getattr;
- int mt_lookup;
- int mt_readdir;
- int mt_readlink;
- int mt_statfs;
- struct amq_mount_tree *mt_next;
- struct amq_mount_tree *mt_child;
-};
-
-struct amq_mount_info {
- amq_string mi_type;
- amq_string mi_mountpt;
- amq_string mi_mountinfo;
- amq_string mi_fserver;
- int mi_error;
- int mi_refc;
- int mi_up;
-};
-
-typedef struct {
- u_int amq_mount_info_list_len;
- amq_mount_info *amq_mount_info_list_val;
-} amq_mount_info_list;
-
-typedef struct {
- u_int amq_mount_tree_list_len;
- amq_mount_tree_p *amq_mount_tree_list_val;
-} amq_mount_tree_list;
-
-struct amq_map_info {
- amq_string mi_name;
- amq_string mi_wildcard;
- time_type mi_modify;
- int mi_flags;
- int mi_refc;
- int mi_up;
- int mi_reloads;
- int mi_nentries;
-};
-
-typedef struct {
- u_int amq_map_info_list_len;
- amq_map_info *amq_map_info_list_val;
-} amq_map_info_list;
-
-struct amq_mount_stats {
- int as_drops;
- int as_stale;
- int as_mok;
- int as_merr;
- int as_uerr;
-};
-
-typedef enum {
- AMQ_UMNT_OK = 0, /* must be zero! */
- AMQ_UMNT_FAILED = 1, /* unmount failed */
- AMQ_UMNT_FORK = 2, /* fork failed */
- AMQ_UMNT_READ = 3, /* pipe read failed */
- AMQ_UMNT_SERVER = 4, /* server down */
- AMQ_UMNT_SIGNAL = 5 /* received signal */
-} au_etype;
-
-struct amq_sync_umnt {
- au_etype au_etype; /* error type */
- int au_errno; /* error number */
- int au_signal; /* signal received */
-};
-
-enum amq_opt {
- AMOPT_DEBUG = 0,
- AMOPT_LOGFILE = 1,
- AMOPT_XLOG = 2,
- AMOPT_FLUSHMAPC = 3
-};
-typedef enum amq_opt amq_opt; /* enum typedefs should be after enum */
-
-struct amq_setopt {
- amq_opt as_opt;
- amq_string as_str;
-};
-
-/*
- * EXTERNALS:
- *
- * external definitions for amqproc_*_1() have been moved off to private
- * headers in lib/amu.h, amd/amd.h, etc. They have to be private since the
- * same named functions appear in different places with different prototypes
- * an functionality.
- */
-extern bool_t xdr_amq_mount_info(XDR *xdrs, amq_mount_info *objp);
-extern bool_t xdr_amq_mount_info_list(XDR *xdrs, amq_mount_info_list *objp);
-extern bool_t xdr_amq_map_info(XDR *xdrs, amq_map_info *objp);
-extern bool_t xdr_amq_map_info_list(XDR *xdrs, amq_map_info_list *objp);
-extern bool_t xdr_amq_mount_stats(XDR *xdrs, amq_mount_stats *objp);
-extern bool_t xdr_amq_mount_tree(XDR *xdrs, amq_mount_tree *objp);
-extern bool_t xdr_amq_mount_tree_list(XDR *xdrs, amq_mount_tree_list *objp);
-extern bool_t xdr_amq_mount_tree_p(XDR *xdrs, amq_mount_tree_p *objp);
-extern bool_t xdr_amq_opt(XDR *xdrs, amq_opt *objp);
-extern bool_t xdr_amq_setopt(XDR *xdrs, amq_setopt *objp);
-extern bool_t xdr_amq_sync_umnt(XDR *xdrs, amq_sync_umnt *objp);
-extern bool_t xdr_pri_free(XDRPROC_T_TYPE xdr_args, caddr_t args_ptr);
-extern bool_t xdr_time_type(XDR *xdrs, time_type *objp);
-
-#endif /* not _AMQ_DEFS_H */
diff --git a/contrib/amd/include/mount_headers1.h b/contrib/amd/include/mount_headers1.h
deleted file mode 100644
index 7d518a06aa26..000000000000
--- a/contrib/amd/include/mount_headers1.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/include/mount_headers1.h
- *
- */
-
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif /* HAVE_SYS_TYPES_H */
-#ifdef HAVE_SYS_ERRNO_H
-# include <sys/errno.h>
-#endif /* HAVE_SYS_ERRNO_H */
-#ifdef HAVE_SYS_PARAM_H
-# include <sys/param.h>
-#endif /* HAVE_SYS_PARAM_H */
-#ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-#endif /* HAVE_SYS_TIME_H */
-#ifdef HAVE_SYS_UCRED_H
-# include <sys/ucred.h>
-#endif /* HAVE_SYS_UCRED_H */
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif /* HAVE_SYS_SOCKET_H */
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif /* HAVE_NETINET_IN_H */
-#ifdef HAVE_NET_IF_H
-# include <net/if.h>
-#endif /* HAVE_NET_IF_H */
-#ifdef HAVE_STDIO_H
-# include <stdio.h>
-#endif /* HAVE_STDIO_H */
-
-#ifndef KERNEL
-# define KERNEL_off_for_now_breaks_FreeBSD
-#endif /* not KERNEL */
-
-#ifdef HAVE_SYS_MNTENT_H
-# include <sys/mntent.h>
-#endif /* HAVE_SYS_MNTENT_H */
-#ifdef HAVE_MNTENT_H
-# include <mntent.h>
-#endif /* HAVE_MNTENT_H */
-#ifdef HAVE_SYS_MNTTAB_H
-# include <sys/mnttab.h>
-#endif /* HAVE_SYS_MNTTAB_H */
-#if defined(HAVE_MNTTAB_H) && !defined(MNTTAB)
-/*
- * Do not include it if MNTTAB is already defined because it probably
- * came from <sys/mnttab.h> and we do not want conflicting definitions.
- */
-# include <mnttab.h>
-#endif /* defined(HAVE_MNTTAB_H) && !defined(MNTTAB) */
-
-#ifdef HAVE_SYS_MOUNT_H
-# ifndef NFSCLIENT
-# define NFSCLIENT
-# endif /* not NFSCLIENT */
-# ifndef PCFS
-# define PCFS
-# endif /* not PCFS */
-# ifndef LOFS
-# define LOFS
-# endif /* not LOFS */
-# ifndef RFS
-# define RFS
-# endif /* not RFS */
-# ifndef MSDOSFS
-# define MSDOSFS
-# endif /* not MSDOSFS */
-# ifndef MFS
-# define MFS 1
-# endif /* not MFS */
-# ifndef CD9660
-# define CD9660
-# endif /* not CD9660 */
-# ifndef NFS
-# define NFS
-# endif /* not NFS */
-# include <sys/mount.h>
-#endif /* HAVE_SYS_MOUNT_H */
-
-#ifdef HAVE_SYS_VMOUNT_H
-# include <sys/vmount.h>
-#endif /* HAVE_SYS_VMOUNT_H */
-
-#if HAVE_LINUX_FS_H
-# if !defined(__GLIBC__) || __GLIBC__ < 2
-/*
- * There's a conflict of definitions on redhat alpha linux between
- * <netinet/in.h> and <linux/fs.h>.
- * Also a conflict in definitions of ntohl/htonl in RH-5.1 sparc64
- * between <netinet/in.h> and <linux/byteorder/generic.h> (2.1 kernels).
- */
-# ifdef HAVE_SOCKETBITS_H
-# define _LINUX_SOCKET_H
-# undef BLKFLSBUF
-# undef BLKGETSIZE
-# undef BLKRAGET
-# undef BLKRASET
-# undef BLKROGET
-# undef BLKROSET
-# undef BLKRRPART
-# undef MS_MGC_VAL
-# undef MS_RMT_MASK
-# endif /* HAVE_SOCKETBITS_H */
-# ifdef HAVE_LINUX_POSIX_TYPES_H
-# include <linux/posix_types.h>
-# endif /* HAVE_LINUX_POSIX_TYPES_H */
-# ifndef _LINUX_BYTEORDER_GENERIC_H
-# define _LINUX_BYTEORDER_GENERIC_H
-# endif /* _LINUX_BYTEORDER_GENERIC_H */
-# ifndef _LINUX_STRING_H_
-# define _LINUX_STRING_H_
-# endif /* not _LINUX_STRING_H_ */
-# ifdef HAVE_LINUX_KDEV_T_H
-# define __KERNEL__
-# include <linux/kdev_t.h>
-# undef __KERNEL__
-# endif /* HAVE_LINUX_KDEV_T_H */
-# ifdef HAVE_LINUX_LIST_H
-# define __KERNEL__
-# include <linux/list.h>
-# undef __KERNEL__
-# endif /* HAVE_LINUX_LIST_H */
-# include <linux/fs.h>
-# else
-# include <linux/fs.h>
-# endif/* (!__GLIBC__ || __GLIBC__ < 2) */
-#endif /* HAVE_LINUX_FS_H */
-
-#ifdef HAVE_SYS_FS_TYPES_H
-# include <sys/fs_types.h>
-#endif /* HAVE_SYS_FS_TYPES_H */
-
-#ifdef HAVE_UFS_UFS_MOUNT_H
-# include <ufs/ufs_mount.h>
-#endif /* HAVE_UFS_UFS_MOUNT_H */
-#ifdef HAVE_UFS_UFS_UFSMOUNT_H_off
-# error do not include this file here because on *bsd it
-# error causes errors with other header files. Instead, add it to the
-# error specific conf/nfs_prot_*.h file.
-# include <ufs/ufs/ufsmount.h>
-#endif /* HAVE_UFS_UFS_UFSMOUNT_H_off */
-
-#ifdef HAVE_CDFS_CDFS_MOUNT_H
-# include <cdfs/cdfs_mount.h>
-#endif /* HAVE_CDFS_CDFS_MOUNT_H */
-#ifdef HAVE_CDFS_CDFSMOUNT_H
-# include <cdfs/cdfsmount.h>
-#endif /* HAVE_CDFS_CDFSMOUNT_H */
-#ifdef HAVE_ISOFS_CD9660_CD9660_MOUNT_H
-# include <isofs/cd9660/cd9660_mount.h>
-#endif /* HAVE_ISOFS_CD9660_CD9660_MOUNT_H */
-
-#ifdef HAVE_FS_UDF_UDF_MOUNT_H
-# include <fs/udf/udf_mount.h>
-#endif /* HAVE_FS_UDF_UDF_MOUNT_H */
-
-#ifdef HAVE_SYS_FS_PC_FS_H
-# include <sys/fs/pc_fs.h>
-#endif /* HAVE_SYS_FS_PC_FS_H */
-#ifdef HAVE_MSDOSFS_MSDOSFSMOUNT_H
-# include <msdosfs/msdosfsmount.h>
-#endif /* HAVE_MSDOSFS_MSDOSFSMOUNT_H */
-#ifdef HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H
-# include <fs/msdosfs/msdosfsmount.h>
-#endif /* HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H */
-
-#ifdef HAVE_FS_TMPFS_TMPFS_ARGS_H
-# include <fs/tmpfs/tmpfs_args.h>
-#endif /* HAVE_FS_TMPFS_TMPFS_ARGS_H */
-
-#ifdef HAVE_FS_EFS_EFS_MOUNT_H
-# include <fs/efs/efs_mount.h>
-#endif /* HAVE_FS_EFS_EFS_MOUNT_H */
-
-#ifdef HAVE_RPC_RPC_H
-# include <rpc/rpc.h>
-#endif /* HAVE_RPC_RPC_H */
-#ifdef HAVE_RPC_TYPES_H
-# include <rpc/types.h>
-#endif /* HAVE_RPC_TYPES_H */
-/* Prevent multiple inclusion on Ultrix 4 */
-#if defined(HAVE_RPC_XDR_H) && !defined(__XDR_HEADER__)
-# include <rpc/xdr.h>
-#endif /* defined(HAVE_RPC_XDR_H) && !defined(__XDR_HEADER__) */
-
-/* ALWAYS INCLUDE AM-UTILS' SPECIFIC NFS PROTOCOL HEADER NEXT! */
diff --git a/contrib/amd/include/mount_headers2.h b/contrib/amd/include/mount_headers2.h
deleted file mode 100644
index 87bf18efd8bb..000000000000
--- a/contrib/amd/include/mount_headers2.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/include/mount_headers2.h
- *
- */
-
-
-
-#ifdef HAVE_RPCSVC_MOUNT_H
-# include <rpcsvc/mount.h>
-#endif /* HAVE_RPCSVC_MOUNT_H */
-
-#ifdef HAVE_MOUNT_H
-# include <mount.h>
-#endif /* HAVE_MOUNT_H */
-
-#ifdef HAVE_NFS_NFS_GFS_H
-# include <nfs/nfs_gfs.h>
-#endif /* HAVE_NFS_NFS_GFS_H */
-
-#ifdef HAVE_NFS_MOUNT_H
-# include <nfs/mount.h>
-#endif /* HAVE_NFS_MOUNT_H */
-
-#ifdef HAVE_SYS_FS_NFS_CLNT_H
-# include <sys/fs/nfs_clnt.h>
-#endif /* HAVE_SYS_FS_NFS_CLNT_H */
-
-#ifdef HAVE_LINUX_NFS_MOUNT_H
-# ifndef _LINUX_NFS_H
-# define _LINUX_NFS_H
-# endif /* not _LINUX_NFS_H */
-# ifndef _LINUX_NFS2_H
-# define _LINUX_NFS2_H
-# endif /* not _LINUX_NFS2_H */
-# ifndef _LINUX_NFS3_H
-# define _LINUX_NFS3_H
-# endif /* not _LINUX_NFS3_H */
-# ifndef _LINUX_NFS_FS_H
-# define _LINUX_NFS_FS_H
-# endif /* not _LINUX_NFS_FS_H */
-# ifndef _LINUX_IN_H
-# define _LINUX_IN_H
-# endif /* not _LINUX_IN_H */
-# ifndef __KERNEL__
-# define __KERNEL__
-# endif /* __KERNEL__ */
-# include <linux/nfs_mount.h>
-# undef __KERNEL__
-#endif /* HAVE_LINUX_NFS_MOUNT_H */
diff --git a/contrib/amd/include/nfs_common.h b/contrib/amd/include/nfs_common.h
deleted file mode 100644
index d89632b59330..000000000000
--- a/contrib/amd/include/nfs_common.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2011 Christos Zoulas
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/include/nfs_common.c
- *
- */
-struct nfs_common_args {
- u_long flags;
- u_long acdirmin;
- u_long acdirmax;
- u_long acregmin;
- u_long acregmax;
- u_long timeo;
- u_long retrans;
- u_long rsize;
- u_long wsize;
-};
-
-#ifdef HAVE_NFS_ARGS_T_ACREGMIN
-#define GET_ACREGMIN(nap, a) nap->acregmin = a.acregmin;
-#define PUT_ACREGMIN(nap, a) a.acregmin = nap->acregmin;
-#else
-#define GET_ACREGMIN(nap, a)
-#define PUT_ACREGMIN(nap, a)
-#endif
-#ifdef HAVE_NFS_ARGS_T_ACREGMAX
-#define GET_ACREGMAX(nap, a) nap->acregmax = a.acregmax;
-#define PUT_ACREGMAX(nap, a) a.acregmax = nap->acregmax;
-#else
-#define GET_ACREGMAX(nap, a)
-#define PUT_ACREGMAX(nap, a)
-#endif
-
-#ifdef HAVE_NFS_ARGS_T_ACDIRMIN
-#define GET_ACDIRMIN(nap, a) nap->acdirmin = a.acdirmin;
-#define PUT_ACDIRMIN(nap, a) a.acdirmin = nap->acdirmin;
-#else
-#define GET_ACDIRMIN(nap, a)
-#define PUT_ACDIRMIN(nap, a)
-#endif
-#ifdef HAVE_NFS_ARGS_T_ACDIRMAX
-#define GET_ACDIRMAX(nap, a) nap->acdirmax = a.acdirmax;
-#define PUT_ACDIRMAX(nap, a) a.acdirmax = nap->acdirmax;
-#else
-#define GET_ACDIRMAX(nap, a)
-#define PUT_ACDIRMAX(nap, a)
-#endif
-
-#define get_nfs_common_args(nap, a) \
- do { \
- nap->flags = a.flags; \
- GET_ACREGMIN(nap, a) \
- GET_ACREGMAX(nap, a) \
- GET_ACDIRMIN(nap, a) \
- GET_ACDIRMAX(nap, a) \
- nap->timeo = a.timeo; \
- nap->retrans = a.retrans; \
- nap->rsize = a.rsize; \
- nap->wsize = a.wsize; \
- } while (/*CONSTCOND*/0)
-
-#define put_nfs_common_args(nap, a) \
- do { \
- a.flags = nap->flags; \
- PUT_ACREGMIN(nap, a) \
- PUT_ACREGMAX(nap, a) \
- PUT_ACDIRMIN(nap, a) \
- PUT_ACDIRMAX(nap, a) \
- a.timeo = nap->timeo; \
- a.retrans = nap->retrans; \
- a.rsize = nap->rsize; \
- a.wsize = nap->wsize; \
- } while (/*CONSTCOND*/0)
diff --git a/contrib/amd/ldap-id.ms b/contrib/amd/ldap-id.ms
deleted file mode 100644
index 77ff4ba1cb2b..000000000000
--- a/contrib/amd/ldap-id.ms
+++ /dev/null
@@ -1,306 +0,0 @@
-.pl 10.0i
-.po 0
-.ll 8.5i
-.lt 8.5i
-.nr LL 8.5i
-.nr LT 8.5i
-.ds LF Johansson
-.ds RF [Page %]
-.ds CF
-.ds LH Internet draft
-.ds RH 30 March 1998
-.ds CH Berkeley AMD LDAP Schema
-.hy 0
-.ad l
-.in 0
-INTERNET-DRAFT Leif Johansson
-Intented Category: Experimental Stockholm University
-
-
-
-.ce
-A directory (X.500 and LDAPv3) schema for Berkely automounter
-
-
-.ti 0
-1. Status of this Memo
-
-.fi
-.in 3
-This memo describes a directory (LDAP or X.500) schema for storing
-amd (Berkely-style automounter) mount info maps. The schema is currently
-beeing supported by the (beta version of the) am-utils version 6 package
-[AMUTILS].
-
-.ti 0
-2. Overview and Rationale
-
-Directory services such as X.500 [X500] or LDAP [RFC2251] are a natural
-choice of repository for amd mount map databases. All Object Identifiers
-in this document are prefixed by amdSchema-id to be assigned later. The
-relation between this schema and the automount schema elements in [HOWARD]
-are mostly superficial. The model for the elements in [HOWARD] was the SUN
-automounter which has quite a different syntax for mount maps. Furthermore
-the intended usage of this schema differs from that of [HOWARD] in many
-respects.
-
-.ti 0
-3. DSA requirements
-
-Directory servers implementing this schema SHOULD maintain the
-modifyTimestamp operational attribute. If not the amdMapCacheTtl
-attribute SHOULD be set to 0 indicating to clients that caching of
-map entries SHOULD be turned off. Clients wishing to use the amdMap
-schema MAY use the modifyTimestamp information to set the ttl for
-internal caching schemes. A value of 0 for the amdMapCacheTtl must
-result in clients turning off any local caching.
-
-.ti 0
-4. Syntax definitions
-
-The following attribute syntax is defined in this document:
-
- amdlocationlist
-
-This syntax represents a amd map value. This is the syntax expressed
-in BNF using definitions from [RFC2252]:
-
- amdlocationlist = amdlocationselection |
- amdlocationlist whsp "||" whsp amdlocationselection
-
- amdlocationselection = amdlocation |
- amdlocationselection whsp amdlocation
-
- amdlocation = amdlocationinfo |
- "-" amdlocationinfo |
- "-"
-
- amdlocationinfo = seloropt |
- amdlocationinfo ";" seloropt |
- ";"
-
- seloropt = seletion |
- optass
-
- selection = keystring "==" printablestring
- keystring "!=" printablestring
-
- optass = keystring \":=\" printablestring
-
-X.500 servers or LDAPv3 servers (supporting the binary attribute
-option) may use the following syntax definition:
-
- AmdLocationList ::= SEQUENCE OF {
- SEQUENCE OF {
- location AmdLocation
- }
- }
-
- AmdLocation ::= SET OF {
- CHOICE {
- location [0] AmdLocationInfo
- notlocation [1] AmdLocationInfo
- not [2] NULL
- }
- }
-
- AmdLocationInfo ::= SET OF {
- CHOICE {
- selection [0] AmdSelection
- option [1] AmdOption
- }
- }
-
- AmdSelection ::= CHOICE {
- eq [0] AttributeAndValue
- ne [1] AttributeAndValue
- }
-
- AmdOption ::= AttributeAndValue
-
- AttributeAndValue ::= SEQUENCE {
- attribute IA5String
- value IA5String
- }
-
-.ti 0
-5. Attribute types
-
-The following attribute types are defined in this document:
-
- amdMapName
- amdMapCacheTtl
- amdMapEntry
- amdMapEntryKey
- amdMapEntryValue
-
- amdSchema-a OBJECT IDENTIFIER ::= { amdSchema-id 1 }
-
- amdMapName
- ATTRIBUTE ::= {
- WITH SYNTAX IA5String
- EQUALITY MATCHING RULE caseIgoreExactMatch
- --ID { amdSchema-a 1 }
- DESCRIPTION
- "This attribute is the symbolic and in the naming
- context unique name of an amd map. This corresponds
- in the case of a flat file database to the name of
- the file or the mount-point of the map."
- }
-
-
- amdMapCacheTtl
- ATTRIBUTE ::= {
- WITH SYNTAX Integer
- EQUALITY MATCHING RULE integerExactMatch
- --ID { amdSchema-a 2 }
- SINGLE VALUED
- DESCRIPTION
- "The maximum time-to-live for the entries in this
- map. After this many milliseconds the map has to
- be cleared from local caches and reloaded. A value
- of 0 disables caching."
- }
-
- amdMapEntry
- ATTRIBUTE ::= {
- WITH SYNTAX DistinguishedName
- EQUALITY MATHCING RULE dNCaseIgnoreExactMatch
- --ID { amdSchema-a 3 }
- DESCRIPTION
- "A multivalued attribute listing the distinguished
- names of the amdMapEntries making up this amdMap
- object."
- }
-
- amdMapEntryKey ::= {
- ATTRIBUTE ::= {
- WITH SYNTAX IA5String
- EQUALITY MATCHING RULE stringExactMatch
- --ID { amdSchema-a 4 }
- SINGLE VALUED
- DESCRIPTION
- "The value of this attribute is usually the name of
- a mountpoint for this amdMapEntry."
- }
-
- amdMapEntryValue ::= {
- ATTRIBUTE ::= {
- WITH SYNTAX AmdLocationList
- --ID { amdSchema-a 5 }
- DESCRIPTION
- "This is the actual mount information for the amdMapEntry
- using the syntax described above."
- }
-
- amdMapEntryKey ::= {
- ATTRIBUTE ::= {
- WITH SYNTAX IA5String
- EQUALITY MATCHING RULE stringExactMatch
- --ID { amdSchema-a 4 }
- SINGLE VALUED
- DESCRIPTION
- "The value of this attribute is usually the name of
- a mountpoint for this amdMapEntry."
- }
-
- amdMapEntryValue ::= {
- ATTRIBUTE ::= {
- WITH SYNTAX AmdLocationList
- --ID { amdSchema-a 5 }
- DESCRIPTION
- "This is the actual mount information for the amdMapEntry
- using the syntax described above."
- }
-
-.ti 0
-6. Object classes
-
-The following object classes are defined in this document:
-
- amdMap
- amdMapEntry
-
-defined as follows:
-
- amdSchema-oc ::= { amdSchema-id 2 }
-
- amdMap OBJECT-CLASS ::= {
- SUBCLASS OF { top }
- KIND auxiliary
- --ID { amdSchema-oc 1 }
- MAY CONTAIN { amdMapCacheTtl , cn }
- MUST CONTAIN { amdMapName , amdMapEntry }
- }
-
- amdMapEntry OBJECT-CLASS ::= {
- SUBCLASS OF { top }
- KIND structural
- --ID { amdSchema-oc 2 }
- MUST CONTAIN {
- amdMapName ,
- amdEntryKey ,
- amdEntryValue ,
- }
- MAY CONTAIN { cn }
- DESCRIPTION
- "An entry of this object class describes mount
- information relative to a certain amdMap entry"
- }
-
-.ti 0
-7. Examples
-
-
-
-.ti 0
-8. Security Considerations
-
-Due to the security problems posed by NFS care should be taken not to
-advertise exported filesystems. Therefore it is often desirable to limit
-access to entries carrying amd mount map information to those systems
-to which the corresponding filesystems have been exported.
-
-.ti 0
-9. References
-
- [AMUTILS]
- am-utils homepage: http://shekel.cs.columbia.edu/~erez/am-utils.html
-
- [RFC2251]
- M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access
- Protocol (v3)", RFC 2251, December 1997.
-
- [RFC2252]
- M. Wahl, A. Coulbeck, T. Howes, S. Kille, "Lightweight Directory
- Access Protocol (v3): Attribute Syntax Definitions", RFC 2252,
- December 1997.
-
- [RFC2253]
- M. Wahl, S. Kille, T. Howes, "Lightweight Directory Access
- Protocol (v3): UTF-8 String Representation of Distinguished
- Names", RFC 2253, December 1997.
-
- [HOWARD]
- Luke Howard, "An Approach for Using LDAP as a Network
- Information Service", draft-howard-nis-schema-??.txt, Internet
- draft.
-
- [X500]
- ITU something or other.
-
-.in 3
-
-
-.ti 0
-Author's Address
-
-.nf
-
-Leif Johansson
-Department of Mathematics
-Stockholm University
-S-106 91 Stockholm
- SWEDEN
-
-Email: leifj AT matematik.su.se
diff --git a/contrib/amd/ldap-id.txt b/contrib/amd/ldap-id.txt
deleted file mode 100644
index 33a9187b7684..000000000000
--- a/contrib/amd/ldap-id.txt
+++ /dev/null
@@ -1,360 +0,0 @@
-
-
-
-
-
-
-INTERNET-DRAFT Leif Johansson
-Intented Category: Experimental Stockholm University
-
-
-
- A directory (X.500 and LDAPv3) schema for Berkely automounter
-
-
-1. Status of this Memo
-
- This memo describes a directory (LDAP or X.500) schema for storing amd (Berkely-
- style automounter) mount info maps. The schema is currently beeing supported by
- the (beta version of the) am-utils version 6 package [AMUTILS].
-
-2. Overview and Rationale
-
- Directory services such as X.500 [X500] or LDAP [RFC2251] are a natural choice of
- repository for amd mount map databases. All Object Identifiers in this document
- are prefixed by amdSchema-id to be assigned later. The relation between this
- schema and the automount schema elements in [HOWARD] are mostly superficial. The
- model for the elements in [HOWARD] was the SUN automounter which has quite a
- different syntax for mount maps. Furthermore the intended usage of this schema
- differs from that of [HOWARD] in many respects.
-
-3. DSA requirements
-
- Directory servers implementing this schema SHOULD maintain the modifyTimestamp
- operational attribute. If not the amdMapCacheTtl attribute SHOULD be set to 0
- indicating to clients that caching of map entries SHOULD be turned off. Clients
- wishing to use the amdMap schema MAY use the modifyTimestamp information to set
- the ttl for internal caching schemes. A value of 0 for the amdMapCacheTtl must
- result in clients turning off any local caching.
-
-4. Syntax definitions
-
- The following attribute syntax is defined in this document:
-
- amdlocationlist
-
- This syntax represents a amd map value. This is the syntax expressed in BNF using
- definitions from [RFC2252]:
-
- amdlocationlist = amdlocationselection |
- amdlocationlist whsp "||" whsp amdlocationselection
-
- amdlocationselection = amdlocation |
- amdlocationselection whsp amdlocation
-
-
-
-
-Johansson [Page 1]
-
-
-
-
-
-Internet draft Berkeley AMD LDAP Schema 30 March 1998
-
-
- amdlocation = amdlocationinfo |
- "-" amdlocationinfo |
- "-"
-
- amdlocationinfo = seloropt |
- amdlocationinfo ";" seloropt |
- ";"
-
- seloropt = seletion |
- optass
-
- selection = keystring "==" printablestring
- keystring "!=" printablestring
-
- optass = keystring
-
- X.500 servers or LDAPv3 servers (supporting the binary attribute option) may use
- the following syntax definition:
-
- AmdLocationList ::= SEQUENCE OF {
- SEQUENCE OF {
- location AmdLocation
- }
- }
-
- AmdLocation ::= SET OF {
- CHOICE {
- location [0] AmdLocationInfo
- notlocation [1] AmdLocationInfo
- not [2] NULL
- }
- }
-
- AmdLocationInfo ::= SET OF {
- CHOICE {
- selection [0] AmdSelection
- option [1] AmdOption
- }
- }
-
- AmdSelection ::= CHOICE {
- eq [0] AttributeAndValue
- ne [1] AttributeAndValue
- }
-
- AmdOption ::= AttributeAndValue
- AttributeAndValue ::= SEQUENCE {
- attribute IA5String
-
-
-
-Johansson [Page 2]
-
-
-
-
-
-Internet draft Berkeley AMD LDAP Schema 30 March 1998
-
-
- value IA5String
- }
-
-5. Attribute types
-
- The following attribute types are defined in this document:
-
- amdMapName
- amdMapCacheTtl
- amdMapEntry
- amdMapEntryKey
- amdMapEntryValue
-
- amdSchema-a OBJECT IDENTIFIER ::= { amdSchema-id 1 }
-
- amdMapName ATTRIBUTE ::= {
- WITH SYNTAX IA5String
- EQUALITY MATCHING RULE caseIgoreExactMatch
- --ID { amdSchema-a 1 }
- DESCRIPTION
- "This attribute is the symbolic and in the naming
- context unique name of an amd map. This corresponds
- in the case of a flat file database to the name of
- the file or the mount-point of the map."
- }
-
-
- amdMapCacheTtl
- ATTRIBUTE ::= {
- WITH SYNTAX Integer
- EQUALITY MATCHING RULE integerExactMatch
- --ID { amdSchema-a 2 }
- SINGLE VALUED
- DESCRIPTION
- "The maximum time-to-live for the entries in this
- map. After this many milliseconds the map has to
- be cleared from local caches and reloaded. A value
- of 0 disables caching."
- }
-
- amdMapEntry
- ATTRIBUTE ::= {
- WITH SYNTAX DistinguishedName
- EQUALITY MATHCING RULE dNCaseIgnoreExactMatch
- --ID { amdSchema-a 3 }
- DESCRIPTION
- "A multivalued attribute listing the distinguished
- names of the amdMapEntries making up this amdMap
-
-
-
-Johansson [Page 3]
-
-
-
-
-
-Internet draft Berkeley AMD LDAP Schema 30 March 1998
-
-
- object."
- }
-
- amdMapEntryKey ::= {
- ATTRIBUTE ::= {
- WITH SYNTAX IA5String
- EQUALITY MATCHING RULE stringExactMatch
- --ID { amdSchema-a 4 }
- SINGLE VALUED
- DESCRIPTION
- "The value of this attribute is usually the name of
- a mountpoint for this amdMapEntry."
- }
-
- amdMapEntryValue ::= {
- ATTRIBUTE ::= {
- WITH SYNTAX AmdLocationList
- --ID { amdSchema-a 5 }
- DESCRIPTION
- "This is the actual mount information for the amdMapEntry
- using the syntax described above."
- }
-
- amdMapEntryKey ::= {
- ATTRIBUTE ::= {
- WITH SYNTAX IA5String
- EQUALITY MATCHING RULE stringExactMatch
- --ID { amdSchema-a 4 }
- SINGLE VALUED
- DESCRIPTION
- "The value of this attribute is usually the name of
- a mountpoint for this amdMapEntry."
- }
-
- amdMapEntryValue ::= {
- ATTRIBUTE ::= {
- WITH SYNTAX AmdLocationList
- --ID { amdSchema-a 5 }
- DESCRIPTION
- "This is the actual mount information for the amdMapEntry
- using the syntax described above."
- }
-
-6. Object classes
-
- The following object classes are defined in this document:
-
- amdMap
-
-
-
-Johansson [Page 4]
-
-
-
-
-
-Internet draft Berkeley AMD LDAP Schema 30 March 1998
-
-
- amdMapEntry
-
- defined as follows:
-
- amdSchema-oc ::= { amdSchema-id 2 }
-
- amdMap OBJECT-CLASS ::= {
- SUBCLASS OF { top }
- KIND auxiliary
- --ID { amdSchema-oc 1 }
- MAY CONTAIN { amdMapCacheTtl , cn }
- MUST CONTAIN { amdMapName , amdMapEntry }
- }
-
- amdMapEntry OBJECT-CLASS ::= {
- SUBCLASS OF { top }
- KIND structural
- --ID { amdSchema-oc 2 }
- MUST CONTAIN {
- amdMapName ,
- amdEntryKey ,
- amdEntryValue ,
- } MAY CONTAIN
- { cn } DESCRIPTION "An entry of this
- object class describes mount information relative to a
- certain amdMap entry"
- }
-
-7. Examples
-
-
-
-8. Security Considerations
-
- Due to the security problems posed by NFS care should be taken not to advertise
- exported filesystems. Therefore it is often desirable to limit access to entries
- carrying amd mount map information to those systems to which the corresponding
- filesystems have been exported.
-
-9. References
-
- [AMUTILS]
- am-utils homepage: http://shekel.cs.columbia.edu/~erez/am-utils.html
-
- [RFC2251]
- M. Wahl, T. Howes, S. Kille, "Lightweight Directory Access
- Protocol (v3)", RFC 2251, December 1997.
-
-
-
-
-Johansson [Page 5]
-
-
-
-
-
-Internet draft Berkeley AMD LDAP Schema 30 March 1998
-
-
- [RFC2252]
- M. Wahl, A. Coulbeck, T. Howes, S. Kille, "Lightweight Directory
- Access Protocol (v3): Attribute Syntax Definitions", RFC 2252,
- December 1997.
-
- [RFC2253]
- M. Wahl, S. Kille, T. Howes, "Lightweight Directory Access
- Protocol (v3): UTF-8 String Representation of Distinguished
- Names", RFC 2253, December 1997.
-
- [HOWARD]
- Luke Howard, "An Approach for Using LDAP as a Network
- Information Service", draft-howard-nis-schema-??.txt, Internet
- draft.
-
- [X500]
- ITU something or other.
-
-
-
-Author's Address
-
-
- Leif Johansson
- Department of Mathematics
- Stockholm University
- S-106 91 Stockholm
- SWEDEN
-
- Email: leifj AT matematik.su.se
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Johansson [Page 6]
-
-
diff --git a/contrib/amd/ldap.schema b/contrib/amd/ldap.schema
deleted file mode 100644
index 9594d2fee8b6..000000000000
--- a/contrib/amd/ldap.schema
+++ /dev/null
@@ -1,52 +0,0 @@
-# A schema for the Berkeley automounter (AMD)
-# Authored by Erez Zadok and/or source maintainers
-# Definition by Tim Colles <timc at dai.ed.ac.uk>
-# Revised by Adam Morley <adam at gmi.com>
-
-# OID Base is 1.3.6.1.4.1.10180
-#
-# Syntaxes are under 1.3.6.1.4.1.10180.3.175-199
-# Attribute types are under 1.3.6.1.4.1.10180.2.175-199
-# Object classes are under 1.3.6.1.4.1.10180.1.175-199
-
-# Attribute Type Definitions
-
-attributetype ( 1.3.6.1.4.1.10180.2.175
- NAME 'amdmapTimestamp'
- DESC 'Probably the time the map was last modified'
- EQUALITY integerMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
- SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.10180.2.176
- NAME 'amdmapName'
- DESC 'The symbolic name of the map, ie. map_name'
- EQUALITY caseIgnoreMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
- SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.10180.2.177
- NAME 'amdmapKey'
- DESC 'The key value for this entry'
- EQUALITY caseIgnoreMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
- SINGLE-VALUE )
-
-attributetype ( 1.3.6.1.4.1.10180.2.178
- NAME 'amdmapValue'
- DESC 'The mount information for this entry'
- EQUALITY caseIgnoreMatch
- SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
- SINGLE-VALUE )
-
-# Object Class Definitions
-
-objectclass ( 1.3.6.1.4.1.10180.1.175 NAME 'amdmapTimestamp'
- SUP top STRUCTURAL
- DESC 'Timestamp for an AMD map'
- MUST ( cn $ amdmapName $ amdmapTimestamp ) )
-
-objectclass ( 1.3.6.1.4.1.10180.1.176 NAME 'amdmap'
- SUP top STRUCTURAL
- DESC 'Defines an AMD map entry'
- MUST ( cn $ amdmapName $ amdmapKey $ amdmapValue ) )
diff --git a/contrib/amd/libamu/amu.h b/contrib/amd/libamu/amu.h
deleted file mode 100644
index 9415fc404ea4..000000000000
--- a/contrib/amd/libamu/amu.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/libamu/amu.h
- *
- */
-
-#ifndef _AMU_H
-#define _AMU_H
-
-/*
- * Decide what maximum level of NFS server to try and mount with.
- */
-#if defined(HAVE_FS_NFS4)
-# define NFS_VERS_MAX NFS_VERSION4
-#elif defined(HAVE_FS_NFS3)
-# define NFS_VERS_MAX NFS_VERSION3
-#else /* not HAVE_FS_NFS3 */
-# define NFS_VERS_MAX NFS_VERSION
-#endif /* not HAVE_FS_NFS3 */
-# define NFS_VERS_MIN NFS_VERSION
-
-/* some systems like ncr2 do not define this in <rpcsvc/mount.h> */
-#ifndef MNTPATHLEN
-# define MNTPATHLEN 1024
-#endif /* not MNTPATHLEN */
-#ifndef MNTNAMLEN
-# define MNTNAMLEN 255
-#endif /* not MNTNAMLEN */
-
-/*
- * external definitions for building libamu.a
- */
-extern voidp amqproc_null_1(voidp argp, CLIENT *rqstp);
-extern amq_mount_tree_p *amqproc_mnttree_1(amq_string *argp, CLIENT *rqstp);
-extern voidp amqproc_umnt_1(amq_string *argp, CLIENT *rqstp);
-extern amq_mount_stats *amqproc_stats_1(voidp argp, CLIENT *rqstp);
-extern amq_mount_tree_list *amqproc_export_1(voidp argp, CLIENT *rqstp);
-extern int *amqproc_setopt_1(amq_setopt *argp, CLIENT *rqstp);
-extern amq_mount_info_list *amqproc_getmntfs_1(voidp argp, CLIENT *rqstp);
-extern int *amqproc_mount_1(voidp argp, CLIENT *rqstp);
-extern amq_string *amqproc_getvers_1(voidp argp, CLIENT *rqstp);
-
-extern long get_server_pid(void);
-
-#endif /* not _AMU_H */
diff --git a/contrib/amd/libamu/hasmntopt.c b/contrib/amd/libamu/hasmntopt.c
deleted file mode 100644
index e5a6f2e80dfe..000000000000
--- a/contrib/amd/libamu/hasmntopt.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
-n * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/libamu/hasmntopt.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-
-#ifndef MNTMAXSTR
-# define MNTMAXSTR 256
-#endif /* not MNTMAXSTR */
-
-
-/*
- * Some systems don't provide these to the user,
- * but amd needs them, so...
- *
- * From: Piete Brooks <pb@cl.cam.ac.uk>
- */
-static char *
-nextmntopt(char **p)
-{
- char *cp = *p;
- char *rp;
-
- /*
- * Skip past white space
- */
- while (*cp && isspace((unsigned char) *cp))
- cp++;
-
- /*
- * Word starts here
- */
- rp = cp;
-
- /*
- * Scan to send of string or separator
- */
- while (*cp && *cp != ',')
- cp++;
-
- /*
- * If separator found the overwrite with null char.
- */
- if (*cp) {
- *cp = '\0';
- cp++;
- }
-
- /*
- * Return value for next call
- */
- *p = cp;
- return rp;
-}
-
-
-/*
- * replacement for hasmntopt if the system does not have it.
- */
-char *
-amu_hasmntopt(mntent_t *mnt, char *opt)
-{
- char t[MNTMAXSTR];
- char *f;
- char *o = t;
- size_t l = strlen(opt);
-
- xstrlcpy(t, mnt->mnt_opts, sizeof(t));
-
- while (*(f = nextmntopt(&o)))
- if (NSTREQ(opt, f, l))
- return f - t + mnt->mnt_opts;
-
- return 0;
-}
diff --git a/contrib/amd/libamu/misc_rpc.c b/contrib/amd/libamu/misc_rpc.c
deleted file mode 100644
index c6ad4486d7d9..000000000000
--- a/contrib/amd/libamu/misc_rpc.c
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/libamu/misc_rpc.c
- *
- */
-
-/*
- * Additions to Sun RPC.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-
-/*
- * Some systems renamed _seterr_reply to __seterr_reply (with two
- * leading underscores)
- */
-#if !defined(HAVE__SETERR_REPLY) && defined(HAVE___SETERR_REPLY)
-# define _seterr_reply __seterr_reply
-#endif /* !defined(HAVE__SETERR_REPLY) && defined(HAVE___SETERR_REPLY) */
-
-
-void
-rpc_msg_init(struct rpc_msg *mp, u_long prog, u_long vers, u_long proc)
-{
- /*
- * Initialize the message
- */
- memset((voidp) mp, 0, sizeof(*mp));
- mp->rm_xid = 0;
- mp->rm_direction = CALL;
- mp->rm_call.cb_rpcvers = RPC_MSG_VERSION;
- mp->rm_call.cb_prog = prog;
- mp->rm_call.cb_vers = vers;
- mp->rm_call.cb_proc = proc;
-}
-
-
-/*
- * Field reply to call to mountd
- */
-int
-pickup_rpc_reply(voidp pkt, int len, voidp where, XDRPROC_T_TYPE where_xdr)
-{
- XDR reply_xdr;
- int ok;
- struct rpc_err err;
- struct rpc_msg reply_msg;
- int error = 0;
-
- /* memset((voidp) &err, 0, sizeof(err)); */
- memset((voidp) &reply_msg, 0, sizeof(reply_msg));
- memset((voidp) &reply_xdr, 0, sizeof(reply_xdr));
-
- reply_msg.acpted_rply.ar_results.where = where;
- reply_msg.acpted_rply.ar_results.proc = where_xdr;
-
- xdrmem_create(&reply_xdr, pkt, len, XDR_DECODE);
-
- ok = xdr_replymsg(&reply_xdr, &reply_msg);
- if (!ok) {
- error = EIO;
- goto drop;
- }
- _seterr_reply(&reply_msg, &err);
- if (err.re_status != RPC_SUCCESS) {
- error = EIO;
- goto drop;
- }
-
-drop:
- if (reply_msg.rm_reply.rp_stat == MSG_ACCEPTED &&
- reply_msg.acpted_rply.ar_verf.oa_base) {
- reply_xdr.x_op = XDR_FREE;
- (void) xdr_opaque_auth(&reply_xdr,
- &reply_msg.acpted_rply.ar_verf);
- }
- xdr_destroy(&reply_xdr);
-
- return error;
-}
-
-
-int
-make_rpc_packet(char *buf, int buflen, u_long proc, struct rpc_msg *mp, voidp arg, XDRPROC_T_TYPE arg_xdr, AUTH *auth)
-{
- XDR msg_xdr;
- int len;
- /*
- * Never cast pointers between different integer types, it breaks badly
- * on big-endian platforms if those types have different sizes.
- *
- * Cast to a local variable instead, and use that variable's address.
- */
- enum_t local_proc = (enum_t) proc;
-
- xdrmem_create(&msg_xdr, buf, buflen, XDR_ENCODE);
-
- /*
- * Basic protocol header
- */
- if (!xdr_callhdr(&msg_xdr, mp))
- return -EIO;
-
- /*
- * Called procedure number
- */
- if (!xdr_enum(&msg_xdr, &local_proc))
- return -EIO;
-
- /*
- * Authorization
- */
- if (!AUTH_MARSHALL(auth, &msg_xdr))
- return -EIO;
-
- /*
- * Arguments
- */
- if (!(*arg_xdr) (&msg_xdr, arg))
- return -EIO;
-
- /*
- * Determine length
- */
- len = xdr_getpos(&msg_xdr);
-
- /*
- * Throw away xdr
- */
- xdr_destroy(&msg_xdr);
-
- return len;
-}
-
-
-/* get uid/gid from RPC credentials */
-int
-getcreds(struct svc_req *rp, uid_t *u, gid_t *g, SVCXPRT *nfsxprt)
-{
- struct authunix_parms *aup = (struct authunix_parms *) NULL;
-#ifdef HAVE_RPC_AUTH_DES_H
- struct authdes_cred *adp;
-#endif /* HAVE_RPC_AUTH_DES_H */
-
- switch (rp->rq_cred.oa_flavor) {
-
- case AUTH_UNIX:
- aup = (struct authunix_parms *) rp->rq_clntcred;
- *u = aup->aup_uid;
- *g = aup->aup_gid;
- break;
-
-#ifdef HAVE_RPC_AUTH_DES_H
- case AUTH_DES:
- adp = (struct authdes_cred *) rp->rq_clntcred;
- *g = INVALIDID; /* some unknown group id */
- if (sscanf(adp->adc_fullname.name, "unix.%lu@", (u_long *) u) == 1)
- break;
- /* fall through */
-#endif /* HAVE_RPC_AUTH_DES_H */
-
- default:
- *u = *g = INVALIDID; /* just in case */
- svcerr_weakauth(nfsxprt);
- return -1;
- }
-
- return 0; /* everything is ok */
-}
diff --git a/contrib/amd/libamu/mount_fs.c b/contrib/amd/libamu/mount_fs.c
deleted file mode 100644
index b5576bdc6d14..000000000000
--- a/contrib/amd/libamu/mount_fs.c
+++ /dev/null
@@ -1,1496 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/libamu/mount_fs.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-#include <nfs_common.h>
-
-
-/* ensure that mount table options are delimited by a comma */
-#define append_opts(old, l, new) { \
- if (*(old) != '\0') \
- xstrlcat(old, ",", l); \
- xstrlcat(old, new, l); }
-
-/*
- * Standard mount flags
- */
-struct opt_tab mnt_flags[] =
-{
-#if defined(MNT2_GEN_OPT_RDONLY) && defined(MNTTAB_OPT_RO)
- {MNTTAB_OPT_RO, MNT2_GEN_OPT_RDONLY},
-#endif /* defined(MNT2_GEN_OPT_RDONLY) && defined(MNTTAB_OPT_RO) */
-
-#if defined(MNT2_GEN_OPT_NOCACHE) && defined(MNTTAB_OPT_NOCACHE)
- {MNTTAB_OPT_NOCACHE, MNT2_GEN_OPT_NOCACHE},
-#endif /* defined(MNT2_GEN_OPT_NOCACHE) && defined(MNTTAB_OPT_NOCACHE) */
-
- /* the "grpid" mount option can be offered as generic of NFS */
-#ifdef MNTTAB_OPT_GRPID
-# ifdef MNT2_GEN_OPT_GRPID
- {MNTTAB_OPT_GRPID, MNT2_GEN_OPT_GRPID},
-# endif /* MNT2_GEN_OPT_GRPID */
-# ifdef MNT2_NFS_OPT_GRPID
- {MNTTAB_OPT_GRPID, MNT2_NFS_OPT_GRPID},
-# endif /* MNT2_NFS_OPT_GRPID */
-#endif /* MNTTAB_OPT_GRPID */
-
-#if defined(MNT2_GEN_OPT_MULTI) && defined(MNTTAB_OPT_MULTI)
- {MNTTAB_OPT_MULTI, MNT2_GEN_OPT_MULTI},
-#endif /* defined(MNT2_GEN_OPT_MULTI) && defined(MNTTAB_OPT_MULTI) */
-
-#if defined(MNT2_GEN_OPT_NODEV) && defined(MNTTAB_OPT_NODEV)
- {MNTTAB_OPT_NODEV, MNT2_GEN_OPT_NODEV},
-#endif /* defined(MNT2_GEN_OPT_NODEV) && defined(MNTTAB_OPT_NODEV) */
-
-#if defined(MNT2_GEN_OPT_NOEXEC) && defined(MNTTAB_OPT_NOEXEC)
- {MNTTAB_OPT_NOEXEC, MNT2_GEN_OPT_NOEXEC},
-#endif /* defined(MNT2_GEN_OPT_NOEXEC) && defined(MNTTAB_OPT_NOEXEC) */
-
-#if defined(MNT2_GEN_OPT_NOSUB) && defined(MNTTAB_OPT_NOSUB)
- {MNTTAB_OPT_NOSUB, MNT2_GEN_OPT_NOSUB},
-#endif /* defined(MNT2_GEN_OPT_NOSUB) && defined(MNTTAB_OPT_NOSUB) */
-
-#if defined(MNT2_GEN_OPT_NOSUID) && defined(MNTTAB_OPT_NOSUID)
- {MNTTAB_OPT_NOSUID, MNT2_GEN_OPT_NOSUID},
-#endif /* defined(MNT2_GEN_OPT_NOSUID) && defined(MNTTAB_OPT_NOSUID) */
-
-#if defined(MNT2_GEN_OPT_SYNC) && defined(MNTTAB_OPT_SYNC)
- {MNTTAB_OPT_SYNC, MNT2_GEN_OPT_SYNC},
-#endif /* defined(MNT2_GEN_OPT_SYNC) && defined(MNTTAB_OPT_SYNC) */
-
-#if defined(MNT2_GEN_OPT_OVERLAY) && defined(MNTTAB_OPT_OVERLAY)
- {MNTTAB_OPT_OVERLAY, MNT2_GEN_OPT_OVERLAY},
-#endif /* defined(MNT2_GEN_OPT_OVERLAY) && defined(MNTTAB_OPT_OVERLAY) */
-
-#if defined(MNT2_GEN_OPT_LOG) && defined(MNTTAB_OPT_LOG)
- {MNTTAB_OPT_LOG, MNT2_GEN_OPT_LOG},
-#endif /* defined(MNT2_GEN_OPT_LOG) && defined(MNTTAB_OPT_LOG) */
-
-#if defined(MNT2_GEN_OPT_NOATIME) && defined(MNTTAB_OPT_NOATIME)
- {MNTTAB_OPT_NOATIME, MNT2_GEN_OPT_NOATIME},
-#endif /* defined(MNT2_GEN_OPT_NOATIME) && defined(MNTTAB_OPT_NOATIME) */
-
-#if defined(MNT2_GEN_OPT_NODEVMTIME) && defined(MNTTAB_OPT_NODEVMTIME)
- {MNTTAB_OPT_NODEVMTIME, MNT2_GEN_OPT_NODEVMTIME},
-#endif /* defined(MNT2_GEN_OPT_NODEVMTIME) && defined(MNTTAB_OPT_NODEVMTIME) */
-
-#if defined(MNT2_GEN_OPT_SOFTDEP) && defined(MNTTAB_OPT_SOFTDEP)
- {MNTTAB_OPT_SOFTDEP, MNT2_GEN_OPT_SOFTDEP},
-#endif /* defined(MNT2_GEN_OPT_SOFTDEP) && defined(MNTTAB_OPT_SOFTDEP) */
-
-#if defined(MNT2_GEN_OPT_SYMPERM) && defined(MNTTAB_OPT_SYMPERM)
- {MNTTAB_OPT_SYMPERM, MNT2_GEN_OPT_SYMPERM},
-#endif /* defined(MNT2_GEN_OPT_SYMPERM) && defined(MNTTAB_OPT_SYMPERM) */
-
-#if defined(MNT2_GEN_OPT_UNION) && defined(MNTTAB_OPT_UNION)
- {MNTTAB_OPT_UNION, MNT2_GEN_OPT_UNION},
-#endif /* defined(MNT2_GEN_OPT_UNION) && defined(MNTTAB_OPT_UNION) */
-
- /*
- * Do not define MNT2_NFS_OPT_* entries here! This is for generic
- * mount(2) options only, not for NFS mount options. If you need to put
- * something here, it's probably not the right place: see
- * include/am_compat.h.
- */
-
- {0, 0}
-};
-
-
-/* compute generic mount flags */
-int
-compute_mount_flags(mntent_t *mntp)
-{
- struct opt_tab *opt;
- int flags = 0;
-
-#ifdef MNT2_GEN_OPT_NEWTYPE
- flags |= MNT2_GEN_OPT_NEWTYPE;
-#endif /* MNT2_GEN_OPT_NEWTYPE */
-#ifdef MNT2_GEN_OPT_AUTOMOUNTED
- flags |= MNT2_GEN_OPT_AUTOMOUNTED;
-#endif /* not MNT2_GEN_OPT_AUTOMOUNTED */
-
- /*
- * Crack basic mount options
- */
- for (opt = mnt_flags; opt->opt; opt++) {
- flags |= amu_hasmntopt(mntp, opt->opt) ? opt->flag : 0;
- }
-
- return flags;
-}
-
-
-/* compute generic mount flags for automounter mounts */
-int
-compute_automounter_mount_flags(mntent_t *mntp)
-{
- int flags = 0;
-
-#ifdef MNT2_GEN_OPT_IGNORE
- flags |= MNT2_GEN_OPT_IGNORE;
-#endif /* not MNT2_GEN_OPT_IGNORE */
-#ifdef MNT2_GEN_OPT_AUTOMNTFS
- flags |= MNT2_GEN_OPT_AUTOMNTFS;
-#endif /* not MNT2_GEN_OPT_AUTOMNTFS */
-
- return flags;
-}
-
-
-#if defined(MOUNT_TABLE_ON_FILE) && defined(MNTTAB_OPT_VERS)
-/*
- * add the extra vers={2,3} field to the mount table,
- * unless already specified by user
- */
-static void
-addvers(char *zopts, size_t l, mntent_t *mnt, u_long have_vers,
- u_long want_vers)
-{
- if (have_vers == want_vers &&
- hasmntval(mnt, MNTTAB_OPT_VERS) != want_vers) {
- char optsbuf[48];
- xsnprintf(optsbuf, sizeof(optsbuf),
- "%s=%d", MNTTAB_OPT_VERS, want_vers);
- append_opts(zopts, l, optsbuf);
- }
-}
-#endif /* MOUNT_TABLE_ON_FILE && MNTTAB_OPT_VERS */
-
-int
-mount_fs(mntent_t *mnt, int flags, caddr_t mnt_data, int retry, MTYPE_TYPE type, u_long nfs_version, const char *nfs_proto, const char *mnttabname, int on_autofs)
-{
- int error = 0;
-#ifdef MOUNT_TABLE_ON_FILE
- char *zopts = NULL, *xopts = NULL;
- size_t l;
-#endif /* MOUNT_TABLE_ON_FILE */
- char *mnt_dir = NULL;
-
-#ifdef NEED_AUTOFS_SPACE_HACK
- char *old_mnt_dir = NULL;
- /* perform space hack */
- if (on_autofs) {
- old_mnt_dir = mnt->mnt_dir;
- mnt->mnt_dir = mnt_dir = autofs_strdup_space_hack(old_mnt_dir);
- } else
-#endif /* NEED_AUTOFS_SPACE_HACK */
- mnt_dir = xstrdup(mnt->mnt_dir);
-
- dlog("'%s' fstype " MTYPE_PRINTF_TYPE " (%s) flags %#x (%s)",
- mnt_dir, type, mnt->mnt_type, flags, mnt->mnt_opts);
-
-again:
- error = MOUNT_TRAP(type, mnt, flags, mnt_data);
-
- if (error < 0) {
- plog(XLOG_ERROR, "'%s': mount: %m", mnt_dir);
- /*
- * The following code handles conditions which shouldn't
- * occur. They are possible either because amd screws up
- * in preparing for the mount, or because some human
- * messed with the mount point. Both have been known to
- * happen. -- stolcke 2/22/95
- */
- if (errno == EBUSY) {
- /*
- * Also, sometimes unmount isn't called, e.g., because
- * our mountlist is garbled. This leaves old mount
- * points around which need to be removed before we
- * can mount something new in their place.
- */
- errno = umount_fs(mnt_dir, mnttabname, on_autofs);
- if (errno != 0)
- plog(XLOG_ERROR, "'%s': umount: %m", mnt_dir);
- else {
- plog(XLOG_WARNING, "extra umount required for '%s'", mnt_dir);
- error = MOUNT_TRAP(type, mnt, flags, mnt_data);
- }
- }
- }
-
- if (error < 0 && --retry > 0) {
- sleep(1);
- goto again;
- }
-
-#ifdef NEED_AUTOFS_SPACE_HACK
- /* Undo space hack */
- if (on_autofs)
- mnt->mnt_dir = old_mnt_dir;
-#endif /* NEED_AUTOFS_SPACE_HACK */
-
- if (error < 0) {
- error = errno;
- goto out;
- }
-
-#ifdef MOUNT_TABLE_ON_FILE
- /*
- * Allocate memory for options:
- * dev=..., vers={2,3}, proto={tcp,udp}
- */
- l = strlen(mnt->mnt_opts) + 48;
- zopts = (char *) xmalloc(l);
-
- /* copy standard options */
- xopts = mnt->mnt_opts;
-
- xstrlcpy(zopts, xopts, l);
-
-# ifdef MNTTAB_OPT_DEV
- {
- /* add the extra dev= field to the mount table */
- struct stat stb;
- if (lstat(mnt_dir, &stb) == 0) {
- char optsbuf[48];
- if (sizeof(stb.st_dev) == 2) /* e.g. SunOS 4.1 */
- xsnprintf(optsbuf, sizeof(optsbuf), "%s=%04lx",
- MNTTAB_OPT_DEV, (u_long) stb.st_dev & 0xffff);
- else /* e.g. System Vr4 */
- xsnprintf(optsbuf, sizeof(optsbuf), "%s=%08lx",
- MNTTAB_OPT_DEV, (u_long) stb.st_dev);
- append_opts(zopts, l, optsbuf);
- }
- }
-# endif /* MNTTAB_OPT_DEV */
-
-# if defined(HAVE_FS_NFS4) && defined(MNTTAB_OPT_VERS)
- addvers(zopts, l, mnt, nfs_version, NFS_VERSION4);
-# endif /* defined(HAVE_FS_NFS4) && defined(MNTTAB_OPT_VERS) */
-# if defined(HAVE_FS_NFS3) && defined(MNTTAB_OPT_VERS)
- addvers(zopts, l, mnt, nfs_version, NFS_VERSION3);
-# endif /* defined(HAVE_FS_NFS3) && defined(MNTTAB_OPT_VERS) */
-# ifdef MNTTAB_OPT_VERS
- addvers(zopts, l, mnt, nfs_version, NFS_VERSION2);
-# endif /* MNTTAB_OPT_VERS */
-
-# ifdef MNTTAB_OPT_PROTO
- /*
- * add the extra proto={tcp,udp} field to the mount table,
- * unless already specified by user.
- */
- if (nfs_proto && !amu_hasmntopt(mnt, MNTTAB_OPT_PROTO)) {
- char optsbuf[48];
- xsnprintf(optsbuf, sizeof(optsbuf), "%s=%s", MNTTAB_OPT_PROTO, nfs_proto);
- append_opts(zopts, l, optsbuf);
- }
-# endif /* MNTTAB_OPT_PROTO */
-
- /* finally, store the options into the mount table structure */
- mnt->mnt_opts = zopts;
-
- /*
- * Additional fields in mntent_t
- * are fixed up here
- */
-# ifdef HAVE_MNTENT_T_MNT_CNODE
- mnt->mnt_cnode = 0;
-# endif /* HAVE_MNTENT_T_MNT_CNODE */
-
-# ifdef HAVE_MNTENT_T_MNT_RO
- mnt->mnt_ro = (amu_hasmntopt(mnt, MNTTAB_OPT_RO) != NULL);
-# endif /* HAVE_MNTENT_T_MNT_RO */
-
-# ifdef HAVE_MNTENT_T_MNT_TIME
-# ifdef HAVE_MNTENT_T_MNT_TIME_STRING
- { /* allocate enough space for a long */
- size_t l = 13 * sizeof(char);
- char *str = (char *) xmalloc(l);
- xsnprintf(str, l, "%ld", time((time_t *) NULL));
- mnt->mnt_time = str;
- }
-# else /* not HAVE_MNTENT_T_MNT_TIME_STRING */
- mnt->mnt_time = time((time_t *) NULL);
-# endif /* not HAVE_MNTENT_T_MNT_TIME_STRING */
-# endif /* HAVE_MNTENT_T_MNT_TIME */
-
- write_mntent(mnt, mnttabname);
-
-# ifdef MNTTAB_OPT_DEV
- if (xopts) {
- XFREE(mnt->mnt_opts);
- mnt->mnt_opts = xopts;
- }
-# endif /* MNTTAB_OPT_DEV */
-#endif /* MOUNT_TABLE_ON_FILE */
-
- out:
- XFREE(mnt_dir);
- return error;
-}
-
-
-/*
- * Compute all NFS attribute cache related flags separately. Note that this
- * function now computes attribute-cache flags for both Amd's automount
- * points (NFS) as well as any normal NFS mount that Amd performs. Edit
- * with caution.
- */
-static void
-compute_nfs_attrcache_flags(struct nfs_common_args *nap, mntent_t *mntp)
-{
- int acval = 0;
- int err_acval = 1; /* 1 means we found no 'actimeo' value */
-#if defined(HAVE_NFS_ARGS_T_ACREGMIN) || defined(HAVE_NFS_ARGS_T_ACREGMAX) || defined(HAVE_NFS_ARGS_T_ACDIRMIN) || defined(HAVE_NFS_ARGS_T_ACDIRMAX)
- int err_acrdmm; /* for ac{reg,dir}{min,max} */
-#endif /* HAVE_NFS_ARGS_T_AC{REG,DIR}{MIN,MAX} */
-
- /************************************************************************/
- /*** ATTRIBUTE CACHES ***/
- /************************************************************************/
- /*
- * acval is set to 0 at the top of the function. If actimeo mount option
- * exists and defined in mntopts, then its acval is set to it.
- * If the value is non-zero, then we set all attribute cache fields to it.
- * If acval is zero, it means it was never defined in mntopts or the
- * actimeo mount option does not exist, in which case we check for
- * individual mount options per attribute cache.
- * Regardless of the value of acval, mount flags are set based directly
- * on the values of the attribute caches.
- */
-#ifdef MNTTAB_OPT_ACTIMEO
- err_acval = hasmntvalerr(mntp, MNTTAB_OPT_ACTIMEO, &acval); /* attr cache timeout (sec) */
-#endif /* MNTTAB_OPT_ACTIMEO */
-
- /*** acregmin ***/
-#ifdef HAVE_NFS_ARGS_T_ACREGMIN
- err_acrdmm = 1; /* 1 means we found no acregmin value */
- if (!err_acval) {
- nap->acregmin = acval; /* min ac timeout for reg files (sec) */
- } else {
-# ifdef MNTTAB_OPT_ACREGMIN
- int tmp;
- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACREGMIN, &tmp);
- nap->acregmin = tmp;
-# else /* not MNTTAB_OPT_ACREGMIN */
- nap->acregmin = 0;
-# endif /* not MNTTAB_OPT_ACREGMIN */
- }
- /* set this flag iff we changed acregmin (possibly to zero) */
-# ifdef MNT2_NFS_OPT_ACREGMIN
- if (!err_acval || !err_acrdmm)
- nap->flags |= MNT2_NFS_OPT_ACREGMIN;
-# endif /* MNT2_NFS_OPT_ACREGMIN */
-#endif /* HAVE_NFS_ARGS_T_ACREGMIN */
-
- /*** acregmax ***/
-#ifdef HAVE_NFS_ARGS_T_ACREGMAX
- err_acrdmm = 1; /* 1 means we found no acregmax value */
- if (!err_acval) {
- nap->acregmax = acval; /* max ac timeout for reg files (sec) */
- } else {
-# ifdef MNTTAB_OPT_ACREGMAX
- int tmp;
- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACREGMAX, &tmp);
- nap->acregmax = tmp;
-# else /* not MNTTAB_OPT_ACREGMAX */
- nap->acregmax = 0;
-# endif /* not MNTTAB_OPT_ACREGMAX */
- }
- /* set this flag iff we changed acregmax (possibly to zero) */
-# ifdef MNT2_NFS_OPT_ACREGMAX
- if (!err_acval || !err_acrdmm)
- nap->flags |= MNT2_NFS_OPT_ACREGMAX;
-# endif /* MNT2_NFS_OPT_ACREGMAX */
-#endif /* HAVE_NFS_ARGS_T_ACREGMAX */
-
- /*** acdirmin ***/
-#ifdef HAVE_NFS_ARGS_T_ACDIRMIN
- err_acrdmm = 1; /* 1 means we found no acdirmin value */
- if (!err_acval) {
- nap->acdirmin = acval; /* min ac timeout for dirs (sec) */
- } else {
-# ifdef MNTTAB_OPT_ACDIRMIN
- int tmp;
- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACDIRMIN, &tmp);
- nap->acdirmin = tmp;
-# else /* not MNTTAB_OPT_ACDIRMIN */
- nap->acdirmin = 0;
-# endif /* not MNTTAB_OPT_ACDIRMIN */
- }
- /* set this flag iff we changed acdirmin (possibly to zero) */
-# ifdef MNT2_NFS_OPT_ACDIRMIN
- if (!err_acval || !err_acrdmm)
- nap->flags |= MNT2_NFS_OPT_ACDIRMIN;
-# endif /* MNT2_NFS_OPT_ACDIRMIN */
-#endif /* HAVE_NFS_ARGS_T_ACDIRMIN */
-
- /*** acdirmax ***/
-#ifdef HAVE_NFS_ARGS_T_ACDIRMAX
- err_acrdmm = 1; /* 1 means we found no acdirmax value */
- if (!err_acval) {
- nap->acdirmax = acval; /* max ac timeout for dirs (sec) */
- } else {
-# ifdef MNTTAB_OPT_ACDIRMAX
- int tmp;
- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACDIRMAX, &tmp);
- nap->acdirmax = tmp;
-# else /* not MNTTAB_OPT_ACDIRMAX */
- nap->acdirmax = 0;
-# endif /* not MNTTAB_OPT_ACDIRMAX */
- }
- /* set this flag iff we changed acdirmax (possibly to zero) */
-# ifdef MNT2_NFS_OPT_ACDIRMAX
- if (!err_acval || !err_acrdmm)
- nap->flags |= MNT2_NFS_OPT_ACDIRMAX;
-# endif /* MNT2_NFS_OPT_ACDIRMAX */
-#endif /* HAVE_NFS_ARGS_T_ACDIRMAX */
-
-
- /* don't cache attributes */
-#if defined(MNTTAB_OPT_NOAC) && defined(MNT2_NFS_OPT_NOAC)
- if (amu_hasmntopt(mntp, MNTTAB_OPT_NOAC) != NULL)
- nap->flags |= MNT2_NFS_OPT_NOAC;
-#endif /* defined(MNTTAB_OPT_NOAC) && defined(MNT2_NFS_OPT_NOAC) */
-}
-
-
-
-static void
-compute_nfs_common_args(struct nfs_common_args *nap, mntent_t *mntp,
- const char *nfs_proto, u_long nfs_version)
-{
-#ifdef MNT2_NFS_OPT_TCP
- if (nfs_proto && STREQ(nfs_proto, "tcp"))
- nap->flags |= MNT2_NFS_OPT_TCP;
-#endif /* MNT2_NFS_OPT_TCP */
-
-#ifdef MNT2_NFS_OPT_NOCONN
- /* check if user specified to use unconnected or connected sockets */
- if (amu_hasmntopt(mntp, MNTTAB_OPT_NOCONN) != NULL)
- nap->flags |= MNT2_NFS_OPT_NOCONN;
- else if (amu_hasmntopt(mntp, MNTTAB_OPT_CONN) != NULL)
- nap->flags &= ~MNT2_NFS_OPT_NOCONN;
- else {
- /*
- * Some OSs want you to set noconn always. Some want you to always turn
- * it off. Others want you to turn it on/off only if NFS V.3 is used.
- * And all of that changes from revision to another. This is
- * particularly true of OpenBSD, NetBSD, and FreeBSD. So, rather than
- * attempt to auto-detect this, I'm forced to "fix" it in the individual
- * conf/nfs_prot/nfs_prot_*.h files.
- */
-# ifdef USE_UNCONNECTED_NFS_SOCKETS
- if (!(nap->flags & MNT2_NFS_OPT_NOCONN)) {
- nap->flags |= MNT2_NFS_OPT_NOCONN;
- plog(XLOG_WARNING, "noconn option not specified, and was just turned ON (OS override)! (May cause NFS hangs on some systems...)");
- }
-# endif /* USE_UNCONNECTED_NFS_SOCKETS */
-# ifdef USE_CONNECTED_NFS_SOCKETS
- if (nap->flags & MNT2_NFS_OPT_NOCONN) {
- nap->flags &= ~MNT2_NFS_OPT_NOCONN;
- plog(XLOG_WARNING, "noconn option specified, and was just turned OFF (OS override)! (May cause NFS hangs on some systems...)");
- }
-# endif /* USE_CONNECTED_NFS_SOCKETS */
- }
-#endif /* MNT2_NFS_OPT_NOCONN */
-
-#ifdef MNT2_NFS_OPT_RESVPORT
-# ifdef MNTTAB_OPT_RESVPORT
- if (amu_hasmntopt(mntp, MNTTAB_OPT_RESVPORT) != NULL)
- nap->flags |= MNT2_NFS_OPT_RESVPORT;
-# else /* not MNTTAB_OPT_RESVPORT */
- nap->flags |= MNT2_NFS_OPT_RESVPORT;
-# endif /* not MNTTAB_OPT_RESVPORT */
-#endif /* MNT2_NFS_OPT_RESVPORT */
-
- nap->rsize = hasmntval(mntp, MNTTAB_OPT_RSIZE);
-#ifdef MNT2_NFS_OPT_RSIZE
- if (nap->rsize)
- nap->flags |= MNT2_NFS_OPT_RSIZE;
-#endif /* MNT2_NFS_OPT_RSIZE */
- if (nfs_version == NFS_VERSION && nap->rsize > 8192)
- nap->rsize = 8192;
-
- nap->wsize = hasmntval(mntp, MNTTAB_OPT_WSIZE);
-#ifdef MNT2_NFS_OPT_WSIZE
- if (nap->wsize)
- nap->flags |= MNT2_NFS_OPT_WSIZE;
-#endif /* MNT2_NFS_OPT_WSIZE */
- if (nfs_version == NFS_VERSION && nap->wsize > 8192)
- nap->wsize = 8192;
-
- nap->timeo = hasmntval(mntp, MNTTAB_OPT_TIMEO);
-#ifdef MNT2_NFS_OPT_TIMEO
- if (nap->timeo)
- nap->flags |= MNT2_NFS_OPT_TIMEO;
-#endif /* MNT2_NFS_OPT_TIMEO */
-
- nap->retrans = hasmntval(mntp, MNTTAB_OPT_RETRANS);
-#ifdef MNT2_NFS_OPT_RETRANS
- if (nap->retrans)
- nap->flags |= MNT2_NFS_OPT_RETRANS;
-#endif /* MNT2_NFS_OPT_RETRANS */
-
-#ifdef MNT2_NFS_OPT_SOFT
- if (amu_hasmntopt(mntp, MNTTAB_OPT_SOFT) != NULL)
- nap->flags |= MNT2_NFS_OPT_SOFT;
-#endif /* MNT2_NFS_OPT_SOFT */
-
-#ifdef MNT2_NFS_OPT_SPONGY
- if (amu_hasmntopt(mntp, MNTTAB_OPT_SPONGY) != NULL) {
- nap->flags |= MNT2_NFS_OPT_SPONGY;
- if (*flags & MNT2_NFS_OPT_SOFT) {
- plog(XLOG_USER, "Mount opts soft and spongy are incompatible - soft ignored");
- nap->flags &= ~MNT2_NFS_OPT_SOFT;
- }
- }
-#endif /* MNT2_NFS_OPT_SPONGY */
-
-#if defined(MNT2_GEN_OPT_RONLY) && defined(MNT2_NFS_OPT_RONLY)
- /* Ultrix has separate generic and NFS ro flags */
- if (genflags & MNT2_GEN_OPT_RONLY)
- nap->flags |= MNT2_NFS_OPT_RONLY;
-#endif /* defined(MNT2_GEN_OPT_RONLY) && defined(MNT2_NFS_OPT_RONLY) */
-
-#ifdef MNTTAB_OPT_INTR
- if (amu_hasmntopt(mntp, MNTTAB_OPT_INTR) != NULL)
- /*
- * Either turn on the "allow interrupts" option, or
- * turn off the "disallow interrupts" option"
- */
-# ifdef MNT2_NFS_OPT_INTR
- nap->flags |= MNT2_NFS_OPT_INTR;
-# endif /* MNT2_NFS_OPT_INTR */
-# ifdef MNT2_NFS_OPT_NOINTR
- nap->flags &= ~MNT2_NFS_OPT_NOINTR;
-# endif /* MNT2_NFS_OPT_NOINTR */
-# ifdef MNT2_NFS_OPT_INT
- nap->flags |= MNT2_NFS_OPT_INT;
-# endif /* MNT2_NFS_OPT_INT */
-# ifdef MNT2_NFS_OPT_NOINT
- nap->flags &= ~MNT2_NFS_OPT_NOINT;
-# endif /* MNT2_NFS_OPT_NOINT */
-#endif /* MNTTAB_OPT_INTR */
-
-#ifdef MNT2_NFS_OPT_NOACL
- if (amu_hasmntopt(mntp, MNTTAB_OPT_NOACL) != NULL)
- nap->flags |= MNT2_NFS_OPT_NOACL;
-#endif /* MNT2_NFS_OPT_NOACL */
-
-#ifdef MNTTAB_OPT_NODEVS
- if (amu_hasmntopt(mntp, MNTTAB_OPT_NODEVS) != NULL)
- nap->flags |= MNT2_NFS_OPT_NODEVS;
-#endif /* MNTTAB_OPT_NODEVS */
-
-#ifdef MNTTAB_OPT_COMPRESS
- if (amu_hasmntopt(mntp, MNTTAB_OPT_COMPRESS) != NULL)
- nap->flags |= MNT2_NFS_OPT_COMPRESS;
-#endif /* MNTTAB_OPT_COMPRESS */
-
-#ifdef MNTTAB_OPT_PRIVATE /* mount private, single-client tree */
- if (amu_hasmntopt(mntp, MNTTAB_OPT_PRIVATE) != NULL)
- nap->flags |= MNT2_NFS_OPT_PRIVATE;
-#endif /* MNTTAB_OPT_PRIVATE */
-
-
-#if defined(MNT2_NFS_OPT_NOCTO) && defined(MNTTAB_OPT_NOCTO)
- if (amu_hasmntopt(mntp, MNTTAB_OPT_NOCTO) != NULL)
- nap->flags |= MNT2_NFS_OPT_NOCTO;
-#endif /* defined(MNT2_NFS_OPT_NOCTO) && defined(MNTTAB_OPT_NOCTO) */
-
-#if defined(MNT2_NFS_OPT_PROPLIST) && defined(MNTTAB_OPT_PROPLIST)
- if (amu_hasmntopt(mntp, MNTTAB_OPT_PROPLIST) != NULL)
- nap->flags |= MNT2_NFS_OPT_PROPLIST;
-#endif /* defined(MNT2_NFS_OPT_PROPLIST) && defined(MNTTAB_OPT_PROPLIST) */
-
-#if defined(MNT2_NFS_OPT_NONLM) && defined(MNTTAB_OPT_NOLOCK)
- if (amu_hasmntopt(mntp, MNTTAB_OPT_NOLOCK) != NULL)
- nap->flags |= MNT2_NFS_OPT_NONLM;
-#endif /* defined(MNT2_NFS_OPT_NONLM) && defined(MNTTAB_OPT_NOLOCK) */
-
-#if defined(MNT2_NFS_OPT_XLATECOOKIE) && defined(MNTTAB_OPT_XLATECOOKIE)
- if (amu_hasmntopt(mntp, MNTTAB_OPT_XLATECOOKIE) != NULL)
- nap->flags |= MNT2_NFS_OPT_XLATECOOKIE;
-#endif /* defined(MNT2_NFS_OPT_XLATECOOKIE) && defined(MNTTAB_OPT_XLATECOOKIE) */
-}
-
-static void
-print_nfs_common_args(const struct nfs_common_args *a)
-{
- plog(XLOG_DEBUG, "NA->flags = 0x%lx", a->flags);
-
- plog(XLOG_DEBUG, "NA->rsize = %lu", a->rsize);
- plog(XLOG_DEBUG, "NA->wsize = %lu", a->wsize);
- plog(XLOG_DEBUG, "NA->timeo = %lu", a->timeo);
- plog(XLOG_DEBUG, "NA->retrans = %lu", a->retrans);
-
-#ifdef HAVE_NFS_ARGS_T_ACREGMIN
- plog(XLOG_DEBUG, "NA->acregmin = %lu", a->acregmin);
- plog(XLOG_DEBUG, "NA->acregmax = %lu", a->acregmax);
- plog(XLOG_DEBUG, "NA->acdirmin = %lu", a->acdirmin);
- plog(XLOG_DEBUG, "NA->acdirmax = %lu", a->acdirmax);
-#endif /* HAVE_NFS_ARGS_T_ACREGMIN */
-}
-
-static void
-discard_nfs23_args(nfs_args_t *nap)
-{
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- free_knetconfig(nap->knconf);
- if (nap->addr)
- XFREE(nap->addr); /* allocated in compute_nfs_args() */
-#endif /* HAVE_TRANSPORT_TYPE_TLI */
-}
-
-#ifdef DEBUG
-/* get string version (in hex) of identifier */
-static char *
-get_hex_string(u_int len, const char *fhdata)
-{
- u_int i;
- static u_int xlen;
- static char *buf;
- static u_short *arr;
- char str[16];
-
- if (!fhdata || len == 0 || len > 10240)
- return NULL;
- i = len * 4 + 1;
- if (xlen < i) {
- buf = xrealloc(buf, i);
- arr = xrealloc(arr, len * sizeof(*arr));
- xlen = i;
- }
-
- buf[0] = '\0';
- memset(arr, 0, len * sizeof(*arr));
- memcpy(arr, fhdata, len);
- len /= sizeof(*arr);
- for (i = 0; i < len; i++) {
- xsnprintf(str, sizeof(str), "%04x", ntohs(arr[i]));
- xstrlcat(buf, str, xlen);
- }
- return buf;
-}
-
-static void
-print_nfs_sockaddr_in(const char *tag, const struct sockaddr_in *sap)
-{
- char name[64];
- plog(XLOG_DEBUG, "NA->%s.sin_family = %d", tag, sap->sin_family);
- plog(XLOG_DEBUG, "NA->%s.sin_port = %d", tag, ntohs(sap->sin_port));
- if (inet_ntop(AF_INET, &sap->sin_addr, name, sizeof(name)) == NULL)
- return;
- plog(XLOG_DEBUG, "NA->%s.sin_addr = \"%s\"", tag, name);
-}
-
-/*
- * print a subset of fields from "struct nfs_args" that are otherwise
- * not being provided anywhere else.
- */
-static void
-print_nfs23_args(const nfs_args_t *nap, u_long nfs_version)
-{
- int fhlen = 32; /* default: NFS V.2 file handle length is 32 */
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- struct netbuf *nbp;
- struct knetconfig *kncp;
-#else /* not HAVE_TRANSPORT_TYPE_TLI */
- struct sockaddr_in *sap;
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
- struct nfs_common_args a;
-
- if (!nap) {
- plog(XLOG_DEBUG, "NULL nfs_args!");
- return;
- }
-
- /* override default file handle size */
-#ifdef FHSIZE
- fhlen = FHSIZE;
-#endif /* FHSIZE */
-#ifdef NFS_FHSIZE
- fhlen = NFS_FHSIZE;
-#endif /* NFS_FHSIZE */
-
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- nbp = nap->addr;
- plog(XLOG_DEBUG, "NA->addr {netbuf} (maxlen=%d, len=%d) = \"%s\"",
- nbp->maxlen, nbp->len,
- get_hex_string(nbp->len, nbp->buf));
- nbp = nap->syncaddr;
- plog(XLOG_DEBUG, "NA->syncaddr {netbuf} %p", nbp);
- kncp = nap->knconf;
- plog(XLOG_DEBUG, "NA->knconf->semantics %lu", (u_long) kncp->knc_semantics);
- plog(XLOG_DEBUG, "NA->knconf->protofmly \"%s\"", kncp->knc_protofmly);
- plog(XLOG_DEBUG, "NA->knconf->proto \"%s\"", kncp->knc_proto);
- plog(XLOG_DEBUG, "NA->knconf->rdev %lu", (u_long) kncp->knc_rdev);
- /* don't print knconf->unused field */
-#else /* not HAVE_TRANSPORT_TYPE_TLI */
-# ifdef NFS_ARGS_T_ADDR_IS_POINTER
- sap = (struct sockaddr_in *) nap->addr;
-# else /* not NFS_ARGS_T_ADDR_IS_POINTER */
- sap = (struct sockaddr_in *) &nap->addr;
-# endif /* not NFS_ARGS_T_ADDR_IS_POINTER */
-#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
- /* as per POSIX, sin_len need not be set (used internally by kernel) */
- plog(XLOG_DEBUG, "NA->addr.sin_len = %d", sap->sin_len);
-#endif /* HAVE_STRUCT_SOCKADDR_SA_LEN */
- print_nfs_sockaddr_in("addr", sap);
-#endif /* not HAVE_TRANSPORT_TYPE_TLI */
-#ifdef HAVE_NFS_ARGS_T_ADDRLEN
- plog(XLOG_DEBUG, "NA->addrlen = %d", nap->addrlen);
-#endif /* ifdef HAVE_NFS_ARGS_T_ADDRLEN */
-
- plog(XLOG_DEBUG, "NA->hostname = \"%s\"", nap->hostname ? nap->hostname : "null");
-#ifdef HAVE_NFS_ARGS_T_NAMLEN
- plog(XLOG_DEBUG, "NA->namlen = %d", nap->namlen);
-#endif /* HAVE_NFS_ARGS_T_NAMLEN */
-
-#ifdef MNT2_NFS_OPT_FSNAME
- plog(XLOG_DEBUG, "NA->fsname = \"%s\"", nap->fsname ? nap->fsname : "null");
-#endif /* MNT2_NFS_OPT_FSNAME */
-
-#ifdef HAVE_NFS_ARGS_T_FHSIZE
- plog(XLOG_DEBUG, "NA->fhsize = %d", nap->fhsize);
- fhlen = nap->fhsize;
-#endif /* HAVE_NFS_ARGS_T_FHSIZE */
-#ifdef HAVE_NFS_ARGS_T_FH_LEN
- plog(XLOG_DEBUG, "NA->fh_len = %d", nap->fh_len);
- fhlen = nap->fh_len;
-#endif /* HAVE_NFS_ARGS_T_FH_LEN */
-
- /*
- * XXX: need to figure out how to correctly print file handles,
- * since some times they are pointers, and sometimes the real structure
- * is stored in nfs_args. Even if it is a pointer, it can be the actual
- * char[] array, or a structure containing multiple fields.
- */
- plog(XLOG_DEBUG, "NA->filehandle = \"%s\"",
- get_hex_string(fhlen, (const char *) &nap->NFS_FH_FIELD));
-
-#ifdef HAVE_NFS_ARGS_T_SOTYPE
- plog(XLOG_DEBUG, "NA->sotype = %d", nap->sotype);
-#endif /* HAVE_NFS_ARGS_T_SOTYPE */
-#ifdef HAVE_NFS_ARGS_T_PROTO
- plog(XLOG_DEBUG, "NA->proto = %d", (int) nap->proto);
-#endif /* HAVE_NFS_ARGS_T_PROTO */
-#ifdef HAVE_NFS_ARGS_T_VERSION
- plog(XLOG_DEBUG, "NA->version = %d", nap->version);
-#endif /* HAVE_NFS_ARGS_T_VERSION */
-
- put_nfs_common_args(nap, a);
- print_nfs_common_args(&a);
-
-#ifdef HAVE_NFS_ARGS_T_BSIZE
- plog(XLOG_DEBUG, "NA->bsize = %d", nap->bsize);
-#endif /* HAVE_NFS_ARGS_T_BSIZE */
-
-#ifdef MNTTAB_OPT_SYMTTL
- plog(XLOG_DEBUG, "NA->symttl = %d", nap->symttl);
-#endif /* MNTTAB_OPT_SYMTTL */
-#ifdef MNTTAB_OPT_PG_THRESH
- plog(XLOG_DEBUG, "NA->pg_thresh = %d", nap->pg_thresh);
-#endif /* MNTTAB_OPT_PG_THRESH */
-
-#ifdef MNT2_NFS_OPT_BIODS
- plog(XLOG_DEBUG, "NA->biods = %d", nap->biods);
-#endif /* MNT2_NFS_OPT_BIODS */
-
-}
-#endif /* DEBUG */
-
-/*
- * Fill in the many possible fields and flags of struct nfs_args.
- *
- * nap: pre-allocated structure to fill in.
- * mntp: mount entry structure (includes options)
- * genflags: generic mount flags already determined
- * nfsncp: (TLI only) netconfig entry for this NFS mount
- * ip_addr: IP address of file server
- * nfs_version: 2, 3, or 0 if unknown
- * nfs_proto: "udp", "tcp", or NULL.
- * fhp: file handle structure pointer
- * host_name: name of remote NFS host
- * fs_name: remote file system name to mount
- */
-static void
-compute_nfs23_args(nfs_args_t *nap,
- mntent_t *mntp,
- int genflags,
- struct netconfig *nfsncp,
- struct sockaddr_in *ip_addr,
- u_long nfs_version,
- char *nfs_proto,
- am_nfs_handle_t *fhp,
- char *host_name,
- char *fs_name)
-{
- struct nfs_common_args a;
- /* initialize just in case */
- memset((voidp) nap, 0, sizeof(nfs_args_t));
-
- /* compute all of the NFS attribute-cache flags */
- memset(&a, 0, sizeof(a));
- compute_nfs_attrcache_flags(&a, mntp);
- compute_nfs_common_args(&a, mntp, nfs_proto, nfs_version);
- get_nfs_common_args(nap, a);
-
- /************************************************************************/
- /*** FILEHANDLE DATA AND LENGTH ***/
- /************************************************************************/
-#ifdef HAVE_FS_NFS3
- if (nfs_version == NFS_VERSION3) {
- if (fhp == NULL) {
- plog(XLOG_FATAL, "cannot pass NULL fh for NFSv%lu", nfs_version);
- going_down(1);
- return;
- }
-
-# if defined(HAVE_NFS_ARGS_T_FHSIZE) || defined(HAVE_NFS_ARGS_T_FH_LEN)
- /*
- * Some systems (Irix/bsdi3) have a separate field in nfs_args for
- * the length of the file handle for NFS V3. They insist that
- * the file handle set in nfs_args be plain bytes, and not
- * include the length field.
- */
- NFS_FH_DREF(nap->NFS_FH_FIELD, &fhp->v3.am_fh3_data);
-# else /* not defined(HAVE_NFS_ARGS_T_FHSIZE) || defined(HAVE_NFS_ARGS_T_FH_LEN) */
- NFS_FH_DREF(nap->NFS_FH_FIELD, &fhp->v3);
-# endif /* not defined(HAVE_NFS_ARGS_T_FHSIZE) || defined(HAVE_NFS_ARGS_T_FH_LEN) */
-# ifdef MNT2_NFS_OPT_NFSV3
- nap->flags |= MNT2_NFS_OPT_NFSV3;
-# endif /* MNT2_NFS_OPT_NFSV3 */
-# ifdef MNT2_NFS_OPT_VER3
- nap->flags |= MNT2_NFS_OPT_VER3;
-# endif /* MNT2_NFS_OPT_VER3 */
- } else
-#endif /* HAVE_FS_NFS3 */
- {
- if (fhp == NULL) {
- plog(XLOG_FATAL, "cannot pass NULL fh for NFSv%lu", nfs_version);
- going_down(1);
- return;
- }
- NFS_FH_DREF(nap->NFS_FH_FIELD, &fhp->v2);
- }
-
-#ifdef HAVE_NFS_ARGS_T_FHSIZE
-# ifdef HAVE_FS_NFS3
- if (nfs_version == NFS_VERSION3)
- nap->fhsize = fhp->v3.am_fh3_length;
- else
-# endif /* HAVE_FS_NFS3 */
- nap->fhsize = FHSIZE;
-#endif /* HAVE_NFS_ARGS_T_FHSIZE */
-
- /* this is the version of the nfs_args structure, not of NFS! */
-#ifdef HAVE_NFS_ARGS_T_FH_LEN
-# ifdef HAVE_FS_NFS3
- if (nfs_version == NFS_VERSION3)
- nap->fh_len = fhp->v3.am_fh3_length;
- else
-# endif /* HAVE_FS_NFS3 */
- nap->fh_len = FHSIZE;
-#endif /* HAVE_NFS_ARGS_T_FH_LEN */
-
- /************************************************************************/
- /*** HOST NAME ***/
- /************************************************************************/
- /*
- * XXX: warning, using xstrlcpy in NFS_HN_DREF, which may corrupt a
- * struct nfs_args, or truncate our concocted "hostname:/path"
- * string prematurely.
- */
- NFS_HN_DREF(nap->hostname, host_name);
-#ifdef MNT2_NFS_OPT_HOSTNAME
- nap->flags |= MNT2_NFS_OPT_HOSTNAME;
-#endif /* MNT2_NFS_OPT_HOSTNAME */
-
- /************************************************************************/
- /*** IP ADDRESS OF REMOTE HOST ***/
- /************************************************************************/
- if (ip_addr) {
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- nap->addr = ALLOC(struct netbuf); /* free()'ed at end of mount_nfs_fh() */
-#endif /* HAVE_TRANSPORT_TYPE_TLI */
- NFS_SA_DREF(nap, ip_addr);
- }
-
- /************************************************************************/
- /*** NFS PROTOCOL (UDP, TCP) AND VERSION ***/
- /************************************************************************/
-#ifdef HAVE_NFS_ARGS_T_SOTYPE
- /* bsdi3 uses this */
- if (nfs_proto) {
- if (STREQ(nfs_proto, "tcp"))
- nap->sotype = SOCK_STREAM;
- else if (STREQ(nfs_proto, "udp"))
- nap->sotype = SOCK_DGRAM;
- }
-#endif /* HAVE_NFS_ARGS_T_SOTYPE */
-
-#ifdef HAVE_NFS_ARGS_T_PROTO
- nap->proto = 0; /* bsdi3 sets this field to zero */
-# ifdef IPPROTO_TCP
- if (nfs_proto) {
- if (STREQ(nfs_proto, "tcp")) /* AIX 4.2.x needs this */
- nap->proto = IPPROTO_TCP;
- else if (STREQ(nfs_proto, "udp"))
- nap->proto = IPPROTO_UDP;
- }
-# endif /* IPPROTO_TCP */
-#endif /* HAVE_NFS_ARGS_T_SOTYPE */
-
-#ifdef HAVE_NFS_ARGS_T_VERSION
-# ifdef NFS_ARGSVERSION
- nap->version = NFS_ARGSVERSION; /* BSDI 3.0 and OpenBSD 2.2 */
-# endif /* NFS_ARGSVERSION */
-# ifdef DG_MOUNT_NFS_VERSION
- nap->version = DG_MOUNT_NFS_VERSION; /* dg-ux */
-# endif /* DG_MOUNT_NFS_VERSION */
-#endif /* HAVE_NFS_ARGS_VERSION */
-
- /************************************************************************/
- /*** OTHER NFS SOCKET RELATED OPTIONS AND FLAGS ***/
- /************************************************************************/
-
- /************************************************************************/
- /*** OTHER FLAGS AND OPTIONS ***/
- /************************************************************************/
-
-#ifdef MNT2_NFS_OPT_BIODS
- if ((nap->biods = hasmntval(mntp, MNTTAB_OPT_BIODS)))
- nap->flags |= MNT2_NFS_OPT_BIODS;
-#endif /* MNT2_NFS_OPT_BIODS */
-
-#ifdef MNTTAB_OPT_SYMTTL /* symlink cache time-to-live */
- if ((nap->symttl = hasmntval(mntp, MNTTAB_OPT_SYMTTL)))
- nap->args.flags |= MNT2_NFS_OPT_SYMTTL;
-#endif /* MNTTAB_OPT_SYMTTL */
-
-#ifdef MNT2_NFS_OPT_PGTHRESH /* paging threshold */
- if ((nap->pg_thresh = hasmntval(mntp, MNTTAB_OPT_PGTHRESH)))
- nap->args.flags |= MNT2_NFS_OPT_PGTHRESH;
-#endif /* MNT2_NFS_OPT_PGTHRESH */
-
-#if defined(MNT2_NFS_OPT_POSIX) && defined(MNTTAB_OPT_POSIX)
- if (amu_hasmntopt(mntp, MNTTAB_OPT_POSIX) != NULL) {
- nap->flags |= MNT2_NFS_OPT_POSIX;
-# ifdef HAVE_NFS_ARGS_T_PATHCONF
- nap->pathconf = NULL;
-# endif /* HAVE_NFS_ARGS_T_PATHCONF */
- }
-#endif /* MNT2_NFS_OPT_POSIX && MNTTAB_OPT_POSIX */
-
-#ifdef HAVE_TRANSPORT_TYPE_TLI
- /* set up syncaddr field */
- nap->syncaddr = (struct netbuf *) NULL;
-
- /* set up knconf field */
- if (get_knetconfig(&nap->knconf, nfsncp, nfs_proto) < 0) {
- plog(XLOG_FATAL, "cannot fill knetconfig structure for nfs_args");
- going_down(1);
- return;
- }
- /* update the flags field for knconf */
- nap->args.flags |= MNT2_NFS_OPT_KNCONF;
-#endif /* HAVE_TRANSPORT_TYPE_TLI */
-
-#ifdef MNT2_NFS_OPT_FSNAME
- nap->fsname = fs_name;
- nap->args.flags |= MNT2_NFS_OPT_FSNAME;
-#endif /* MNT2_NFS_OPT_FSNAME */
-
-
-#ifdef HAVE_NFS_ARGS_T_OPTSTR
- nap->optstr = mntp->mnt_opts;
-#endif /* HAVE_NFS_ARGS_T_OPTSTR */
-
-#if defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS)
- nap->maxgrouplist = hasmntval(mntp, MNTTAB_OPT_MAXGROUPS);
- if (nap->maxgrouplist != 0)
- nap->flags |= MNT2_NFS_OPT_MAXGRPS;
-#endif /* defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) */
-
- /************************************************************************/
- /*** FINAL ACTIONS ***/
- /************************************************************************/
-
-#ifdef HAVE_NFS_ARGS_T_GFS_FLAGS
- /* Ultrix stores generic flags in nfs_args.gfs_flags. */
- nap->gfs_flags = genflags;
-#endif /* HAVE_NFS_ARGS_T_FLAGS */
-
- return; /* end of compute_nfs_args() function */
-}
-
-#ifdef HAVE_FS_NFS4
-
-#define RPC_AUTH_GSS_KRB5 390003
-#define RPC_AUTH_GSS_KRB5I 390004
-#define RPC_AUTH_GSS_KRB5P 390005
-#define RPC_AUTH_GSS_LKEY 390006
-#define RPC_AUTH_GSS_LKEYI 390007
-#define RPC_AUTH_GSS_LKEYP 390008
-#define RPC_AUTH_GSS_SPKM 390009
-#define RPC_AUTH_GSS_SPKMI 390010
-#define RPC_AUTH_GSS_SPKMP 390011
-
-struct {
- const char *name;
- int num;
-} flavours[] = {
- { "unix", AUTH_UNIX },
- { "krb5", RPC_AUTH_GSS_KRB5 },
- { "krb5i", RPC_AUTH_GSS_KRB5I },
- { "krb5p", RPC_AUTH_GSS_KRB5P },
- { "lkey", RPC_AUTH_GSS_LKEY },
- { "lkeyi", RPC_AUTH_GSS_LKEYI },
- { "lkeyp", RPC_AUTH_GSS_LKEYP },
- { "spkm", RPC_AUTH_GSS_SPKM },
- { "spkmi", RPC_AUTH_GSS_SPKMI },
- { "spkmp", RPC_AUTH_GSS_SPKMP },
-};
-
-static char *
-set_nfs4_security(nfs4_args_t *nap, mntent_t *mntp)
-{
- const char *o = hasmnteq(mntp, MNTTAB_OPT_SEC);
- char *q, *s, *ss;
- size_t l, i;
-
- if (o == NULL)
- o = "unix";
-
- for (l = 1, q = strchr(o, ','); q; q = strchr(q + 1, ','))
- l++;
-
- nap->auth_flavours = xmalloc(l * sizeof(*nap->auth_flavours));
-
- s = ss = xstrdup(o);
- for (;;) {
- q = strchr(s, ',');
- if (q)
- *q = '\0';
-
- for (l = 0, i = 0; i < sizeof(flavours) / sizeof(flavours[0]); i++)
- if (strcmp(flavours[i].name, s) == 0) {
- nap->auth_flavours[l++] = flavours[i].num;
- break;
- }
-
- if (i == sizeof(flavours) / sizeof(flavours[0]))
- plog(XLOG_ERROR, "Unknown NFSv4 security mechanism %s\n", s);
-
- if (q == NULL)
- break;
-
- *q = ':';
- s = ++q;
- }
-
- nap->auth_flavourlen = l;
- return ss;
-}
-
-static int
-get_my_ipv4addr(struct nfs_string *ns)
-{
- struct hostent *hp;
- char myname[MAXHOSTNAMELEN];
-
- if (gethostname(myname, sizeof(myname)) == -1)
- return -1;
- if ((hp = gethostbyname(myname)) == NULL)
- return -1;
- if (inet_ntop(AF_INET, hp->h_addr, myname, sizeof(myname)) == NULL)
- return -1;
- ns->len = strlen(myname);
- ns->data = xmalloc(ns->len + 1);
- memcpy(ns->data, myname, ns->len + 1);
- return 0;
-}
-
-static void
-add_nfs4_mntopts(const nfs4_args_t *nap, mntent_t *mntp, char *sec)
-{
- char *opts = mntp->mnt_opts;
- char buf[1024], addr[128];
- size_t len = strlen(mntp->mnt_opts);
-
- if (inet_ntop(AF_INET,
- &((const struct sockaddr_in *)nap->host_addr)->sin_addr,
- addr, sizeof(addr)) == NULL)
- return;
-
- xsnprintf(buf, sizeof(buf), ",clientaddr=%s,addr=%s", nap->client_addr.data,
- addr);
-
- len += strlen(buf) + 1;
-
- if (sec && strcmp(sec, "unix") != 0) {
- len += strlen(sec) + strlen(MNTTAB_OPT_SEC) + 2; /* 2 = ",=" */
- } else
- sec = NULL;
-
- opts = xrealloc(mntp->mnt_opts, len);
- xstrlcat(opts, buf, len);
-
- if (sec) {
- xstrlcat(opts, ",", len);
- xstrlcat(opts, MNTTAB_OPT_SEC, len);
- xstrlcat(opts, "=", len);
- xstrlcat(opts, sec, len);
- }
-
- mntp->mnt_opts = opts;
-}
-
-static void
-print_nfs4_security(const nfs4_args_t *nap)
-{
- char buf[1024];
- char num[64];
- size_t i, j;
-
- buf[0] = '\0';
-
- for (i = 0; i < nap->auth_flavourlen; i++) {
-
- for (j = 0; j < sizeof(flavours) / sizeof(flavours[0]); j++)
- if (flavours[j].num == nap->auth_flavours[i]) {
- xstrlcpy(num, flavours[j].name, sizeof(num));
- break;
- }
-
- if (j == sizeof(flavours) / sizeof(flavours[0])) {
- plog(XLOG_ERROR, "Unknown NFSv4 security mechanism %d\n",
- nap->auth_flavours[i]);
- xsnprintf(num, sizeof(num), "*%d*", nap->auth_flavours[i]);
- }
-
- if (buf[0])
- xstrlcat(buf, ":", sizeof(buf));
-
- xstrlcat(buf, num, sizeof(buf));
- }
-
- plog(XLOG_DEBUG, "NA->auth_flavours \"%s\"\n", buf);
-}
-
-static void
-discard_nfs4_args(nfs4_args_t *nap)
-{
- if (nap->client_addr.data)
- free(nap->client_addr.data);
- if (nap->hostname.data)
- free(nap->hostname.data);
- if (nap->mnt_path.data)
- free(nap->mnt_path.data);
- if (nap->host_addr)
- free(nap->host_addr);
- if (nap->auth_flavours)
- free(nap->auth_flavours);
-}
-
-/*
- * Fill in the many possible fields and flags of struct nfs4_args.
- *
- * nap: pre-allocated structure to fill in.
- * mntp: mount entry structure (includes options)
- * genflags: generic mount flags already determined
- * nfsncp: (TLI only) netconfig entry for this NFS mount
- * ip_addr: IP address of file server
- * nfs_version: 4, or 0 if unknown
- * nfs_proto: "udp", "tcp", or NULL.
- * fhp: file handle structure pointer
- * host_name: name of remote NFS host
- * fs_name: remote file system name to mount
- */
-static void
-compute_nfs4_args(nfs4_args_t *nap,
- mntent_t *mntp,
- int genflags,
- struct netconfig *nfsncp,
- struct sockaddr_in *ip_addr,
- u_long nfs_version,
- char *nfs_proto,
- am_nfs_handle_t *fhp,
- char *host_name,
- char *fs_name)
-{
- char *s;
- struct nfs_common_args a;
- uint16_t nfs_port;
-
- /* initialize just in case */
- memset((voidp) nap, 0, sizeof(nfs4_args_t));
-
- /* compute all of the NFS attribute-cache flags */
- memset(&a, 0, sizeof(a));
- compute_nfs_attrcache_flags(&a, mntp);
- compute_nfs_common_args(&a, mntp, nfs_proto, nfs_version);
- get_nfs_common_args(nap, a);
-
- get_my_ipv4addr(&nap->client_addr);
-
- /************************************************************************/
- /*** HOST NAME ***/
- /************************************************************************/
- nap->hostname.len = strlen(host_name);
- nap->hostname.data = xmalloc(nap->hostname.len + 1);
- memcpy(nap->hostname.data, host_name, nap->hostname.len + 1);
-
- if ((s = strchr(fs_name, ':')) != NULL)
- s++;
- else
- s = fs_name;
-
- nap->mnt_path.len = strlen(s);
- nap->mnt_path.data = xmalloc(nap->mnt_path.len + 1);
- memcpy(nap->mnt_path.data, s, nap->mnt_path.len + 1);
- plog(XLOG_DEBUG, "dir name %s\n", nap->mnt_path.data);
-
- /************************************************************************/
- /*** IP ADDRESS OF REMOTE HOST ***/
- /************************************************************************/
- nap->host_addrlen = sizeof(*ip_addr);
- nap->host_addr = xmalloc(nap->host_addrlen);
- memcpy(nap->host_addr, ip_addr, nap->host_addrlen);
-
- nfs_port = hasmntval(mntp, MNTTAB_OPT_PORT);
- if (nfs_port == 0)
- nfs_port = htons(NFS_PORT);
- else
- nfs_port = htons(nfs_port);
-
- ((struct sockaddr_in *)nap->host_addr)->sin_port = nfs_port;
-
- nap->proto = 0; /* bsdi3 sets this field to zero */
- if (nfs_proto) {
- if (STREQ(nfs_proto, "tcp")) /* AIX 4.2.x needs this */
- nap->proto = IPPROTO_TCP;
- else if (STREQ(nfs_proto, "udp"))
- nap->proto = IPPROTO_UDP;
- }
-
- nap->version = NFS4_MOUNT_VERSION; /* BSDI 3.0 and OpenBSD 2.2 */
-
- /************************************************************************/
- /*** OTHER NFS SOCKET RELATED OPTIONS AND FLAGS ***/
- /************************************************************************/
-
-
- /************************************************************************/
- /*** OTHER FLAGS AND OPTIONS ***/
- /************************************************************************/
-
-#if defined(MNT2_NFS_OPT_POSIX) && defined(MNTTAB_OPT_POSIX)
- if (amu_hasmntopt(mntp, MNTTAB_OPT_POSIX) != NULL) {
- nap->args.flags |= MNT2_NFS_OPT_POSIX;
-# ifdef HAVE_NFS_ARGS_T_PATHCONF
- nap->pathconf = NULL;
-# endif /* HAVE_NFS_ARGS_T_PATHCONF */
- }
-#endif /* MNT2_NFS_OPT_POSIX && MNTTAB_OPT_POSIX */
-
-#if defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS)
- nap->maxgrouplist = hasmntval(mntp, MNTTAB_OPT_MAXGROUPS);
- if (nap->maxgrouplist != 0)
- nap->args.flags |= MNT2_NFS_OPT_MAXGRPS;
-#endif /* defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) */
-
-#ifdef HAVE_NFS_ARGS_T_OPTSTR
- nap->optstr = mntp->mnt_opts;
-#endif /* HAVE_NFS_ARGS_T_OPTSTR */
-
- /************************************************************************/
- /*** FINAL ACTIONS ***/
- /************************************************************************/
-
-#ifdef HAVE_NFS_ARGS_T_GFS_FLAGS
- /* Ultrix stores generic flags in nfs_args.gfs_flags. */
- nap->gfs_flags = genflags;
-#endif /* HAVE_NFS_ARGS_T_FLAGS */
-
- s = set_nfs4_security(nap, mntp);
-
- /* Add addresses to the mount options */
- add_nfs4_mntopts(nap, mntp, s);
-
- return; /* end of compute_nfs4_args() function */
-}
-
-#ifdef DEBUG
-static void
-print_nfs4_args(const nfs4_args_t *nap, u_long nfs_version)
-{
- struct sockaddr_in *sap;
- struct nfs_common_args a;
-
- if (!nap) {
- plog(XLOG_DEBUG, "NULL nfs_args!");
- return;
- }
-
- plog(XLOG_DEBUG, "NA->client_addr \"%s\"\n", nap->client_addr.data);
- plog(XLOG_DEBUG, "NA->mnt_path = \"%s\"", nap->mnt_path.data);
- plog(XLOG_DEBUG, "NA->hostname = \"%s\"", nap->hostname.data);
- sap = (struct sockaddr_in *) nap->host_addr;
- print_nfs_sockaddr_in("host_addr", sap);
- plog(XLOG_DEBUG, "NA->proto = %d", (int) nap->proto);
-#ifdef HAVE_NFS_ARGS_T_VERSION
- plog(XLOG_DEBUG, "NA->version = %d", nap->version);
-#endif /* HAVE_NFS_ARGS_T_VERSION */
- print_nfs4_security(nap);
-
- put_nfs_common_args(nap, a);
- print_nfs_common_args(&a);
-}
-#endif
-#endif /* HAVE_FS_NFS4 */
-
-void
-compute_nfs_args(void *nap,
- mntent_t *mntp,
- int genflags,
- struct netconfig *nfsncp,
- struct sockaddr_in *ip_addr,
- u_long nfs_version,
- char *nfs_proto,
- am_nfs_handle_t *fhp,
- char *host_name,
- char *fs_name)
-{
-#ifdef HAVE_FS_NFS4
- if (nfs_version == NFS_VERSION4)
- compute_nfs4_args(nap, mntp, genflags, nfsncp, ip_addr, nfs_version,
- nfs_proto, fhp, host_name, fs_name);
- else
-#endif /* HAVE_FS_NFS4 */
- compute_nfs23_args(nap, mntp, genflags, nfsncp, ip_addr, nfs_version,
- nfs_proto, fhp, host_name, fs_name);
-}
-
-void
-discard_nfs_args(void *nap, u_long nfs_version)
-{
-#ifdef HAVE_FS_NFS4
- if (nfs_version == NFS_VERSION4)
- discard_nfs4_args(nap);
- else
-#endif /* HAVE_FS_NFS4 */
- discard_nfs23_args(nap);
-}
-
-#ifdef DEBUG
-void
-print_nfs_args(const void *nap, u_long nfs_version)
-{
-#ifdef HAVE_FS_NFS4
- if (nfs_version == NFS_VERSION4)
- print_nfs4_args(nap, nfs_version);
- else
-#endif /* HAVE_FS_NFS4 */
- print_nfs23_args(nap, nfs_version);
-}
-#endif
-
-
-/*
- * Fill in special values for flags and fields of nfs_args, for an
- * automounter NFS mount.
- */
-void
-compute_automounter_nfs_args(nfs_args_t *nap, mntent_t *mntp)
-{
- struct nfs_common_args a;
-
-#ifdef MNT2_NFS_OPT_SYMTTL
- /*
- * Don't let the kernel cache symbolic links we generate, or else lookups
- * will bypass amd and fail to remount stuff as needed.
- */
- plog(XLOG_INFO, "turning on NFS option symttl and setting value to 0");
- nap->flags |= MNT2_NFS_OPT_SYMTTL;
- nap->symttl = 0;
-#endif /* MNT2_NFS_OPT_SYMTTL */
-
- /*
- * This completes the flags for the HIDE_MOUNT_TYPE code in the
- * mount_amfs_toplvl() function in amd/amfs_toplvl.c.
- * Some systems don't have a mount type, but a mount flag.
- */
-#ifdef MNT2_NFS_OPT_AUTO
- nap->flags |= MNT2_NFS_OPT_AUTO;
-#endif /* MNT2_NFS_OPT_AUTO */
-#ifdef MNT2_NFS_OPT_IGNORE
- nap->flags |= MNT2_NFS_OPT_IGNORE;
-#endif /* MNT2_NFS_OPT_IGNORE */
-#ifdef MNT2_GEN_OPT_AUTOMNTFS
- nap->flags |= MNT2_GEN_OPT_AUTOMNTFS;
-#endif /* not MNT2_GEN_OPT_AUTOMNTFS */
-
-#ifdef MNT2_NFS_OPT_DUMBTIMR
- /*
- * Don't let the kernel start computing throughput of Amd. The numbers
- * will be meaningless because of the way Amd does mount retries.
- */
- plog(XLOG_INFO, "%s: disabling nfs congestion window", mntp->mnt_dir);
- nap->flags |= MNT2_NFS_OPT_DUMBTIMR;
-#endif /* MNT2_NFS_OPT_DUMBTIMR */
-
- /* compute all of the NFS attribute-cache flags */
- memset(&a, 0, sizeof(a));
- a.flags = nap->flags;
- compute_nfs_attrcache_flags(&a, mntp);
- get_nfs_common_args(nap, a);
-
- /*
- * Provide a slight bit more security by requiring the kernel to use
- * reserved ports.
- */
-#ifdef MNT2_NFS_OPT_RESVPORT
- nap->flags |= MNT2_NFS_OPT_RESVPORT;
-#endif /* MNT2_NFS_OPT_RESVPORT */
-}
-
-int
-nfs_valid_version(u_long v)
-{
- return v >= NFS_VERS_MIN && v <= NFS_VERS_MAX;
-}
diff --git a/contrib/amd/libamu/mtab.c b/contrib/amd/libamu/mtab.c
deleted file mode 100644
index ee603af34359..000000000000
--- a/contrib/amd/libamu/mtab.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/libamu/mtab.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-
-
-/*
- * Firewall /etc/mtab entries
- */
-void
-mnt_free(mntent_t *mp)
-{
- XFREE(mp->mnt_fsname);
- XFREE(mp->mnt_dir);
- XFREE(mp->mnt_type);
- XFREE(mp->mnt_opts);
-
-#ifdef HAVE_MNTENT_T_MNT_TIME
-# ifdef HAVE_MNTENT_T_MNT_TIME_STRING
- XFREE(mp->mnt_time);
-# endif /* HAVE_MNTENT_T_MNT_TIME_STRING */
-#endif /* HAVE_MNTENT_T_MNT_TIME */
-
- XFREE(mp);
-}
-
-
-/*
- * Discard memory allocated for mount list
- */
-void
-discard_mntlist(mntlist *mp)
-{
- mntlist *mp2;
-
- while ((mp2 = mp)) {
- mp = mp->mnext;
- if (mp2->mnt)
- mnt_free(mp2->mnt);
- XFREE(mp2);
- }
-}
-
-
-/*
- * Throw away a mount list
- */
-void
-free_mntlist(mntlist *mp)
-{
- discard_mntlist(mp);
-#ifdef MOUNT_TABLE_ON_FILE
- unlock_mntlist();
-#endif /* MOUNT_TABLE_ON_FILE */
-}
-
-
-/*
- * Utility routine which returns a pointer to whatever follows an = in a
- * string. Returns null if = is not found in the string.
- */
-char *
-haseq(char *instr)
-{
- if (instr) {
- char *eq = strchr(instr, '=');
- if (eq) return ++eq;
- }
- return NULL;
-}
-
-
-/*
- * Utility routine which returns a pointer to whatever
- * follows an = in a mount option. Returns null if option
- * doesn't exist or doesn't have an '='. Won't fail for opt,foo=.
- */
-char *
-hasmnteq(mntent_t *mnt, char *opt)
-{
- if (mnt && opt) { /* disallow null input pointers */
- if ( *opt ) { /* disallow the null string as an opt */
- char *str = amu_hasmntopt(mnt, opt);
- if ( str ) { /* option was there */
- char *eq = str + strlen(opt); /* Look at char just after option */
- if (*eq == '=') /* Is it '=' ? */
- return ++eq; /* If so, return pointer to remaining str */
- }
- }
- }
- return NULL;
-}
-
-
-/*
- * Wrapper around hasmntvalerr(), which retains backwards compatibiliy with
- * older use of hasmntval().
- *
- * XXX: eventually, all use of hasmntval() should be replaced with
- * hasmntvalerr().
- */
-int
-hasmntval(mntent_t *mnt, char *opt)
-{
- int err, val = 0;
-
- err = hasmntvalerr(mnt, opt, &val);
- if (err) /* if there was an error (hasmntvalerr returned 1) */
- return 0; /* redundant: val==0 above, but leave here for clarity */
- /* otherwise there was no error */
- return val;
-}
-
-
-/*
- * Utility routine which determines the value of a numeric option in the
- * mount options (such as port=%d), and fills in the value in the argument
- * valp (argument won't be touched if no value is set, for example due to an
- * error).
- *
- * Returns non-zero (1) on error; returns 0 on success.
- *
- * XXX: eventually, all use of hasmntval() should be replaced with
- * hasmntvalerr().
- */
-unsigned int
-hasmntvalerr(mntent_t *mnt, char *opt, int *valp)
-{
- char *str = amu_hasmntopt(mnt, opt);
- int err = 1; /* 1 means no good value was set (an error) */
- char *eq, *endptr;
- long int i;
-
- /* exit if no option specificed */
- if (!str) {
- goto out;
- }
-
- eq = hasmnteq(mnt, opt);
-
- if (!eq) { /* no argument to option ('=' sign was missing) */
- plog(XLOG_MAP, "numeric option to \"%s\" missing", opt);
- goto out;
- }
-
- /* if got here, then we had an '=' after option name */
- endptr = NULL;
- i = strtol(eq, &endptr, 0); /* hex and octal allowed ;-) */
- if (!endptr ||
- (endptr != eq && (*endptr == ',' || *endptr == '\0'))) {
- /*
- * endptr set means strtol saw a non-digit. If the non-digit is a
- * comma, it's probably the start of the next option. If the comma is
- * the first char though, complain about it (foo=,bar is made
- * noticeable by this).
- *
- * Similar reasoning for '\0' instead of comma, it's the end of the
- * string.
- */
- *valp = (int) i; /* set good value */
- err = 0; /* no error */
- } else {
- /* whatever was after the '=' sign wasn't a number */
- plog(XLOG_MAP, "invalid numeric option in \"%s\": \"%s\"", opt, str);
- /* fall through to error/exit processing */
- }
-
- out:
- return err;
-}
-
-
-/*
- * Utility routine which returns the string value of
- * an option in the mount options (such as proto=udp).
- * Returns NULL if the option is not specified.
- * Returns malloc'ed string (caller must free!)
- */
-char *
-hasmntstr(mntent_t *mnt, char *opt)
-{
- char *str = amu_hasmntopt(mnt, opt);
-
- if (str) { /* The option was there */
-
- char *eq = hasmnteq(mnt, opt);
-
- if (eq) { /* and had an = after it */
-
- char *endptr = strchr(eq, ',');
-
- /* if saw no comma, return xstrdup'd string */
- if (!endptr)
- return xstrdup(eq);
- else {
- /* else we need to copy only the chars needed */
- int len = endptr - eq;
- char *buf = xmalloc(len + 1);
- strncpy(buf, eq, len);
- buf[len] = '\0';
- return buf;
- }
- }
- }
- return NULL;
-}
diff --git a/contrib/amd/libamu/nfs_prot_xdr.c b/contrib/amd/libamu/nfs_prot_xdr.c
deleted file mode 100644
index bfdc7b2492a3..000000000000
--- a/contrib/amd/libamu/nfs_prot_xdr.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1989 Jan-Simon Pendry
- * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/libamu/nfs_prot_xdr.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-
-
-bool_t
-xdr_amq_string(XDR *xdrs, amq_string *objp)
-{
- if (!xdr_string(xdrs, objp, AMQ_STRLEN)) {
- return (FALSE);
- }
- return (TRUE);
-}
-
-
-bool_t
-xdr_amq_sync_umnt(XDR *xdrs, amq_sync_umnt *objp)
-{
-
- if (!xdr_opaque(xdrs, (char *) objp, sizeof(*objp))) {
- return (FALSE);
- }
- return (TRUE);
-}
diff --git a/contrib/amd/libamu/strerror.c b/contrib/amd/libamu/strerror.c
deleted file mode 100644
index faf2916f31e6..000000000000
--- a/contrib/amd/libamu/strerror.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2002-2014 Ion Badulescu
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/libamu/strerror.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-
-
-/*
- * Convert errno to a string
- */
-char *
-strerror(int errnum)
-{
-#ifdef HAVE_EXTERN_SYS_ERRLIST
- if (errnum < 0 || errnum >= (sizeof(sys_errlist) >> 2)) {
- static char errstr[30];
- xsnprintf(errstr, sizeof(errstr), "Unknown error #%d", errnum);
- return errstr;
- }
- return sys_errlist[error];
-#else /* not HAVE_EXTERN_SYS_ERRLIST */
- return "unknown (strerror not available)";
-#endif /* not HAVE_EXTERN_SYS_ERRLIST */
-}
diff --git a/contrib/amd/libamu/strutil.c b/contrib/amd/libamu/strutil.c
deleted file mode 100644
index 03a8e88f6080..000000000000
--- a/contrib/amd/libamu/strutil.c
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/libamu/strutil.c
- *
- */
-
-/*
- * String Utilities.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-
-
-char *
-strnsave(const char *str, int len)
-{
- char *sp = (char *) xmalloc(len + 1);
- memmove(sp, str, len);
- sp[len] = '\0';
-
- return sp;
-}
-
-
-/*
- * Concatenate three strings and store the result in the buffer pointed to
- * by p, making p large enough to hold the strings
- */
-char *
-str3cat(char *p, char *s1, char *s2, char *s3)
-{
- int l1 = strlen(s1);
- int l2 = strlen(s2);
- int l3 = strlen(s3);
-
- p = (char *) xrealloc(p, l1 + l2 + l3 + 1);
- memmove(p, s1, l1);
- memmove(p + l1, s2, l2);
- memmove(p + l1 + l2, s3, l3 + 1);
- return p;
-}
-
-
-/*
- * Split s using ch as delimiter and qc as quote character
- */
-char **
-strsplit(char *s, int ch, int qc)
-{
- char **ivec;
- int ic = 0;
- int done = 0;
-
- ivec = (char **) xmalloc((ic + 1) * sizeof(char *));
-
- while (!done) {
- char *v;
-
- /*
- * skip to split char
- */
- while (*s && (ch == ' ' ? (isascii((unsigned char)*s) && isspace((unsigned char)*s)) : *s == ch))
- *s++ = '\0';
-
- /*
- * End of string?
- */
- if (!*s)
- break;
-
- /*
- * remember start of string
- */
- v = s;
-
- /*
- * skip to split char
- */
- while (*s && !(ch == ' ' ? (isascii((unsigned char)*s) && isspace((unsigned char)*s)) : *s == ch)) {
- if (*s++ == qc) {
- /*
- * Skip past string.
- */
- s++;
- while (*s && *s != qc)
- s++;
- if (*s == qc)
- s++;
- }
- }
-
- if (!*s)
- done = 1;
- *s++ = '\0';
-
- /*
- * save string in new ivec slot
- */
- ivec[ic++] = v;
- ivec = (char **) xrealloc((voidp) ivec, (ic + 1) * sizeof(char *));
- if (amuDebug(D_STR))
- plog(XLOG_DEBUG, "strsplit saved \"%s\"", v);
- }
-
- if (amuDebug(D_STR))
- plog(XLOG_DEBUG, "strsplit saved a total of %d strings", ic);
-
- ivec[ic] = NULL;
-
- return ivec;
-}
-
-
-/*
- * Use generic strlcpy to copy a string more carefully, null-terminating it
- * as needed. However, if the copied string was truncated due to lack of
- * space, then warn us.
- *
- * For now, xstrlcpy returns VOID because it doesn't look like anywhere in
- * the Amd code do we actually use the return value of strncpy/strlcpy.
- */
-void
-#ifdef DEBUG
-_xstrlcpy(const char *filename, int lineno, char *dst, const char *src, size_t len)
-#else /* not DEBUG */
-xstrlcpy(char *dst, const char *src, size_t len)
-#endif /* not DEBUG */
-{
- if (len == 0)
- return;
- if (strlcpy(dst, src, len) >= len)
-#ifdef DEBUG
- plog(XLOG_ERROR, "xstrlcpy(%s:%d): string \"%s\" truncated to \"%s\"",
- filename, lineno, src, dst);
-#else /* not DEBUG */
- plog(XLOG_ERROR, "xstrlcpy: string \"%s\" truncated to \"%s\"", src, dst);
-#endif /* not DEBUG */
-}
-
-
-/*
- * Use generic strlcat to concatenate a string more carefully,
- * null-terminating it as needed. However, if the copied string was
- * truncated due to lack of space, then warn us.
- *
- * For now, xstrlcat returns VOID because it doesn't look like anywhere in
- * the Amd code do we actually use the return value of strncat/strlcat.
- */
-void
-#ifdef DEBUG
-_xstrlcat(const char *filename, int lineno, char *dst, const char *src, size_t len)
-#else /* not DEBUG */
-xstrlcat(char *dst, const char *src, size_t len)
-#endif /* not DEBUG */
-{
- if (len == 0)
- return;
- if (strlcat(dst, src, len) >= len) {
- /* strlcat does not null terminate if the size of src is equal to len. */
- dst[strlen(dst) - 1] = '\0';
-#ifdef DEBUG
- plog(XLOG_ERROR, "xstrlcat(%s:%d): string \"%s\" truncated to \"%s\"",
- filename, lineno, src, dst);
-#else /* not DEBUG */
- plog(XLOG_ERROR, "xstrlcat: string \"%s\" truncated to \"%s\"", src, dst);
-#endif /* not DEBUG */
- }
-}
-
-
-/* our version of snprintf */
-int
-#if defined(DEBUG) && (defined(HAVE_C99_VARARGS_MACROS) || defined(HAVE_GCC_VARARGS_MACROS))
-_xsnprintf(const char *filename, int lineno, char *str, size_t size, const char *format, ...)
-#else /* not DEBUG or no C99/GCC-style vararg cpp macros supported */
-xsnprintf(char *str, size_t size, const char *format, ...)
-#endif /* not DEBUG or no C99/GCC-style vararg cpp macros supported */
-{
- va_list ap;
- int ret = 0;
-
- va_start(ap, format);
-#if defined(DEBUG) && (defined(HAVE_C99_VARARGS_MACROS) || defined(HAVE_GCC_VARARGS_MACROS))
- ret = _xvsnprintf(filename, lineno, str, size, format, ap);
-#else /* not DEBUG or no C99/GCC-style vararg cpp macros supported */
- ret = xvsnprintf(str, size, format, ap);
-#endif /* not DEBUG or no C99/GCC-style vararg cpp macros supported */
- va_end(ap);
-
- return ret;
-}
-
-
-/* our version of vsnprintf */
-int
-#if defined(DEBUG) && (defined(HAVE_C99_VARARGS_MACROS) || defined(HAVE_GCC_VARARGS_MACROS))
-_xvsnprintf(const char *filename, int lineno, char *str, size_t size, const char *format, va_list ap)
-#else /* not DEBUG or no C99/GCC-style vararg cpp macros supported */
-xvsnprintf(char *str, size_t size, const char *format, va_list ap)
-#endif /* not DEBUG or no C99/GCC-style vararg cpp macros supported */
-{
- int ret = 0;
-
-#ifdef HAVE_VSNPRINTF
- ret = vsnprintf(str, size, format, ap);
-#else /* not HAVE_VSNPRINTF */
- ret = vsprintf(str, format, ap); /* less secure version */
-#endif /* not HAVE_VSNPRINTF */
- /*
- * If error or truncation, plog error.
- *
- * WARNING: we use the static 'maxtrunc' variable below to break out any
- * possible infinite recursion between plog() and xvsnprintf(). If it
- * ever happens, it'd indicate a bug in Amd.
- */
- if (ret < 0 || (size_t) ret >= size) { /* error or truncation occured */
- static int maxtrunc; /* hack to avoid inifinite loop */
- if (++maxtrunc > 10)
-#if defined(DEBUG) && (defined(HAVE_C99_VARARGS_MACROS) || defined(HAVE_GCC_VARARGS_MACROS))
- plog(XLOG_ERROR, "xvsnprintf(%s:%d): string %p truncated (ret=%d, format=\"%s\")",
- filename, lineno, str, ret, format);
-#else /* not DEBUG or no C99/GCC-style vararg cpp macros supported */
- plog(XLOG_ERROR, "xvsnprintf: string %p truncated (ret=%d, format=\"%s\")",
- str, ret, format);
-#endif /* not DEBUG or no C99/GCC-style vararg cpp macros supported */
- }
-
- return ret;
-}
-
-static size_t
-vstrlen(const char *src, va_list ap)
-{
- size_t len = strlen(src);
- while ((src = va_arg(ap, const char *)) != NULL)
- len += strlen(src);
- return len;
-}
-
-static void
-vstrcpy(char *dst, const char *src, va_list ap)
-{
- strcpy(dst, src);
- while ((src = va_arg(ap, const char *)) != NULL)
- strcat(dst, src);
-}
-
-char *
-strvcat(const char *src, ...)
-{
- size_t len;
- char *dst;
- va_list ap;
-
- va_start(ap, src);
- len = vstrlen(src, ap);
- va_end(ap);
- dst = xmalloc(len + 1);
- va_start(ap, src);
- vstrcpy(dst, src, ap);
- va_end(ap);
- return dst;
-}
diff --git a/contrib/amd/libamu/wire.c b/contrib/amd/libamu/wire.c
deleted file mode 100644
index c9da0fe276a5..000000000000
--- a/contrib/amd/libamu/wire.c
+++ /dev/null
@@ -1,574 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/libamu/wire.c
- *
- */
-
-/*
- * This function returns the subnet (address&netmask) for the primary network
- * interface. If the resulting address has an entry in the hosts file, the
- * corresponding name is returned, otherwise the address is returned in
- * standard internet format.
- * As a side-effect, a list of local IP/net address is recorded for use
- * by the islocalnet() function.
- *
- * Derived from original by Paul Anderson (23/4/90)
- * Updates from Dirk Grunwald (11/11/91)
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-
-
-#ifdef HAVE_IFADDRS_H
-#include <ifaddrs.h>
-#endif /* HAVE_IFADDRS_H */
-
-#ifdef HAVE_IRS_H
-# include <irs.h>
-#endif /* HAVE_IRS_H */
-
-/*
- * List of locally connected networks
- */
-typedef struct addrlist addrlist;
-struct addrlist {
- addrlist *ip_next;
- u_long ip_addr; /* address of network */
- u_long ip_mask;
- char *ip_net_num; /* number of network */
- char *ip_net_name; /* name of network */
-};
-static addrlist *localnets = NULL;
-
-#if defined(IFF_LOCAL_LOOPBACK) && !defined(IFF_LOOPBACK)
-# define IFF_LOOPBACK IFF_LOCAL_LOOPBACK
-#endif /* defined(IFF_LOCAL_LOOPBACK) && !defined(IFF_LOOPBACK) */
-
-#define C(x) ((x) & 0xff)
-#define GFBUFLEN 1024
-#define S2IN(s) (((struct sockaddr_in *)(s))->sin_addr.s_addr)
-
-
-/* return malloc'ed buffer. caller must free it */
-char *
-print_wires(void)
-{
- addrlist *al;
- char s[256];
- int i;
- char *buf;
- int bufcount = 0;
- int buf_size = 1024;
-
- buf = SALLOC(buf_size); /* initial allocation (may grow!) */
- if (!buf)
- return NULL;
-
- if (!localnets) {
- xstrlcpy(buf, "No networks\n", buf_size);
- return buf;
- }
- /* check if there's more than one network */
- if (!localnets->ip_next) {
- /* use buf_size for sizeof(buf) because of the realloc() below */
- xsnprintf(buf, buf_size,
- "Network: wire=\"%s\" (netnumber=%s).\n",
- localnets->ip_net_name, localnets->ip_net_num);
- return buf;
- }
- buf[0] = '\0'; /* null out buffer before appending */
- for (i = 1, al = localnets; al; al = al->ip_next, i++) {
- xsnprintf(s, sizeof(s), "Network %d: wire=\"%s\" (netnumber=%s).\n",
- i, al->ip_net_name, al->ip_net_num);
- bufcount += strlen(s);
- if (bufcount > buf_size) {
- buf_size *= 2;
- buf = xrealloc(buf, buf_size);
- }
- xstrlcat(buf, s, buf_size);
- }
- return buf;
-}
-
-
-static struct addrlist *
-getwire_lookup(u_long address, u_long netmask, int ishost)
-{
- struct addrlist *al;
- u_long subnet;
- char netNumberBuf[64];
- char buf[GFBUFLEN], *s;
-#ifdef HAVE_IRS_H
- struct nwent *np;
-#else /* not HAVE_IRS_H */
- struct netent *np;
-#endif /* not HAVE_IRS_H */
-
- /*
- * Add interface to local network singly linked list
- */
- al = ALLOC(struct addrlist);
- al->ip_addr = address;
- al->ip_mask = netmask;
- al->ip_net_name = NO_SUBNET; /* fill in a bit later */
- al->ip_net_num = "0.0.0.0"; /* fill in a bit later */
- al->ip_next = NULL;
-
- subnet = ntohl(address) & ntohl(netmask);
-
- if (ishost)
- np = NULL;
- else {
-#ifdef HAVE_IRS_H
- u_long mask = ntohl(netmask);
- static struct irs_acc *irs_gen;
- static struct irs_nw *irs_nw;
- u_long net;
- int maskbits;
- u_char addr[4];
-
- if (irs_gen == NULL)
-#ifdef irs_irp_acc
- /*
- * bsdi4 added another argument to this function, without changing
- * its name. The irs_irp_acc is the one (hacky) distinguishing
- * feature found in <irs.h> that can differentiate between bsdi3 and
- * bsdi4.
- */
- irs_gen = irs_gen_acc("", NULL);
-#else /* not irs_irp_acc */
- irs_gen = irs_gen_acc("");
-#endif /* not irs_irp_acc */
- if (irs_gen && irs_nw == NULL)
- irs_nw = (*irs_gen->nw_map)(irs_gen);
- net = ntohl(address) & (mask = ntohl(netmask));
- addr[0] = (0xFF000000 & net) >> 24;
- addr[1] = (0x00FF0000 & net) >> 16;
- addr[2] = (0x0000FF00 & net) >> 8;
- addr[3] = (0x000000FF & net);
- for (maskbits = 32; !(mask & 1); mask >>= 1)
- maskbits--;
- np = (*irs_nw->byaddr)(irs_nw, addr, maskbits, AF_INET);
-#else /* not HAVE_IRS_H */
- np = getnetbyaddr(subnet, AF_INET);
- /*
- * Some systems (IRIX 6.4) cannot getnetbyaddr on networks such as
- * "128.59.16.0". Instead, they need to look for the short form of
- * the network, "128.59.16". So if the first getnetbyaddr failed, we
- * shift the subnet way from zeros and try again.
- */
- if (!np) {
- u_long short_subnet = subnet;
- while (short_subnet && (short_subnet & 0x000000ff) == 0)
- short_subnet >>= 8;
- np = getnetbyaddr(short_subnet, AF_INET);
- if (np)
- plog(XLOG_WARNING, "getnetbyaddr failed on 0x%x, succeeded on 0x%x",
- (u_int) subnet, (u_int) short_subnet);
- }
-#endif /* not HAVE_IRS_H */
- }
-
- if ((subnet & 0xffffff) == 0) {
- xsnprintf(netNumberBuf, sizeof(netNumberBuf), "%lu", C(subnet >> 24));
- } else if ((subnet & 0xffff) == 0) {
- xsnprintf(netNumberBuf, sizeof(netNumberBuf), "%lu.%lu",
- C(subnet >> 24), C(subnet >> 16));
- } else if ((subnet & 0xff) == 0) {
- xsnprintf(netNumberBuf, sizeof(netNumberBuf), "%lu.%lu.%lu",
- C(subnet >> 24), C(subnet >> 16),
- C(subnet >> 8));
- } else {
- xsnprintf(netNumberBuf, sizeof(netNumberBuf), "%lu.%lu.%lu.%lu",
- C(subnet >> 24), C(subnet >> 16),
- C(subnet >> 8), C(subnet));
- }
-
- /* fill in network number (string) */
- al->ip_net_num = xstrdup(netNumberBuf);
-
- if (np != NULL)
- s = np->n_name;
- else {
- struct hostent *hp;
-
- subnet = address & netmask;
- hp = gethostbyaddr((char *) &subnet, 4, AF_INET);
- if (hp != NULL)
- s = (char *) hp->h_name;
- else
- s = inet_dquad(buf, sizeof(buf), subnet);
- }
-
- /* fill in network name (string) */
- al->ip_net_name = xstrdup(s);
- /* Let's be cautious here about buffer overflows -Ion */
- if (strlen(s) > MAXHOSTNAMELEN) {
- al->ip_net_name[MAXHOSTNAMELEN] = '\0';
- plog(XLOG_WARNING, "Long hostname %s truncated to %d characters",
- s, MAXHOSTNAMELEN);
- }
-
- return (al);
-}
-
-
-/*
- * Make a dotted quad from a 32bit IP address
- * addr is in network byte order.
- * sizeof(buf) needs to be at least 16.
- */
-char *
-inet_dquad(char *buf, size_t l, u_long addr)
-{
- addr = ntohl(addr);
- xsnprintf(buf, l, "%ld.%ld.%ld.%ld",
- ((addr >> 24) & 0xff),
- ((addr >> 16) & 0xff),
- ((addr >> 8) & 0xff),
- ((addr >> 0) & 0xff));
- return buf;
-}
-
-
-/*
- * Determine whether a network is on a local network
- * (addr) is in network byte order.
- */
-int
-islocalnet(u_long addr)
-{
- addrlist *al;
-
- for (al = localnets; al; al = al->ip_next)
- if (((addr ^ al->ip_addr) & al->ip_mask) == 0)
- return TRUE;
-
-#ifdef DEBUG
- {
- char buf[16];
- plog(XLOG_INFO, "%s is on a remote network",
- inet_dquad(buf, sizeof(buf), addr));
- }
-#endif /* DEBUG */
-
- return FALSE;
-}
-
-
-/*
- * Determine whether a network name is one of the local networks
- * of a host.
- */
-int
-is_network_member(const char *net)
-{
- addrlist *al;
-
- /*
- * If the network name string does not contain a '/', use old behavior.
- * If it does contain a '/' then interpret the string as a network/netmask
- * pair. If "netmask" doesn't exist, use the interface's own netmask.
- * Also support fully explicit netmasks such as 255.255.255.0 as well as
- * bit-length netmask such as /24 (hex formats such 0xffffff00 work too).
- */
- if (strchr(net, '/') == NULL) {
- for (al = localnets; al; al = al->ip_next)
- if (STREQ(net, al->ip_net_name) || STREQ(net, al->ip_net_num))
- return TRUE;
- } else {
- char *netstr = xstrdup(net), *maskstr;
- u_long netnum, masknum = 0;
- maskstr = strchr(netstr, '/');
- if (maskstr == NULL) {
- plog(XLOG_ERROR, "%s: netstr %s does not have a `/'", __func__, netstr);
- XFREE(netstr);
- return FALSE;
- }
- maskstr[0] = '\0'; /* null terminate netstr */
- maskstr++;
- if (*maskstr == '\0') /* if empty string, make it NULL */
- maskstr = NULL;
- /* check if netmask uses a dotted-quad or bit-length, or not defined at all */
- if (maskstr) {
- if (strchr(maskstr, '.')) {
- /* XXX: inet_addr is obsolste, convert to inet_aton() */
- masknum = inet_addr(maskstr);
- if (masknum == INADDR_NONE) /* can be invalid (-1) or all-1s */
- masknum = 0xffffffff;
- } else if (NSTRCEQ(maskstr, "0x", 2)) {
- masknum = strtoul(maskstr, NULL, 16);
- } else {
- int bits = atoi(maskstr);
- if (bits < 0)
- bits = 0;
- if (bits > 32)
- bits = 32;
- masknum = 0xffffffff << (32-bits);
- }
- }
- netnum = inet_addr(netstr); /* not checking return value, b/c -1 (0xffffffff) is valid */
- XFREE(netstr); /* netstr not needed any longer */
-
- /* now check against each local interface */
- for (al = localnets; al; al = al->ip_next) {
- if ((al->ip_addr & (maskstr ? masknum : al->ip_mask)) == netnum)
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-
-/*
- * Determine whether a IP address (netnum) is one of the local interfaces,
- * returns TRUE/FALSE.
- * Does not include the loopback interface: caller needs to check that.
- */
-int
-is_interface_local(u_long netnum)
-{
- addrlist *al;
-
- for (al = localnets; al; al = al->ip_next) {
- if (al->ip_addr == netnum)
- return TRUE;
- }
- return FALSE;
-}
-
-
-#ifdef HAVE_GETIFADDRS
-void
-getwire(char **name1, char **number1)
-{
- addrlist *al = NULL, *tail = NULL;
- struct ifaddrs *ifaddrs, *ifap;
-#ifndef HAVE_STRUCT_IFADDRS_IFA_NEXT
- int count = 0, i;
-#endif /* not HAVE_STRUCT_IFADDRS_IFA_NEXT */
-
- ifaddrs = NULL;
-#ifdef HAVE_STRUCT_IFADDRS_IFA_NEXT
- if (getifaddrs(&ifaddrs) < 0)
- goto out;
-
- for (ifap = ifaddrs; ifap != NULL; ifap = ifap->ifa_next) {
-#else /* not HAVE_STRUCT_IFADDRS_IFA_NEXT */
- if (getifaddrs(&ifaddrs, &count) < 0)
- goto out;
-
- for (i = 0,ifap = ifaddrs; i < count; ifap++, i++) {
-#endif /* HAVE_STRUCT_IFADDRS_IFA_NEXT */
-
- if (!ifap || !ifap->ifa_addr || ifap->ifa_addr->sa_family != AF_INET)
- continue;
-
- /*
- * If the interface is the loopback, or it's not running,
- * then ignore it.
- */
- if (S2IN(ifap->ifa_addr) == htonl(INADDR_LOOPBACK))
- continue;
- if ((ifap->ifa_flags & IFF_RUNNING) == 0)
- continue;
-
- if ((ifap->ifa_flags & IFF_POINTOPOINT) == 0)
- al = getwire_lookup(S2IN(ifap->ifa_addr), S2IN(ifap->ifa_netmask), 0);
- else
- al = getwire_lookup(S2IN(ifap->ifa_dstaddr), 0xffffffff, 1);
-
- /* append to the end of the list */
- if (!localnets || tail == NULL) {
- localnets = tail = al;
- tail->ip_next = NULL;
- } else {
- tail->ip_next = al;
- tail = al;
- }
- }
-
-out:
- if (ifaddrs)
- XFREE(ifaddrs);
-
- if (localnets) {
- *name1 = localnets->ip_net_name;
- *number1 = localnets->ip_net_num;
- } else {
- *name1 = NO_SUBNET;
- *number1 = "0.0.0.0";
- }
-}
-
-#else /* not HAVE_GETIFADDRS */
-
-#if defined(HAVE_STRUCT_IFREQ_IFR_ADDR) && defined(HAVE_STRUCT_SOCKADDR_SA_LEN)
-# define SIZE(ifr) (MAX((ifr)->ifr_addr.sa_len, sizeof((ifr)->ifr_addr)) + sizeof(ifr->ifr_name))
-#else /* not defined(HAVE_STRUCT_IFREQ_IFR_ADDR) && defined(HAVE_STRUCT_SOCKADDR_SA_LEN) */
-# define SIZE(ifr) sizeof(struct ifreq)
-#endif /* not defined(HAVE_STRUCT_IFREQ_IFR_ADDR) && defined(HAVE_STRUCT_SOCKADDR_SA_LEN) */
-
-#define clist (ifc.ifc_ifcu.ifcu_req)
-#define count (ifc.ifc_len/sizeof(struct ifreq))
-
-
-void
-getwire(char **name1, char **number1)
-{
- struct ifconf ifc;
- struct ifreq *ifr, ifrpool;
- caddr_t cp, cplim;
- int fd = -1;
- u_long address;
- addrlist *al = NULL, *tail = NULL;
- char buf[GFBUFLEN];
-
-#ifndef SIOCGIFFLAGS
- /* if cannot get interface flags, return nothing */
- plog(XLOG_ERROR, "getwire unable to get interface flags");
- localnets = NULL;
- return;
-#endif /* not SIOCGIFFLAGS */
-
- /*
- * Get suitable socket
- */
- if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
- goto out;
-
- /*
- * Fill in ifconf details
- */
- memset(&buf[0], 0, GFBUFLEN);
- ifc.ifc_len = sizeof(buf);
- ifc.ifc_buf = buf;
-
- /*
- * Get network interface configurations
- */
- if (ioctl(fd, SIOCGIFCONF, (caddr_t) & ifc) < 0)
- goto out;
-
- /*
- * Upper bound on array
- */
- cplim = buf + ifc.ifc_len;
-
- /*
- * This is some magic to cope with both "traditional" and the
- * new 4.4BSD-style struct sockaddrs. The new structure has
- * variable length and a size field to support longer addresses.
- * AF_LINK is a new definition for 4.4BSD.
- */
-
- /*
- * Scan the list looking for a suitable interface
- */
- for (cp = buf; cp < cplim; /* increment in the loop body */) {
- memcpy(&ifrpool, cp, sizeof(ifrpool));
- ifr = &ifrpool;
- cp += SIZE(ifr);
-
- if (ifr->ifr_addr.sa_family != AF_INET)
- continue;
-
- address = ((struct sockaddr_in *) &ifr->ifr_addr)->sin_addr.s_addr;
-
- /*
- * Get interface flags
- */
- if (ioctl(fd, SIOCGIFFLAGS, (caddr_t) ifr) < 0)
- continue;
-
- /*
- * If the interface is the loopback, or it's not running,
- * then ignore it.
- */
- if (address == htonl(INADDR_LOOPBACK))
- continue;
- /*
- * Fix for 0.0.0.0 loopback on SunOS 3.X which defines IFF_ROUTE
- * instead of IFF_LOOPBACK.
- */
-#ifdef IFF_ROUTE
- if (ifr->ifr_flags == (IFF_UP|IFF_RUNNING))
- continue;
-#endif /* IFF_ROUTE */
-
- /* if the interface is not UP or not RUNNING, skip it */
- if ((ifr->ifr_flags & IFF_RUNNING) == 0 ||
- (ifr->ifr_flags & IFF_UP) == 0)
- continue;
-
- if ((ifr->ifr_flags & IFF_POINTOPOINT) == 0) {
- /*
- * Get the netmask of this interface
- */
- if (ioctl(fd, SIOCGIFNETMASK, (caddr_t) ifr) < 0)
- continue;
-
- al = getwire_lookup(address, S2IN(&ifr->ifr_addr), 0);
- } else
- al = getwire_lookup(address, 0xffffffff, 1);
-
- /* append to the end of the list */
- if (!localnets) {
- localnets = tail = al;
- tail->ip_next = NULL;
- } else {
- tail->ip_next = al;
- tail = al;
- }
- }
-
-out:
- if (fd >= 0)
- close(fd);
- if (localnets) {
- *name1 = localnets->ip_net_name;
- *number1 = localnets->ip_net_num;
- } else {
- *name1 = NO_SUBNET;
- *number1 = "0.0.0.0";
- }
-}
-#endif /* not HAVE_GETIFADDRS */
diff --git a/contrib/amd/libamu/xdr_func.c b/contrib/amd/libamu/xdr_func.c
deleted file mode 100644
index e437dd49d567..000000000000
--- a/contrib/amd/libamu/xdr_func.c
+++ /dev/null
@@ -1,3076 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/libamu/xdr_func.c
- *
- */
-
-/*
- * Complete list of all possible xdr functions which may be needed.
- */
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-
-#ifdef __RPCSVC_MOUNT_H__
-# error IRIX6 should not include rpcsvc/mount.h
-#endif /* __RPCSVC_MOUNT_H__ */
-
-/*
- * MACROS:
- */
-#ifdef HAVE_FS_AUTOFS
-# ifndef AUTOFS_MAXCOMPONENTLEN
-# define AUTOFS_MAXCOMPONENTLEN 255
-# endif /* not AUTOFS_MAXCOMPONENTLEN */
-# ifndef AUTOFS_MAXOPTSLEN
-# define AUTOFS_MAXOPTSLEN 255
-# endif /* not AUTOFS_MAXOPTSLEN */
-# ifndef AUTOFS_MAXPATHLEN
-# define AUTOFS_MAXPATHLEN 1024
-# endif /* not AUTOFS_MAXPATHLEN */
-#endif /* HAVE_FS_AUTOFS */
-
-/* forward definitions, are they needed? */
-extern bool_t xdr_exportnode(XDR *xdrs, exportnode *objp);
-extern bool_t xdr_groupnode(XDR *xdrs, groupnode *objp);
-extern bool_t xdr_name(XDR *xdrs, name *objp);
-
-
-#ifndef HAVE_XDR_ATTRSTAT
-bool_t
-xdr_attrstat(XDR *xdrs, nfsattrstat *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_attrstat:");
-
- if (!xdr_nfsstat(xdrs, &objp->ns_status)) {
- return (FALSE);
- }
- switch (objp->ns_status) {
- case NFS_OK:
- if (!xdr_fattr(xdrs, &objp->ns_u.ns_attr_u)) {
- return (FALSE);
- }
- break;
- default:
- break;
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_ATTRSTAT */
-
-
-#ifndef HAVE_XDR_CREATEARGS
-bool_t
-xdr_createargs(XDR *xdrs, nfscreateargs *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_createargs:");
-
- if (!xdr_diropargs(xdrs, &objp->ca_where)) {
- return (FALSE);
- }
- if (!xdr_sattr(xdrs, &objp->ca_attributes)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_CREATEARGS */
-
-
-#ifndef HAVE_XDR_DIRLIST
-bool_t
-xdr_dirlist(XDR *xdrs, nfsdirlist *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_dirlist:");
-
- if (!xdr_pointer(xdrs, (char **) &objp->dl_entries, sizeof(nfsentry), (XDRPROC_T_TYPE) xdr_entry)) {
- return (FALSE);
- }
- if (!xdr_bool(xdrs, &objp->dl_eof)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_DIRLIST */
-
-
-#ifndef HAVE_XDR_DIROPARGS
-bool_t
-xdr_diropargs(XDR *xdrs, nfsdiropargs *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_diropargs:");
-
- if (!xdr_nfs_fh(xdrs, &objp->da_fhandle)) {
- return (FALSE);
- }
- if (!xdr_filename(xdrs, &objp->da_name)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_DIROPARGS */
-
-
-#ifndef HAVE_XDR_DIROPOKRES
-bool_t
-xdr_diropokres(XDR *xdrs, nfsdiropokres *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_diropokres:");
-
- if (!xdr_nfs_fh(xdrs, &objp->drok_fhandle)) {
- return (FALSE);
- }
- if (!xdr_fattr(xdrs, &objp->drok_attributes)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_DIROPOKRES */
-
-
-#ifndef HAVE_XDR_DIROPRES
-bool_t
-xdr_diropres(XDR *xdrs, nfsdiropres *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_diropres:");
-
- if (!xdr_nfsstat(xdrs, &objp->dr_status)) {
- return (FALSE);
- }
- switch (objp->dr_status) {
- case NFS_OK:
- if (!xdr_diropokres(xdrs, &objp->dr_u.dr_drok_u)) {
- return (FALSE);
- }
- break;
- default:
- break;
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_DIROPRES */
-
-
-#ifndef HAVE_XDR_DIRPATH
-bool_t
-xdr_dirpath(XDR *xdrs, dirpath *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_dirpath:");
-
- if (!xdr_string(xdrs, objp, MNTPATHLEN)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_DIRPATH */
-
-
-#ifndef HAVE_XDR_ENTRY
-bool_t
-xdr_entry(XDR *xdrs, nfsentry *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_entry:");
-
- if (!xdr_u_int(xdrs, &objp->ne_fileid)) {
- return (FALSE);
- }
- if (!xdr_filename(xdrs, &objp->ne_name)) {
- return (FALSE);
- }
- if (!xdr_nfscookie(xdrs, objp->ne_cookie)) {
- return (FALSE);
- }
- if (!xdr_pointer(xdrs, (char **) &objp->ne_nextentry, sizeof(nfsentry), (XDRPROC_T_TYPE) xdr_entry)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_ENTRY */
-
-
-#ifndef HAVE_XDR_EXPORTNODE
-bool_t
-xdr_exportnode(XDR *xdrs, exportnode *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_exportnode:");
-
- if (!xdr_dirpath(xdrs, &objp->ex_dir)) {
- return (FALSE);
- }
- if (!xdr_groups(xdrs, &objp->ex_groups)) {
- return (FALSE);
- }
- if (!xdr_exports(xdrs, &objp->ex_next)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_EXPORTNODE */
-
-
-#ifndef HAVE_XDR_EXPORTS
-bool_t
-xdr_exports(XDR *xdrs, exports *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_exports:");
-
- if (!xdr_pointer(xdrs, (char **) objp, sizeof(exportnode), (XDRPROC_T_TYPE) xdr_exportnode)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_EXPORTS */
-
-
-#ifndef HAVE_XDR_FATTR
-bool_t
-xdr_fattr(XDR *xdrs, nfsfattr *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_fattr:");
-
- if (!xdr_ftype(xdrs, &objp->na_type)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->na_mode)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->na_nlink)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->na_uid)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->na_gid)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->na_size)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->na_blocksize)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->na_rdev)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->na_blocks)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->na_fsid)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->na_fileid)) {
- return (FALSE);
- }
- if (!xdr_nfstime(xdrs, &objp->na_atime)) {
- return (FALSE);
- }
- if (!xdr_nfstime(xdrs, &objp->na_mtime)) {
- return (FALSE);
- }
- if (!xdr_nfstime(xdrs, &objp->na_ctime)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_FATTR */
-
-
-#ifndef HAVE_XDR_FHANDLE
-bool_t
-xdr_fhandle(XDR *xdrs, fhandle objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_fhandle:");
-
- if (!xdr_opaque(xdrs, objp, NFS_FHSIZE)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_FHANDLE */
-
-
-#ifndef HAVE_XDR_FHSTATUS
-bool_t
-xdr_fhstatus(XDR *xdrs, fhstatus *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_fhstatus:");
-
- if (!xdr_u_int(xdrs, &objp->fhs_status)) {
- return (FALSE);
- }
- if (objp->fhs_status == 0 && !xdr_fhandle(xdrs, objp->fhs_fh)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_FHSTATUS */
-
-
-#ifndef HAVE_XDR_FILENAME
-bool_t
-xdr_filename(XDR *xdrs, filename *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_filename:");
-
- if (!xdr_string(xdrs, objp, NFS_MAXNAMLEN)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_FILENAME */
-
-
-#ifndef HAVE_XDR_FTYPE
-bool_t
-xdr_ftype(XDR *xdrs, nfsftype *objp)
-{
- enum_t local_obj = *objp;
-
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_ftype:");
-
- if (!xdr_enum(xdrs, &local_obj)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_FTYPE */
-
-
-#ifndef HAVE_XDR_GROUPNODE
-bool_t
-xdr_groupnode(XDR *xdrs, groupnode *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_groupnode:");
-
- if (!xdr_name(xdrs, &objp->gr_name)) {
- return (FALSE);
- }
- if (!xdr_groups(xdrs, &objp->gr_next)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_GROUPNODE */
-
-
-#ifndef HAVE_XDR_GROUPS
-bool_t
-xdr_groups(XDR *xdrs, groups *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_groups:");
-
- if (!xdr_pointer(xdrs, (char **) objp, sizeof(groupnode), (XDRPROC_T_TYPE) xdr_groupnode)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_GROUPS */
-
-
-#ifndef HAVE_XDR_LINKARGS
-bool_t
-xdr_linkargs(XDR *xdrs, nfslinkargs *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_linkargs:");
-
- if (!xdr_nfs_fh(xdrs, &objp->la_fhandle)) {
- return (FALSE);
- }
- if (!xdr_diropargs(xdrs, &objp->la_to)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_LINKARGS */
-
-
-#ifndef HAVE_XDR_MOUNTBODY
-bool_t
-xdr_mountbody(XDR *xdrs, mountbody *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_mountbody:");
-
- if (!xdr_name(xdrs, &objp->ml_hostname)) {
- return (FALSE);
- }
- if (!xdr_dirpath(xdrs, &objp->ml_directory)) {
- return (FALSE);
- }
- if (!xdr_mountlist(xdrs, &objp->ml_next)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_MOUNTBODY */
-
-
-#ifndef HAVE_XDR_MOUNTLIST
-bool_t
-xdr_mountlist(XDR *xdrs, mountlist *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_mountlist:");
-
- if (!xdr_pointer(xdrs, (char **) objp, sizeof(mountbody), (XDRPROC_T_TYPE) xdr_mountbody)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_MOUNTLIST */
-
-
-#ifndef HAVE_XDR_NAME
-bool_t
-xdr_name(XDR *xdrs, name *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_name:");
-
- if (!xdr_string(xdrs, objp, MNTNAMLEN)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_NAME */
-
-
-#ifndef HAVE_XDR_NFS_FH
-bool_t
-xdr_nfs_fh(XDR *xdrs, am_nfs_fh *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_nfs_fh:");
-
- if (!xdr_opaque(xdrs, (caddr_t) objp->fh_data, NFS_FHSIZE)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_NFS_FH */
-
-
-#ifndef HAVE_XDR_NFSCOOKIE
-bool_t
-xdr_nfscookie(XDR *xdrs, nfscookie objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_nfscookie:");
-
- if (!xdr_opaque(xdrs, objp, NFS_COOKIESIZE)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_NFSCOOKIE */
-
-
-#ifndef HAVE_XDR_NFSPATH
-bool_t
-xdr_nfspath(XDR *xdrs, nfspath *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_nfspath:");
-
- if (!xdr_string(xdrs, objp, NFS_MAXPATHLEN)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_NFSPATH */
-
-
-#ifndef HAVE_XDR_NFSSTAT
-bool_t
-xdr_nfsstat(XDR *xdrs, nfsstat *objp)
-{
- enum_t local_obj = *objp;
-
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_nfsstat:");
-
- if (!xdr_enum(xdrs, &local_obj)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_NFSSTAT */
-
-
-#ifndef HAVE_XDR_NFSTIME
-bool_t
-xdr_nfstime(XDR *xdrs, nfstime *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_nfstime:");
-
- if (!xdr_u_int(xdrs, (u_int *) &objp->nt_seconds)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, (u_int *) &objp->nt_useconds)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_NFSTIME */
-
-
-#ifndef HAVE_XDR_POINTER
-bool_t
-xdr_pointer(register XDR *xdrs, char **objpp, u_int obj_size, XDRPROC_T_TYPE xdr_obj)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_pointer:");
-
- bool_t more_data;
-
- more_data = (*objpp != NULL);
- if (!xdr_bool(xdrs, &more_data)) {
- return (FALSE);
- }
- if (!more_data) {
- *objpp = NULL;
- return (TRUE);
- }
-
- return (xdr_reference(xdrs, objpp, obj_size, xdr_obj));
-}
-#endif /* not HAVE_XDR_POINTER */
-
-
-#ifndef HAVE_XDR_READARGS
-bool_t
-xdr_readargs(XDR *xdrs, nfsreadargs *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_readargs:");
-
- if (!xdr_nfs_fh(xdrs, &objp->ra_fhandle)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->ra_offset)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->ra_count)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->ra_totalcount)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_READARGS */
-
-
-#ifndef HAVE_XDR_READDIRARGS
-bool_t
-xdr_readdirargs(XDR *xdrs, nfsreaddirargs *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_readdirargs:");
-
- if (!xdr_nfs_fh(xdrs, &objp->rda_fhandle)) {
- return (FALSE);
- }
- if (!xdr_nfscookie(xdrs, objp->rda_cookie)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->rda_count)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_READDIRARGS */
-
-
-#ifndef HAVE_XDR_READDIRRES
-bool_t
-xdr_readdirres(XDR *xdrs, nfsreaddirres *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_readdirres:");
-
- if (!xdr_nfsstat(xdrs, &objp->rdr_status)) {
- return (FALSE);
- }
- switch (objp->rdr_status) {
- case NFS_OK:
- if (!xdr_dirlist(xdrs, &objp->rdr_u.rdr_reply_u)) {
- return (FALSE);
- }
- break;
- default:
- break;
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_READDIRRES */
-
-
-#ifndef HAVE_XDR_READLINKRES
-bool_t
-xdr_readlinkres(XDR *xdrs, nfsreadlinkres *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_readlinkres:");
-
- if (!xdr_nfsstat(xdrs, &objp->rlr_status)) {
- return (FALSE);
- }
- switch (objp->rlr_status) {
- case NFS_OK:
- if (!xdr_nfspath(xdrs, &objp->rlr_u.rlr_data_u)) {
- return (FALSE);
- }
- break;
- default:
- break;
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_READLINKRES */
-
-
-#ifndef HAVE_XDR_READOKRES
-bool_t
-xdr_readokres(XDR *xdrs, nfsreadokres *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_readokres:");
-
- if (!xdr_fattr(xdrs, &objp->raok_attributes)) {
- return (FALSE);
- }
- if (!xdr_bytes(xdrs,
- (char **) & objp->raok_u.raok_val_u,
- (u_int *) & objp->raok_u.raok_len_u,
- NFS_MAXDATA)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_READOKRES */
-
-
-#ifndef HAVE_XDR_READRES
-bool_t
-xdr_readres(XDR *xdrs, nfsreadres *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_readres:");
-
- if (!xdr_nfsstat(xdrs, &objp->rr_status)) {
- return (FALSE);
- }
- switch (objp->rr_status) {
- case NFS_OK:
- if (!xdr_readokres(xdrs, &objp->rr_u.rr_reply_u)) {
- return (FALSE);
- }
- break;
- default:
- break;
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_READRES */
-
-
-#ifndef HAVE_XDR_RENAMEARGS
-bool_t
-xdr_renameargs(XDR *xdrs, nfsrenameargs *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_renameargs:");
-
- if (!xdr_diropargs(xdrs, &objp->rna_from)) {
- return (FALSE);
- }
- if (!xdr_diropargs(xdrs, &objp->rna_to)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_RENAMEARGS */
-
-
-#ifndef HAVE_XDR_SATTR
-bool_t
-xdr_sattr(XDR *xdrs, nfssattr *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_sattr:");
-
- if (!xdr_u_int(xdrs, &objp->sa_mode)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->sa_uid)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->sa_gid)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->sa_size)) {
- return (FALSE);
- }
- if (!xdr_nfstime(xdrs, &objp->sa_atime)) {
- return (FALSE);
- }
- if (!xdr_nfstime(xdrs, &objp->sa_mtime)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_SATTR */
-
-
-#ifndef HAVE_XDR_SATTRARGS
-bool_t
-xdr_sattrargs(XDR *xdrs, nfssattrargs *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_sattrargs:");
-
- if (!xdr_nfs_fh(xdrs, &objp->sag_fhandle)) {
- return (FALSE);
- }
- if (!xdr_sattr(xdrs, &objp->sag_attributes)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_SATTRARGS */
-
-
-#ifndef HAVE_XDR_STATFSOKRES
-bool_t
-xdr_statfsokres(XDR *xdrs, nfsstatfsokres *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_statfsokres:");
-
- if (!xdr_u_int(xdrs, &objp->sfrok_tsize)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->sfrok_bsize)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->sfrok_blocks)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->sfrok_bfree)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->sfrok_bavail)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_STATFSOKRES */
-
-
-#ifndef HAVE_XDR_STATFSRES
-bool_t
-xdr_statfsres(XDR *xdrs, nfsstatfsres *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_statfsres:");
-
- if (!xdr_nfsstat(xdrs, &objp->sfr_status)) {
- return (FALSE);
- }
- switch (objp->sfr_status) {
- case NFS_OK:
- if (!xdr_statfsokres(xdrs, &objp->sfr_u.sfr_reply_u)) {
- return (FALSE);
- }
- break;
- default:
- break;
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_STATFSRES */
-
-
-#ifndef HAVE_XDR_SYMLINKARGS
-bool_t
-xdr_symlinkargs(XDR *xdrs, nfssymlinkargs *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_symlinkargs:");
-
- if (!xdr_diropargs(xdrs, &objp->sla_from)) {
- return (FALSE);
- }
- if (!xdr_nfspath(xdrs, &objp->sla_to)) {
- return (FALSE);
- }
- if (!xdr_sattr(xdrs, &objp->sla_attributes)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_SYMLINKARGS */
-
-
-#ifndef HAVE_XDR_WRITEARGS
-bool_t
-xdr_writeargs(XDR *xdrs, nfswriteargs *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_writeargs:");
-
- if (!xdr_nfs_fh(xdrs, &objp->wra_fhandle)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->wra_beginoffset)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->wra_offset)) {
- return (FALSE);
- }
- if (!xdr_u_int(xdrs, &objp->wra_totalcount)) {
- return (FALSE);
- }
- if (!xdr_bytes(xdrs,
- (char **) & objp->wra_u.wra_val_u,
- (u_int *) & objp->wra_u.wra_len_u,
- NFS_MAXDATA)) {
- return (FALSE);
- }
- return (TRUE);
-}
-#endif /* not HAVE_XDR_WRITEARGS */
-
-
-/*
- * NFS V3 XDR FUNCTIONS:
- */
-#ifdef HAVE_FS_NFS3
-bool_t
-xdr_am_fhandle3(XDR *xdrs, am_fhandle3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_fhandle3:");
-
- if (!xdr_bytes(xdrs,
- (char **) &objp->fhandle3_val,
- (u_int *) &objp->fhandle3_len,
- AM_FHSIZE3))
- return (FALSE);
- return (TRUE);
-}
-
-
-bool_t
-xdr_am_mountstat3(XDR *xdrs, am_mountstat3 *objp)
-{
- enum_t local_obj = *objp;
-
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_mountstat3:");
-
- if (!xdr_enum(xdrs, &local_obj))
- return (FALSE);
- return (TRUE);
-}
-
-
-bool_t
-xdr_am_mountres3_ok(XDR *xdrs, am_mountres3_ok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_mountres3_ok:");
-
- if (!xdr_am_fhandle3(xdrs, &objp->fhandle))
- return (FALSE);
- if (!xdr_array(xdrs,
- (char **) ((voidp) &objp->auth_flavors.auth_flavors_val),
- (u_int *) &objp->auth_flavors.auth_flavors_len,
- ~0,
- sizeof(int),
- (XDRPROC_T_TYPE) xdr_int))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr_am_mountres3(XDR *xdrs, am_mountres3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_mountres3:");
-
- if (!xdr_am_mountstat3(xdrs, &objp->fhs_status))
- return (FALSE);
-
- if (objp->fhs_status == AM_MNT3_OK) {
- if (!xdr_am_mountres3_ok(xdrs, &objp->mountres3_u.mountinfo))
- return (FALSE);
- }
- return (TRUE);
-}
-
-bool_t
-xdr_am_cookieverf3(XDR *xdrs, am_cookieverf3 objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_cookieverf3:");
-
- if (!xdr_opaque(xdrs, objp, AM_NFS3_COOKIEVERFSIZE))
- return FALSE;
- return TRUE;
-}
-
-#if 0
-/* In FreeBSD xdr_uint64() is defined in ../../../include/rpcsvc/nfs_prot.x */
-/*
- * Not ideal, xdr_u_int64_t() is not defined in Linux glibc RPC
- * but xdr_u_quad_t() is. But in libtirpc xdr_u_quad_t() is not
- * defined and xdr_u_int64_t() is. So xdr_u_int64_t() is probably
- * an expected standard xdr function so, if it isn't defined use
- * an internal xdr_u_int64_t() that uses xdr_u_quad_t().
- */
-#ifndef HAVE_XDR_U_INT64_T
-#define xdr_u_int64_t(xdrs, objp) xdr_u_quad_t(xdrs, objp)
-#endif /* HAVE_XDR_U_INT64_T */
-
-bool_t
-xdr_uint64(XDR *xdrs, uint64 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_uint64:");
-
- if (!xdr_u_int64_t(xdrs, objp))
- return FALSE;
- return TRUE;
-}
-#endif
-
-bool_t
-xdr_am_cookie3(XDR *xdrs, am_cookie3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_cookie3:");
-
- if (!xdr_uint64(xdrs, objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_nfs_fh3(XDR *xdrs, am_nfs_fh3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_nfs_fh3:");
-
- if (!xdr_u_int(xdrs, &objp->am_fh3_length))
- return (FALSE);
- if (objp->am_fh3_length > AM_FHSIZE3)
- return (FALSE);
- if (!xdr_opaque(xdrs, objp->am_fh3_data, objp->am_fh3_length))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr_am_nfsstat3(XDR *xdrs, am_nfsstat3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_nfsstat3:");
-
- if (!xdr_enum(xdrs, (enum_t *)objp))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr_am_diropargs3(XDR *xdrs, am_diropargs3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_diropargs3:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->dir))
- return (FALSE);
- if (!xdr_am_filename3(xdrs, &objp->name))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr_am_filename3(XDR *xdrs, am_filename3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_filename3:");
-
- if (!xdr_string(xdrs, objp, ~0))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr_am_ftype3(XDR *xdrs, am_ftype3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_ftype3:");
-
- if (!xdr_enum(xdrs, (enum_t *) objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_mode3(XDR *xdrs, am_mode3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_mode3:");
-
- if (!xdr_u_int(xdrs, objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_uid3(XDR *xdrs, am_uid3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_uid3:");
-
- if (!xdr_u_int(xdrs, objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_gid3(XDR *xdrs, am_gid3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_gid3:");
-
- if (!xdr_u_int(xdrs, objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_size3(XDR *xdrs, am_size3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_size3:");
-
- if (!xdr_uint64(xdrs, objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_fileid3(XDR *xdrs, am_fileid3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_fileid3:");
-
- if (!xdr_uint64(xdrs, objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_specdata3(XDR *xdrs, am_specdata3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_specdata3:");
-
- if (!xdr_u_int(xdrs, &objp->specdata1))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->specdata2))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_nfstime3(XDR *xdrs, am_nfstime3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_nfstime3:");
-
- if (!xdr_u_int(xdrs, &objp->seconds))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->nseconds))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_fattr3(XDR *xdrs, am_fattr3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_fattr3:");
-
- if (!xdr_am_ftype3(xdrs, &objp->type))
- return FALSE;
- if (!xdr_am_mode3(xdrs, &objp->mode))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->nlink))
- return FALSE;
- if (!xdr_am_uid3(xdrs, &objp->uid))
- return FALSE;
- if (!xdr_am_gid3(xdrs, &objp->gid))
- return FALSE;
- if (!xdr_am_size3(xdrs, &objp->size))
- return FALSE;
- if (!xdr_am_size3(xdrs, &objp->used))
- return FALSE;
- if (!xdr_am_specdata3(xdrs, &objp->rdev))
- return FALSE;
- if (!xdr_uint64(xdrs, &objp->fsid))
- return FALSE;
- if (!xdr_am_fileid3(xdrs, &objp->fileid))
- return FALSE;
- if (!xdr_am_nfstime3(xdrs, &objp->atime))
- return FALSE;
- if (!xdr_am_nfstime3(xdrs, &objp->mtime))
- return FALSE;
- if (!xdr_am_nfstime3(xdrs, &objp->ctime))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_post_op_attr(XDR *xdrs, am_post_op_attr *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_post_op_attr:");
-
- if (!xdr_bool(xdrs, &objp->attributes_follow))
- return FALSE;
- switch (objp->attributes_follow) {
- case TRUE:
- if (!xdr_am_fattr3(xdrs, &objp->am_post_op_attr_u.attributes))
- return FALSE;
- break;
- case FALSE:
- break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_stable_how(XDR *xdrs, am_stable_how *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_stable_how:");
-
- if (!xdr_enum(xdrs, (enum_t *) objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_offset3(XDR *xdrs, am_offset3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_offset3:");
-
- if (!xdr_uint64(xdrs, objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_count3(XDR *xdrs, am_count3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_count3:");
-
- if (!xdr_u_int(xdrs, objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_wcc_attr(XDR *xdrs, am_wcc_attr *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_wcc_attr:");
-
- if (!xdr_am_size3(xdrs, &objp->size))
- return FALSE;
- if (!xdr_am_nfstime3(xdrs, &objp->mtime))
- return FALSE;
- if (!xdr_am_nfstime3(xdrs, &objp->ctime))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_pre_op_attr(XDR *xdrs, am_pre_op_attr *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, ":xdr_am_pre_op_attr");
-
- if (!xdr_bool(xdrs, &objp->attributes_follow))
- return FALSE;
- switch (objp->attributes_follow) {
- case TRUE:
- if (!xdr_am_wcc_attr(xdrs, &objp->am_pre_op_attr_u.attributes))
- return FALSE;
- break;
- case FALSE:
- break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_wcc_data(XDR *xdrs, am_wcc_data *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_wcc_data:");
-
- if (!xdr_am_pre_op_attr(xdrs, &objp->before))
- return FALSE;
- if (!xdr_am_post_op_attr(xdrs, &objp->after))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_WRITE3args(XDR *xdrs, am_WRITE3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_WRITE3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->file))
- return FALSE;
- if (!xdr_am_offset3(xdrs, &objp->offset))
- return FALSE;
- if (!xdr_am_count3(xdrs, &objp->count))
- return FALSE;
- if (!xdr_am_stable_how(xdrs, &objp->stable))
- return FALSE;
- if (!xdr_bytes(xdrs, (char **)&objp->data.data_val,
- (u_int *) &objp->data.data_len, ~0))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_writeverf3(XDR *xdrs, am_writeverf3 objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_writeverf3:");
-
- if (!xdr_opaque(xdrs, objp, AM_NFS3_WRITEVERFSIZE))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_WRITE3resok(XDR *xdrs, am_WRITE3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_WRITE3resok:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->file_wcc))
- return FALSE;
- if (!xdr_am_count3(xdrs, &objp->count))
- return FALSE;
- if (!xdr_am_stable_how(xdrs, &objp->committed))
- return FALSE;
- if (!xdr_am_writeverf3(xdrs, objp->verf))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_WRITE3resfail(XDR *xdrs, am_WRITE3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_WRITE3resfail:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->file_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_WRITE3res(XDR *xdrs, am_WRITE3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_WRITE3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_WRITE3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_WRITE3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_LOOKUP3args(XDR *xdrs, am_LOOKUP3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_LOOKUP3args:");
-
- if (!xdr_am_diropargs3(xdrs, &objp->what))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr_am_LOOKUP3res(XDR *xdrs, am_LOOKUP3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_LOOKUP3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return (FALSE);
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_LOOKUP3resok(xdrs, &objp->res_u.ok))
- return (FALSE);
- break;
- default:
- if (!xdr_am_LOOKUP3resfail(xdrs, &objp->res_u.fail))
- return (FALSE);
- break;
- }
- return (TRUE);
-}
-
-bool_t
-xdr_am_LOOKUP3resfail(XDR *xdrs, am_LOOKUP3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_LOOKUP3resfail:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->dir_attributes))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr_am_LOOKUP3resok(XDR *xdrs, am_LOOKUP3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_LOOKUP3resok:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->object))
- return (FALSE);
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return (FALSE);
- if (!xdr_am_post_op_attr(xdrs, &objp->dir_attributes))
- return (FALSE);
- return (TRUE);
-}
-
-bool_t
-xdr_am_COMMIT3args(XDR *xdrs, am_COMMIT3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_COMMIT3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->file))
- return FALSE;
- if (!xdr_am_offset3(xdrs, &objp->offset))
- return FALSE;
- if (!xdr_am_count3(xdrs, &objp->count))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_COMMIT3resok(XDR *xdrs, am_COMMIT3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_COMMIT3resok:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->file_wcc))
- return FALSE;
- if (!xdr_am_writeverf3(xdrs, objp->verf))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_COMMIT3resfail(XDR *xdrs, am_COMMIT3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_COMMIT3resfail:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->file_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_COMMIT3res(XDR *xdrs, am_COMMIT3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_COMMIT3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_COMMIT3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_COMMIT3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_ACCESS3args(XDR *xdrs, am_ACCESS3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_ACCESS3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->object))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->access))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_ACCESS3resok(XDR *xdrs, am_ACCESS3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_ACCESS3resok:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->access))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_ACCESS3resfail(XDR *xdrs, am_ACCESS3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_ACCESS3resfail:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_ACCESS3res(XDR *xdrs, am_ACCESS3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_ACCESS3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_ACCESS3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_ACCESS3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_GETATTR3args(XDR *xdrs, am_GETATTR3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_GETATTR3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->object))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_GETATTR3resok(XDR *xdrs, am_GETATTR3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_GETATTR3resok:");
-
- if (!xdr_am_fattr3(xdrs, &objp->obj_attributes))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_GETATTR3res(XDR *xdrs, am_GETATTR3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_GETATTR3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_GETATTR3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_time_how(XDR *xdrs, am_time_how *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_time_how:");
-
- if (!xdr_enum(xdrs, (enum_t *) objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_set_mode3(XDR *xdrs, am_set_mode3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_set_mode3:");
-
- if (!xdr_bool(xdrs, &objp->set_it))
- return FALSE;
- switch (objp->set_it) {
- case TRUE:
- if (!xdr_am_mode3(xdrs, &objp->am_set_mode3_u.mode))
- return FALSE;
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_set_uid3(XDR *xdrs, am_set_uid3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_set_uid3:");
-
- if (!xdr_bool(xdrs, &objp->set_it))
- return FALSE;
- switch (objp->set_it) {
- case TRUE:
- if (!xdr_am_uid3(xdrs, &objp->am_set_uid3_u.uid))
- return FALSE;
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_set_gid3(XDR *xdrs, am_set_gid3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_set_gid3:");
-
- if (!xdr_bool(xdrs, &objp->set_it))
- return FALSE;
- switch (objp->set_it) {
- case TRUE:
- if (!xdr_am_gid3(xdrs, &objp->am_set_gid3_u.gid))
- return FALSE;
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_set_size3(XDR *xdrs, am_set_size3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_set_size3:");
-
- if (!xdr_bool(xdrs, &objp->set_it))
- return FALSE;
- switch (objp->set_it) {
- case TRUE:
- if (!xdr_am_size3(xdrs, &objp->am_set_size3_u.size))
- return FALSE;
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_set_atime(XDR *xdrs, am_set_atime *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_set_atime:");
-
- if (!xdr_am_time_how(xdrs, &objp->set_it))
- return FALSE;
- switch (objp->set_it) {
- case AM_SET_TO_CLIENT_TIME:
- if (!xdr_am_nfstime3(xdrs, &objp->am_set_atime_u.atime))
- return FALSE;
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_set_mtime(XDR *xdrs, am_set_mtime *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_set_mtime:");
-
- if (!xdr_am_time_how(xdrs, &objp->set_it))
- return FALSE;
- switch (objp->set_it) {
- case AM_SET_TO_CLIENT_TIME:
- if (!xdr_am_nfstime3(xdrs, &objp->am_set_mtime_u.mtime))
- return FALSE;
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_sattr3(XDR *xdrs, am_sattr3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_sattr3:");
-
- if (!xdr_am_set_mode3(xdrs, &objp->mode))
- return FALSE;
- if (!xdr_am_set_uid3(xdrs, &objp->uid))
- return FALSE;
- if (!xdr_am_set_gid3(xdrs, &objp->gid))
- return FALSE;
- if (!xdr_am_set_size3(xdrs, &objp->size))
- return FALSE;
- if (!xdr_am_set_atime(xdrs, &objp->atime))
- return FALSE;
- if (!xdr_am_set_mtime(xdrs, &objp->mtime))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_createmode3(XDR *xdrs, am_createmode3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_createmode3:");
-
- if (!xdr_enum(xdrs, (enum_t *) objp))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_createverf3(XDR *xdrs, am_createverf3 objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_createverf3:");
-
- if (!xdr_opaque(xdrs, objp, AM_NFS3_CREATEVERFSIZE))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_createhow3(XDR *xdrs, am_createhow3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_createhow3:");
-
- if (!xdr_am_createmode3(xdrs, &objp->mode))
- return FALSE;
- switch (objp->mode) {
- case AM_UNCHECKED:
- if (!xdr_am_sattr3(xdrs, &objp->am_createhow3_u.obj_attributes))
- return FALSE;
- break;
- case AM_GUARDED:
- if (!xdr_am_sattr3(xdrs, &objp->am_createhow3_u.g_obj_attributes))
- return FALSE;
- break;
- case AM_EXCLUSIVE:
- if (!xdr_am_createverf3(xdrs, objp->am_createhow3_u.verf))
- return FALSE;
- break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_CREATE3args(XDR *xdrs, am_CREATE3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_CREATE3args:");
-
- if (!xdr_am_diropargs3(xdrs, &objp->where))
- return FALSE;
- if (!xdr_am_createhow3(xdrs, &objp->how))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_post_op_fh3(XDR *xdrs, am_post_op_fh3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_post_op_fh3:");
-
- if (!xdr_bool(xdrs, &objp->handle_follows))
- return FALSE;
- switch (objp->handle_follows) {
- case TRUE:
- if (!xdr_am_nfs_fh3(xdrs, &objp->am_post_op_fh3_u.handle))
- return FALSE;
- break;
- case FALSE:
- break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_CREATE3resok(XDR *xdrs, am_CREATE3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_CREATE3resok:");
-
- if (!xdr_am_post_op_fh3(xdrs, &objp->obj))
- return FALSE;
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_CREATE3resfail(XDR *xdrs, am_CREATE3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_CREATE3resfail:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_CREATE3res(XDR *xdrs, am_CREATE3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_CREATE3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_CREATE3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_CREATE3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_REMOVE3args(XDR *xdrs, am_REMOVE3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_REMOVE3args:");
-
- if (!xdr_am_diropargs3(xdrs, &objp->object))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_REMOVE3resok(XDR *xdrs, am_REMOVE3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_REMOVE3resok:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_REMOVE3resfail(XDR *xdrs, am_REMOVE3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_REMOVE3resfail:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_REMOVE3res(XDR *xdrs, am_REMOVE3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_REMOVE3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_REMOVE3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_REMOVE3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_READ3args(XDR *xdrs, am_READ3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READ3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->file))
- return FALSE;
- if (!xdr_am_offset3(xdrs, &objp->offset))
- return FALSE;
- if (!xdr_am_count3(xdrs, &objp->count))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_READ3resok(XDR *xdrs, am_READ3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READ3resok:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->file_attributes))
- return FALSE;
- if (!xdr_am_count3(xdrs, &objp->count))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->eof))
- return FALSE;
- if (!xdr_bytes(xdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, ~0))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_READ3resfail(XDR *xdrs, am_READ3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READ3resfail:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->file_attributes))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_READ3res(XDR *xdrs, am_READ3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READ3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_READ3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_READ3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_FSINFO3args(XDR *xdrs, am_FSINFO3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_FSINFO3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->fsroot))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_FSINFO3resok(XDR *xdrs, am_FSINFO3resok *objp)
-{
- register int32_t *buf;
-
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_FSINFO3resok:");
-
- if (xdrs->x_op == XDR_ENCODE) {
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- buf = XDR_INLINE(xdrs, 7 * BYTES_PER_XDR_UNIT);
- if (buf == NULL) {
- if (!xdr_u_int(xdrs, &objp->rtmax))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->rtpref))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->rtmult))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->wtmax))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->wtpref))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->wtmult))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->dtpref))
- return FALSE;
- } else {
- IXDR_PUT_U_LONG(buf, objp->rtmax);
- IXDR_PUT_U_LONG(buf, objp->rtpref);
- IXDR_PUT_U_LONG(buf, objp->rtmult);
- IXDR_PUT_U_LONG(buf, objp->wtmax);
- IXDR_PUT_U_LONG(buf, objp->wtpref);
- IXDR_PUT_U_LONG(buf, objp->wtmult);
- IXDR_PUT_U_LONG(buf, objp->dtpref);
- }
- if (!xdr_am_size3(xdrs, &objp->maxfilesize))
- return FALSE;
- if (!xdr_am_nfstime3(xdrs, &objp->time_delta))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->properties))
- return FALSE;
- return TRUE;
- } else if (xdrs->x_op == XDR_DECODE) {
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- buf = XDR_INLINE(xdrs, 7 * BYTES_PER_XDR_UNIT);
- if (buf == NULL) {
- if (!xdr_u_int (xdrs, &objp->rtmax))
- return FALSE;
- if (!xdr_u_int (xdrs, &objp->rtpref))
- return FALSE;
- if (!xdr_u_int (xdrs, &objp->rtmult))
- return FALSE;
- if (!xdr_u_int (xdrs, &objp->wtmax))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->wtpref))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->wtmult))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->dtpref))
- return FALSE;
- } else {
- objp->rtmax = IXDR_GET_U_LONG(buf);
- objp->rtpref = IXDR_GET_U_LONG(buf);
- objp->rtmult = IXDR_GET_U_LONG(buf);
- objp->wtmax = IXDR_GET_U_LONG(buf);
- objp->wtpref = IXDR_GET_U_LONG(buf);
- objp->wtmult = IXDR_GET_U_LONG(buf);
- objp->dtpref = IXDR_GET_U_LONG(buf);
- }
- if (!xdr_am_size3(xdrs, &objp->maxfilesize))
- return FALSE;
- if (!xdr_am_nfstime3(xdrs, &objp->time_delta))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->properties))
- return FALSE;
- return TRUE;
- }
-
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->rtmax))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->rtpref))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->rtmult))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->wtmax))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->wtpref))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->wtmult))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->dtpref))
- return FALSE;
- if (!xdr_am_size3(xdrs, &objp->maxfilesize))
- return FALSE;
- if (!xdr_am_nfstime3(xdrs, &objp->time_delta))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->properties))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_FSINFO3resfail(XDR *xdrs, am_FSINFO3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_FSINFO3resfail:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_FSINFO3res(XDR *xdrs, am_FSINFO3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_FSINFO3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_FSINFO3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_FSINFO3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_FSSTAT3args(XDR *xdrs, am_FSSTAT3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_FSSTAT3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->fsroot))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_FSSTAT3resok(XDR *xdrs, am_FSSTAT3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_FSSTAT3resok:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- if (!xdr_am_size3(xdrs, &objp->tbytes))
- return FALSE;
- if (!xdr_am_size3(xdrs, &objp->fbytes))
- return FALSE;
- if (!xdr_am_size3(xdrs, &objp->abytes))
- return FALSE;
- if (!xdr_am_size3(xdrs, &objp->tfiles))
- return FALSE;
- if (!xdr_am_size3(xdrs, &objp->ffiles))
- return FALSE;
- if (!xdr_am_size3(xdrs, &objp->afiles))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->invarsec))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_FSSTAT3resfail(XDR *xdrs, am_FSSTAT3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_FSSTAT3resfail:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_FSSTAT3res(XDR *xdrs, am_FSSTAT3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_FSSTAT3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_FSSTAT3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_FSSTAT3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_PATHCONF3args(XDR *xdrs, am_PATHCONF3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_PATHCONF3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->object))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_PATHCONF3resok(XDR *xdrs, am_PATHCONF3resok *objp)
-{
- register int32_t *buf;
-
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_PATHCONF3resok:");
-
- if (xdrs->x_op == XDR_ENCODE) {
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
- if (buf == NULL) {
- if (!xdr_u_int(xdrs, &objp->linkmax))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->name_max))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->no_trunc))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->chown_restricted))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->case_insensitive))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->case_preserving))
- return FALSE;
- } else {
- IXDR_PUT_U_LONG(buf, objp->linkmax);
- IXDR_PUT_U_LONG(buf, objp->name_max);
- IXDR_PUT_BOOL(buf, objp->no_trunc);
- IXDR_PUT_BOOL(buf, objp->chown_restricted);
- IXDR_PUT_BOOL(buf, objp->case_insensitive);
- IXDR_PUT_BOOL(buf, objp->case_preserving);
- }
- return TRUE;
- } else if (xdrs->x_op == XDR_DECODE) {
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- buf = XDR_INLINE(xdrs, 6 * BYTES_PER_XDR_UNIT);
- if (buf == NULL) {
- if (!xdr_u_int(xdrs, &objp->linkmax))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->name_max))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->no_trunc))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->chown_restricted))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->case_insensitive))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->case_preserving))
- return FALSE;
- } else {
- objp->linkmax = IXDR_GET_U_LONG(buf);
- objp->name_max = IXDR_GET_U_LONG(buf);
- objp->no_trunc = IXDR_GET_BOOL(buf);
- objp->chown_restricted = IXDR_GET_BOOL(buf);
- objp->case_insensitive = IXDR_GET_BOOL(buf);
- objp->case_preserving = IXDR_GET_BOOL(buf);
- }
- return TRUE;
- }
-
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->linkmax))
- return FALSE;
- if (!xdr_u_int(xdrs, &objp->name_max))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->no_trunc))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->chown_restricted))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->case_insensitive))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->case_preserving))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_PATHCONF3resfail(XDR *xdrs, am_PATHCONF3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_PATHCONF3resfail:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_PATHCONF3res(XDR *xdrs, am_PATHCONF3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_PATHCONF3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_PATHCONF3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_PATHCONF3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_nfspath3(XDR *xdrs, am_nfspath3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_nfspath3:");
-
- if (!xdr_string(xdrs, objp, ~0))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_symlinkdata3(XDR *xdrs, am_symlinkdata3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_symlinkdata3:");
-
- if (!xdr_am_sattr3(xdrs, &objp->symlink_attributes))
- return FALSE;
- if (!xdr_am_nfspath3(xdrs, &objp->symlink_data))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_SYMLINK3args(XDR *xdrs, am_SYMLINK3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_SYMLINK3args:");
-
- if (!xdr_am_diropargs3(xdrs, &objp->where))
- return FALSE;
- if (!xdr_am_symlinkdata3(xdrs, &objp->symlink))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_SYMLINK3resok(XDR *xdrs, am_SYMLINK3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_SYMLINK3resok:");
-
- if (!xdr_am_post_op_fh3(xdrs, &objp->obj))
- return FALSE;
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_SYMLINK3resfail(XDR *xdrs, am_SYMLINK3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_SYMLINK3resfail:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_SYMLINK3res(XDR *xdrs, am_SYMLINK3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_SYMLINK3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_SYMLINK3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_SYMLINK3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_READLINK3args(XDR *xdrs, am_READLINK3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READLINK3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->symlink))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_READLINK3resok(XDR *xdrs, am_READLINK3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READLINK3resok:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->symlink_attributes))
- return FALSE;
- if (!xdr_am_nfspath3(xdrs, &objp->data))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_READLINK3resfail(XDR *xdrs, am_READLINK3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READLINK3resfail:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->symlink_attributes))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_READLINK3res(XDR *xdrs, am_READLINK3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READLINK3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_READLINK3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_READLINK3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_devicedata3(XDR *xdrs, am_devicedata3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_devicedata3:");
-
- if (!xdr_am_sattr3(xdrs, &objp->dev_attributes))
- return FALSE;
- if (!xdr_am_specdata3(xdrs, &objp->spec))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_mknoddata3(XDR *xdrs, am_mknoddata3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_mknoddata3:");
-
- if (!xdr_am_ftype3(xdrs, &objp->type))
- return FALSE;
- switch (objp->type) {
- case AM_NF3CHR:
- if (!xdr_am_devicedata3(xdrs, &objp->am_mknoddata3_u.chr_device))
- return FALSE;
- break;
- case AM_NF3BLK:
- if (!xdr_am_devicedata3(xdrs, &objp->am_mknoddata3_u.blk_device))
- return FALSE;
- break;
- case AM_NF3SOCK:
- if (!xdr_am_sattr3(xdrs, &objp->am_mknoddata3_u.sock_attributes))
- return FALSE;
- break;
- case AM_NF3FIFO:
- if (!xdr_am_sattr3(xdrs, &objp->am_mknoddata3_u.pipe_attributes))
- return FALSE;
- break;
- default:
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_MKNOD3args(XDR *xdrs, am_MKNOD3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_MKNOD3args:");
-
- if (!xdr_am_diropargs3(xdrs, &objp->where))
- return FALSE;
- if (!xdr_am_mknoddata3(xdrs, &objp->what))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_MKNOD3resok(XDR *xdrs, am_MKNOD3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_MKNOD3resok:");
-
- if (!xdr_am_post_op_fh3(xdrs, &objp->obj))
- return FALSE;
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_MKNOD3resfail(XDR *xdrs, am_MKNOD3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_MKNOD3resfail:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_MKNOD3res(XDR *xdrs, am_MKNOD3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, ":");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_MKNOD3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_MKNOD3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_MKDIR3args(XDR *xdrs, am_MKDIR3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, ":");
-
- if (!xdr_am_diropargs3(xdrs, &objp->where))
- return FALSE;
- if (!xdr_am_sattr3(xdrs, &objp->attributes))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_MKDIR3resok(XDR *xdrs, am_MKDIR3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_MKDIR3resok:");
-
- if (!xdr_am_post_op_fh3(xdrs, &objp->obj))
- return FALSE;
- if (!xdr_am_post_op_attr(xdrs, &objp->obj_attributes))
- return FALSE;
- if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_MKDIR3resfail(XDR *xdrs, am_MKDIR3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_MKDIR3resfail:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_MKDIR3res(XDR *xdrs, am_MKDIR3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_MKDIR3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_MKDIR3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_MKDIR3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_RMDIR3args(XDR *xdrs, am_RMDIR3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_RMDIR3args:");
-
- if (!xdr_am_diropargs3(xdrs, &objp->object))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_RMDIR3resok(XDR *xdrs, am_RMDIR3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_RMDIR3resok:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_RMDIR3resfail(XDR *xdrs, am_RMDIR3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_RMDIR3resfail:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->dir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_RMDIR3res(XDR *xdrs, am_RMDIR3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_RMDIR3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_RMDIR3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_RMDIR3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_RENAME3args(XDR *xdrs, am_RENAME3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_RENAME3args:");
-
- if (!xdr_am_diropargs3(xdrs, &objp->from))
- return FALSE;
- if (!xdr_am_diropargs3(xdrs, &objp->to))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_RENAME3resok(XDR *xdrs, am_RENAME3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_RENAME3resok:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->fromdir_wcc))
- return FALSE;
- if (!xdr_am_wcc_data(xdrs, &objp->todir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_RENAME3resfail(XDR *xdrs, am_RENAME3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_RENAME3resfail:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->fromdir_wcc))
- return FALSE;
- if (!xdr_am_wcc_data(xdrs, &objp->todir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_RENAME3res(XDR *xdrs, am_RENAME3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_RENAME3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_RENAME3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_RENAME3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_READDIRPLUS3args(XDR *xdrs, am_READDIRPLUS3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READDIRPLUS3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->dir))
- return FALSE;
- if (!xdr_am_cookie3(xdrs, &objp->cookie))
- return FALSE;
- if (!xdr_am_cookieverf3(xdrs, objp->cookieverf))
- return FALSE;
- if (!xdr_am_count3(xdrs, &objp->dircount))
- return FALSE;
- if (!xdr_am_count3(xdrs, &objp->maxcount))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_entryplus3(XDR *xdrs, am_entryplus3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_entryplus3:");
-
- if (!xdr_am_fileid3(xdrs, &objp->fileid))
- return FALSE;
- if (!xdr_am_filename3(xdrs, &objp->name))
- return FALSE;
- if (!xdr_am_cookie3(xdrs, &objp->cookie))
- return FALSE;
- if (!xdr_am_post_op_attr(xdrs, &objp->name_attributes))
- return FALSE;
- if (!xdr_am_post_op_fh3(xdrs, &objp->name_handle))
- return FALSE;
- if (!xdr_pointer(xdrs, (char **)&objp->nextentry,
- sizeof(am_entryplus3), (xdrproc_t) xdr_am_entryplus3))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_dirlistplus3(XDR *xdrs, am_dirlistplus3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_dirlistplus3:");
-
- if (!xdr_pointer(xdrs, (char **)&objp->entries,
- sizeof(am_entryplus3), (xdrproc_t) xdr_am_entryplus3))
- return FALSE;
- if (!xdr_bool(xdrs, &objp->eof))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_READDIRPLUS3resok(XDR *xdrs, am_READDIRPLUS3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READDIRPLUS3resok:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->dir_attributes))
- return FALSE;
- if (!xdr_am_cookieverf3(xdrs, objp->cookieverf))
- return FALSE;
- if (!xdr_am_dirlistplus3(xdrs, &objp->reply))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_READDIRPLUS3resfail(XDR *xdrs, am_READDIRPLUS3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READDIRPLUS3resfail:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->dir_attributes))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_READDIRPLUS3res(XDR *xdrs, am_READDIRPLUS3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READDIRPLUS3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_READDIRPLUS3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_READDIRPLUS3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_READDIR3args(XDR *xdrs, am_READDIR3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READDIR3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->dir))
- return FALSE;
- if (!xdr_am_cookie3(xdrs, &objp->cookie))
- return FALSE;
- if (!xdr_am_cookieverf3(xdrs, objp->cookieverf))
- return FALSE;
- if (!xdr_am_count3(xdrs, &objp->count))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_entry3(XDR *xdrs, am_entry3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_entry3:");
-
- if (!xdr_am_fileid3(xdrs, &objp->fileid))
- return FALSE;
- if (!xdr_am_filename3(xdrs, &objp->name))
- return FALSE;
- if (!xdr_am_cookie3(xdrs, &objp->cookie))
- return FALSE;
- if (!xdr_pointer(xdrs, (char **)&objp->nextentry,
- sizeof(am_entry3), (xdrproc_t) xdr_am_entry3))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_dirlist3(XDR *xdrs, am_dirlist3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_dirlist3:");
-
- if (!xdr_pointer(xdrs, (char **)&objp->entries,
- sizeof(am_entry3), (xdrproc_t) xdr_am_entry3))
- return FALSE;
- if (!xdr_bool (xdrs, &objp->eof))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_READDIR3resok(XDR *xdrs, am_READDIR3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READDIR3resok:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->dir_attributes))
- return FALSE;
- if (!xdr_am_cookieverf3(xdrs, objp->cookieverf))
- return FALSE;
- if (!xdr_am_dirlist3(xdrs, &objp->reply))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_READDIR3resfail(XDR *xdrs, am_READDIR3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READDIR3resfail:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->dir_attributes))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_READDIR3res(XDR *xdrs, am_READDIR3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_READDIR3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_READDIR3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_READDIR3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_LINK3args(XDR *xdrs, am_LINK3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_LINK3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->file))
- return FALSE;
- if (!xdr_am_diropargs3(xdrs, &objp->link))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_LINK3resok(XDR *xdrs, am_LINK3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_LINK3resok:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->file_attributes))
- return FALSE;
- if (!xdr_am_wcc_data(xdrs, &objp->linkdir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_LINK3resfail(XDR *xdrs, am_LINK3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_LINK3resfail:");
-
- if (!xdr_am_post_op_attr(xdrs, &objp->file_attributes))
- return FALSE;
- if (!xdr_am_wcc_data(xdrs, &objp->linkdir_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_LINK3res(XDR *xdrs, am_LINK3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_LINK3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_LINK3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_LINK3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_sattrguard3(XDR *xdrs, am_sattrguard3 *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_sattrguard3:");
-
- if (!xdr_bool(xdrs, &objp->check))
- return FALSE;
- switch (objp->check) {
- case TRUE:
- if (!xdr_am_nfstime3(xdrs, &objp->am_sattrguard3_u.obj_ctime))
- return FALSE;
- break;
- case FALSE:
- break;
- default:
- return FALSE;
- }
- return TRUE;
-}
-
-bool_t
-xdr_am_SETATTR3args(XDR *xdrs, am_SETATTR3args *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_SETATTR3args:");
-
- if (!xdr_am_nfs_fh3(xdrs, &objp->object))
- return FALSE;
- if (!xdr_am_sattr3(xdrs, &objp->new_attributes))
- return FALSE;
- if (!xdr_am_sattrguard3(xdrs, &objp->guard))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_SETATTR3resok(XDR *xdrs, am_SETATTR3resok *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_SETATTR3resok:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->obj_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_SETATTR3resfail(XDR *xdrs, am_SETATTR3resfail *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_SETATTR3resfail:");
-
- if (!xdr_am_wcc_data(xdrs, &objp->obj_wcc))
- return FALSE;
- return TRUE;
-}
-
-bool_t
-xdr_am_SETATTR3res(XDR *xdrs, am_SETATTR3res *objp)
-{
- if (amuDebug(D_XDRTRACE))
- plog(XLOG_DEBUG, "xdr_am_SETATTR3res:");
-
- if (!xdr_am_nfsstat3(xdrs, &objp->status))
- return FALSE;
- switch (objp->status) {
- case AM_NFS3_OK:
- if (!xdr_am_SETATTR3resok(xdrs, &objp->res_u.ok))
- return FALSE;
- break;
- default:
- if (!xdr_am_SETATTR3resfail(xdrs, &objp->res_u.fail))
- return FALSE;
- break;
- }
- return TRUE;
-}
-#endif /* HAVE_FS_NFS3 */
diff --git a/contrib/amd/libamu/xutil.c b/contrib/amd/libamu/xutil.c
deleted file mode 100644
index 1159fe5ec83e..000000000000
--- a/contrib/amd/libamu/xutil.c
+++ /dev/null
@@ -1,1167 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/libamu/xutil.c
- *
- */
-
-/*
- * Miscellaneous Utilities: Logging, TTY, timers, signals, RPC, memory, etc.
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-#include <amu.h>
-
-/*
- * Logfp is the default logging device, and is initialized to stderr by
- * default in dplog/plog below, and in
- * amd/amfs_program.c:amfs_program_exec().
- */
-FILE *logfp = NULL;
-
-static char *am_progname = "unknown"; /* "amd" */
-static char am_hostname[MAXHOSTNAMELEN] = "unknown"; /* Hostname */
-pid_t am_mypid = -1; /* process ID */
-serv_state amd_state; /* amd's state */
-int foreground = 1; /* 1 == this is the top-level server */
-u_int debug_flags = D_CONTROL; /* set regardless if compiled with debugging */
-
-#ifdef HAVE_SYSLOG
-int syslogging;
-#endif /* HAVE_SYSLOG */
-static u_int xlog_level = XLOG_DEFAULT;
-static u_long amd_program_number = AMQ_PROGRAM;
-
-#ifdef DEBUG_MEM
-# if defined(HAVE_MALLINFO) && defined(HAVE_MALLOC_VERIFY)
-static int mem_bytes;
-static int orig_mem_bytes;
-# endif /* not defined(HAVE_MALLINFO) && defined(HAVE_MALLOC_VERIFY) */
-#endif /* DEBUG_MEM */
-
-/* forward definitions */
-/* for GCC format string auditing */
-static void real_plog(int lvl, const char *fmt, va_list vargs)
- __attribute__((__format__(__printf__, 2, 0)));
-
-
-#ifdef DEBUG
-/*
- * List of debug options.
- */
-struct opt_tab dbg_opt[] =
-{
- {"all", D_ALL}, /* All non-disruptive options */
- {"defaults", D_DEFAULT}, /* Default options */
- {"test", D_TEST}, /* Full debug - no daemon, no fork, no amq, local mtab */
- {"amq", D_AMQ}, /* Register for AMQ program */
- {"daemon", D_DAEMON}, /* Enter daemon mode */
- {"fork", D_FORK}, /* Fork server (hlfsd only) */
- {"full", D_FULL}, /* Program trace */
-#ifdef HAVE_CLOCK_GETTIME
- {"hrtime", D_HRTIME}, /* Print high resolution time stamps */
-#endif /* HAVE_CLOCK_GETTIME */
- {"info", D_INFO}, /* info service specific debugging (hesiod, nis, etc) */
- {"mem", D_MEM}, /* Trace memory allocations */
- {"mtab", D_MTAB}, /* Use local mtab file */
- {"readdir", D_READDIR}, /* Check on browsable_dirs progress */
- {"str", D_STR}, /* Debug string munging */
- {"trace", D_TRACE}, /* Protocol trace */
- {"xdrtrace", D_XDRTRACE}, /* Trace xdr routines */
- {NULL, 0}
-};
-#endif /* DEBUG */
-
-/*
- * List of log options
- */
-struct opt_tab xlog_opt[] =
-{
- {"all", XLOG_ALL}, /* All messages */
- {"defaults", XLOG_DEFAULT}, /* Default messages */
-#ifdef DEBUG
- {"debug", XLOG_DEBUG}, /* Debug messages */
-#endif /* DEBUG */ /* DEBUG */
- {"error", XLOG_ERROR}, /* Non-fatal system errors */
- {"fatal", XLOG_FATAL}, /* Fatal errors */
- {"info", XLOG_INFO}, /* Information */
- {"map", XLOG_MAP}, /* Map errors */
- {"stats", XLOG_STATS}, /* Additional statistical information */
- {"user", XLOG_USER}, /* Non-fatal user errors */
- {"warn", XLOG_WARNING}, /* Warnings */
- {"warning", XLOG_WARNING}, /* Warnings */
- {NULL, 0}
-};
-
-
-void
-am_set_progname(char *pn)
-{
- am_progname = pn;
-}
-
-
-const char *
-am_get_progname(void)
-{
- return am_progname;
-}
-
-
-void
-am_set_hostname(char *hn)
-{
- xstrlcpy(am_hostname, hn, sizeof(am_hostname));
-}
-
-
-const char *
-am_get_hostname(void)
-{
- return am_hostname;
-}
-
-
-pid_t
-am_set_mypid(void)
-{
- am_mypid = getpid();
- return am_mypid;
-}
-
-
-long
-get_server_pid()
-{
- return (long) (foreground ? am_mypid : getppid());
-}
-
-
-voidp
-xmalloc(int len)
-{
- voidp p;
- int retries = 600;
-
- /*
- * Avoid malloc's which return NULL for malloc(0)
- */
- if (len == 0)
- len = 1;
-
- do {
- p = (voidp) malloc((unsigned) len);
- if (p) {
- if (amuDebug(D_MEM))
- plog(XLOG_DEBUG, "Allocated size %d; block %p", len, p);
- return p;
- }
- if (retries > 0) {
- plog(XLOG_ERROR, "Retrying memory allocation");
- sleep(1);
- }
- } while (--retries);
-
- plog(XLOG_FATAL, "Out of memory");
- going_down(1);
-
- abort();
-
- return 0;
-}
-
-
-/* like xmalloc, but zeros out the bytes */
-voidp
-xzalloc(int len)
-{
- voidp p = xmalloc(len);
-
- if (p)
- memset(p, 0, len);
- return p;
-}
-
-
-voidp
-xrealloc(voidp ptr, int len)
-{
- if (amuDebug(D_MEM))
- plog(XLOG_DEBUG, "Reallocated size %d; block %p", len, ptr);
-
- if (len == 0)
- len = 1;
-
- if (ptr)
- ptr = (voidp) realloc(ptr, (unsigned) len);
- else
- ptr = (voidp) xmalloc((unsigned) len);
-
- if (!ptr) {
- plog(XLOG_FATAL, "Out of memory in realloc");
- going_down(1);
- abort();
- }
- return ptr;
-}
-
-
-#ifdef DEBUG_MEM
-void
-dxfree(char *file, int line, voidp ptr)
-{
- if (amuDebug(D_MEM))
- plog(XLOG_DEBUG, "Free in %s:%d: block %p", file, line, ptr);
- /* this is the only place that must NOT use XFREE()!!! */
- free(ptr);
- ptr = NULL; /* paranoid */
-}
-
-
-# if defined(HAVE_MALLINFO) && defined(HAVE_MALLOC_VERIFY)
-static void
-checkup_mem(void)
-{
- struct mallinfo mi = mallinfo();
- u_long uordbytes = mi.uordblks * 4096;
-
- if (mem_bytes != uordbytes) {
- if (orig_mem_bytes == 0)
- mem_bytes = orig_mem_bytes = uordbytes;
- else {
- fprintf(logfp, "%s[%ld]: ", am_get_progname(), (long) am_mypid);
- if (mem_bytes < uordbytes) {
- fprintf(logfp, "ALLOC: %ld bytes", uordbytes - mem_bytes);
- } else {
- fprintf(logfp, "FREE: %ld bytes", mem_bytes - uordbytes);
- }
- mem_bytes = uordbytes;
- fprintf(logfp, ", making %d missing\n", mem_bytes - orig_mem_bytes);
- }
- }
- malloc_verify();
-}
-# endif /* not defined(HAVE_MALLINFO) && defined(HAVE_MALLOC_VERIFY) */
-#endif /* DEBUG_MEM */
-
-
-/*
- * Take a log format string and expand occurrences of %m
- * with the current error code taken from errno. Make sure
- * 'e' never gets longer than maxlen characters.
- */
-static const char *
-expand_error(const char *f, char *e, size_t maxlen)
-{
- const char *p;
- char *q;
- int error = errno;
- size_t len = 0, l;
-
- *e = '\0';
- for (p = f, q = e; len < maxlen && (*q = *p); len++, q++, p++) {
- if (p[0] == '%' && p[1] == 'm') {
- if (len >= maxlen)
- break;
- xstrlcpy(q, strerror(error), maxlen - len);
- l = strlen(q);
- if (l != 0)
- l--;
- len += l;
- q += l;
- p++;
- }
- }
- e[maxlen - 1] = '\0'; /* null terminate, to be sure */
- return e;
-}
-
-
-/*
- * Output the time of day and hostname to the logfile
- */
-static void
-show_time_host_and_name(int lvl)
-{
- static time_t last_t = 0;
- static char *last_ctime = NULL;
- time_t t;
-#if defined(HAVE_CLOCK_GETTIME) && defined(DEBUG)
- struct timespec ts;
-#endif /* defined(HAVE_CLOCK_GETTIME) && defined(DEBUG) */
- char nsecs[11]; /* '.' + 9 digits + '\0' */
- char *sev;
-
- nsecs[0] = '\0';
-
-#if defined(HAVE_CLOCK_GETTIME) && defined(DEBUG)
- /*
- * Some systems (AIX 4.3) seem to implement clock_gettime() as stub
- * returning ENOSYS.
- */
- if (clock_gettime(CLOCK_REALTIME, &ts) == 0) {
- t = ts.tv_sec;
- if (amuDebug(D_HRTIME))
- xsnprintf(nsecs, sizeof(nsecs), ".%09ld", ts.tv_nsec);
- }
- else
-#endif /* defined(HAVE_CLOCK_GETTIME) && defined(DEBUG) */
- t = clocktime(NULL);
-
- if (t != last_t) {
- last_ctime = ctime(&t);
- last_t = t;
- }
-
- switch (lvl) {
- case XLOG_FATAL:
- sev = "fatal:";
- break;
- case XLOG_ERROR:
- sev = "error:";
- break;
- case XLOG_USER:
- sev = "user: ";
- break;
- case XLOG_WARNING:
- sev = "warn: ";
- break;
- case XLOG_INFO:
- sev = "info: ";
- break;
- case XLOG_DEBUG:
- sev = "debug:";
- break;
- case XLOG_MAP:
- sev = "map: ";
- break;
- case XLOG_STATS:
- sev = "stats:";
- break;
- default:
- sev = "hmm: ";
- break;
- }
- fprintf(logfp, "%15.15s%s %s %s[%ld]/%s ",
- last_ctime + 4, nsecs, am_get_hostname(),
- am_get_progname(),
- (long) am_mypid,
- sev);
-}
-
-
-#ifdef DEBUG
-/*
- * Switch on/off debug options
- */
-int
-debug_option(char *opt)
-{
- u_int dl = debug_flags;
- static int initialized_debug_flags = 0;
- int rc = cmdoption(opt, dbg_opt, &dl);
-
- if (rc) /* if got any error, don't update debug flags */
- return EINVAL;
-
- /*
- * If we already initialized the debugging flags once (via amd.conf), then
- * don't allow "immutable" flags to be changed again (via amq -D), because
- * they could mess Amd's state and only make sense to be set once when Amd
- * starts.
- */
- if (initialized_debug_flags &&
- debug_flags != 0 &&
- (dl & D_IMMUTABLE) != (debug_flags & D_IMMUTABLE)) {
- plog(XLOG_ERROR, "cannot change immutable debug flags");
- /* undo any attempted change to an immutable flag */
- dl = (dl & ~D_IMMUTABLE) | (debug_flags & D_IMMUTABLE);
- }
- initialized_debug_flags = 1;
- debug_flags = dl;
-
- return rc;
-}
-
-
-void
-dplog(const char *fmt, ...)
-{
-#ifdef HAVE_SIGACTION
- sigset_t old, chld;
-#else /* not HAVE_SIGACTION */
- int mask;
-#endif /* not HAVE_SIGACTION */
- va_list ap;
-
-#ifdef HAVE_SIGACTION
- sigemptyset(&chld);
- sigaddset(&chld, SIGCHLD);
-#else /* not HAVE_SIGACTION */
- mask = sigblock(sigmask(SIGCHLD));
-#endif /* not HAVE_SIGACTION */
-
- sigprocmask(SIG_BLOCK, &chld, &old);
- if (!logfp)
- logfp = stderr; /* initialize before possible first use */
-
- va_start(ap, fmt);
- real_plog(XLOG_DEBUG, fmt, ap);
- va_end(ap);
-
-#ifdef HAVE_SIGACTION
- sigprocmask(SIG_SETMASK, &old, NULL);
-#else /* not HAVE_SIGACTION */
- mask = sigblock(sigmask(SIGCHLD));
-#endif /* not HAVE_SIGACTION */
-}
-#endif /* DEBUG */
-
-
-void
-plog(int lvl, const char *fmt, ...)
-{
-#ifdef HAVE_SIGACTION
- sigset_t old, chld;
-#else /* not HAVE_SIGACTION */
- int mask;
-#endif /* not HAVE_SIGACTION */
- va_list ap;
-
-#ifdef HAVE_SIGACTION
- sigemptyset(&chld);
- sigaddset(&chld, SIGCHLD);
- sigprocmask(SIG_BLOCK, &chld, &old);
-#else /* not HAVE_SIGACTION */
- mask = sigblock(sigmask(SIGCHLD));
-#endif /* not HAVE_SIGACTION */
-
- if (!logfp)
- logfp = stderr; /* initialize before possible first use */
-
- va_start(ap, fmt);
- real_plog(lvl, fmt, ap);
- va_end(ap);
-
-#ifdef HAVE_SIGACTION
- sigprocmask(SIG_SETMASK, &old, NULL);
-#else /* not HAVE_SIGACTION */
- sigsetmask(mask);
-#endif /* not HAVE_SIGACTION */
-}
-
-
-static void
-real_plog(int lvl, const char *fmt, va_list vargs)
-{
- char msg[1024];
- char efmt[1024];
- char *ptr = msg;
- static char last_msg[1024];
- static int last_count = 0, last_lvl = 0;
-
- if (!(xlog_level & lvl))
- return;
-
-#ifdef DEBUG_MEM
-# if defined(HAVE_MALLINFO) && defined(HAVE_MALLOC_VERIFY)
- checkup_mem();
-# endif /* not defined(HAVE_MALLINFO) && defined(HAVE_MALLOC_VERIFY) */
-#endif /* DEBUG_MEM */
-
- /*
- * Note: xvsnprintf() may call plog() if a truncation happened, but the
- * latter has some code to break out of an infinite loop. See comment in
- * xsnprintf() below.
- */
- xvsnprintf(ptr, 1023, expand_error(fmt, efmt, 1024), vargs);
-
- ptr += strlen(ptr);
- if (*(ptr-1) == '\n')
- *--ptr = '\0';
-
-#ifdef HAVE_SYSLOG
- if (syslogging) {
- switch (lvl) { /* from mike <mcooper@usc.edu> */
- case XLOG_FATAL:
- lvl = LOG_CRIT;
- break;
- case XLOG_ERROR:
- lvl = LOG_ERR;
- break;
- case XLOG_USER:
- lvl = LOG_WARNING;
- break;
- case XLOG_WARNING:
- lvl = LOG_WARNING;
- break;
- case XLOG_INFO:
- lvl = LOG_INFO;
- break;
- case XLOG_DEBUG:
- lvl = LOG_DEBUG;
- break;
- case XLOG_MAP:
- lvl = LOG_DEBUG;
- break;
- case XLOG_STATS:
- lvl = LOG_INFO;
- break;
- default:
- lvl = LOG_ERR;
- break;
- }
- syslog(lvl, "%s", msg);
- return;
- }
-#endif /* HAVE_SYSLOG */
-
- *ptr++ = '\n';
- *ptr = '\0';
-
- /*
- * mimic syslog behavior: only write repeated strings if they differ
- */
- switch (last_count) {
- case 0: /* never printed at all */
- last_count = 1;
- if (strlcpy(last_msg, msg, sizeof(last_msg)) >= sizeof(last_msg)) /* don't use xstrlcpy here (recursive!) */
- fprintf(stderr, "real_plog: string \"%s\" truncated to \"%s\"\n", last_msg, msg);
- last_lvl = lvl;
- show_time_host_and_name(lvl); /* mimic syslog header */
- __IGNORE(fwrite(msg, ptr - msg, 1, logfp));
- fflush(logfp);
- break;
-
- case 1: /* item printed once, if same, don't repeat */
- if (STREQ(last_msg, msg)) {
- last_count++;
- } else { /* last msg printed once, new one differs */
- /* last_count remains at 1 */
- if (strlcpy(last_msg, msg, sizeof(last_msg)) >= sizeof(last_msg)) /* don't use xstrlcpy here (recursive!) */
- fprintf(stderr, "real_plog: string \"%s\" truncated to \"%s\"\n", last_msg, msg);
- last_lvl = lvl;
- show_time_host_and_name(lvl); /* mimic syslog header */
- __IGNORE(fwrite(msg, ptr - msg, 1, logfp));
- fflush(logfp);
- }
- break;
-
- case 100:
- /*
- * Don't allow repetitions longer than 100, so you can see when something
- * cycles like crazy.
- */
- show_time_host_and_name(last_lvl);
- xsnprintf(last_msg, sizeof(last_msg),
- "last message repeated %d times\n", last_count);
- __IGNORE(fwrite(last_msg, strlen(last_msg), 1, logfp));
- fflush(logfp);
- last_count = 0; /* start from scratch */
- break;
-
- default: /* item repeated multiple times */
- if (STREQ(last_msg, msg)) {
- last_count++;
- } else { /* last msg repeated+skipped, new one differs */
- show_time_host_and_name(last_lvl);
- xsnprintf(last_msg, sizeof(last_msg),
- "last message repeated %d times\n", last_count);
- __IGNORE(fwrite(last_msg, strlen(last_msg), 1, logfp));
- if (strlcpy(last_msg, msg, 1024) >= 1024) /* don't use xstrlcpy here (recursive!) */
- fprintf(stderr, "real_plog: string \"%s\" truncated to \"%s\"\n", last_msg, msg);
- last_count = 1;
- last_lvl = lvl;
- show_time_host_and_name(lvl); /* mimic syslog header */
- __IGNORE(fwrite(msg, ptr - msg, 1, logfp));
- fflush(logfp);
- }
- break;
- }
-
-}
-
-
-/*
- * Display current debug options
- */
-void
-show_opts(int ch, struct opt_tab *opts)
-{
- int i;
- int s = '{';
-
- fprintf(stderr, "\t[-%c {no}", ch);
- for (i = 0; opts[i].opt; i++) {
- fprintf(stderr, "%c%s", s, opts[i].opt);
- s = ',';
- }
- fputs("}]\n", stderr);
-}
-
-
-int
-cmdoption(char *s, struct opt_tab *optb, u_int *flags)
-{
- char *p = s;
- int errs = 0;
-
- while (p && *p) {
- int neg;
- char *opt;
- struct opt_tab *dp, *dpn = NULL;
-
- s = p;
- p = strchr(p, ',');
- if (p)
- *p = '\0';
-
- /* check for "no" prefix to options */
- if (s[0] == 'n' && s[1] == 'o') {
- opt = s + 2;
- neg = 1;
- } else {
- opt = s;
- neg = 0;
- }
-
- /*
- * Scan the array of debug options to find the
- * corresponding flag value. If it is found
- * then set (or clear) the flag (depending on
- * whether the option was prefixed with "no").
- */
- for (dp = optb; dp->opt; dp++) {
- if (STREQ(opt, dp->opt))
- break;
- if (opt != s && !dpn && STREQ(s, dp->opt))
- dpn = dp;
- }
-
- if (dp->opt || dpn) {
- if (!dp->opt) {
- dp = dpn;
- neg = !neg;
- }
- if (neg)
- *flags &= ~dp->flag;
- else
- *flags |= dp->flag;
- } else {
- /*
- * This will log to stderr when parsing the command line
- * since any -l option will not yet have taken effect.
- */
- plog(XLOG_ERROR, "option \"%s\" not recognized", s);
- errs++;
- }
-
- /*
- * Put the comma back
- */
- if (p)
- *p++ = ',';
- }
-
- return errs;
-}
-
-
-/*
- * Switch on/off logging options
- */
-int
-switch_option(char *opt)
-{
- u_int xl = xlog_level;
- int rc = cmdoption(opt, xlog_opt, &xl);
-
- if (rc) /* if got any error, don't update flags */
- return EINVAL;
-
- /*
- * Don't allow "mandatory" flags to be turned off, because
- * we must always be able to report on flag re/setting errors.
- */
- if ((xl & XLOG_MANDATORY) != XLOG_MANDATORY) {
- plog(XLOG_ERROR, "cannot turn off mandatory logging options");
- xl |= XLOG_MANDATORY;
- }
- if (xlog_level != xl)
- xlog_level = xl; /* set new flags */
- return rc;
-}
-
-
-#ifdef LOG_DAEMON
-/*
- * get syslog facility to use.
- * logfile can be "syslog", "syslog:daemon", "syslog:local7", etc.
- */
-static int
-get_syslog_facility(const char *logfile)
-{
- char *facstr;
-
- /* parse facility string */
- facstr = strchr(logfile, ':');
- if (!facstr) /* log file was "syslog" */
- return LOG_DAEMON;
- facstr++;
- if (!facstr || facstr[0] == '\0') { /* log file was "syslog:" */
- plog(XLOG_WARNING, "null syslog facility, using LOG_DAEMON");
- return LOG_DAEMON;
- }
-
-#ifdef LOG_KERN
- if (STREQ(facstr, "kern"))
- return LOG_KERN;
-#endif /* not LOG_KERN */
-#ifdef LOG_USER
- if (STREQ(facstr, "user"))
- return LOG_USER;
-#endif /* not LOG_USER */
-#ifdef LOG_MAIL
- if (STREQ(facstr, "mail"))
- return LOG_MAIL;
-#endif /* not LOG_MAIL */
-
- if (STREQ(facstr, "daemon"))
- return LOG_DAEMON;
-
-#ifdef LOG_AUTH
- if (STREQ(facstr, "auth"))
- return LOG_AUTH;
-#endif /* not LOG_AUTH */
-#ifdef LOG_SYSLOG
- if (STREQ(facstr, "syslog"))
- return LOG_SYSLOG;
-#endif /* not LOG_SYSLOG */
-#ifdef LOG_LPR
- if (STREQ(facstr, "lpr"))
- return LOG_LPR;
-#endif /* not LOG_LPR */
-#ifdef LOG_NEWS
- if (STREQ(facstr, "news"))
- return LOG_NEWS;
-#endif /* not LOG_NEWS */
-#ifdef LOG_UUCP
- if (STREQ(facstr, "uucp"))
- return LOG_UUCP;
-#endif /* not LOG_UUCP */
-#ifdef LOG_CRON
- if (STREQ(facstr, "cron"))
- return LOG_CRON;
-#endif /* not LOG_CRON */
-#ifdef LOG_LOCAL0
- if (STREQ(facstr, "local0"))
- return LOG_LOCAL0;
-#endif /* not LOG_LOCAL0 */
-#ifdef LOG_LOCAL1
- if (STREQ(facstr, "local1"))
- return LOG_LOCAL1;
-#endif /* not LOG_LOCAL1 */
-#ifdef LOG_LOCAL2
- if (STREQ(facstr, "local2"))
- return LOG_LOCAL2;
-#endif /* not LOG_LOCAL2 */
-#ifdef LOG_LOCAL3
- if (STREQ(facstr, "local3"))
- return LOG_LOCAL3;
-#endif /* not LOG_LOCAL3 */
-#ifdef LOG_LOCAL4
- if (STREQ(facstr, "local4"))
- return LOG_LOCAL4;
-#endif /* not LOG_LOCAL4 */
-#ifdef LOG_LOCAL5
- if (STREQ(facstr, "local5"))
- return LOG_LOCAL5;
-#endif /* not LOG_LOCAL5 */
-#ifdef LOG_LOCAL6
- if (STREQ(facstr, "local6"))
- return LOG_LOCAL6;
-#endif /* not LOG_LOCAL6 */
-#ifdef LOG_LOCAL7
- if (STREQ(facstr, "local7"))
- return LOG_LOCAL7;
-#endif /* not LOG_LOCAL7 */
-
- /* didn't match anything else */
- plog(XLOG_WARNING, "unknown syslog facility \"%s\", using LOG_DAEMON", facstr);
- return LOG_DAEMON;
-}
-#endif /* not LOG_DAEMON */
-
-
-/*
- * Change current logfile
- */
-int
-switch_to_logfile(char *logfile, int old_umask, int truncate_log)
-{
- FILE *new_logfp = stderr;
-
- if (logfile) {
-#ifdef HAVE_SYSLOG
- syslogging = 0;
-#endif /* HAVE_SYSLOG */
-
- if (STREQ(logfile, "/dev/stderr"))
- new_logfp = stderr;
- else if (NSTREQ(logfile, "syslog", strlen("syslog"))) {
-
-#ifdef HAVE_SYSLOG
- syslogging = 1;
- new_logfp = stderr;
- openlog(am_get_progname(),
- LOG_PID
-# ifdef LOG_NOWAIT
- | LOG_NOWAIT
-# endif /* LOG_NOWAIT */
-# ifdef LOG_DAEMON
- , get_syslog_facility(logfile)
-# endif /* LOG_DAEMON */
- );
-#else /* not HAVE_SYSLOG */
- plog(XLOG_WARNING, "syslog option not supported, logging unchanged");
-#endif /* not HAVE_SYSLOG */
-
- } else { /* regular log file */
- (void) umask(old_umask);
- if (truncate_log)
- __IGNORE(truncate(logfile, 0));
- new_logfp = fopen(logfile, "a");
- umask(0);
- }
- }
-
- /*
- * If we couldn't open a new file, then continue using the old.
- */
- if (!new_logfp && logfile) {
- plog(XLOG_USER, "%s: Can't open logfile: %m", logfile);
- return 1;
- }
-
- /*
- * Close the previous file
- */
- if (logfp && logfp != stderr)
- (void) fclose(logfp);
- logfp = new_logfp;
-
- if (logfile)
- plog(XLOG_INFO, "switched to logfile \"%s\"", logfile);
- else
- plog(XLOG_INFO, "no logfile defined; using stderr");
-
- return 0;
-}
-
-
-void
-unregister_amq(void)
-{
-
- if (amuDebug(D_AMQ)) {
- /* find which instance of amd to unregister */
- u_long amd_prognum = get_amd_program_number();
-
- if (pmap_unset(amd_prognum, AMQ_VERSION) != 1)
- dlog("failed to de-register Amd program %lu, version %lu",
- amd_prognum, AMQ_VERSION);
- }
-}
-
-
-void
-going_down(int rc)
-{
- if (foreground) {
- if (amd_state != Start) {
- if (amd_state != Done)
- return;
- unregister_amq();
- }
- }
-
-#ifdef MOUNT_TABLE_ON_FILE
- /*
- * Call unlock_mntlist to free any important resources such as an on-disk
- * lock file (/etc/mtab~).
- */
- unlock_mntlist();
-#endif /* MOUNT_TABLE_ON_FILE */
-
- if (foreground) {
- plog(XLOG_INFO, "Finishing with status %d", rc);
- } else {
- dlog("background process exiting with status %d", rc);
- }
- /* bye bye... */
- exit(rc);
-}
-
-
-/* return the rpc program number under which amd was used */
-u_long
-get_amd_program_number(void)
-{
- return amd_program_number;
-}
-
-
-/* set the rpc program number used for amd */
-void
-set_amd_program_number(u_long program)
-{
- amd_program_number = program;
-}
-
-
-/*
- * Release the controlling tty of the process pid.
- *
- * Algorithm: try these in order, if available, until one of them
- * succeeds: setsid(), ioctl(fd, TIOCNOTTY, 0).
- * Do not use setpgid(): on some OSs it may release the controlling tty,
- * even if the man page does not mention it, but on other OSs it does not.
- * Also avoid setpgrp(): it works on some systems, and on others it is
- * identical to setpgid().
- */
-void
-amu_release_controlling_tty(void)
-{
- int fd;
-
- /*
- * In daemon mode, leaving open file descriptors to terminals or pipes
- * can be a really bad idea.
- * Case in point: the redhat startup script calls us through their 'initlog'
- * program, which exits as soon as the original amd process exits. If,
- * at some point, a misbehaved library function decides to print something
- * to the screen, we get a SIGPIPE and die.
- * And guess what: NIS glibc functions will attempt to print to stderr
- * "YPBINDPROC_DOMAIN: Domain not bound" if ypbind is running but can't find
- * a ypserver.
- *
- * So we close all of our "terminal" filedescriptors, i.e. 0, 1 and 2, then
- * reopen them as /dev/null.
- *
- * XXX We should also probably set the SIGPIPE handler to SIG_IGN.
- */
- fd = open("/dev/null", O_RDWR);
- if (fd < 0) {
- plog(XLOG_WARNING, "Could not open /dev/null for rw: %m");
- } else {
- fflush(stdin); close(0); dup2(fd, 0);
- fflush(stdout); close(1); dup2(fd, 1);
- fflush(stderr); close(2); dup2(fd, 2);
- close(fd);
- }
-
-#ifdef HAVE_SETSID
- /* XXX: one day maybe use vhangup(2) */
- if (setsid() < 0) {
- plog(XLOG_WARNING, "Could not release controlling tty using setsid(): %m");
- } else {
- plog(XLOG_INFO, "released controlling tty using setsid()");
- return;
- }
-#endif /* HAVE_SETSID */
-
-#ifdef TIOCNOTTY
- fd = open("/dev/tty", O_RDWR);
- if (fd < 0) {
- /* not an error if already no controlling tty */
- if (errno != ENXIO)
- plog(XLOG_WARNING, "Could not open controlling tty: %m");
- } else {
- if (ioctl(fd, TIOCNOTTY, 0) < 0 && errno != ENOTTY)
- plog(XLOG_WARNING, "Could not disassociate tty (TIOCNOTTY): %m");
- else
- plog(XLOG_INFO, "released controlling tty using ioctl(TIOCNOTTY)");
- close(fd);
- }
- return;
-#else
- plog(XLOG_ERROR, "unable to release controlling tty");
-#endif /* not TIOCNOTTY */
-}
-
-
-/* setup a single signal handler */
-void
-setup_sighandler(int signum, void (*handler)(int))
-{
-#ifdef HAVE_SIGACTION
- struct sigaction sa;
- memset(&sa, 0, sizeof(sa));
- sa.sa_flags = 0; /* unnecessary */
- sa.sa_handler = handler;
- sigemptyset(&(sa.sa_mask)); /* probably unnecessary too */
- sigaddset(&(sa.sa_mask), signum);
- sigaction(signum, &sa, NULL);
-#else /* not HAVE_SIGACTION */
- (void) signal(signum, handler);
-#endif /* not HAVE_SIGACTION */
-}
-
-
-/*
- * Return current time in seconds. If passed a non-null argyument, then
- * fill it in with the current time in seconds and microseconds (useful
- * for mtime updates).
- */
-time_t
-clocktime(nfstime *nt)
-{
- static struct timeval now; /* keep last time, as default */
-
- if (gettimeofday(&now, NULL) < 0) {
- plog(XLOG_ERROR, "clocktime: gettimeofday: %m");
- /* hack: force time to have incremented by at least 1 second */
- now.tv_sec++;
- }
- /* copy seconds and microseconds. may demote a long to an int */
- if (nt) {
- nt->nt_seconds = (u_int) now.tv_sec;
- nt->nt_useconds = (u_int) now.tv_usec;
- }
- return (time_t) now.tv_sec;
-}
-
-
-/*
- * Make all the directories in the path.
- */
-int
-mkdirs(char *path, int mode)
-{
- /*
- * take a copy in case path is in readonly store
- */
- char *p2 = xstrdup(path);
- char *sp = p2;
- struct stat stb;
- int error_so_far = 0;
-
- /*
- * Skip through the string make the directories.
- * Mostly ignore errors - the result is tested at the end.
- *
- * This assumes we are root so that we can do mkdir in a
- * mode 555 directory...
- */
- while ((sp = strchr(sp + 1, '/'))) {
- *sp = '\0';
- if (mkdir(p2, mode) < 0) {
- error_so_far = errno;
- } else {
- dlog("mkdir(%s)", p2);
- }
- *sp = '/';
- }
-
- if (mkdir(p2, mode) < 0) {
- error_so_far = errno;
- } else {
- dlog("mkdir(%s)", p2);
- }
-
- XFREE(p2);
-
- return stat(path, &stb) == 0 &&
- (stb.st_mode & S_IFMT) == S_IFDIR ? 0 : error_so_far;
-}
-
-
-/*
- * Remove as many directories in the path as possible.
- * Give up if the directory doesn't appear to have
- * been created by Amd (not mode dr-x) or an rmdir
- * fails for any reason.
- */
-void
-rmdirs(char *dir)
-{
- char *xdp = xstrdup(dir);
- char *dp;
-
- do {
- struct stat stb;
- /*
- * Try to find out whether this was
- * created by amd. Do this by checking
- * for owner write permission.
- */
- if (stat(xdp, &stb) == 0 && (stb.st_mode & 0200) == 0) {
- if (rmdir(xdp) < 0) {
- if (errno != ENOTEMPTY &&
- errno != EBUSY &&
- errno != EEXIST &&
- errno != EROFS &&
- errno != EINVAL)
- plog(XLOG_ERROR, "rmdir(%s): %m", xdp);
- break;
- } else {
- dlog("rmdir(%s)", xdp);
- }
- } else {
- break;
- }
-
- dp = strrchr(xdp, '/');
- if (dp)
- *dp = '\0';
- } while (dp && dp > xdp);
-
- XFREE(xdp);
-}
-
-/*
- * Dup a string
- */
-char *
-xstrdup(const char *s)
-{
- size_t len = strlen(s);
- char *sp = xmalloc(len + 1);
- memcpy(sp, s, len + 1);
- return sp;
-}
diff --git a/contrib/amd/mk-amd-map/mk-amd-map.8 b/contrib/amd/mk-amd-map/mk-amd-map.8
deleted file mode 100644
index 677f41a268fc..000000000000
--- a/contrib/amd/mk-amd-map/mk-amd-map.8
+++ /dev/null
@@ -1,90 +0,0 @@
-.\"
-.\" Copyright (c) 1997-2014 Erez Zadok
-.\" Copyright (c) 1993 Jan-Simon Pendry
-.\" Copyright (c) 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.\" File: am-utils/mk-amd-map/mk-amd-map.8
-.\"
-.Dd January 2, 2006
-.Dt MK-AMD-MAP 8
-.Os
-.Sh NAME
-.Nm mk-amd-map
-.Nd create database maps for
-.Xr amd 8
-.Sh SYNOPSIS
-.Nm
-.Op Fl p
-.Ar mapname
-.Sh DESCRIPTION
-The
-.Nm
-utility
-creates the database maps used by the keyed map lookups in
-.Xr amd 8 .
-It reads input from the named file
-and outputs them to a correspondingly named
-hashed database.
-.Pp
-The
-.Fl p
-option prints the map on standard output instead of generating
-a database.
-This is usually used to merge continuation lines
-into one physical line.
-.Sh SEE ALSO
-.Xr amd.conf 5 ,
-.Xr amd 8
-.Pp
-.Dq am-utils
-.Xr info 1
-entry.
-.Rs
-.%A Erez Zadok
-.%B "Linux NFS and Automounter Administration"
-.%O ISBN 0-7821-2739-8
-.%I Sybex
-.%D 2001
-.Re
-.Pp
-.Pa http://www.am-utils.org/
-.Rs
-.%T Amd \- The 4.4 BSD Automounter
-.Re
-.Sh AUTHORS
-.An Jan-Simon Pendry Aq jsp@doc.ic.ac.uk ,
-Department of Computing, Imperial College, London, UK.
-.Pp
-.An Erez Zadok Aq ezk@cs.sunysb.edu ,
-Computer Science Department, Stony Brook University, New York, USA
-.Pp
-Other authors and contributors to am-utils are listed in the
-.Pa AUTHORS
-file distributed with am-utils.
diff --git a/contrib/amd/mk-amd-map/mk-amd-map.c b/contrib/amd/mk-amd-map/mk-amd-map.c
deleted file mode 100644
index e6ca9d93983d..000000000000
--- a/contrib/amd/mk-amd-map/mk-amd-map.c
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/mk-amd-map/mk-amd-map.c
- */
-
-/*
- * Convert a file map into an ndbm map
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-
-/* (libdb version 2) uses .db extensions but an old dbm API */
-/* check for libgdbm to distinguish it from linux systems */
-#if defined(DBM_SUFFIX) && !defined(HAVE_LIBGDBM)
-# define HAVE_DB_SUFFIX
-#endif /* not defined(DBM_SUFFIX) && !defined(HAVE_LIBGDBM) */
-
-#ifdef HAVE_MAP_NDBM
-
-static int
-store_data(voidp db, char *k, char *v)
-{
- datum key, val;
-
- key.dptr = k;
- val.dptr = v;
- key.dsize = strlen(k) + 1;
- val.dsize = strlen(v) + 1;
- return dbm_store((DBM *) db, key, val, DBM_INSERT);
-}
-
-
-/*
- * Read one line from file.
- */
-static int
-read_line(char *buf, int size, FILE *fp)
-{
- int done = 0;
-
- do {
- while (fgets(buf, size, fp)) {
- int len = strlen(buf);
-
- done += len;
- if (len > 1 && buf[len - 2] == '\\' && buf[len - 1] == '\n') {
- int ch;
- buf += len - 2;
- size -= len - 2;
- *buf = '\n';
- buf[1] = '\0';
-
- /*
- * Skip leading white space on next line
- */
- while ((ch = getc(fp)) != EOF && isascii((unsigned char)ch) && isspace((unsigned char)ch)) ;
- (void) ungetc(ch, fp);
- } else {
- return done;
- }
- }
- } while (size > 0 && !feof(fp));
-
- return done;
-}
-
-
-/*
- * Read through a map.
- */
-static int
-read_file(FILE *fp, char *map, voidp db)
-{
- char key_val[2048];
- int chuck = 0;
- int line_no = 0;
- int errs = 0;
-
- while (read_line(key_val, 2048, fp)) {
- char *kp;
- char *cp;
- char *hash;
- int len = strlen(key_val);
-
- line_no++;
-
- /*
- * Make sure we got the whole line
- */
- if (key_val[len - 1] != '\n') {
- fprintf(stderr, "line %d in \"%s\" is too long", line_no, map);
- chuck = 1;
- } else {
- key_val[len - 1] = '\0';
- }
-
- /*
- * Strip comments
- */
- hash = strchr(key_val, '#');
- if (hash)
- *hash = '\0';
-
- /*
- * Find start of key
- */
- for (kp = key_val; *kp && isascii((unsigned char)*kp) && isspace((unsigned char)*kp); kp++) ;
-
- /*
- * Ignore blank lines
- */
- if (!*kp)
- goto again;
-
- /*
- * Find end of key
- */
- for (cp = kp; *cp && (!isascii((unsigned char)*cp) || !isspace((unsigned char)*cp)); cp++) ;
-
- /*
- * Check whether key matches, or whether
- * the entry is a wildcard entry.
- */
- if (*cp)
- *cp++ = '\0';
- while (*cp && isascii((unsigned char)*cp) && isspace((unsigned char)*cp))
- cp++;
- if (*kp == '+') {
- fprintf(stderr, "Can't interpolate %s\n", kp);
- errs++;
- } else if (*cp) {
- if (db) {
- if (store_data(db, kp, cp) < 0) {
- fprintf(stderr, "Could store %s -> %s\n", kp, cp);
- errs++;
- }
- } else {
- printf("%s\t%s\n", kp, cp);
- }
- } else {
- fprintf(stderr, "%s: line %d has no value field", map, line_no);
- errs++;
- }
-
- again:
- /*
- * If the last read didn't get a whole line then
- * throw away the remainder before continuing...
- */
- if (chuck) {
- while (fgets(key_val, sizeof(key_val), fp) &&
- !strchr(key_val, '\n')) ;
- chuck = 0;
- }
- }
- return errs;
-}
-
-
-static int
-remove_file(char *f)
-{
- if (unlink(f) < 0 && errno != ENOENT)
- return -1;
-
- return 0;
-}
-
-
-int
-main(int argc, char *argv[])
-{
- FILE *mapf; /* the input file to read from */
- int error;
- char *mapsrc;
- DBM *db = NULL;
- static char maptmp[] = "dbmXXXXXX";
-#ifdef HAVE_DB_SUFFIX
- char maptdb[16];
- char *map_name_db = (char *) NULL;
-#else /* not HAVE_DB_SUFFIX */
- char maptpag[16], maptdir[16];
- char *map_name_pag = (char *) NULL, *map_name_dir = (char *) NULL;
-#endif /* not HAVE_DB_SUFFIX */
- size_t l = 0;
- char *sl;
- int printit = 0;
- int usage = 0;
- int ch;
- extern int optind;
-
- /* test options */
- while ((ch = getopt(argc, argv, "p")) != -1)
- switch (ch) {
- case 'p':
- printit = 1;
- break;
- default:
- usage++;
- break;
- }
-
- if (usage || optind != (argc - 1)) {
- fputs("Usage: mk-amd-map [-p] file-map\n", stderr);
- exit(1);
- }
- mapsrc = argv[optind];
-
- /* test if can get to the map directory */
- sl = strrchr(mapsrc, '/');
- if (sl) {
- *sl = '\0';
- if (chdir(mapsrc) < 0) {
- fputs("Can't chdir to ", stderr);
- perror(mapsrc);
- exit(1);
- }
- mapsrc = sl + 1;
- }
-
- /* open source file */
- mapf = fopen(mapsrc, "r");
- if (!mapf) {
- fprintf(stderr, "cannot open source file ");
- perror(mapsrc);
- exit(1);
- }
-
-#ifndef DEBUG
- signal(SIGINT, SIG_IGN);
-#endif /* DEBUG */
-
- if (!printit) {
- /* enough space for ".db" or ".pag" or ".dir" appended */
- l = strlen(mapsrc) + 5;
-#ifdef HAVE_DB_SUFFIX
- map_name_db = (char *) malloc(l);
- error = (map_name_db == NULL);
-#else /* not HAVE_DB_SUFFIX */
- map_name_pag = (char *) malloc(l);
- map_name_dir = (char *) malloc(l);
- error = (map_name_pag == NULL || map_name_dir == NULL);
-#endif /* not HAVE_DB_SUFFIX */
- if (error) {
- perror("mk-amd-map: malloc");
- exit(1);
- }
-
-#ifdef HAVE_MKSTEMP
- {
- /*
- * XXX: hack to avoid compiler complaints about mktemp not being
- * secure, since we have to do a dbm_open on this anyway. So use
- * mkstemp if you can, and then close the fd, but we get a safe
- * and unique file name.
- */
- int dummyfd;
- dummyfd = mkstemp(maptmp);
- if (dummyfd >= 0)
- close(dummyfd);
- }
-#else /* not HAVE_MKSTEMP */
- mktemp(maptmp);
-#endif /* not HAVE_MKSTEMP */
-
- /* remove existing temps (if any) */
-#ifdef HAVE_DB_SUFFIX
- xsnprintf(maptdb, sizeof(maptdb), "%s.db", maptmp);
- if (remove_file(maptdb) < 0) {
- fprintf(stderr, "Can't remove existing temporary file; ");
- perror(maptdb);
- exit(1);
- }
-#else /* not HAVE_DB_SUFFIX */
- xsnprintf(maptpag, sizeof(maptpag), "%s.pag", maptmp);
- xsnprintf(maptdir, sizeof(maptdir), "%s.dir", maptmp);
- if (remove_file(maptpag) < 0 || remove_file(maptdir) < 0) {
- fprintf(stderr, "Can't remove existing temporary files; %s and ", maptpag);
- perror(maptdir);
- exit(1);
- }
-#endif /* not HAVE_DB_SUFFIX */
-
- db = dbm_open(maptmp, O_RDWR|O_CREAT|O_EXCL, 0444);
- if (!db) {
- fprintf(stderr, "cannot initialize temporary database: %s", maptmp);
- exit(1);
- }
- }
-
- /* print db to stdout or to temp database */
- error = read_file(mapf, mapsrc, db);
- fclose(mapf);
- if (error) {
- if (printit)
- fprintf(stderr, "Error reading source file %s\n", mapsrc);
- else
- fprintf(stderr, "Error creating database map for %s\n", mapsrc);
- exit(1);
- }
-
- if (printit)
- exit(0); /* nothing more to do */
-
- /* if gets here, we wrote to a database */
-
- dbm_close(db);
- /* all went well */
-
-#ifdef HAVE_DB_SUFFIX
- /* sizeof(map_name_db) is malloc'ed above */
- xsnprintf(map_name_db, l, "%s.db", mapsrc);
- if (rename(maptdb, map_name_db) < 0) {
- fprintf(stderr, "Couldn't rename %s to ", maptdb);
- perror(map_name_db);
- /* Throw away the temporary map */
- unlink(maptdb);
- exit(1);
- }
-#else /* not HAVE_DB_SUFFIX */
- /* sizeof(map_name_{pag,dir}) are malloc'ed above */
- xsnprintf(map_name_pag, l, "%s.pag", mapsrc);
- xsnprintf(map_name_dir, l, "%s.dir", mapsrc);
- if (rename(maptpag, map_name_pag) < 0) {
- fprintf(stderr, "Couldn't rename %s to ", maptpag);
- perror(map_name_pag);
- /* Throw away the temporary map */
- unlink(maptpag);
- unlink(maptdir);
- exit(1);
- }
- if (rename(maptdir, map_name_dir) < 0) {
- fprintf(stderr, "Couldn't rename %s to ", maptdir);
- perror(map_name_dir);
- /* remove the (presumably bad) .pag file */
- unlink(map_name_pag);
- /* throw away remaining part of original map */
- unlink(map_name_dir);
- /* throw away the temporary map */
- unlink(maptdir);
- fprintf(stderr, "WARNING: existing map \"%s.{dir,pag}\" destroyed\n",
- mapsrc);
- exit(1);
- }
-#endif /* not HAVE_DB_SUFFIX */
-
- exit(0);
-}
-
-#else /* not HAVE_MAP_NDBM */
-
-int
-main()
-{
- fputs("mk-amd-map: This system does not support hashed database files\n", stderr);
- exit(1);
-}
-
-#endif /* not HAVE_MAP_NDBM */
diff --git a/contrib/amd/scripts/Makefile.am b/contrib/amd/scripts/Makefile.am
deleted file mode 100644
index c4380584ec0e..000000000000
--- a/contrib/amd/scripts/Makefile.am
+++ /dev/null
@@ -1,49 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-# Package: am-utils
-# Level: Makefile for scripts/ directory
-# Author: Erez Zadok
-
-sbin_SCRIPTS = \
- am-eject \
- amd2ldif \
- amd2sun \
- ctl-amd \
- ctl-hlfsd \
- fixrmtab \
- fix-amd-map \
- lostaltmail \
- wait4amd \
- wait4amd2die
-
-bin_SCRIPTS = \
- expn
-
-sysconf_DATA = \
- amd.conf-sample \
- lostaltmail.conf-sample
-
-# man pages
-man_MANS = \
- amd.conf.5 \
- expn.1
-
-EXTRA_DIST = \
- am-eject.in \
- amd2ldif.in \
- amd2sun.in \
- ctl-amd.in \
- ctl-hlfsd.in \
- fixrmtab.in \
- fix-amd-map.in \
- lostaltmail.in \
- wait4amd.in \
- wait4amd2die.in \
- \
- expn.in \
- \
- amd.conf-sample \
- lostaltmail.conf-sample \
- $(man_MANS)
-
-CLEANFILES = $(sbin_SCRIPTS) $(bin_SCRIPTS)
diff --git a/contrib/amd/scripts/Makefile.in b/contrib/amd/scripts/Makefile.in
deleted file mode 100644
index a20d84627136..000000000000
--- a/contrib/amd/scripts/Makefile.in
+++ /dev/null
@@ -1,381 +0,0 @@
-# Makefile.in generated automatically by automake 1.3.2 from Makefile.am
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998 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.
-
-# Package: am-utils
-# Level: Makefile for scripts/ directory
-# Author: Erez Zadok
-
-
-SHELL = /bin/sh
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-
-bindir = @bindir@
-sbindir = @sbindir@
-libexecdir = @libexecdir@
-datadir = @datadir@
-sysconfdir = @sysconfdir@
-sharedstatedir = @sharedstatedir@
-localstatedir = @localstatedir@
-libdir = @libdir@
-infodir = @infodir@
-mandir = @mandir@
-includedir = @includedir@
-oldincludedir = /usr/include
-
-DISTDIR =
-
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-
-top_builddir = ..
-
-ACLOCAL = @ACLOCAL@
-AUTOCONF = @AUTOCONF@
-AUTOMAKE = @AUTOMAKE@
-AUTOHEADER = @AUTOHEADER@
-
-INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-transform = @program_transform_name@
-
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-host_alias = @host_alias@
-host_triplet = @host@
-AR = @AR@
-CC = @CC@
-CPP = @CPP@
-LEX = @LEX@
-LIBTOOL = @LIBTOOL@
-LIBTOOL_LDFLAGS = @LIBTOOL_LDFLAGS@
-LTALLOCA = @LTALLOCA@
-LTLIBOBJS = @LTLIBOBJS@
-PACKAGE = @PACKAGE@
-PERL = @PERL@
-RANLIB = @RANLIB@
-VERSION = @VERSION@
-
-sbin_SCRIPTS = \
- am-eject \
- amd2ldif \
- amd2sun \
- ctl-amd \
- ctl-hlfsd \
- fixrmtab \
- fix-amd-map \
- lostaltmail \
- wait4amd \
- wait4amd2die
-
-bin_SCRIPTS = \
- expn
-
-sysconf_DATA = \
- amd.conf-sample \
- lostaltmail.conf-sample
-
-# man pages
-man_MANS = \
- amd.conf.5 \
- expn.1
-
-EXTRA_DIST = \
- am-eject.in \
- amd2ldif.in \
- amd2sun.in \
- ctl-amd.in \
- ctl-hlfsd.in \
- fixrmtab.in \
- fix-amd-map.in \
- lostaltmail.in \
- wait4amd.in \
- wait4amd2die.in \
- \
- expn.in \
- \
- amd.conf-sample \
- lostaltmail.conf-sample \
- $(man_MANS)
-
-CLEANFILES = $(sbin_SCRIPTS) $(bin_SCRIPTS)
-mkinstalldirs = $(SHELL) $(top_srcdir)/aux/mkinstalldirs
-CONFIG_HEADER = ../config.h
-CONFIG_CLEAN_FILES = am-eject amd2ldif amd2sun ctl-amd ctl-hlfsd expn \
-fixrmtab fix-amd-map lostaltmail wait4amd wait4amd2die
-SCRIPTS = $(bin_SCRIPTS) $(sbin_SCRIPTS)
-
-man1dir = $(mandir)/man1
-man5dir = $(mandir)/man5
-MANS = $(man_MANS)
-
-NROFF = nroff
-DATA = $(sysconf_DATA)
-
-DIST_COMMON = Makefile.am Makefile.in am-eject.in amd2ldif.in \
-amd2sun.in ctl-amd.in ctl-hlfsd.in expn.in fix-amd-map.in fixrmtab.in \
-lostaltmail.in wait4amd.in wait4amd2die.in
-
-
-DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-
-TAR = gtar
-GZIP = --best
-all: Makefile $(SCRIPTS) $(MANS) $(DATA)
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/./aux/configure.in $(ACLOCAL_M4)
- cd $(top_srcdir) && $(AUTOMAKE) --localdir=./aux --gnu --include-deps scripts/Makefile
-
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-am-eject: $(top_builddir)/config.status am-eject.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-amd2ldif: $(top_builddir)/config.status amd2ldif.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-amd2sun: $(top_builddir)/config.status amd2sun.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-ctl-amd: $(top_builddir)/config.status ctl-amd.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-ctl-hlfsd: $(top_builddir)/config.status ctl-hlfsd.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-expn: $(top_builddir)/config.status expn.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-fixrmtab: $(top_builddir)/config.status fixrmtab.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-fix-amd-map: $(top_builddir)/config.status fix-amd-map.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-lostaltmail: $(top_builddir)/config.status lostaltmail.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-wait4amd: $(top_builddir)/config.status wait4amd.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-wait4amd2die: $(top_builddir)/config.status wait4amd2die.in
- cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
-
-install-binSCRIPTS: $(bin_SCRIPTS)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(bindir)
- @list='$(bin_SCRIPTS)'; for p in $$list; do \
- if test -f $$p; then \
- echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
- $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
- else if test -f $(srcdir)/$$p; then \
- echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \
- $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
- else :; fi; fi; \
- done
-
-uninstall-binSCRIPTS:
- @$(NORMAL_UNINSTALL)
- list='$(bin_SCRIPTS)'; for p in $$list; do \
- rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \
- done
-
-install-sbinSCRIPTS: $(sbin_SCRIPTS)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(sbindir)
- @list='$(sbin_SCRIPTS)'; for p in $$list; do \
- if test -f $$p; then \
- echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed '$(transform)'`"; \
- $(INSTALL_SCRIPT) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed '$(transform)'`; \
- else if test -f $(srcdir)/$$p; then \
- echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(sbindir)/`echo $$p|sed '$(transform)'`"; \
- $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(sbindir)/`echo $$p|sed '$(transform)'`; \
- else :; fi; fi; \
- done
-
-uninstall-sbinSCRIPTS:
- @$(NORMAL_UNINSTALL)
- list='$(sbin_SCRIPTS)'; for p in $$list; do \
- rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed '$(transform)'`; \
- done
-
-install-man1:
- $(mkinstalldirs) $(DESTDIR)$(man1dir)
- @list='$(man1_MANS)'; \
- l2='$(man_MANS)'; for i in $$l2; do \
- case "$$i" in \
- *.1*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
- else file=$$i; fi; \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \
- $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \
- done
-
-uninstall-man1:
- @list='$(man1_MANS)'; \
- l2='$(man_MANS)'; for i in $$l2; do \
- case "$$i" in \
- *.1*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \
- rm -f $(DESTDIR)$(man1dir)/$$inst; \
- done
-
-install-man5:
- $(mkinstalldirs) $(DESTDIR)$(man5dir)
- @list='$(man5_MANS)'; \
- l2='$(man_MANS)'; for i in $$l2; do \
- case "$$i" in \
- *.5*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
- else file=$$i; fi; \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man5dir)/$$inst"; \
- $(INSTALL_DATA) $$file $(DESTDIR)$(man5dir)/$$inst; \
- done
-
-uninstall-man5:
- @list='$(man5_MANS)'; \
- l2='$(man_MANS)'; for i in $$l2; do \
- case "$$i" in \
- *.5*) list="$$list $$i" ;; \
- esac; \
- done; \
- for i in $$list; do \
- ext=`echo $$i | sed -e 's/^.*\\.//'`; \
- inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
- inst=`echo $$inst | sed '$(transform)'`.$$ext; \
- echo " rm -f $(DESTDIR)$(man5dir)/$$inst"; \
- rm -f $(DESTDIR)$(man5dir)/$$inst; \
- done
-install-man: $(MANS)
- @$(NORMAL_INSTALL)
- $(MAKE) install-man1 install-man5
-uninstall-man:
- @$(NORMAL_UNINSTALL)
- $(MAKE) uninstall-man1 uninstall-man5
-
-install-sysconfDATA: $(sysconf_DATA)
- @$(NORMAL_INSTALL)
- $(mkinstalldirs) $(DESTDIR)$(sysconfdir)
- @list='$(sysconf_DATA)'; for p in $$list; do \
- if test -f $(srcdir)/$$p; then \
- echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p"; \
- $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(sysconfdir)/$$p; \
- else if test -f $$p; then \
- echo " $(INSTALL_DATA) $$p $(DESTDIR)$(sysconfdir)/$$p"; \
- $(INSTALL_DATA) $$p $(DESTDIR)$(sysconfdir)/$$p; \
- fi; fi; \
- done
-
-uninstall-sysconfDATA:
- @$(NORMAL_UNINSTALL)
- list='$(sysconf_DATA)'; for p in $$list; do \
- rm -f $(DESTDIR)$(sysconfdir)/$$p; \
- done
-tags: TAGS
-TAGS:
-
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-
-subdir = scripts
-
-distdir: $(DISTFILES)
- @for file in $(DISTFILES); do \
- d=$(srcdir); \
- test -f $(distdir)/$$file \
- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
- || cp -p $$d/$$file $(distdir)/$$file; \
- done
-info:
-dvi:
-check: all
- $(MAKE)
-installcheck:
-install-exec: install-binSCRIPTS install-sbinSCRIPTS install-sysconfDATA
- @$(NORMAL_INSTALL)
-
-install-data: install-man
- @$(NORMAL_INSTALL)
-
-install: install-exec install-data all
- @:
-
-uninstall: uninstall-binSCRIPTS uninstall-sbinSCRIPTS uninstall-man uninstall-sysconfDATA
-
-install-strip:
- $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
-installdirs:
- $(mkinstalldirs) $(DATADIR)$(bindir) $(DATADIR)$(sbindir) \
- $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man5 \
- $(DATADIR)$(sysconfdir)
-
-
-mostlyclean-generic:
- -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-clean-generic:
- -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
- -rm -f Makefile $(DISTCLEANFILES)
- -rm -f config.cache config.log stamp-h stamp-h[0-9]*
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
- -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-mostlyclean: mostlyclean-generic
-
-clean: clean-generic mostlyclean
-
-distclean: distclean-generic clean
- -rm -f config.status
- -rm -f libtool
-
-maintainer-clean: maintainer-clean-generic distclean
- @echo "This command is intended for maintainers to use;"
- @echo "it deletes files that may require special tools to rebuild."
-
-.PHONY: uninstall-binSCRIPTS install-binSCRIPTS uninstall-sbinSCRIPTS \
-install-sbinSCRIPTS install-man1 uninstall-man1 install-man5 \
-uninstall-man5 install-man uninstall-man uninstall-sysconfDATA \
-install-sysconfDATA tags distdir info dvi installcheck install-exec \
-install-data install uninstall all installdirs mostlyclean-generic \
-distclean-generic clean-generic maintainer-clean-generic clean \
-mostlyclean distclean maintainer-clean
-
-
-# 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/contrib/amd/scripts/am-eject.in b/contrib/amd/scripts/am-eject.in
deleted file mode 100644
index 8754a3bd4751..000000000000
--- a/contrib/amd/scripts/am-eject.in
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-# auto-unmount floppy/cd directory before ejecting device
-# script taken from Debian Linux's amd
-#
-# Package: am-utils-6.x
-# (Additional) author: Erez Zadok <ezk@cs.columbia.edu>
-
-# set path
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-PATH=@sbindir@:@bindir@:/usr/ucb:/usr/bin:/bin:${PATH}
-export PATH
-
-if [ $# -ne 1 ]; then
- echo "Usage: $0 cd|cdrom|fd|floppy"
- exit 2
-fi
-
-# determine toplevel mount point of amd
-fs=`amq | grep ' toplvl ' | cut -d' ' -f1`
-if [ "$fs" = "" ]; then
- echo "Cannot determine amd toplevel directory"
- exit 2
-fi
-
-# append name of medium
-case "$1" in
- cd|fd) fs=$fs/$1;;
- *) echo "Usage: $0 cd|cdrom|fd|floppy"; exit 2;;
-esac
-
-# is the medium mounted?
-if amq | grep -q "^$fs" >/dev/null 2>&1; then
- # if yes, try to unmount it
- sync
- amq -u $fs
- sleep 2
- if amq | grep -q "^$fs" >/dev/null 2>&1; then
- # failed, bail out
- echo -n "Cannot unmount $fs; in use by:"
- fuser -uv -m $fs
- echo ""
- exit 1
- fi
-else
- echo "$fs not mounted"
-fi
-
-case $1 in
- cd|cdrom) eject cdrom || eject ;; # eject CD-ROM
- fd|floppy) eject floppy || eject
- echo "Ok to remove disk" ;;
-esac
diff --git a/contrib/amd/scripts/amd.conf-sample b/contrib/amd/scripts/amd.conf-sample
deleted file mode 100644
index 4d965787099a..000000000000
--- a/contrib/amd/scripts/amd.conf-sample
+++ /dev/null
@@ -1,166 +0,0 @@
-# A SAMPLE CONFIGURATION FILE FOR AMD
-
-##############################################################################
-# GLOBAL OPTIONS SECTION (must be first in amd.conf file)
-# For most options, the default value is listed first, but see amd.conf(5)
-[ global ]
-# (amd -n)
-normalize_hostnames = no | yes
-# do we want to strip domain names from hostnames or not?
-domain_strip = yes | no
-# (amd -p)
-print_pid = no | yes
-pid_file = /dev/stdout | /var/run/amd.pid
-# (amd -r)
-restart_mounts = no | yes
-unmount_on_exit = no | yes
-forced_unmounts = no | yes
-# (amd -a)
-auto_dir = /a
-# duration in seconds that a looked up name remain cached (amd -c)
-cache_duration = 300
-# (amd -d)
-local_domain = cs.columbia.edu
-# (amd -k)
-karch = sun4m
-# (amd -A)
-arch = sun4
-# if you don't like autoconf picking up "sunos5" as the os-type, override it
-# (amd -O)
-os = sos5
-# (amd -o)
-osver = 2.5.1
-# full os name
-full_os = linux-2.2.5
-# OS vendor
-vendor = redhat
-# if you print_version after setting up "os", it will show it. (amd -v)
-print_version = no | yes
-# (amd -l)
-log_file = /dev/stderr | /var/log/amd | syslog[:facility]
-# should we truncate the log file on startup?
-truncate_log = no | yes
-# NFS (RPC) retry interval/counter, in tenths of secs (amd -t interval.counter)
-nfs_retry_interval = 8
-nfs_retransmit_counter = 11 (eleven retransmission attempts)
-# The next four are the same as the above two, but allow you to set global
-# values for all UDP vs. TCP mounts separately.
-nfs_retry_interval_udp = 16
-nfs_retransmit_counter_udp = 22
-nfs_retry_interval_tcp = 4
-nfs_retransmit_counter_tcp = 5
-# These two are specific to Amd's top-level (NFSv2/udp) mounts
-# and they can also be set separately.
-nfs_retry_interval_toplvl = 6
-nfs_retransmit_counter_toplvl = 8
-# NFS attribute cache value for Amd's automount points
-# (some OSs use this parameter in units of seconds, and others in 0.1 seconds)
-# See README.attrcache for important information about this parameter.
-auto_attrcache = 0
-# (amd -w)
-dismount_interval = 120
-# (amd -y)
-nis_domain = nisDom-CS.columbia.edu
-# (amd -x)
-log_options = fatal,error,user,warn,info,map,stats,all
-# (amd -D)
-debug_options = all,defaults,test,amq,daemon,fork,\
- full,hrtime,info,mem,mtab,str,readdir,trace,xdrtrace
-# path for mtab file during mtab debug mode
-debug_mtab_file = /tmp/mnttab
-# (amd -S)
-plock = yes | no
-# should browsable maps show number of entries to df/statfs (default=no)
-show_statfs_entries = no | yes
-# (hpux) cluster name (amd -C)
-cluster = ???
-# LDAP (Lightweight Directory Access Protocol) options
-ldap_base = "ou=Marketing, o=AMD Ltd, c=US"
-ldap_hostports = ldap.your.domain:389
-ldap_cache_seconds = 0
-ldap_cache_maxmem = 131072
-ldap_proto_version = 2
-# default base name for hesiod maps
-hesiod_base = automount
-# interval to check if a reload of any maps is needed
-map_reload_interval = 3600
-# alternate RPC program number to register with the port mapper
-portmap_program = 300019-300029
-# Ask for a different Amq RPC port (both UDP and TCP).
-# If set to 0 (default), Amd will pick a port automatically.
-preferred_amq_port = 1234
-# use fully qualified host names
-fully_qualified_hosts = no | yes
-# force NFS version or NFS protocol
-nfs_vers = 2 | 3
-nfs_proto = udp | tcp
-# perform Amq service checks via tcpwrappers (tcpd/libwrap)
-use_tcpwrappers = yes | no
-# allow NFS requests from insecure (>=1024) ports
-nfs_allow_insecure_port = no | yes
-# accept local NFS packets from any local interface, not just 127.0.0.1
-nfs_allow_any_interface = no | yes
-# address used for local NFS mount and RPC server (default to localhost)
-localhost_address = foo.example.com | 192.168.1.2
-# number of seconds to timeout before map returns output
-exec_map_timeout = 10
-# normalize multiple/trailing slashes or not?
-normalize_slashes = yes | no
-
-##############################################################################
-# these 9 global options can be overridden by each map individually
-browsable_dirs = no | yes | full
-map_options = cache:=all
-map_type = file|hesiod|ndbm|nis|nisplus|passwd|union|ldap
-# any string that will be used to override to the map /defaults entry
-map_defaults = opts:=nosuid,rw,intr,bg,noquota;type:=link
-mount_type = nfs | autofs
-autofs_use_lofs = yes | no
-search_path = /etc/local:/etc/amdmaps:/misc/yp
-# selectors are not recognized by default in the /defaults entry
-selectors_in_defaults = no | yes
-# does this map use Sun Automounter map syntax?
-sun_map_syntax = no | yes
-##############################################################################
-
-##############################################################################
-# DEFINE AN AMD MOUNT POINT
-[ /home ]
-# map name must be defined, all else are optional
-map_name = /etc/amd.home | amd.home
-map_options = cache:=all
-# if map type is not defined, will search all map types (default)
-map_type = file|hesiod|ndbm|nis|nisplus|passwd|union|ldap
-search_path = /etc/local:/etc/amdmaps:/misc/yp
-# an amd or autofs mount point
-mount_type = nfs | autofs
-browsable_dirs = yes | no
-# an optional tag to be used with amd -T tag. untagged entries are always
-# used. Tagged ones get used only if specified with "amd -T"
-tag = test
-
-##############################################################################
-# DEFINE ANOTHER AMD MOUNT POINT
-[ /src ]
-map_name = /usr/local/lib/amdmaps/amu.src
-# regular amd (nfs) mount point (default)
-mount_type = nfs
-# any string that will be used as prefix to the map /defaults entry
-# this overrides what's defined in [global]
-map_defaults = type:=nfs
-
-##############################################################################
-# DEFINE ANOTHER AMD MOUNT POINT
-[ /test ]
-map_name = /etc/lookup-entry.sh
-# an executable map type
-map_type = exec
-
-##############################################################################
-# DEFINE A SUN SYNTAX MOUNT POINT
-[ /proj ]
-map_name = /etc/amd.proj
-# does this map use Sun Automounter map syntax?
-sun_map_syntax = yes
-
-##############################################################################
diff --git a/contrib/amd/scripts/amd.conf.5 b/contrib/amd/scripts/amd.conf.5
deleted file mode 100644
index 1adc2ba85675..000000000000
--- a/contrib/amd/scripts/amd.conf.5
+++ /dev/null
@@ -1,1118 +0,0 @@
-.\"
-.\" Copyright (c) 1997-2014 Erez Zadok
-.\" Copyright (c) 1990 Jan-Simon Pendry
-.\" Copyright (c) 1990 Imperial College of Science, Technology & Medicine
-.\" Copyright (c) 1990 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" Jan-Simon Pendry at Imperial College, London.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\"
-.\" File: am-utils/scripts/amd.conf.5
-.\" $FreeBSD$
-.\"
-.Dd February 26, 2016
-.Dt AMD.CONF 5
-.Os
-.Sh NAME
-.Nm amd.conf
-.Nd
-.Xr amd 8
-configuration file
-.Sh SYNOPSIS
-.Nm
-.Sh DESCRIPTION
-.Bf -symbolic
-This configuration file is obsolete.
-Users are advised to use
-.Xr autofs 5
-instead.
-.Ef
-.Pp
-The
-.Nm
-file is the configuration file for
-.Xr amd 8 ,
-as part of the am-utils suite.
-.Pp
-The
-.Nm
-file
-contains runtime configuration information for the
-.Xr amd 8
-automounter program.
-.Sh FILE FORMAT
-The file consists of sections and parameters.
-A section begins with the
-name of the section in square brackets and continues until the next section
-begins or the end of the file is reached.
-Sections contain parameters of the
-form
-.Dq Ar name No = Ar value .
-.Pp
-The file is line-based \[em] that is, each newline-terminated line represents
-either a comment, a section name or a parameter.
-No line-continuation
-syntax is available.
-.Pp
-Section, parameter names and their values are case sensitive.
-.Pp
-Only the first equals sign in a parameter is significant.
-Whitespace before
-or after the first equals sign is discarded.
-Leading, trailing and
-internal whitespace in section and parameter names is irrelevant.
-Leading
-and trailing whitespace in a parameter value is discarded.
-Internal
-whitespace within a parameter value is not allowed, unless the whole
-parameter value is quoted with double quotes as in
-.Dq Ar name No = Qq Li "some\ value" .
-.Pp
-Any line beginning with a pound sign (#) is ignored, as are lines containing
-only whitespace.
-.Pp
-The values following the equals sign in parameters are all either a string
-(no quotes needed if string does not include spaces) or a boolean, which may
-be given as
-.Dq Li yes/no .
-Case is significant in all values.
-Some items such as
-cache timeouts are numeric.
-.Sh SECTIONS
-.Ss "The [global] section"
-Parameters in this section either apply to
-.Nm amd
-as a whole, or to all other
-regular map sections which follow.
-There should be only one global section
-defined in one configuration file.
-.Pp
-It is highly recommended that this section be specified first in the
-configuration file.
-If it is not, then regular map sections which precede
-it will not use global values defined later.
-.Ss "Regular [/map] sections"
-Parameters in regular (non-global) sections apply to a single map entry.
-For example, if the map section
-.Bq Pa /homes
-is defined, then all parameters following it will be applied to the
-.Pa /homes
-.Nm amd Ns
--managed mount point.
-.Sh PARAMETERS
-.Ss "Parameters common to all sections"
-These parameters can be specified either in the global or a map specific
-section.
-Entries specified in a map-specific section override the default
-value or one defined in the global section.
-If such a common parameter is
-specified only in the global section, it is applicable to all regular map
-sections that follow.
-.Bl -tag -width 4n
-.It Va browsable_dirs Pq string, default=no
-If
-.Dq Li yes ,
-then
-.Nm amd Ns 's
-top-level mount points will be browsable to
-.Xr readdir 3
-calls.
-This means you could run for example
-.Xr ls 1
-and see what keys are available to mount in that directory.
-Not all entries
-are made visible to
-.Xr readdir 3 :
-the
-.Dq Li /default
-entry, wildcard entries, and those with a
-.Ql /
-in them are not included.
-If you specify
-.Dq Li full
-to this option, all but
-.Dq Li /default
-will be visible.
-Note that if you run a command which will attempt to
-.Xr stat 2
-the entries, such as often done by
-.Dq Li "ls -l"
-or
-.Dq Li "ls -F" ,
-.Xr amd 8
-will attempt to mount
-.Em every
-entry in that map.
-This is often called a
-.Dq "mount storm" .
-.It Va map_defaults Pq string, default no empty
-This option sets a string to be used as the map's /defaults entry,
-overriding any /defaults specified in the map.
-This allows local users to
-override map defaults without modifying maps globally.
-.It Va map_options Pq string, default no options
-This option is the same as specifying map options on the command line to
-.Xr amd 8 ,
-such as
-.Dq Li "cache:=all" .
-.It Va map_type Pq string, default search all map types
-If specified,
-.Xr amd 8
-will initialize the map only for the type given.
-This is
-useful to avoid the default map search type used by
-.Xr amd 8
-which takes longer
-and can have undesired side-effects such as initializing
-.Tn NIS
-even if not
-used.
-Possible values are:
-.Pp
-.Bl -tag -width ".Cm nisplus" -compact
-.It Cm exec
-executable maps
-.It Cm file
-plain files
-.It Cm hesiod
-Hesiod name service from MIT
-.It Cm ldap
-Lightweight Directory Access Protocol
-.It Cm ndbm
-(New) dbm style hash files
-.It Cm nis
-Network Information Services (version 2)
-.It Cm nisplus
-Network Information Services Plus (version 3)
-.It Cm passwd
-local password files
-.It Cm union
-union maps
-.El
-.It Va mount_type Pq string, default=nfs
-All
-.Xr amd 8
-mount types default to
-.Tn NFS .
-That is,
-.Xr amd 8
-is an
-.Tn NFS
-server on the
-map mount points, for the local host it is running on.
-If
-.Dq Li autofs
-is specified,
-.Xr amd 8
-will be an autofs server for those mount points.
-.It Va autofs_use_lofs Pq string, default=yes
-When set to
-.Dq Li yes
-and using Autofs,
-.Xr amd 8
-will use lofs-type (loopback) mounts
-for type:=link mounts.
-This has the advantage of mounting in place, and
-users get to the see the same pathname that they chdir'ed into.
-If this
-option is set to
-.Dq Li no ,
-then
-.Xr amd 8
-will use symlinks instead: that code is more
-tested, but negates autofs's big advantage of in-place mounts.
-.It Va search_path Pq string, default no search path
-This provides a (colon-delimited) search path for file maps.
-Using a search
-path, sites can allow for local map customizations and overrides, and can
-query
-distributed maps in several locations as needed.
-.It Va selectors_in_defaults Pq boolean, default=no
-If
-.Dq Li yes ,
-then the /defaults entry of maps will search for and process any
-selectors before setting defaults for all other keys in that map.
-Useful
-when you want to set different options for a complete map based on some
-parameters.
-For example, you may want to better the NFS performance over
-slow slip-based networks as follows:
-.Bd -literal
-/defaults \\
- wire==slip-net;opts:=intr,rsize=1024,wsize=1024 \\
- wire!=slip-net;opts:=intr,rsize=8192,wsize=8192
-.Ed
-Deprecated form: selectors_on_default
-.TP
-.BR sun_map_syntax " (boolean, default=no)"
-If "yes," then Amd will parse the map according to the Sun Automount syntax.
-
-.\" **************************************************************************
-.El
-.Ss "Parameters applicable to the global section only"
-
-.Bl -tag -width 4n
-.It Va arch Pq string, default to compiled in value
-Same as the
-.Fl A
-option to
-.Xr amd 8 .
-Allows you to override the value of the
-.Va arch
-.Xr amd 8
-variable.
-.It Va auto_attrcache Pq numeric, default=0
-Specify in seconds (or units of 0.1 seconds, depending on the OS), what is
-the (kernel-side) NFS attribute cache timeout for
-.Nm amd Ns 's
-own automount
-points.
-A value of 0 is supposed to turn off attribute caching, meaning
-that
-.Xr amd 8
-will be consulted via a kernel-RPC each time someone stat()'s
-the mount point (which could be abused as a denial-of-service attack).
-Warning: some OSs are incapable of turning off the NFS attribute cache
-reliably.
-On such systems,
-.Nm amd
-may not work reliably under heavy load.
-See
-the
-.Pa README.attrcache
-document in the Am-utils distribution for more details.
-.It Va auto_dir Pq string, default= Ns Pa /a
-Same as the
-.Fl a
-option to
-.Xr amd 8 .
-This sets the private directory where
-.Nm amd
-will create
-sub-directories for its real mount points.
-.It Va cache_duration Pq numeric, default=300
-Same as the
-.Fl c
-option to
-.Xr amd 8 .
-Sets the duration in seconds that looked-up or mounted map
-entries remain in the cache.
-.It Va cluster Pq string, default no cluster
-Same as the
-.Fl C
-option to
-.Xr amd 8 .
-Specifies the alternate
-.Tn HP-UX
-cluster to use.
-.It Va debug_mtab_file Pq string, default= Ns Pa /tmp/mnttab
-Path to mtab file that is used by
-.Xr amd 8
-to store a list of mounted
-file systems during debug-mtab mode.
-This option only applies
-to systems that store mtab information on disk.
-.It Va debug_options Pq string, default no debug options
-Same as the
-.Fl D
-option to
-.Xr amd 8 .
-Specify any debugging options for
-.Xr amd 8 .
-Works only if
-Works only if
-am-utils was configured for debugging using the
-.Fl Fl enable-debug
-option.
-The
-.Cm mem
-option, as well as all other options, can be turned on via
-.Fl Fl enable-debug Ns = Ns Cm mem .
-Otherwise debugging options are ignored.
-Options are
-comma delimited, and can be preceded by the string
-.Dq Li no
-to negate their
-meaning.
-You can get the list of supported debugging options by running
-.Nm amd Fl v .
-Possible values are:
-.Pp
-.Bl -tag -width ".Cm xdrtrace" -compact
-.It Cm all
-all options (excludes hrtime and mtab)
-.It Cm defaults
-"sensible" default options (all--excluding hrtime, mtab, and xdrtrace)
-.It Cm amq
-register for
-.Xr amq 8
-.It Cm daemon
-enter daemon mode
-.It Cm fork
-fork server
-.It Cm full
-program trace
-.It Cm hrtime
-print high resolution time stamps (only if syslog(3) is not used)
-.It Cm info
-info service specific debugging
-(hesiod, nis, etc.)
-.It Cm mem
-trace memory allocations
-.It Cm mtab
-use local
-.Pa ./mtab
-file
-\fBreaddir\fR show browsable_dirs progress
-.It Cm str
-debug string munging
-.It Cm test
-full debug options plus mtab,nodaemon,nofork,noamq
-.It Cm trace
-trace protocol and NFS mount arguments
-.It Cm xdrtrace
-trace XDR routines
-.BR dismount_interval " (numeric, default=120)"
-.El
-.It Va dismount_interval Pq numeric, default=120
-Same as the
-.Fl w
-option to
-.Xr amd 8 .
-Specify, in seconds, the time between attempts to dismount
-file systems that have exceeded their cached times.
-.It Va domain_strip Pq boolean, default=yes
-If
-.Dq Li yes ,
-then the domain
-name part referred to by ${rhost} is stripped off.
-This is
-useful to keep logs and smaller.
-If
-.Dq Li no ,
-then the domain name
-part is left changed.
-This is useful when using multiple domains with
-the same maps (as you may have hosts whose domain-stripped name is
-identical).
-.It Va exec_map_timeout Pq numeric, default=10
-The timeout in seconds that
-.Xr amd 8
-will wait for an executable map program before an answer is returned from
-that program (or script).
-This value should be set to as small as possible
-while still allowing normal replies to be returned before the timer expires,
-because during the time that the executable map program is queried,
-.Xr amd 8
-is essentially waiting and is thus not responding to any other queries.
-.It Va forced_unmounts Pq boolean, default=no
-If set to
-.Dq Li yes ,
-and the client OS supports forced or lazy unmounts, then
-.Xr amd 8
-will attempt to use them if it gets any of three serious error conditions
-when trying to unmount an existing mount point or mount on top of one:
-.Er EIO , ESTALE ,
-or
-.Er EBUSY .
-.Pp
-This could be useful to recover from serious conditions such as hardware
-failure of mounted disks, or NFS servers which are down permanently, were
-migrated, or changed their IP address.
-Only
-.Dq Li type:=toplvl
-mounts hung with
-.Er EBUSY
-are forcibly unmounted using this option, which is useful to recover
-from a hung
-.Xr amd 8 ) .
-.It Va full_os Pq string, default to compiled in value
-The full name of the operating system, along with its version.
-Allows you
-to override the compiled-in full name and version of the operating system.
-Useful when the compiled-in name is not desired.
-For example, the full
-operating system name on Linux comes up as
-.Dq Li linux ,
-but you can override it to
-.Dq Li linux-2.2.5 .
-.It Va fully_qualified_hosts Pq string, default=no
-If
-.Dq Li yes ,
-.Xr amd 8
-will perform RPC authentication using fully-qualified host names.
-This is
-necessary for some systems, and especially when performing cross-domain
-mounting.
-For this function to work, the
-.Xr amd 8
-variable ${hostd} is used, requiring that ${domain} not be null.
-.It Va hesiod_base Pq string, default=automount
-Specify the base name for hesiod maps.
-.It Va karch Pq string, default to karch of the system
-Same as the
-.Fl k
-option to
-.Xr amd 8 .
-Allows you to override the kernel-architecture of your
-system.
-Useful for example on Sun (Sparc) machines, where you can build one
-.Nm amd
-binary and run it on multiple machines, yet you want each one to get
-the correct
-.Va karch
-variable set (for example, sun4c, sun4m, sun4u, etc.)
-Note that if not
-specified,
-.Xr amd 8
-will use
-.Xr uname 3
-to figure out the kernel architecture of
-the machine.
-.It Va ldap_base Pq string, default not set
-Specify the base name for LDAP.
-This often includes LDAP-specific
-values such as country and organization.
-.It Va ldap_cache_maxmem Pq numeric, default=131072
-Specify the maximum memory
-.Xr amd 8
-should use to cache LDAP entries.
-.It Va ldap_cache_seconds Pq numeric, default=0
-Specify the number of seconds to keep entries in the cache.
-.It Va ldap_hostports Pq string, default not set
-Specify the LDAP host and port values.
-.It Va ldap_proto_version Pq numeric, default=2
-Specify the version of the LDAP protocol to use.
-.It Va local_domain Pq string, default no sub-domain
-Same as the
-.Fl d
-option to
-.Xr amd 8 .
-Specify the local domain name.
-If this option is not given
-the domain name is determined from the hostname by removing the first
-component of the fully-qualified host name.
-.It Va localhost_address Pq string, default to localhost or 127.0.0.1
-Specify the name or IP address for
-.Xr amd 8
-to use when connecting the sockets
-for the local NFS server and the RPC server.
-This defaults to 127.0.0.1 or
-whatever the host reports as its local address.
-This parameter is useful on
-hosts with multiple addresses where you want to force
-.Xr amd 8
-to connect to a
-specific address.
-.It Va log_file Pq string, default= Ns Pa /dev/stderr
-Same as the
-.Fl l
-option to
-.Xr amd 8 .
-Specify a file name to log
-.Xr amd 8
-events to.
-If the string
-.Pa /dev/stderr
-is specified,
-.Xr amd 8
-will send its events to the standard error file descriptor.
-If the string
-.Pa syslog
-is given,
-.Xr amd 8
-will record its events with the system logger
-.Xr syslogd 8 .
-The default syslog facility used is
-.Dv LOG_DAEMON .
-If you
-wish to change it, append its name to the log file name, delimited by a
-single colon.
-For example, if
-.Pa logfile
-is the string
-.Dq Li syslog:local7
-then
-.Xr amd 8
-will log messages via
-.Xr syslog 3
-using the
-.Dv LOG_LOCAL7
-facility (if it exists on the system).
-.It Va log_options Pq string, default no logging options
-Same as the
-.Fl x
-option to
-.Xr amd 8 .
-Specify any logging options for
-.Xr amd 8 .
-Options are comma
-delimited, and can be preceded by the string
-.Dq Li no
-to negate their meaning.
-The
-.Dq Li debug
-logging option is only available if am-utils was configured with
-.Fl Fl enable-debug .
-You can get the list of supported debugging and logging
-options by running
-.Nm amd Fl H .
-Possible values are:
-.Pp
-.Bl -tag -width ".Cm warning" -compact
-.It Cm all
-all messages
-.It Cm defaults
-default messages (fatal,error,user,warning,info)
-.It Cm debug
-debug messages
-.It Cm error
-non-fatal system errors (cannot be turned off)
-.It Cm fatal
-fatal errors (cannot be turned off)
-.It Cm info
-information
-.It Cm map
-map errors
-.It Cm stats
-additional statistical information
-.It Cm user
-non-fatal user errors
-.It Cm warn
-warnings
-\fBwarning\fR warnings
-.It Cm warning
-warnings
-.El
-.It Va map_reload_interval Pq numeric, default=3600
-The number of seconds that
-.Xr amd 8
-will wait before it checks to see if any maps
-have changed at their source (NIS servers, LDAP servers, files, etc.).
-.Xr amd 8
-will reload only those maps that have changed.
-.It Va nfs_allow_any_interface Pq string, default=no
-Normally
-.Xr amd 8
-accepts local NFS packets only from 127.0.0.1.
-If this
-parameter is set to
-.Dq Li yes
-then
-.Xr amd 8
-will accept local NFS packets from any
-local interface; this is useful on hosts that may have multiple interfaces
-where the system is forced to send all outgoing packets (even those bound to
-the same host) via an address other than 127.0.0.1.
-.It Va nfs_allow_insecure_port Pq string, default=no
-Normally
-.Xr amd 8
-will refuse requests coming from unprivileged ports (i.e.\&
-ports >= 1024 on Unix systems), so that only privileged users and the kernel
-can send NFS requests to it.
-However, some kernels (certain versions of
-Darwin, MacOS X, and Linux) have bugs that cause them to use unprivileged
-ports in certain situations, which causes
-.Xr amd 8
-to stop dead in its tracks.
-This parameter allows
-.Xr amd 8
-to operate normally even on such systems, at the
-expense of a slight decrease in the security of its operations.
-If you see
-messages like
-.Dq Li "ignoring request from foo:1234, port not reserved"
-in your
-.Xr amd 8
-log, try enabling this parameter and give it another go.
-.It Va nfs_proto Pq string, default to trying version tcp then udp
-By default,
-.Xr amd 8
-tries TCP and then UDP.
-This option forces the overall
-.Tn NFS
-protocol used to TCP or UDP.
-It overrides what is in the
-.Xr amd 8
-maps, and is
-useful when
-.Nm amd
-is compiled with NFSv3 support that may not be stable.
-With
-this option you can turn off the complete usage of NFSv3 dynamically
-(without having to recompile
-.Nm amd )
-until such time as NFSv3 support is
-desired again.
-.It Va nfs_retransmit_counter Pq numeric, default=11
-Same as the
-.Ar retransmit
-counter
-part of the
-.Fl t Ar timeout.retransmit
-option to
-.Xr amd 8 .
-Specifies the number of NFS retransmissions that the kernel will use to
-communicate with
-.Xr amd 8 .
-.It Va nfs_retransmit_counter_udp Pq numeric, default=11
-Same as the
-.Va nfs_retransmit_counter
-option, but for all UDP mounts only.
-.It Va nfs_retransmit_counter_tcp Pq numeric, default=11
-Same as the
-.Va nfs_retransmit_counter
-option, but for all TCP mounts only.
-.It Va nfs_retransmit_counter_toplvl Pq numeric, default=11
-Same as the
-.Va nfs_retransmit_counter
-option, but only for
-.Nm amd Ns 's
-top-level UDP mounts.
-.It Va nfs_retry_interval Pq numeric, default=8
-Same as the
-.Ar timeout
-interval
-part of the
-.Fl t Ar timeout.retransmit
-option to
-.Xr amd 8 .
-Specifies the
-.Tn NFS
-timeout interval, in
-.Em tenths
-of seconds, between NFS/RPC retries (for UDP and TCP).
-This is the value that the kernel will use to
-communicate with
-.Xr amd 8 .
-.Pp
-.Xr amd 8
-relies on the kernel RPC retransmit mechanism to trigger mount retries.
-The values of the
-.Va nfs_retransmit_counter
-and the
-.Va nfs_retry_interval
-parameters change the overall retry interval.
-Too long an interval gives
-poor interactive response; too short an interval causes excessive retries.
-.It Va nfs_retry_interval_udp Pq numeric, default=8
-Same as the
-.Va nfs_retry_interval
-option, but for all UDP mounts only.
-.It Va nfs_retry_interval_tcp Pq numeric, default=8
-Same as the
-.It nfs_retry_interval
-option, but for all TCP mounts only.
-.It Va nfs_retry_interval_toplvl Pq numeric, default=8
-Same as the
-.It nfs_retry_interval
-option, but only for
-.Nm amd Ns 's
-top-level UDP mounts.
-.It Va nfs_vers Pq numeric, default to trying version 3 then 2
-By default,
-.Xr amd 8
-tries version 3 and then version 2.
-This option forces the
-overall
-.Tn NFS
-protocol used to version 3 or 2.
-It overrides what is in the
-.Xr amd 8
-maps, and is useful when
-.Nm amd
-is compiled with NFSv3 support that may not
-be stable.
-With this option you can turn off the complete usage of NFSv3
-dynamically (without having to recompile
-.Nm amd )
-until such time as NFSv3
-support is desired again.
-.It Va nis_domain Pq string, default to local Tn NIS domain name
-Same as the
-.Fl y
-option to
-.Xr amd 8 .
-Specify an alternative
-.Tn NIS
-domain from which to fetch the
-.Tn NIS
-maps.
-The default is the system domain name.
-This option is ignored if
-.Tn NIS
-support is not available.
-.It Va normalize_hostnames Pq boolean, default=no
-Same as the
-.Fl n
-option to
-.Xr amd 8 .
-If
-.Dq Li yes ,
-then the name referred to by
-.Va ${rhost}
-is normalized relative to the host database before being used.
-The effect is
-to translate aliases into
-.Dq official
-names.
-.It Va normalize_slashes Pq boolean, default=yes
-If
-.Dq Li yes ,
-then
-.Xr amd 8
-will condense all multiple
-.Ql /
-(slash) characters into
-one and remove all trailing slashes.
-If
-.Dq Li no ,
-then
-.Xr amd 8
-will not touch
-strings that may contain repeated or trailing slashes.
-The latter is
-sometimes useful with SMB mounts, which often require multiple slash
-characters in pathnames.
-.It Va os Pq string, default to compiled in value
-Same as the
-.Fl O
-option to
-.Xr amd 8 .
-Allows you to override the compiled-in name of the operating
-system.
-Useful when the built-in name is not desired for backward
-compatibility reasons.
-For example, if the build in name is
-.Dq Li sunos5 ,
-you can override it to
-.Dq Li sos5 ,
-and use older maps which were written with the
-latter in mind.
-.It Va osver Pq string, default to compiled in value
-Same as the
-.Fl o
-option to
-.Xr amd 8 .
-Overrides the compiled-in version number of the operating
-system.
-Useful when the built in version is not desired for backward
-compatibility reasons.
-For example, if the build in version is
-.Dq Li 2.5.1 ,
-you can override it to
-.Dq Li 5.5.1 ,
-and use older maps that were written with
-the latter in mind.
-.It Va pid_file Pq string, default= Ns Pa /dev/stdout
-Specify a file to store the process ID of the running daemon into.
-If not
-specified,
-.Xr amd 8
-will print its process ID onto the standard output.
-Useful
-for killing
-.Xr amd 8
-after it had run.
-Note that the PID of a running
-.Nm amd
-can
-also be retrieved via
-.Nm amq Fl p .
-This file is used only if the
-.Va print_pid
-option is on.
-.It Va plock Pq boolean, default=yes
-Same as the
-.Fl S
-option to
-.Xr amd 8 .
-If
-.Dq Li yes ,
-lock the running executable pages of
-.Nm amd
-into memory.
-To improve
-.Nm amd Ns 's
-performance, systems that support the
-.Xr plock 3
-or
-.Xr mlockall 2
-call can lock the
-.Nm amd
-process into memory.
-This way there is less chance that
-the operating system will schedule, page out, and swap the
-.Nm amd
-process as needed.
-This improves
-.Nm amd Ns 's
-performance, at the cost of reserving the
-memory used by the
-.Nm amd
-process (making it unavailable for other processes).
-.It Va portmap_program Pq numeric, default=300019
-Specify an alternate Port-mapper RPC program number, other than the official
-number.
-This is useful when running multiple
-.Nm amd
-processes.
-For example,
-you can run another
-.Xr amd 8
-in
-.Dq test
-mode, without affecting the primary
-.Nm amd
-process in any way.
-For safety reasons, the alternate program numbers that
-can be specified must be in the range 300019-300029, inclusive.
-The
-.Xr amq 8
-utility
-has an option
-.Fl P
-which can be used to specify an alternate program number of an
-.Nm amd
-to contact.
-In this way,
-.Nm amq
-can fully control any number of
-.Nm amd
-processes running on the same host.
-.It Va preferred_amq_port Pq numeric, default=0
-Specify an alternate Port-mapper RPC port number for
-.Nm amd Ns 's
-.Xr amq 8
-service.
-This is used for both UDP and TCP.
-Setting this value to 0 (or
-not defining it) will cause
-.Xr amd 8
-to select an arbitrary port number.
-Setting the
-.Xr amq 8
-RPC service port to a specific number is useful in firewalled or NAT'ed
-environments, where you need to know which port
-.Xr amd 8
-will listen on.
-.It Va print_pid Pq boolean, default=no
-Same as the
-.Fl p
-option to
-.Xr amd 8 .
-If
-.Dq Li yes ,
-.Nm amd
-will print its process ID upon starting.
-.It Va print_version Pq boolean, default=no
-Same as the
-.Fl v
-option to
-.Xr amd 8 ,
-but the version prints and
-.Nm amd
-continues to run.
-If
-.Dq Li yes ,
-.Nm amd
-will print its version information string, which includes some
-configuration and compilation values.
-.It Va restart_mounts Pq boolean, default=no
-Same as the
-.Fl r
-option to
-.Xr amd 8 .
-If
-.Dq Li yes ,
-.Nm amd
-will scan the mount table to determine which file systems are currently
-mounted.
-Whenever one of these would have been auto-mounted,
-.Nm amd
-inherits it.
-.It Va show_statfs_entries Pq boolean, default=no
-If
-.Dq Li yes ,
-then all maps which are browsable will also show the number of
-entries (keys) they have when
-.Xr df 1
-runs.
-(This is accomplished by returning
-non-zero values to the
-.Xr statfs 2
-system call.)
-.It Va truncate_log Pq boolean, default=no
-If
-.Dq Li yes ,
-then the log file (if it is a regular file), will be truncated
-upon startup.
-.It Va unmount_on_exit Pq boolean, default=no
-If
-.Dq Li yes ,
-then
-.Xr amd 8
-will attempt to unmount all file systems which it knows
-about.
-Normally
-.Nm amd
-leaves all
-(esp.\&
-.Tn NFS )
-mounted file systems intact.
-Note that
-.Nm amd
-does not know about file systems mounted before it starts up,
-unless the
-.Va restart_mounts
-option or
-.Fl r
-flag are used.
-.It Va use_tcpwrappers Pq boolean, default=yes
-If
-.Dq Li yes ,
-then
-.Xr amd 8
-will use the tcpd/libwrap tcpwrappers library
-(if available) to control
-access to
-.Nm amd
-via the
-.Pa /etc/hosts.allow
-and
-.Pa /etc/hosts.deny
-files.
-.It Va vendor Pq string, default to compiled in value
-The name of the vendor of the operating system.
-Overrides the compiled-in
-vendor name.
-Useful when the compiled-in name is not desired.
-For example,
-most Intel based systems set the vendor name to
-.Dq Li unknown ,
-but you can set it to
-.Dq Li redhat .
-.El
-.Ss "Parameters applicable to regular map sections"
-.Bl -tag -width 4n
-.It Va map_name Pq string, must be specified
-Name of the map where the keys are located.
-.It Va tag Pq string, default no tag
-Each map entry in the configuration file can be tagged.
-If no tag is
-specified, that map section will always be processed by
-.Xr amd 8 .
-If it is
-specified, then
-.Nm amd
-will process the map if the
-.Fl T
-option was given to
-.Xr amd 8 ,
-and the value given to that command-line option
-matches that in the map section.
-.El
-.Sh EXAMPLES
-Here is a real
-.Xr amd 8
-configuration I use daily.
-.Bd -literal
-# GLOBAL OPTIONS SECTION
-[ global ]
-normalize_hostnames = no
-print_pid = no
-restart_mounts = yes
-auto_dir = /n
-log_file = /var/log/amd
-log_options = all
-#debug_options = all
-plock = no
-selectors_in_defaults = yes
-# config.guess picks up "sunos5" and I don't want to edit my maps yet
-os = sos5
-# if you print_version after setting up "os", it will show it.
-print_version = no
-map_type = file
-search_path = /etc/amdmaps:/usr/lib/amd:/usr/local/AMD/lib
-browsable_dirs = yes
-
-# DEFINE AN AMD MOUNT POINT
-[ /u ]
-map_name = amd.u
-
-[ /proj ]
-map_name = amd.proj
-
-[ /src ]
-map_name = amd.src
-
-[ /misc ]
-map_name = amd.misc
-
-[ /import ]
-map_name = amd.import
-
-[ /tftpboot/.amd ]
-tag = tftpboot
-map_name = amd.tftpboot
-.Ed
-.Sh SEE ALSO
-.Xr hosts_access 5 ,
-.Xr amd 8 ,
-.Xr amq 8 ,
-.xr automount 8 ,
-.Xr ctl-amd 8 .
-.Pp
-.Dq am-utils
-.Xr info 1
-entry.
-.Rs
-.%A Erez Zadok
-.%B "Linux NFS and Automounter Administration"
-.%O ISBN 0-7821-2739-8
-.%I Sybex
-.%D 2001
-.Re
-.Pp
-.Pa http://www.am-utils.org/
-.Rs
-.%T Amd \- The 4.4 BSD Automounter
-.Re
-.Sh HISTORY
-The
-.Xr amd 8
-utility first appeared in
-.Bx 4.4 .
-.Sh AUTHORS
-.An Erez Zadok Aq ezk@cs.sunysb.edu ,
-Computer Science Department, Stony Brook University, Stony Brook, New York, USA.
-.Pp
-Other authors and contributors to am-utils are listed in the
-.Pa AUTHORS
-file distributed with am-utils.
diff --git a/contrib/amd/scripts/amd2ldif.in b/contrib/amd/scripts/amd2ldif.in
deleted file mode 100755
index 34cee97cc1c2..000000000000
--- a/contrib/amd/scripts/amd2ldif.in
+++ /dev/null
@@ -1,60 +0,0 @@
-#!@PERL@
-
-$usage=<<EOU;
-Usage $0 mapname base < mapfile >mapfile.ldif
-
-mapname: name of the amd map beeing converted to ldif
-base : The LDAP search base. Do not forget the quotes!
-
-This script should/could be used in a Makefile together
-with ldif2ldbm(8C) to automagically update the ldap
-databases and restart slapd whenever a master copy of
-the maps have changed. Remember "cd /var/yp; make" ?
-EOU
-
-my $fmt = "%-12s: %s\n";
-my $tfmt = "%-15s: %s\n";
-my $mapname = $ARGV[0] or die $usage;
-my $base = $ARGV[1] or die $usage;
-$time = time();
-
-print "dn: cn=amdmap $mapname timestamp, $base\n";
-printf "$tfmt", "cn", "amdmap $mapname timestamp";
-printf "$tfmt", "objectClass", "amdmapTimestamp";
-printf "$tfmt", "amdmapName", "$mapname";
-printf "$tfmt", "amdmapTimestamp", $time;
-printf "$tfmt", "amdmapName", $mapname;
-print "\n";
-
-my $line = "";
-my $done = 0;
-
-while (<STDIN>) {
- chomp;
- if (/\s*(.+)\\\s*/) {
- if ($line) {
- $line .= " ".$1;
- } else {
- $line = $1;
- }
- $done = 0;
- } else {
- s/^\s+//g;
- $line .= $_;
- $done = 1;
- }
- if ($done) {
- my @vals = split(/\s+/,$line);
- my $key = shift @vals;
- my $entry;
-
- print "dn: cn=amdmap $mapname\[$key\], $base\n";
- printf "$fmt","cn","amdmap $mapname\[$key\]";
- printf "$fmt","objectClass", "amdmap";
- printf "$fmt","amdmapName", $mapname;
- printf "$fmt","amdmapKey", $key;
- printf "$fmt","amdmapValue", join(' ',@vals);
- print "\n";
- $line = ""; $done = 0;
- }
-}
diff --git a/contrib/amd/scripts/amd2sun.in b/contrib/amd/scripts/amd2sun.in
deleted file mode 100755
index 7616c83b915c..000000000000
--- a/contrib/amd/scripts/amd2sun.in
+++ /dev/null
@@ -1,51 +0,0 @@
-#!@PERL@
-# convert amd maps to Sun automount maps
-# usage: amd2sun file
-#
-# Package: am-utils-6.x
-# Author: "Mark D. Baushke" <mdb@cisco.com>
-
-print "# file created by amd2sun
-#
-# DO NOT EDIT THIS FILE AT ALL
-# It is automatically generated from the amd mount map - edit that instead
-#
-";
-while (<>) {
- print, next if /^#/;
- chop;
- $line = $_;
- while ($line =~ /\\$/) {
- chop $line;
- $line2 = <>;
- $line2 =~ s/^\s*//;
- $line .= $line2;
- chop $line;
- }
-
- next unless $line =~ /^([^\s]+)\s+(.*)$/;
-
- $fs = $1; $rest=$2;
-
- if ($fs =~ /^\/defaults/) {
- ($defopts = $rest) =~ s/^.*[\s;]opts:=([^;\s]+)[;\s]*.*$/\1/;
- next;
- }
-
- $opts=$defopts;
-
- if ($rest =~ /opts:=([^;\s]+)[;\s]/) {
- $opts = $1;
- }
-
- $opts =~ s/,ping=[-\d]+//g;
-
- ($rhost = $rest) =~ s/^.*[\s;]rhost:=([^;\s]+)[;\s]*.*$/\1/;
- ($rfs = $rest) =~ s/^.*[\s;]rfs:=([^;\s]+)[;\s]*.*$/\1/;
-
- if ($rest =~ /sublink:=([^;\s]+)[;\s]/ ) {
- $rfs .= "/$1";
- }
-
- print "$fs -$opts $rhost:$rfs\n";
-}
diff --git a/contrib/amd/scripts/automount2amd.8 b/contrib/amd/scripts/automount2amd.8
deleted file mode 100644
index f9a04d928cd1..000000000000
--- a/contrib/amd/scripts/automount2amd.8
+++ /dev/null
@@ -1,116 +0,0 @@
-.\"
-.\" Copyright (c) 1997-2014 Erez Zadok
-.\" Copyright (c) 1990 Jan-Simon Pendry
-.\" Copyright (c) 1990 Imperial College of Science, Technology & Medicine
-.\" Copyright (c) 1990 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" Jan-Simon Pendry at Imperial College, London.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\"
-.\" File: am-utils/scripts/automount2amd.8
-.\"
-.TH AUTOMOUNT2AMD 8L "24 May 1993"
-.SH NAME
-automount2amd \- converts old Sun automount maps to Amd maps
-.SH SYNOPSIS
-.B automount2amd
-.I auto.map
-.SH DESCRIPTION
-.LP
-.B automount2amd
-is used to convert an old Sun automount maps named
-.I auto.map
-to an Amd map.
-
-This perl script will use the following /default entry
-.nf
- type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
-.fi
-If you wish to override that, define the
-.B $DEFAULTS
-environment variable, or modify the script.
-
-If you wish to generate Amd maps using the
-.I hostd
-(host domain) Amd map syntax, then define the environment variable
-.B $DOMAIN
-or modify the script.
-
-.SH EXAMPLE
-Say you have the Sun automount file auto.foo, with these two lines:
-.nf
- home earth:/home
- moon -ro,intr server:/proj/images
-.fi
-Running
-.nf
- automount2amd auto.foo > amd.foo
-.fi
-will produce the Amd map
-.I amd.foo
-with this content:
-.nf
-# generated by automount2amd on Sat Aug 14 17:59:32 US/Eastern 1999
-
-/defaults \\
- type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
-
-home \
- host==earth;type:=link;fs:=/home \\
- rhost:=earth;rfs:=/home
-
-moon \
- -addopts:=ro,intr \\
- host==server;type:=link;fs:=/proj/images \\
- rhost:=server;rfs:=/proj/images
-.fi
-.SH BUGS
-.I automount2amd
-does not understand newer Sun Automount map syntax, those used by autofs.
-.SH "SEE ALSO"
-.BR conv2amd (8), amd (8).
-.LP
-``am-utils''
-.BR info (1)
-entry.
-.LP
-.I "Linux NFS and Automounter Administration"
-by Erez Zadok, ISBN 0-7821-2739-8, (Sybex, 2001).
-.LP
-.I http://www.am-utils.org
-.LP
-.I "Amd \- The 4.4 BSD Automounter"
-.SH AUTHORS
-Original author Mike Walker <mike@tab00.larc.nasa.gov>.
-Script modified by Erez Zadok <ezk@cs.sunysb.edu>, Computer Science
-Department, Stony Brook University, Stony Brook, New York, USA.
-.P
-Other authors and contributors to am-utils are listed in the
-.B AUTHORS
-file distributed with am-utils.
diff --git a/contrib/amd/scripts/automount2amd.in b/contrib/amd/scripts/automount2amd.in
deleted file mode 100755
index 79a7b770d556..000000000000
--- a/contrib/amd/scripts/automount2amd.in
+++ /dev/null
@@ -1,72 +0,0 @@
-#!@PERL@ -w
-#
-# Convert Sun automount map format to amd format
-#
-# Package: am-utils-6.x
-# Author: Mike Walker <mike@tab00.larc.nasa.gov>
-# Erez Zadok <ezk@cs.columbia.edu>
-#
-# This program expects maps with the format
-#
-# dir [ -options ] machine:/path [ # optional comment ]
-# ...
-#
-# and generates an equivalent amd map as follows:
-#
-# # generated by automountamd on Fri May 21 9:16:56 1993
-#
-# /defaults \
-# type:=nfs;opts:=rw,grpid,nosuid,utimeout=600
-#
-# dir \
-# hostd==machine.larc.nasa.gov;type:=link;fs:=/path || \
-# domain==larc.nasa.gov;rhost:=machine;rfs:=/path || \
-# rhost:=machine.larc.nasa.gov;rfs:=/path
-# ...
-#
-# You should set the DOMAIN and DEFAULT variables to your preferences.
-#
-# $Id: automount2amd.in,v 1.2 2002/01/15 18:25:25 ezk Exp $
-#
-
-require "ctime.pl";
-
-# amd domain name (doesn't have to be the DNS domain; isn't overloading great!)
-# Should be what you will pass to amd via the -d command-line switch, if any.
-$DOMAIN='';
-
-# amd default settings; consult the docs for what you can/should do here.
-# Note, in particular, that if your disk mount points follow a common scheme
-# you can specify ``rfs:=/common/path/${key}'' and not have to insert that
-# line (twice) in every entry below!
-$DEFAULTS='type:=nfs;opts:=rw,grpid,nosuid,utimeout=600';
-
-
-# print comment header and default string
-printf "# generated by automount2amd on %s\n", &ctime(time);
-printf "/defaults \\\n %s\n\n", $DEFAULTS;
-
-# loop through map
-while (<>) {
- if (m,^(\w\S*)(\s+\-\w\S*\s+|\s+)(\w[^:]*):(\/\S*)\s*(.*),) {
- ($dir, $options, $machine, $path, $rest) = ($1, $2, $3, $4, $5);
- print "#$rest\n" if ($rest =~ m/\w/);
- print "$dir \\\n";
- if ($options =~ m/-/) {
- $options =~ s/\s//g;
- $options =~ s/^-//g;
- printf( " -addopts:=$options \\\n");
- }
- if (defined($DOMAIN) && $DOMAIN ne "") {
- printf(" hostd==%s.%s;type:=link;fs:=%s || \\\n",
- $machine, $DOMAIN, $path);
- printf(" domain==%s;rhost:=%s;rfs:=%s || \\\n",
- $DOMAIN, $machine, $path);
- printf " rhost:=%s.%s;rfs:=%s\n\n", $machine, $DOMAIN, $path;
- } else {
- printf(" host==%s;type:=link;fs:=%s \\\n",
- $machine, $path);
- printf " rhost:=%s;rfs:=%s\n\n", $machine, $path;
- }
- }
-}
diff --git a/contrib/amd/scripts/ctl-amd.in b/contrib/amd/scripts/ctl-amd.in
deleted file mode 100755
index 694b31a9764c..000000000000
--- a/contrib/amd/scripts/ctl-amd.in
+++ /dev/null
@@ -1,155 +0,0 @@
-#!/bin/sh
-# control starting, stopping, or restarting amd.
-# usage: ctl-amd [start|stop|status|restart|condrestart|reload]
-#
-# Package: am-utils-6.x
-# Author: Erez Zadok <ezk@cs.columbia.edu>
-#
-# chkconfig: - 72 28
-# description: Runs the automount daemon that mounts devices and NFS hosts \
-# on demand.
-# processname: amd
-# config: /etc/amd.conf
-#
-
-# set path
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-PATH=@sbindir@:@bindir@:/usr/ucb:/usr/bin:/bin:${PATH}
-export PATH
-
-# kill the named process(es)
-killproc()
-{
-# first try to get PID via an amq RPC
-pid=`amq -p 2>/dev/null`
-if test "$pid" != ""
-then
- kill $pid
- return 0
-fi
-
-# try bsd style ps
-pscmd="ps axc"
-pid=`${pscmd} 2>/dev/null | grep "$1" | sed -e 's/^ *//' -e 's/ .*//'`
-if test "$pid" != ""
-then
- kill $pid
- return 0
-fi
-
-# try bsd44 style ps
-pscmd="ps -x"
-pid=`${pscmd} 2>/dev/null | grep "$1" | sed -e 's/^ *//' -e 's/ .*//'`
-if test "$pid" != ""
-then
- kill $pid
- return 0
-fi
-
-# try svr4 style ps
-pscmd="ps -e"
-pid=`${pscmd} 2>/dev/null | grep "$1" | sed -e 's/^ *//' -e 's/ .*//'`
-if test "$pid" != ""
-then
- kill $pid
- return 0
-fi
-
-# failed
-return 1
-}
-
-# before running any real programs, chdir to / to avoid possible hangs on
-# (NFS) mounts which may be restarting.
-cd /
-
-# search for amd.conf file
-CF_FILE="@sysconfdir@/amd.conf"
-# any local copy of the conf file overrides the "global" one
-if [ -f /etc/amd.conf ]
-then
- CF_FILE="/etc/amd.conf"
-fi
-if [ -f @sysconfdir@/amd.conf ]
-then
- CF_FILE="@sysconfdir@/amd.conf"
-fi
-if [ -f /etc/local/amd.conf ]
-then
- CF_FILE="/etc/local/amd.conf"
-fi
-
-# if have the directory /tftpboot/.amd, then add a tag to include it
-CF_TAG=""
-if [ -d /tftpboot/.amd ]
-then
- CF_TAG="-T tftpboot"
-fi
-
-case "$1" in
-'start')
- # Start the amd automounter.
- if [ -x @sbindir@/amd ]
- then
- # do not specify full path of amd so killproc() works
- amd -F $CF_FILE $CF_TAG
- test -x /var/lock/subsys && touch /var/lock/subsys/amd
- fi
- ;;
-
-'stop')
- # prepend space to program name to ensure only amd process dies
- echo "killing amd..."
- killproc " amd"
- wait4amd2die
- rm -f /var/lock/subsys/amd
- ;;
-
-'restart')
- # kill amd, wait for it to die, then restart
- ctl-amd stop
- if [ $? != 0 ]
- then
- echo "NOT restarting amd!"
- else
- echo "Restarting amd..."
- sleep 1
- ctl-amd start
- fi
- ;;
-
-'condrestart')
- if [ -f /var/lock/subsys/amd ]; then
- ctl-amd stop
- ctl-amd start
- fi
- ;;
-
-'reload')
- amq -f
- ;;
-
-'status')
- # run amq -v to produce status
- pid=`amq -p 2>/dev/null`
- if [ $? = 0 ]
- then
- echo "amd (pid $pid) is running..."
- else
- echo "amd is stopped"
- fi
- ;;
-
-# start_msg and stop_msg are for HPUX
-'start_msg')
- echo "Start am-utils 6.1 automounter"
- ;;
-'stop_msg')
- echo "Stop am-utils 6.1 automounter"
- ;;
-
-*)
- echo "Usage: $0 [start|stop|status|restart|condrestart|reload]"
- ;;
-esac
diff --git a/contrib/amd/scripts/ctl-hlfsd.in b/contrib/amd/scripts/ctl-hlfsd.in
deleted file mode 100755
index ee0dd27ca15a..000000000000
--- a/contrib/amd/scripts/ctl-hlfsd.in
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/bin/sh
-# control starting, stopping, or restarting hlfsd.
-# usage: ctl-hlfsd [start | stop | restart]
-#
-# Package: am-utils-6.x
-# Author: Erez Zadok <ezk@cs.columbia.edu>
-#
-# chkconfig: - 72 28
-# description: hlfsd is a daemon similar to amd, used to redirect user
-# mail to home directory of the user
-# processname: hlfsd
-#
-
-# set path
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-PATH=@sbindir@:@bindir@:/usr/ucb:/usr/bin:/bin:${PATH}
-export PATH
-
-# kill the named process(es)
-killproc()
-{
-# try bsd style ps
-pscmd="ps axc"
-pid=`${pscmd} 2>/dev/null | grep "$1" | sed -e 's/^ *//' -e 's/ .*//'`
-if test "$pid" != ""
-then
- kill $pid
- return 0
-fi
-
-# try bsd44 style ps
-pscmd="ps -x"
-pid=`${pscmd} 2>/dev/null | grep "$1" | sed -e 's/^ *//' -e 's/ .*//'`
-if test "$pid" != ""
-then
- kill $pid
- return 0
-fi
-
-# try svr4 style ps
-pscmd="ps -e"
-pid=`${pscmd} 2>/dev/null | grep "$1" | sed -e 's/^ *//' -e 's/ .*//'`
-if test "$pid" != ""
-then
- kill $pid
- return 0
-fi
-
-# failed
-return 1
-}
-
-# before running any real programs, chdir to / to avoid possible hangs on (NFS)
-# mounts.
-cd /
-
-# locate logs directory
-if [ -d /var/log ]; then
- logdir="/var/log"
-else
- logdir="/tmp"
-fi
-
-# locate the mail spool directory
-if [ -d /var/mail/. ]; then
- maildir="/var/mail"
- altmaildir="/var/alt_mail"
-elif [ -d /var/spool/mail/. ]; then
- maildir="/var/spool/mail"
- altmaildir="/var/spool/alt_mail"
-else
- maildir="/usr/spool/mail"
- altmaildir="/usr/spool/alt_mail"
-fi
-
-# locate any optional password file
-if [ -f @sysconfdir@/passwd ]; then
- PASSWD_FILE="-P @sysconfdir@/passwd"
-else
- PASSWD_FILE=""
-fi
-
-case "$1" in
-'start')
- #
- # Start the hlfsd mail redirector service
- #
- if [ -x @sbindir@/hlfsd -a -h $maildir ]
- then
- echo @sbindir@/hlfsd ${PASSWD_FILE} -a $altmaildir -x all -l $logdir/hlfsd /mail/home .mailspool
- @sbindir@/hlfsd ${PASSWD_FILE} -a $altmaildir -x all -l $logdir/hlfsd /mail/home .mailspool &
- test -x /var/lock/subsys && touch /var/lock/subsys/hlfsd
- fi
- ;;
-
-'stop')
- # prepend space to program name to ensure only amd process dies
- killproc " hlfsd"
- test -f /var/lock/subsys/hlfsd && rm -f /var/lock/subsys/hlfsd
- ;;
-
-'restart')
- # kill hlfsd, wait for it to die, then restart
- echo "killing hlfsd..."
- ctl-hlfsd stop
- echo "Waiting for 10 seconds..."
- sleep 10 # hope that would be enough
- echo "Restarting hlfsd..."
- ctl-hlfsd start
- ;;
-
-*)
- echo "Usage: @sbindir@/ctl-hlfsd [ start | stop | restart ]"
- ;;
-esac
diff --git a/contrib/amd/scripts/expn.1 b/contrib/amd/scripts/expn.1
deleted file mode 100644
index f316247b4a9c..000000000000
--- a/contrib/amd/scripts/expn.1
+++ /dev/null
@@ -1,1369 +0,0 @@
-#!@PERL@
-'di ';
-'ds 00 \\"';
-'ig 00 ';
-#
-# THIS PROGRAM IS ITS OWN MANUAL PAGE. INSTALL IN man & bin.
-#
-
-# hardcoded constants, should work fine for BSD-based systems
-#require 'sys/socket.ph'; # perl 4
-use Socket; # perl 5
-$AF_INET = &AF_INET;
-$SOCK_STREAM = &SOCK_STREAM;
-$sockaddr = 'S n a4 x8';
-
-# system requirements:
-# must have 'nslookup' and 'hostname' programs.
-
-# $Header: /home/cvsroot/am-utils/scripts/expn.1,v 1.4 2003/07/18 15:17:37 ezk Exp $
-
-# TODO:
-# less magic should apply to command-line addresses
-# less magic should apply to local addresses
-# add magic to deal with cross-domain cnames
-
-# Checklist: (hard addresses)
-# 250 Kimmo Suominen <"|/usr/local/mh/lib/slocal -user kim"@grendel.tac.nyc.ny.us>
-# harry@hofmann.cs.Berkeley.EDU -> harry@tenet (.berkeley.edu) [dead]
-# bks@cs.berkeley.edu -> shiva.CS (.berkeley.edu) [dead]
-# dan@tc.cornell.edu -> brown@tiberius (.tc.cornell.edu)
-
-#############################################################################
-#
-# Copyright (c) 1993 David Muir Sharnoff
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgment:
-# This product includes software developed by the David Muir Sharnoff.
-# 4. The name of David Sharnoff may not be used to endorse or promote products
-# derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE DAVID MUIR SHARNOFF ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL DAVID MUIR SHARNOFF BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# This copyright notice derived from material copyrighted by the Regents
-# of the University of California.
-#
-# Contributions accepted.
-#
-#############################################################################
-
-# overall structure:
-# in an effort to not trace each address individually, but rather
-# ask each server in turn a whole bunch of questions, addresses to
-# be expanded are queued up.
-#
-# This means that all accounting w.r.t. an address must be stored in
-# various arrays. Generally these arrays are indexed by the
-# string "$addr *** $server" where $addr is the address to be
-# expanded "foo" or maybe "foo@bar" and $server is the hostname
-# of the SMTP server to contact.
-#
-
-# important global variables:
-#
-# @hosts : list of servers still to be contacted
-# $server : name of the current we are currently looking at
-# @users = $users{@hosts[0]} : addresses to expand at this server
-# $u = $users[0] : the current address being expanded
-# $names{"$users[0] *** $server"} : the 'name' associated with the address
-# $mxbacktrace{"$users[0] *** $server"} : record of mx expansion
-# $mx_secondary{$server} : other mx relays at the same priority
-# $domainify_fallback{"$users[0] *** $server"} : alternative names to try
-# instead of $server if $server doesn't work
-# $temporary_redirect{"$users[0] *** $server"} : when trying alternates,
-# temporarily channel all tries along current path
-# $giveup{$server} : do not bother expanding addresses at $server
-# $verbose : -v
-# $watch : -w
-# $vw : -v or -w
-# $debug : -d
-# $valid : -a
-# $levels : -1
-# S : the socket connection to $server
-
-$have_nslookup = 1; # we have the nslookup program
-$port = 'smtp';
-$av0 = $0;
-$ENV{'PATH'} .= ":/usr/etc" unless $ENV{'PATH'} =~ m,/usr/etc,;
-$ENV{'PATH'} .= ":/usr/ucb" unless $ENV{'PATH'} =~ m,/usr/ucb,;
-select(STDERR);
-
-$0 = "$av0 - running hostname";
-chop($name = `hostname || uname -n`);
-
-$0 = "$av0 - lookup host FQDN and IP addr";
-($hostname,$aliases,$type,$len,$thisaddr) = gethostbyname($name);
-
-$0 = "$av0 - parsing args";
-$usage = "Usage: $av0 [-1avwd] user[\@host] [user2[host2] ...]";
-for $a (@ARGV) {
- die $usage if $a eq "-";
- while ($a =~ s/^(-.*)([1avwd])/$1/) {
- eval '$'."flag_$2 += 1";
- }
- next if $a eq "-";
- die $usage if $a =~ /^-/;
- &expn(&parse($a,$hostname,undef,1));
-}
-$verbose = $flag_v;
-$watch = $flag_w;
-$vw = $flag_v + $flag_w;
-$debug = $flag_d;
-$valid = $flag_a;
-$levels = $flag_1;
-
-die $usage unless @hosts;
-if ($valid) {
- if ($valid == 1) {
- $validRequirement = 0.8;
- } elsif ($valid == 2) {
- $validRequirement = 1.0;
- } elsif ($valid == 3) {
- $validRequirement = 0.9;
- } else {
- $validRequirement = (1 - (1/($valid-3)));
- print "validRequirement = $validRequirement\n" if $debug;
- }
-}
-
-$0 = "$av0 - building local socket";
-($name,$aliases,$proto) = getprotobyname('tcp');
-($name,$aliases,$port) = getservbyname($port,'tcp')
- unless $port =~ /^\d+/;
-$this = pack($sockaddr, &AF_INET, 0, $thisaddr);
-
-HOST:
-while (@hosts) {
- $server = shift(@hosts);
- @users = split(' ',$users{$server});
- delete $users{$server};
-
- # is this server already known to be bad?
- $0 = "$av0 - looking up $server";
- if ($giveup{$server}) {
- &giveup('mx domainify',$giveup{$server});
- next;
- }
-
- # do we already have an mx record for this host?
- next HOST if &mxredirect($server,*users);
-
- # look it up, or try for an mx.
- $0 = "$av0 - gethostbyname($server)";
-
- ($name,$aliases,$type,$len,$thataddr) = gethostbyname($server);
- # if we can't get an A record, try for an MX record.
- unless($thataddr) {
- &mxlookup(1,$server,"$server: could not resolve name",*users);
- next HOST;
- }
-
- # get a connection, or look for an mx
- $0 = "$av0 - socket to $server";
- $that = pack($sockaddr, &AF_INET, $port, $thataddr);
- socket(S, &AF_INET, &SOCK_STREAM, $proto)
- || die "socket: $!";
- $0 = "$av0 - bind to $server";
- bind(S, $this)
- || die "bind $hostname,0: $!";
- $0 = "$av0 - connect to $server";
- print "debug = $debug server = $server\n" if $debug > 8;
- if (! connect(S, $that) || ($debug == 10 && $server =~ /relay\d.UU.NET$/i)) {
- $0 = "$av0 - $server: could not connect: $!\n";
- $emsg = $!;
- unless (&mxlookup(0,$server,"$server: could not connect: $!",*users)) {
- &giveup('mx',"$server: Could not connect: $emsg");
- }
- next HOST;
- }
- select((select(S),$| = 1)[0]); # don't buffer output to S
-
- # read the greeting
- $0 = "$av0 - talking to $server";
- &alarm("greeting with $server",'');
- while(<S>) {
- alarm(0);
- print if $watch;
- if (/^(\d+)([- ])/) {
- if ($1 != 220) {
- $0 = "$av0 - bad numeric response from $server";
- &alarm("giving up after bad response from $server",'');
- &read_response($2,$watch);
- alarm(0);
- print STDERR "$server: NOT 220 greeting: $_"
- if ($debug || $vw);
- if (&mxlookup(0,$server,"$server: did not respond with a 220 greeting",*users)) {
- close(S);
- next HOST;
- }
- }
- last if ($2 eq " ");
- } else {
- $0 = "$av0 - bad response from $server";
- print STDERR "$server: NOT 220 greeting: $_"
- if ($debug || $vw);
- unless (&mxlookup(0,$server,"$server: did not respond with SMTP codes",*users)) {
- &giveup('',"$server: did not talk SMTP");
- }
- close(S);
- next HOST;
- }
- &alarm("greeting with $server",'');
- }
- alarm(0);
-
- # if this causes problems, remove it
- $0 = "$av0 - sending helo to $server";
- &alarm("sending helo to $server","");
- &ps("helo $hostname");
- while(<S>) {
- print if $watch;
- last if /^\d+ /;
- }
- alarm(0);
-
- # try the users, one by one
- USER:
- while(@users) {
- $u = shift(@users);
- $0 = "$av0 - expanding $u [\@$server]";
-
- # do we already have a name for this user?
- $oldname = $names{"$u *** $server"};
-
- print &compact($u,$server)." ->\n" if ($verbose && ! $valid);
- if ($valid) {
- #
- # when running with -a, we delay taking any action
- # on the results of our query until we have looked
- # at the complete output. @toFinal stores expansions
- # that will be final if we take them. @toExpn stores
- # expansions that are not final. @isValid keeps
- # track of our ability to send mail to each of the
- # expansions.
- #
- @isValid = ();
- @toFinal = ();
- @toExpn = ();
- }
-
-# ($ecode,@expansion) = &expn_vrfy($u,$server);
- (@foo) = &expn_vrfy($u,$server);
- ($ecode,@expansion) = @foo;
- if ($ecode) {
- &giveup('',$ecode,$u);
- last USER;
- }
-
- for $s (@expansion) {
- $s =~ s/[\n\r]//g;
- $0 = "$av0 - parsing $server: $s";
-
- $skipwatch = $watch;
-
- if ($s =~ /^[25]51([- ]).*<(.+)>/) {
- print "$s" if $watch;
- print "(pretending 250$1<$2>)" if ($debug && $watch);
- print "\n" if $watch;
- $s = "250$1<$2>";
- $skipwatch = 0;
- }
-
- if ($s =~ /^250([- ])(.+)/) {
- print "$s\n" if $skipwatch;
- ($done,$addr) = ($1,$2);
- ($newhost, $newaddr, $newname) = &parse($addr,$server,$oldname, $#expansion == 0);
- print "($newhost, $newaddr, $newname) = &parse($addr, $server, $oldname)\n" if $debug;
- if (! $newhost) {
- # no expansion is possible w/o a new server to call
- if ($valid) {
- push(@isValid, &validAddr($newaddr));
- push(@toFinal,$newaddr,$server,$newname);
- } else {
- &verbose(&final($newaddr,$server,$newname));
- }
- } else {
- $newmxhost = &mx($newhost,$newaddr);
- print "$newmxhost = &mx($newhost)\n"
- if ($debug && $newhost ne $newmxhost);
- $0 = "$av0 - parsing $newaddr [@$newmxhost]";
- print "levels = $levels, level{$u *** $server} = ".$level{"$u *** $server"}."\n" if ($debug > 1);
- # If the new server is the current one,
- # it would have expanded things for us
- # if it could have. Mx records must be
- # followed to compare server names.
- # We are also done if the recursion
- # count has been exceeded.
- if (&trhost($newmxhost) eq &trhost($server) || ($levels && $level{"$u *** $server"} >= $levels)) {
- if ($valid) {
- push(@isValid, &validAddr($newaddr));
- push(@toFinal,$newaddr,$newmxhost,$newname);
- } else {
- &verbose(&final($newaddr,$newmxhost,$newname));
- }
- } else {
- # more work to do...
- if ($valid) {
- push(@isValid, &validAddr($newaddr));
- push(@toExpn,$newmxhost,$newaddr,$newname,$level{"$u *** $server"});
- } else {
- &verbose(&expn($newmxhost,$newaddr,$newname,$level{"$u *** $server"}));
- }
- }
- }
- last if ($done eq " ");
- next;
- }
- # 550 is a known code... Should the be
- # included in -a output? Might be a bug
- # here. Does it matter? Can assume that
- # there won't be UNKNOWN USER responses
- # mixed with valid users?
- if ($s =~ /^(550)([- ])/) {
- if ($valid) {
- print STDERR "\@$server:$u ($oldname) USER UNKNOWN\n";
- } else {
- &verbose(&final($u,$server,$oldname,"USER UNKNOWN"));
- }
- last if ($2 eq " ");
- next;
- }
- # 553 is a known code...
- if ($s =~ /^(553)([- ])/) {
- if ($valid) {
- print STDERR "\@$server:$u ($oldname) USER AMBIGUOUS\n";
- } else {
- &verbose(&final($u,$server,$oldname,"USER AMBIGUOUS"));
- }
- last if ($2 eq " ");
- next;
- }
- # 252 is a known code...
- if ($s =~ /^(252)([- ])/) {
- if ($valid) {
- print STDERR "\@$server:$u ($oldname) REFUSED TO VRFY\n";
- } else {
- &verbose(&final($u,$server,$oldname,"REFUSED TO VRFY"));
- }
- last if ($2 eq " ");
- next;
- }
- &giveup('',"$server: did not grok '$s'",$u);
- last USER;
- }
-
- if ($valid) {
- #
- # now we decide if we are going to take these
- # expansions or roll them back.
- #
- $avgValid = &average(@isValid);
- print "avgValid = $avgValid\n" if $debug;
- if ($avgValid >= $validRequirement) {
- print &compact($u,$server)." ->\n" if $verbose;
- while (@toExpn) {
- &verbose(&expn(splice(@toExpn,0,4)));
- }
- while (@toFinal) {
- &verbose(&final(splice(@toFinal,0,3)));
- }
- } else {
- print "Tossing some valid to avoid invalid ".&compact($u,$server)."\n" if ($avgValid > 0.0 && ($vw || $debug));
- print &compact($u,$server)." ->\n" if $verbose;
- &verbose(&final($u,$server,$newname));
- }
- }
- }
-
- &alarm("sending 'quit' to $server",'');
- $0 = "$av0 - sending 'quit' to $server";
- &ps("quit");
- while(<S>) {
- print if $watch;
- last if /^\d+ /;
- }
- close(S);
- alarm(0);
-}
-
-$0 = "$av0 - printing final results";
-print "----------\n" if $vw;
-select(STDOUT);
-for $f (sort @final) {
- print "$f\n";
-}
-unlink("/tmp/expn$$");
-exit(0);
-
-
-# abandon all attempts deliver to $server
-# register the current addresses as the final ones
-sub giveup
-{
- local($redirect_okay,$reason,$user) = @_;
- local($us,@so,$nh,@remaining_users);
- local($pk,$file,$line);
- ($pk, $file, $line) = caller;
-
- $0 = "$av0 - giving up on $server: $reason";
- #
- # add back a user if we gave up in the middle
- #
- push(@users,$user) if $user;
- #
- # don't bother with this system anymore
- #
- unless ($giveup{$server}) {
- $giveup{$server} = $reason;
- print STDERR "$reason\n";
- }
- print "Giveup at $file:$line!!! redirect okay = $redirect_okay; $reason\n" if $debug;
- #
- # Wait!
- # Before giving up, see if there is a chance that
- # there is another host to redirect to!
- # (Kids, don't do this at home! Hacking is a dangerous
- # crime and you could end up behind bars.)
- #
- for $u (@users) {
- if ($redirect_okay =~ /\bmx\b/) {
- next if &try_fallback('mx',$u,*server,
- *mx_secondary,
- *already_mx_fellback);
- }
- if ($redirect_okay =~ /\bdomainify\b/) {
- next if &try_fallback('domainify',$u,*server,
- *domainify_fallback,
- *already_domainify_fellback);
- }
- push(@remaining_users,$u);
- }
- @users = @remaining_users;
- for $u (@users) {
- print &compact($u,$server)." ->\n" if ($verbose && $valid && $u);
- &verbose(&final($u,$server,$names{"$u *** $server"},$reason));
- }
-}
-#
-# This routine is used only within &giveup. It checks to
-# see if we really have to giveup or if there is a second
-# chance because we did something before that can be
-# backtracked.
-#
-# %fallback{"$user *** $host"} tracks what is able to fallback
-# %fellback{"$user *** $host"} tracks what has fallen back
-#
-# If there is a valid backtrack, then queue up the new possibility
-#
-sub try_fallback
-{
- local($method,$user,*host,*fall_table,*fellback) = @_;
- local($us,$fallhost,$oldhost,$ft,$i);
-
- if ($debug > 8) {
- print "Fallback table $method:\n";
- for $i (sort keys %fall_table) {
- print "\t'$i'\t\t'$fall_table{$i}'\n";
- }
- print "Fellback table $method:\n";
- for $i (sort keys %fellback) {
- print "\t'$i'\t\t'$fellback{$i}'\n";
- }
- print "U: $user H: $host\n";
- }
-
- $us = "$user *** $host";
- if (defined $fellback{$us}) {
- #
- # Undo a previous fallback so that we can try again
- # Nested fallbacks are avoided because they could
- # lead to infinite loops
- #
- $fallhost = $fellback{$us};
- print "Already $method fell back from $us -> \n" if $debug;
- $us = "$user *** $fallhost";
- $oldhost = $fallhost;
- } elsif (($method eq 'mx') && (defined $mxbacktrace{$us}) && (defined $mx_secondary{$mxbacktrace{$us}})) {
- print "Fallback an MX expansion $us -> \n" if $debug;
- $oldhost = $mxbacktrace{$us};
- } else {
- print "Oldhost($host, $us) = " if $debug;
- $oldhost = $host;
- }
- print "$oldhost\n" if $debug;
- if (((defined $fall_table{$us}) && ($ft = $us)) || ((defined $fall_table{$oldhost}) && ($ft = $oldhost))) {
- print "$method Fallback = ".$fall_table{$ft}."\n" if $debug;
- local(@so,$newhost);
- @so = split(' ',$fall_table{$ft});
- $newhost = shift(@so);
- print "Falling back ($method) $us -> $newhost (from $oldhost)\n" if $debug;
- if ($method eq 'mx') {
- if (! defined ($mxbacktrace{"$user *** $newhost"})) {
- if (defined $mxbacktrace{"$user *** $oldhost"}) {
- print "resetting oldhost $oldhost to the original: " if $debug;
- $oldhost = $mxbacktrace{"$user *** $oldhost"};
- print "$oldhost\n" if $debug;
- }
- $mxbacktrace{"$user *** $newhost"} = $oldhost;
- print "mxbacktrace $user *** $newhost -> $oldhost\n" if $debug;
- }
- $mx{&trhost($oldhost)} = $newhost;
- } else {
- $temporary_redirect{$us} = $newhost;
- }
- if (@so) {
- print "Can still $method $us: @so\n" if $debug;
- $fall_table{$ft} = join(' ',@so);
- } else {
- print "No more fallbacks for $us\n" if $debug;
- delete $fall_table{$ft};
- }
- if (defined $create_host_backtrack{$us}) {
- $create_host_backtrack{"$user *** $newhost"}
- = $create_host_backtrack{$us};
- }
- $fellback{"$user *** $newhost"} = $oldhost;
- &expn($newhost,$user,$names{$us},$level{$us});
- return 1;
- }
- delete $temporary_redirect{$us};
- $host = $oldhost;
- return 0;
-}
-# return 1 if you could send mail to the address as is.
-sub validAddr
-{
- local($addr) = @_;
- $res = &do_validAddr($addr);
- print "validAddr($addr) = $res\n" if $debug;
- $res;
-}
-sub do_validAddr
-{
- local($addr) = @_;
- local($urx) = "[-A-Za-z_.0-9+]+";
-
- # \u
- return 0 if ($addr =~ /^\\/);
- # ?@h
- return 1 if ($addr =~ /.\@$urx$/);
- # @h:?
- return 1 if ($addr =~ /^\@$urx\:./);
- # h!u
- return 1 if ($addr =~ /^$urx!./);
- # u
- return 1 if ($addr =~ /^$urx$/);
- # ?
- print "validAddr($addr) = ???\n" if $debug;
- return 0;
-}
-# Some systems use expn and vrfy interchangeably. Some only
-# implement one or the other. Some check expn against mailing
-# lists and vrfy against users. It doesn't appear to be
-# consistent.
-#
-# So, what do we do? We try everything!
-#
-#
-# Ranking of result codes: good: 250, 251/551, 252, 550, anything else
-#
-# Ranking of inputs: best: user@host.domain, okay: user
-#
-# Return value: $error_string, @responses_from_server
-sub expn_vrfy
-{
- local($u,$server) = @_;
- local(@c) = ('expn', 'vrfy');
- local(@try_u) = $u;
- local(@ret,$code);
-
- if (($u =~ /(.+)@(.+)/) && (&trhost($2) eq &trhost($server))) {
- push(@try_u,$1);
- }
-
- TRY:
- for $c (@c) {
- for $try_u (@try_u) {
- &alarm("${c}'ing $try_u on $server",'',$u);
- &ps("$c $try_u");
- alarm(0);
- $s = <S>;
- if ($s eq '') {
- return "$server: lost connection";
- }
- if ($s !~ /^(\d+)([- ])/) {
- return "$server: garbled reply to '$c $try_u'";
- }
- if ($1 == 250) {
- $code = 250;
- @ret = ("",$s);
- push(@ret,&read_response($2,$debug));
- return (@ret);
- }
- if ($1 == 551 || $1 == 251) {
- $code = $1;
- @ret = ("",$s);
- push(@ret,&read_response($2,$debug));
- next;
- }
- if ($1 == 252 && ($code == 0 || $code == 550)) {
- $code = 252;
- @ret = ("",$s);
- push(@ret,&read_response($2,$watch));
- next;
- }
- if ($1 == 550 && $code == 0) {
- $code = 550;
- @ret = ("",$s);
- push(@ret,&read_response($2,$watch));
- next;
- }
- &read_response($2,$watch);
- }
- }
- return "$server: expn/vrfy not implemented" unless @ret;
- return @ret;
-}
-# sometimes the old parse routine (now parse2) didn't
-# reject funky addresses.
-sub parse
-{
- local($oldaddr,$server,$oldname,$one_to_one) = @_;
- local($newhost, $newaddr, $newname, $um) = &parse2($oldaddr,$server,$oldname,$one_to_one);
- if ($newaddr =~ m,^["/],) {
- return (undef, $oldaddr, $newname) if $valid;
- return (undef, $um, $newname);
- }
- return ($newhost, $newaddr, $newname);
-}
-
-# returns ($new_smtp_server,$new_address,$new_name)
-# given a response from a SMTP server ($newaddr), the
-# current host ($server), the old "name" and a flag that
-# indicates if it is being called during the initial
-# command line parsing ($parsing_args)
-sub parse2
-{
- local($newaddr,$context_host,$old_name,$parsing_args) = @_;
- local(@names) = $old_name;
- local($urx) = "[-A-Za-z_.0-9+]+";
- local($unmangle);
-
- #
- # first, separate out the address part.
- #
-
- #
- # [NAME] <ADDR [(NAME)]>
- # [NAME] <[(NAME)] ADDR
- # ADDR [(NAME)]
- # (NAME) ADDR
- # [(NAME)] <ADDR>
- #
- if ($newaddr =~ /^\<(.*)\>$/) {
- print "<A:$1>\n" if $debug;
- ($newaddr) = &trim($1);
- print "na = $newaddr\n" if $debug;
- }
- if ($newaddr =~ /^([^\<\>]*)\<([^\<\>]*)\>([^\<\>]*)$/) {
- # address has a < > pair in it.
- print "N:$1 <A:$2> N:$3\n" if $debug;
- ($newaddr) = &trim($2);
- unshift(@names, &trim($3,$1));
- print "na = $newaddr\n" if $debug;
- }
- if ($newaddr =~ /^([^\(\)]*)\(([^\(\)]*)\)([^\(\)]*)$/) {
- # address has a ( ) pair in it.
- print "A:$1 (N:$2) A:$3\n" if $debug;
- unshift(@names,&trim($2));
- local($f,$l) = (&trim($1),&trim($3));
- if (($f && $l) || !($f || $l)) {
- # address looks like:
- # foo (bar) baz or (bar)
- # not allowed!
- print STDERR "Could not parse $newaddr\n" if $vw;
- return(undef,$newaddr,&firstname(@names));
- }
- $newaddr = $f if $f;
- $newaddr = $l if $l;
- print "newaddr now = $newaddr\n" if $debug;
- }
- #
- # @foo:bar
- # j%k@l
- # a@b
- # b!a
- # a
- #
- $unmangle = $newaddr;
- if ($newaddr =~ /^\@($urx)\:(.+)$/) {
- print "(\@:)" if $debug;
- # this is a bit of a cheat, but it seems necessary
- return (&domainify($1,$context_host,$2),$2,&firstname(@names),$unmangle);
- }
- if ($newaddr =~ /^(.+)\@($urx)$/) {
- print "(\@)" if $debug;
- return (&domainify($2,$context_host,$newaddr),$newaddr,&firstname(@names),$unmangle);
- }
- if ($parsing_args) {
- if ($newaddr =~ /^($urx)\!(.+)$/) {
- return (&domainify($1,$context_host,$newaddr),$newaddr,&firstname(@names),$unmangle);
- }
- if ($newaddr =~ /^($urx)$/) {
- return ($context_host,$newaddr,&firstname(@names),$unmangle);
- }
- print STDERR "Could not parse $newaddr\n";
- }
- print "(?)" if $debug;
- return(undef,$newaddr,&firstname(@names),$unmangle);
-}
-# return $u (@$server) unless $u includes reference to $server
-sub compact
-{
- local($u, $server) = @_;
- local($se) = $server;
- local($sp);
- $se =~ s/(\W)/\\$1/g;
- $sp = " (\@$server)";
- if ($u !~ /$se/i) {
- return "$u$sp";
- }
- return $u;
-}
-# remove empty (spaces don't count) members from an array
-sub trim
-{
- local(@v) = @_;
- local($v,@r);
- for $v (@v) {
- $v =~ s/^\s+//;
- $v =~ s/\s+$//;
- push(@r,$v) if ($v =~ /\S/);
- }
- return(@r);
-}
-# using the host part of an address, and the server name, add the
-# servers' domain to the address if it doesn't already have a
-# domain. Since this sometimes fails, save a back reference so
-# it can be unrolled.
-sub domainify
-{
- local($host,$domain_host,$u) = @_;
- local($domain,$newhost);
-
- # cut of trailing dots
- $host =~ s/\.$//;
- $domain_host =~ s/\.$//;
-
- if ($domain_host !~ /\./) {
- #
- # domain host isn't, keep $host whatever it is
- #
- print "domainify($host,$domain_host) = $host\n" if $debug;
- return $host;
- }
-
- #
- # There are several weird situations that need to be
- # accounted for. They have to do with domain relay hosts.
- #
- # Examples:
- # host server "right answer"
- #
- # shiva.cs cs.berkeley.edu shiva.cs.berkeley.edu
- # shiva cs.berkeley.edu shiva.cs.berekley.edu
- # cumulus reed.edu @reed.edu:cumulus.uucp
- # tiberius tc.cornell.edu tiberius.tc.cornell.edu
- #
- # The first try must always be to cut the domain part out of
- # the server and tack it onto the host.
- #
- # A reasonable second try is to tack the whole server part onto
- # the host and for each possible repeated element, eliminate
- # just that part.
- #
- # These extra "guesses" get put into the %domainify_fallback
- # array. They will be used to give addresses a second chance
- # in the &giveup routine
- #
-
- local(%fallback);
-
- local($long);
- $long = "$host $domain_host";
- $long =~ tr/A-Z/a-z/;
- print "long = $long\n" if $debug;
- if ($long =~ s/^([^ ]+\.)([^ ]+) \2(\.[^ ]+\.[^ ]+)/$1$2$3/) {
- # matches shiva.cs cs.berkeley.edu and returns shiva.cs.berkeley.edu
- print "condensed fallback $host $domain_host -> $long\n" if $debug;
- $fallback{$long} = 9;
- }
-
- local($fh);
- $fh = $domain_host;
- while ($fh =~ /\./) {
- print "FALLBACK $host.$fh = 1\n" if $debug > 7;
- $fallback{"$host.$fh"} = 1;
- $fh =~ s/^[^\.]+\.//;
- }
-
- $fallback{"$host.$domain_host"} = 2;
-
- ($domain = $domain_host) =~ s/^[^\.]+//;
- $fallback{"$host$domain"} = 6
- if ($domain =~ /\./);
-
- if ($host =~ /\./) {
- #
- # Host is already okay, but let's look for multiple
- # interpretations
- #
- print "domainify($host,$domain_host) = $host\n" if $debug;
- delete $fallback{$host};
- $domainify_fallback{"$u *** $host"} = join(' ',sort {$fallback{$b} <=> $fallback{$a};} keys %fallback) if %fallback;
- return $host;
- }
-
- $domain = ".$domain_host"
- if ($domain !~ /\..*\./);
- $newhost = "$host$domain";
-
- $create_host_backtrack{"$u *** $newhost"} = $domain_host;
- print "domainify($host,$domain_host) = $newhost\n" if $debug;
- delete $fallback{$newhost};
- $domainify_fallback{"$u *** $newhost"} = join(' ',sort {$fallback{$b} <=> $fallback{$a};} keys %fallback) if %fallback;
- if ($debug) {
- print "fallback = ";
- print $domainify_fallback{"$u *** $newhost"}
- if defined($domainify_fallback{"$u *** $newhost"});
- print "\n";
- }
- return $newhost;
-}
-# return the first non-empty element of an array
-sub firstname
-{
- local(@names) = @_;
- local($n);
- while(@names) {
- $n = shift(@names);
- return $n if $n =~ /\S/;
- }
- return undef;
-}
-# queue up more addresses to expand
-sub expn
-{
- local($host,$addr,$name,$level) = @_;
- if ($host) {
- $host = &trhost($host);
-
- if (($debug > 3) || (defined $giveup{$host})) {
- unshift(@hosts,$host) unless $users{$host};
- } else {
- push(@hosts,$host) unless $users{$host};
- }
- $users{$host} .= " $addr";
- $names{"$addr *** $host"} = $name;
- $level{"$addr *** $host"} = $level + 1;
- print "expn($host,$addr,$name)\n" if $debug;
- return "\t$addr\n";
- } else {
- return &final($addr,'NONE',$name);
- }
-}
-# compute the numerical average value of an array
-sub average
-{
- local(@e) = @_;
- return 0 unless @e;
- local($e,$sum);
- for $e (@e) {
- $sum += $e;
- }
- $sum / @e;
-}
-# print to the server (also to stdout, if -w)
-sub ps
-{
- local($p) = @_;
- print ">>> $p\n" if $watch;
- print S "$p\n";
-}
-# return case-adjusted name for a host (for comparison purposes)
-sub trhost
-{
- # treat foo.bar as an alias for Foo.BAR
- local($host) = @_;
- local($trhost) = $host;
- $trhost =~ tr/A-Z/a-z/;
- if ($trhost{$trhost}) {
- $host = $trhost{$trhost};
- } else {
- $trhost{$trhost} = $host;
- }
- $trhost{$trhost};
-}
-# re-queue users if an mx record dictates a redirect
-# don't allow a user to be redirected more than once
-sub mxredirect
-{
- local($server,*users) = @_;
- local($u,$nserver,@still_there);
-
- $nserver = &mx($server);
-
- if (&trhost($nserver) ne &trhost($server)) {
- $0 = "$av0 - mx redirect $server -> $nserver\n";
- for $u (@users) {
- if (defined $mxbacktrace{"$u *** $nserver"}) {
- push(@still_there,$u);
- } else {
- $mxbacktrace{"$u *** $nserver"} = $server;
- print "mxbacktrace{$u *** $nserver} = $server\n"
- if ($debug > 1);
- &expn($nserver,$u,$names{"$u *** $server"});
- }
- }
- @users = @still_there;
- if (! @users) {
- return $nserver;
- } else {
- return undef;
- }
- }
- return undef;
-}
-# follow mx records, return a hostname
-# also follow temporary redirections coming from &domainify and
-# &mxlookup
-sub mx
-{
- local($h,$u) = @_;
-
- for (;;) {
- if (defined $mx{&trhost($h)} && $h ne $mx{&trhost($h)}) {
- $0 = "$av0 - mx expand $h";
- $h = $mx{&trhost($h)};
- return $h;
- }
- if ($u) {
- if (defined $temporary_redirect{"$u *** $h"}) {
- $0 = "$av0 - internal redirect $h";
- print "Temporary redirect taken $u *** $h -> " if $debug;
- $h = $temporary_redirect{"$u *** $h"};
- print "$h\n" if $debug;
- next;
- }
- $htr = &trhost($h);
- if (defined $temporary_redirect{"$u *** $htr"}) {
- $0 = "$av0 - internal redirect $h";
- print "temporary redirect taken $u *** $h -> " if $debug;
- $h = $temporary_redirect{"$u *** $htr"};
- print "$h\n" if $debug;
- next;
- }
- }
- return $h;
- }
-}
-# look up mx records with the name server.
-# re-queue expansion requests if possible
-# optionally give up on this host.
-sub mxlookup
-{
- local($lastchance,$server,$giveup,*users) = @_;
- local(*T);
- local(*NSLOOKUP);
- local($nh, $pref,$cpref);
- local($o0) = $0;
- local($nserver);
- local($name,$aliases,$type,$len,$thataddr);
- local(%fallback);
-
- return 1 if &mxredirect($server,*users);
-
- if ((defined $mx{$server}) || (! $have_nslookup)) {
- return 0 unless $lastchance;
- &giveup('mx domainify',$giveup);
- return 0;
- }
-
- $0 = "$av0 - nslookup of $server";
- open(T,">/tmp/expn$$") || die "open > /tmp/expn$$: $!\n";
- print T "set querytype=MX\n";
- print T "$server\n";
- close(T);
- $cpref = 1.0E12;
- undef $nserver;
- open(NSLOOKUP,"nslookup < /tmp/expn$$ 2>&1 |") || die "open nslookup: $!";
- while(<NSLOOKUP>) {
- print if ($debug > 2);
- if (/mail exchanger = ([-A-Za-z_.0-9+]+)/) {
- $nh = $1;
- if (/preference = (\d+)/) {
- $pref = $1;
- if ($pref < $cpref) {
- $nserver = $nh;
- $cpref = $pref;
- } elsif ($pref) {
- $fallback{$pref} .= " $nh";
- }
- }
- }
- if (/Non-existent domain/) {
- #
- # These addresses are hosed. Kaput! Dead!
- # However, if we created the address in the
- # first place then there is a chance of
- # salvation.
- #
- 1 while(<NSLOOKUP>);
- close(NSLOOKUP);
- return 0 unless $lastchance;
- &giveup('domainify',"$server: Non-existent domain",undef,1);
- return 0;
- }
-
- }
- close(NSLOOKUP);
- unlink("/tmp/expn$$");
- unless ($nserver) {
- $0 = "$o0 - finished mxlookup";
- return 0 unless $lastchance;
- &giveup('mx domainify',"$server: Could not resolve address");
- return 0;
- }
-
- # provide fallbacks in case $nserver doesn't work out
- if (defined $fallback{$cpref}) {
- $mx_secondary{$server} = $fallback{$cpref};
- }
-
- $0 = "$av0 - gethostbyname($nserver)";
- ($name,$aliases,$type,$len,$thataddr) = gethostbyname($nserver);
-
- unless ($thataddr) {
- $0 = $o0;
- return 0 unless $lastchance;
- &giveup('mx domainify',"$nserver: could not resolve address");
- return 0;
- }
- print "MX($server) = $nserver\n" if $debug;
- print "$server -> $nserver\n" if $vw && !$debug;
- $mx{&trhost($server)} = $nserver;
- # redeploy the users
- unless (&mxredirect($server,*users)) {
- return 0 unless $lastchance;
- &giveup('mx domainify',"$nserver: only one level of mx redirect allowed");
- return 0;
- }
- $0 = "$o0 - finished mxlookup";
- return 1;
-}
-# if mx expansion did not help to resolve an address
-# (ie: foo@bar became @baz:foo@bar, then undo the
-# expansion).
-# this is only used by &final
-sub mxunroll
-{
- local(*host,*addr) = @_;
- local($r) = 0;
- print "looking for mxbacktrace{$addr *** $host}\n"
- if ($debug > 1);
- while (defined $mxbacktrace{"$addr *** $host"}) {
- print "Unrolling MX expansion: \@$host:$addr -> "
- if ($debug || $verbose);
- $host = $mxbacktrace{"$addr *** $host"};
- print "\@$host:$addr\n"
- if ($debug || $verbose);
- $r = 1;
- }
- return 1 if $r;
- $addr = "\@$host:$addr"
- if ($host =~ /\./);
- return 0;
-}
-# register a completed expansion. Make the final address as
-# simple as possible.
-sub final
-{
- local($addr,$host,$name,$error) = @_;
- local($he);
- local($hb,$hr);
- local($au,$ah);
-
- if ($error =~ /Non-existent domain/) {
- #
- # If we created the domain, then let's undo the
- # damage...
- #
- if (defined $create_host_backtrack{"$addr *** $host"}) {
- while (defined $create_host_backtrack{"$addr *** $host"}) {
- print "Un&domainifying($host) = " if $debug;
- $host = $create_host_backtrack{"$addr *** $host"};
- print "$host\n" if $debug;
- }
- $error = "$host: could not locate";
- } else {
- #
- # If we only want valid addresses, toss out
- # bad host names.
- #
- if ($valid) {
- print STDERR "\@$host:$addr ($name) Non-existent domain\n";
- return "";
- }
- }
- }
-
- MXUNWIND: {
- $0 = "$av0 - final parsing of \@$host:$addr";
- ($he = $host) =~ s/(\W)/\\$1/g;
- if ($addr !~ /@/) {
- # addr does not contain any host
- $addr = "$addr@$host";
- } elsif ($addr !~ /$he/i) {
- # if host part really something else, use the something
- # else.
- if ($addr =~ m/(.*)\@([^\@]+)$/) {
- ($au,$ah) = ($1,$2);
- print "au = $au ah = $ah\n" if $debug;
- if (defined $temporary_redirect{"$addr *** $ah"}) {
- $addr = "$au\@".$temporary_redirect{"$addr *** $ah"};
- print "Rewrite! to $addr\n" if $debug;
- next MXUNWIND;
- }
- }
- # addr does not contain full host
- if ($valid) {
- if ($host =~ /^([^\.]+)(\..+)$/) {
- # host part has a . in it - foo.bar
- ($hb, $hr) = ($1, $2);
- if ($addr =~ /\@([^\.\@]+)$/ && ($1 eq $hb)) {
- # addr part has not .
- # and matches beginning of
- # host part -- tack on a
- # domain name.
- $addr .= $hr;
- } else {
- &mxunroll(*host,*addr)
- && redo MXUNWIND;
- }
- } else {
- &mxunroll(*host,*addr)
- && redo MXUNWIND;
- }
- } else {
- $addr = "${addr}[\@$host]"
- if ($host =~ /\./);
- }
- }
- }
- $name = "$name " if $name;
- $error = " $error" if $error;
- if ($valid) {
- push(@final,"$name<$addr>");
- } else {
- push(@final,"$name<$addr>$error");
- }
- "\t$name<$addr>$error\n";
-}
-
-sub alarm
-{
- local($alarm_action,$alarm_redirect,$alarm_user) = @_;
- alarm(3600);
- $SIG{ALRM} = 'handle_alarm';
-}
-# this involves one great big ugly hack.
-# the "next HOST" unwinds the stack!
-sub handle_alarm
-{
- &giveup($alarm_redirect,"Timed out during $alarm_action",$alarm_user);
- next HOST;
-}
-
-# read the rest of the current smtp daemon's response (and toss it away)
-sub read_response
-{
- local($done,$watch) = @_;
- local(@resp);
- print $s if $watch;
- while(($done eq "-") && ($s = <S>) && ($s =~ /^\d+([- ])/)) {
- print $s if $watch;
- $done = $1;
- push(@resp,$s);
- }
- return @resp;
-}
-# print args if verbose. Return them in any case
-sub verbose
-{
- local(@tp) = @_;
- print "@tp" if $verbose;
-}
-# to pass perl -w:
-@tp;
-$flag_a;
-$flag_d;
-$flag_1;
-%already_domainify_fellback;
-%already_mx_fellback;
-&handle_alarm;
-################### BEGIN PERL/TROFF TRANSITION
-.00 ;
-
-'di
-.nr nl 0-1
-.nr % 0
-.\\"'; __END__
-.\" ############## END PERL/TROFF TRANSITION
-.TH EXPN 1 "March 11, 1993"
-.AT 3
-.SH NAME
-expn \- recursively expand mail aliases
-.SH SYNOPSIS
-.B expn
-.RI [ -a ]
-.RI [ -v ]
-.RI [ -w ]
-.RI [ -d ]
-.RI [ -1 ]
-.IR user [@ hostname ]
-.RI [ user [@ hostname ]]...
-.SH DESCRIPTION
-.B expn
-will use the SMTP
-.B expn
-and
-.B vrfy
-commands to expand mail aliases.
-It will first look up the addresses you provide on the command line.
-If those expand into addresses on other systems, it will
-connect to the other systems and expand again. It will keep
-doing this until no further expansion is possible.
-.SH OPTIONS
-The default output of
-.B expn
-can contain many lines which are not valid
-email addresses. With the
-.I -aa
-flag, only expansions that result in legal addresses
-are used. Since many mailing lists have an illegal
-address or two, the single
-.IR -a ,
-address, flag specifies that a few illegal addresses can
-be mixed into the results. More
-.I -a
-flags vary the ratio. Read the source to track down
-the formula. With the
-.I -a
-option, you should be able to construct a new mailing
-list out of an existing one.
-.LP
-If you wish to limit the number of levels deep that
-.B expn
-will recurse as it traces addresses, use the
-.I -1
-option. For each
-.I -1
-another level will be traversed. So,
-.I -111
-will traverse no more than three levels deep.
-.LP
-The normal mode of operation for
-.B expn
-is to do all of its work silently.
-The following options make it more verbose.
-It is not necessary to make it verbose to see what it is
-doing because as it works, it changes its
-.BR argv [0]
-variable to reflect its current activity.
-To see how it is expanding things, the
-.IR -v ,
-verbose, flag will cause
-.B expn
-to show each address before
-and after translation as it works.
-The
-.IR -w ,
-watch, flag will cause
-.B expn
-to show you its conversations with the mail daemons.
-Finally, the
-.IR -d ,
-debug, flag will expose many of the inner workings so that
-it is possible to eliminate bugs.
-.SH ENVIRONMENT
-No environment variables are used.
-.SH FILES
-.B /tmp/expn$$
-.B temporary file used as input to
-.BR nslookup .
-.SH SEE ALSO
-.BR aliases (5),
-.BR sendmail (8),
-.BR nslookup (8),
-RFC 823, and RFC 1123.
-.SH BUGS
-Not all mail daemons will implement
-.B expn
-or
-.BR vrfy .
-It is not possible to verify addresses that are served
-by such daemons.
-.LP
-When attempting to connect to a system to verify an address,
-.B expn
-only tries one IP address. Most mail daemons
-will try harder.
-.LP
-It is assumed that you are running domain names and that
-the
-.BR nslookup (8)
-program is available. If not,
-.B expn
-will not be able to verify many addresses. It will also pause
-for a long time unless you change the code where it says
-.I $have_nslookup = 1
-to read
-.I $have_nslookup =
-.IR 0 .
-.LP
-Lastly,
-.B expn
-does not handle every valid address. If you have an example,
-please submit a bug report.
-.SH CREDITS
-In 1986 or so, Jon Broome wrote a program of the same name
-that did about the same thing. It has since suffered bit rot
-and Jon Broome has dropped off the face of the earth!
-(Jon, if you are out there, drop me a line)
-.SH AVAILABILITY
-The latest version of
-.B expn
-is available through anonymous ftp at
-.IR ftp://ftp.idiom.com/pub/muir-programs/expn .
-.SH AUTHOR
-.I David Muir Sharnoff\ \ \ \ <muir@idiom.com>
diff --git a/contrib/amd/scripts/expn.in b/contrib/amd/scripts/expn.in
deleted file mode 100755
index 9ae575729366..000000000000
--- a/contrib/amd/scripts/expn.in
+++ /dev/null
@@ -1,1369 +0,0 @@
-#!@PERL@
-'di ';
-'ds 00 \\"';
-'ig 00 ';
-#
-# THIS PROGRAM IS ITS OWN MANUAL PAGE. INSTALL IN man & bin.
-#
-
-# hardcoded constants, should work fine for BSD-based systems
-#require 'sys/socket.ph'; # perl 4
-use Socket; # perl 5
-$AF_INET = &AF_INET;
-$SOCK_STREAM = &SOCK_STREAM;
-
-# system requirements:
-# must have 'nslookup' and 'hostname' programs.
-
-# $Header: /home/cvsroot/am-utils/scripts/expn.in,v 1.5 2002/07/11 14:28:20 ezk Exp $
-
-# TODO:
-# less magic should apply to command-line addresses
-# less magic should apply to local addresses
-# add magic to deal with cross-domain cnames
-
-# Checklist: (hard addresses)
-# 250 Kimmo Suominen <"|/usr/local/mh/lib/slocal -user kim"@grendel.tac.nyc.ny.us>
-# harry@hofmann.cs.Berkeley.EDU -> harry@tenet (.berkeley.edu) [dead]
-# bks@cs.berkeley.edu -> shiva.CS (.berkeley.edu) [dead]
-# dan@tc.cornell.edu -> brown@tiberius (.tc.cornell.edu)
-
-#############################################################################
-#
-# Copyright (c) 1993 David Muir Sharnoff
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. All advertising materials mentioning features or use of this software
-# must display the following acknowledgement:
-# This product includes software developed by the David Muir Sharnoff.
-# 4. The name of David Sharnoff may not be used to endorse or promote products
-# derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE DAVID MUIR SHARNOFF ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL DAVID MUIR SHARNOFF BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# This copyright notice derived from material copyrighted by the Regents
-# of the University of California.
-#
-# Contributions accepted.
-#
-#############################################################################
-
-# overall structure:
-# in an effort to not trace each address individually, but rather
-# ask each server in turn a whole bunch of questions, addresses to
-# be expanded are queued up.
-#
-# This means that all accounting w.r.t. an address must be stored in
-# various arrays. Generally these arrays are indexed by the
-# string "$addr *** $server" where $addr is the address to be
-# expanded "foo" or maybe "foo@bar" and $server is the hostname
-# of the SMTP server to contact.
-#
-
-# important global variables:
-#
-# @hosts : list of servers still to be contacted
-# $server : name of the current we are currently looking at
-# @users = $users{@hosts[0]} : addresses to expand at this server
-# $u = $users[0] : the current address being expanded
-# $names{"$users[0] *** $server"} : the 'name' associated with the address
-# $mxbacktrace{"$users[0] *** $server"} : record of mx expansion
-# $mx_secondary{$server} : other mx relays at the same priority
-# $domainify_fallback{"$users[0] *** $server"} : alternative names to try
-# instead of $server if $server doesn't work
-# $temporary_redirect{"$users[0] *** $server"} : when trying alternates,
-# temporarily channel all tries along current path
-# $giveup{$server} : do not bother expanding addresses at $server
-# $verbose : -v
-# $watch : -w
-# $vw : -v or -w
-# $debug : -d
-# $valid : -a
-# $levels : -1
-# S : the socket connection to $server
-
-$have_nslookup = 1; # we have the nslookup program
-$port = 'smtp';
-$av0 = $0;
-$ENV{'PATH'} .= ":/usr/etc" unless $ENV{'PATH'} =~ m,/usr/etc,;
-$ENV{'PATH'} .= ":/usr/ucb" unless $ENV{'PATH'} =~ m,/usr/ucb,;
-select(STDERR);
-
-$0 = "$av0 - running hostname";
-chop($name = `hostname || uname -n`);
-
-$0 = "$av0 - lookup host FQDN and IP addr";
-($hostname,$aliases,$type,$len,$thisaddr) = gethostbyname($name);
-
-$0 = "$av0 - parsing args";
-$usage = "Usage: $av0 [-1avwd] user[\@host] [user2[\@host2] ...]";
-for $a (@ARGV) {
- die $usage if $a eq "-";
- while ($a =~ s/^(-.*)([1avwd])/$1/) {
- eval '$'."flag_$2 += 1";
- }
- next if $a eq "-";
- die $usage if $a =~ /^-/;
- &expn(&parse($a,$hostname,undef,1));
-}
-$verbose = $flag_v;
-$watch = $flag_w;
-$vw = $flag_v + $flag_w;
-$debug = $flag_d;
-$valid = $flag_a;
-$levels = $flag_1;
-
-die $usage unless @hosts;
-if ($valid) {
- if ($valid == 1) {
- $validRequirement = 0.8;
- } elsif ($valid == 2) {
- $validRequirement = 1.0;
- } elsif ($valid == 3) {
- $validRequirement = 0.9;
- } else {
- $validRequirement = (1 - (1/($valid-3)));
- print "validRequirement = $validRequirement\n" if $debug;
- }
-}
-
-$0 = "$av0 - building local socket";
-($name,$aliases,$proto) = getprotobyname('tcp');
-($name,$aliases,$port) = getservbyname($port,'tcp')
- unless $port =~ /^\d+/;
-$this = sockaddr_in(0, $thisaddr);
-
-HOST:
-while (@hosts) {
- $server = shift(@hosts);
- @users = split(' ',$users{$server});
- delete $users{$server};
-
- # is this server already known to be bad?
- $0 = "$av0 - looking up $server";
- if ($giveup{$server}) {
- &giveup('mx domainify',$giveup{$server});
- next;
- }
-
- # do we already have an mx record for this host?
- next HOST if &mxredirect($server,*users);
-
- # look it up, or try for an mx.
- $0 = "$av0 - gethostbyname($server)";
-
- ($name,$aliases,$type,$len,$thataddr) = gethostbyname($server);
- # if we can't get an A record, try for an MX record.
- unless($thataddr) {
- &mxlookup(1,$server,"$server: could not resolve name",*users);
- next HOST;
- }
-
- # get a connection, or look for an mx
- $0 = "$av0 - socket to $server";
- $that = sockaddr_in($port, $thataddr);
- socket(S, &AF_INET, &SOCK_STREAM, $proto)
- || die "socket: $!";
- $0 = "$av0 - bind to $server";
- bind(S, $this)
- || die "bind $hostname,0: $!";
- $0 = "$av0 - connect to $server";
- print "debug = $debug server = $server\n" if $debug > 8;
- if (! connect(S, $that) || ($debug == 10 && $server =~ /relay\d.UU.NET$/i)) {
- $0 = "$av0 - $server: could not connect: $!\n";
- $emsg = $!;
- unless (&mxlookup(0,$server,"$server: could not connect: $!",*users)) {
- &giveup('mx',"$server: Could not connect: $emsg");
- }
- next HOST;
- }
- select((select(S),$| = 1)[0]); # don't buffer output to S
-
- # read the greeting
- $0 = "$av0 - talking to $server";
- &alarm("greeting with $server",'');
- while(<S>) {
- alarm(0);
- print if $watch;
- if (/^(\d+)([- ])/) {
- if ($1 != 220) {
- $0 = "$av0 - bad numeric response from $server";
- &alarm("giving up after bad response from $server",'');
- &read_response($2,$watch);
- alarm(0);
- print STDERR "$server: NOT 220 greeting: $_"
- if ($debug || $vw);
- if (&mxlookup(0,$server,"$server: did not respond with a 220 greeting",*users)) {
- close(S);
- next HOST;
- }
- }
- last if ($2 eq " ");
- } else {
- $0 = "$av0 - bad response from $server";
- print STDERR "$server: NOT 220 greeting: $_"
- if ($debug || $vw);
- unless (&mxlookup(0,$server,"$server: did not respond with SMTP codes",*users)) {
- &giveup('',"$server: did not talk SMTP");
- }
- close(S);
- next HOST;
- }
- &alarm("greeting with $server",'');
- }
- alarm(0);
-
- # if this causes problems, remove it
- $0 = "$av0 - sending helo to $server";
- &alarm("sending helo to $server","");
- &ps("helo $hostname");
- while(<S>) {
- print if $watch;
- last if /^\d+ /;
- }
- alarm(0);
-
- # try the users, one by one
- USER:
- while(@users) {
- $u = shift(@users);
- $0 = "$av0 - expanding $u [\@$server]";
-
- # do we already have a name for this user?
- $oldname = $names{"$u *** $server"};
-
- print &compact($u,$server)." ->\n" if ($verbose && ! $valid);
- if ($valid) {
- #
- # when running with -a, we delay taking any action
- # on the results of our query until we have looked
- # at the complete output. @toFinal stores expansions
- # that will be final if we take them. @toExpn stores
- # expansions that are not final. @isValid keeps
- # track of our ability to send mail to each of the
- # expansions.
- #
- @isValid = ();
- @toFinal = ();
- @toExpn = ();
- }
-
-# ($ecode,@expansion) = &expn_vrfy($u,$server);
- (@foo) = &expn_vrfy($u,$server);
- ($ecode,@expansion) = @foo;
- if ($ecode) {
- &giveup('',$ecode,$u);
- last USER;
- }
-
- for $s (@expansion) {
- $s =~ s/[\n\r]//g;
- $0 = "$av0 - parsing $server: $s";
-
- $skipwatch = $watch;
-
- if ($s =~ /^[25]51([- ]).*<(.+)>/) {
- print "$s" if $watch;
- print "(pretending 250$1<$2>)" if ($debug && $watch);
- print "\n" if $watch;
- $s = "250$1<$2>";
- $skipwatch = 0;
- }
-
- if ($s =~ /^250([- ])(.+)/) {
- print "$s\n" if $skipwatch;
- ($done,$addr) = ($1,$2);
- ($newhost, $newaddr, $newname) = &parse($addr,$server,$oldname, $#expansion == 0);
- print "($newhost, $newaddr, $newname) = &parse($addr, $server, $oldname)\n" if $debug;
- if (! $newhost) {
- # no expansion is possible w/o a new server to call
- if ($valid) {
- push(@isValid, &validAddr($newaddr));
- push(@toFinal,$newaddr,$server,$newname);
- } else {
- &verbose(&final($newaddr,$server,$newname));
- }
- } else {
- $newmxhost = &mx($newhost,$newaddr);
- print "$newmxhost = &mx($newhost)\n"
- if ($debug && $newhost ne $newmxhost);
- $0 = "$av0 - parsing $newaddr [@$newmxhost]";
- print "levels = $levels, level{$u *** $server} = ".$level{"$u *** $server"}."\n" if ($debug > 1);
- # If the new server is the current one,
- # it would have expanded things for us
- # if it could have. Mx records must be
- # followed to compare server names.
- # We are also done if the recursion
- # count has been exceeded.
- if (&trhost($newmxhost) eq &trhost($server) || ($levels && $level{"$u *** $server"} >= $levels)) {
- if ($valid) {
- push(@isValid, &validAddr($newaddr));
- push(@toFinal,$newaddr,$newmxhost,$newname);
- } else {
- &verbose(&final($newaddr,$newmxhost,$newname));
- }
- } else {
- # more work to do...
- if ($valid) {
- push(@isValid, &validAddr($newaddr));
- push(@toExpn,$newmxhost,$newaddr,$newname,$level{"$u *** $server"});
- } else {
- &verbose(&expn($newmxhost,$newaddr,$newname,$level{"$u *** $server"}));
- }
- }
- }
- last if ($done eq " ");
- next;
- }
- # 550 is a known code... Should the be
- # included in -a output? Might be a bug
- # here. Does it matter? Can assume that
- # there won't be UNKNOWN USER responses
- # mixed with valid users?
- if ($s =~ /^(550)([- ])/) {
- if ($valid) {
- print STDERR "\@$server:$u ($oldname) USER UNKNOWN\n";
- } else {
- &verbose(&final($u,$server,$oldname,"USER UNKNOWN"));
- }
- last if ($2 eq " ");
- next;
- }
- # 553 is a known code...
- if ($s =~ /^(553)([- ])/) {
- if ($valid) {
- print STDERR "\@$server:$u ($oldname) USER AMBIGUOUS\n";
- } else {
- &verbose(&final($u,$server,$oldname,"USER AMBIGUOUS"));
- }
- last if ($2 eq " ");
- next;
- }
- # 252 is a known code...
- if ($s =~ /^(252)([- ])/) {
- if ($valid) {
- print STDERR "\@$server:$u ($oldname) REFUSED TO VRFY\n";
- } else {
- &verbose(&final($u,$server,$oldname,"REFUSED TO VRFY"));
- }
- last if ($2 eq " ");
- next;
- }
- &giveup('',"$server: did not grok '$s'",$u);
- last USER;
- }
-
- if ($valid) {
- #
- # now we decide if we are going to take these
- # expansions or roll them back.
- #
- $avgValid = &average(@isValid);
- print "avgValid = $avgValid\n" if $debug;
- if ($avgValid >= $validRequirement) {
- print &compact($u,$server)." ->\n" if $verbose;
- while (@toExpn) {
- &verbose(&expn(splice(@toExpn,0,4)));
- }
- while (@toFinal) {
- &verbose(&final(splice(@toFinal,0,3)));
- }
- } else {
- print "Tossing some valid to avoid invalid ".&compact($u,$server)."\n" if ($avgValid > 0.0 && ($vw || $debug));
- print &compact($u,$server)." ->\n" if $verbose;
- &verbose(&final($u,$server,$newname));
- }
- }
- }
-
- &alarm("sending 'quit' to $server",'');
- $0 = "$av0 - sending 'quit' to $server";
- &ps("quit");
- while(<S>) {
- print if $watch;
- last if /^\d+ /;
- }
- close(S);
- alarm(0);
-}
-
-$0 = "$av0 - printing final results";
-print "----------\n" if $vw;
-select(STDOUT);
-for $f (sort @final) {
- print "$f\n";
-}
-unlink("/tmp/expn$$");
-exit(0);
-
-
-# abandon all attempts deliver to $server
-# register the current addresses as the final ones
-sub giveup
-{
- local($redirect_okay,$reason,$user) = @_;
- local($us,@so,$nh,@remaining_users);
- local($pk,$file,$line);
- ($pk, $file, $line) = caller;
-
- $0 = "$av0 - giving up on $server: $reason";
- #
- # add back a user if we gave up in the middle
- #
- push(@users,$user) if $user;
- #
- # don't bother with this system anymore
- #
- unless ($giveup{$server}) {
- $giveup{$server} = $reason;
- print STDERR "$reason\n";
- }
- print "Giveup at $file:$line!!! redirect okay = $redirect_okay; $reason\n" if $debug;
- #
- # Wait!
- # Before giving up, see if there is a chance that
- # there is another host to redirect to!
- # (Kids, don't do this at home! Hacking is a dangerous
- # crime and you could end up behind bars.)
- #
- for $u (@users) {
- if ($redirect_okay =~ /\bmx\b/) {
- next if &try_fallback('mx',$u,*server,
- *mx_secondary,
- *already_mx_fellback);
- }
- if ($redirect_okay =~ /\bdomainify\b/) {
- next if &try_fallback('domainify',$u,*server,
- *domainify_fallback,
- *already_domainify_fellback);
- }
- push(@remaining_users,$u);
- }
- @users = @remaining_users;
- for $u (@users) {
- print &compact($u,$server)." ->\n" if ($verbose && $valid && $u);
- &verbose(&final($u,$server,$names{"$u *** $server"},$reason));
- }
-}
-#
-# This routine is used only within &giveup. It checks to
-# see if we really have to giveup or if there is a second
-# chance because we did something before that can be
-# backtracked.
-#
-# %fallback{"$user *** $host"} tracks what is able to fallback
-# %fellback{"$user *** $host"} tracks what has fallen back
-#
-# If there is a valid backtrack, then queue up the new possibility
-#
-sub try_fallback
-{
- local($method,$user,*host,*fall_table,*fellback) = @_;
- local($us,$fallhost,$oldhost,$ft,$i);
-
- if ($debug > 8) {
- print "Fallback table $method:\n";
- for $i (sort keys %fall_table) {
- print "\t'$i'\t\t'$fall_table{$i}'\n";
- }
- print "Fellback table $method:\n";
- for $i (sort keys %fellback) {
- print "\t'$i'\t\t'$fellback{$i}'\n";
- }
- print "U: $user H: $host\n";
- }
-
- $us = "$user *** $host";
- if (defined $fellback{$us}) {
- #
- # Undo a previous fallback so that we can try again
- # Nested fallbacks are avoided because they could
- # lead to infinite loops
- #
- $fallhost = $fellback{$us};
- print "Already $method fell back from $us -> \n" if $debug;
- $us = "$user *** $fallhost";
- $oldhost = $fallhost;
- } elsif (($method eq 'mx') && (defined $mxbacktrace{$us}) && (defined $mx_secondary{$mxbacktrace{$us}})) {
- print "Fallback an MX expansion $us -> \n" if $debug;
- $oldhost = $mxbacktrace{$us};
- } else {
- print "Oldhost($host, $us) = " if $debug;
- $oldhost = $host;
- }
- print "$oldhost\n" if $debug;
- if (((defined $fall_table{$us}) && ($ft = $us)) || ((defined $fall_table{$oldhost}) && ($ft = $oldhost))) {
- print "$method Fallback = ".$fall_table{$ft}."\n" if $debug;
- local(@so,$newhost);
- @so = split(' ',$fall_table{$ft});
- $newhost = shift(@so);
- print "Falling back ($method) $us -> $newhost (from $oldhost)\n" if $debug;
- if ($method eq 'mx') {
- if (! defined ($mxbacktrace{"$user *** $newhost"})) {
- if (defined $mxbacktrace{"$user *** $oldhost"}) {
- print "resetting oldhost $oldhost to the original: " if $debug;
- $oldhost = $mxbacktrace{"$user *** $oldhost"};
- print "$oldhost\n" if $debug;
- }
- $mxbacktrace{"$user *** $newhost"} = $oldhost;
- print "mxbacktrace $user *** $newhost -> $oldhost\n" if $debug;
- }
- $mx{&trhost($oldhost)} = $newhost;
- } else {
- $temporary_redirect{$us} = $newhost;
- }
- if (@so) {
- print "Can still $method $us: @so\n" if $debug;
- $fall_table{$ft} = join(' ',@so);
- } else {
- print "No more fallbacks for $us\n" if $debug;
- delete $fall_table{$ft};
- }
- if (defined $create_host_backtrack{$us}) {
- $create_host_backtrack{"$user *** $newhost"}
- = $create_host_backtrack{$us};
- }
- $fellback{"$user *** $newhost"} = $oldhost;
- &expn($newhost,$user,$names{$us},$level{$us});
- return 1;
- }
- delete $temporary_redirect{$us};
- $host = $oldhost;
- return 0;
-}
-# return 1 if you could send mail to the address as is.
-sub validAddr
-{
- local($addr) = @_;
- $res = &do_validAddr($addr);
- print "validAddr($addr) = $res\n" if $debug;
- $res;
-}
-sub do_validAddr
-{
- local($addr) = @_;
- local($urx) = "[-A-Za-z_.0-9+]+";
-
- # \u
- return 0 if ($addr =~ /^\\/);
- # ?@h
- return 1 if ($addr =~ /.\@$urx$/);
- # @h:?
- return 1 if ($addr =~ /^\@$urx\:./);
- # h!u
- return 1 if ($addr =~ /^$urx!./);
- # u
- return 1 if ($addr =~ /^$urx$/);
- # ?
- print "validAddr($addr) = ???\n" if $debug;
- return 0;
-}
-# Some systems use expn and vrfy interchangeably. Some only
-# implement one or the other. Some check expn against mailing
-# lists and vrfy against users. It doesn't appear to be
-# consistent.
-#
-# So, what do we do? We try everything!
-#
-#
-# Ranking of result codes: good: 250, 251/551, 252, 550, anything else
-#
-# Ranking of inputs: best: user@host.domain, okay: user
-#
-# Return value: $error_string, @responses_from_server
-sub expn_vrfy
-{
- local($u,$server) = @_;
- local(@c) = ('expn', 'vrfy');
- local(@try_u) = $u;
- local(@ret,$code);
-
- if (($u =~ /(.+)@(.+)/) && (&trhost($2) eq &trhost($server))) {
- push(@try_u,$1);
- }
-
- TRY:
- for $c (@c) {
- for $try_u (@try_u) {
- &alarm("${c}'ing $try_u on $server",'',$u);
- &ps("$c $try_u");
- alarm(0);
- $s = <S>;
- if ($s eq '') {
- return "$server: lost connection";
- }
- if ($s !~ /^(\d+)([- ])/) {
- return "$server: garbled reply to '$c $try_u'";
- }
- if ($1 == 250) {
- $code = 250;
- @ret = ("",$s);
- push(@ret,&read_response($2,$debug));
- return (@ret);
- }
- if ($1 == 551 || $1 == 251) {
- $code = $1;
- @ret = ("",$s);
- push(@ret,&read_response($2,$debug));
- next;
- }
- if ($1 == 252 && ($code == 0 || $code == 550)) {
- $code = 252;
- @ret = ("",$s);
- push(@ret,&read_response($2,$watch));
- next;
- }
- if ($1 == 550 && $code == 0) {
- $code = 550;
- @ret = ("",$s);
- push(@ret,&read_response($2,$watch));
- next;
- }
- &read_response($2,$watch);
- }
- }
- return "$server: expn/vrfy not implemented" unless @ret;
- return @ret;
-}
-# sometimes the old parse routine (now parse2) didn't
-# reject funky addresses.
-sub parse
-{
- local($oldaddr,$server,$oldname,$one_to_one) = @_;
- local($newhost, $newaddr, $newname, $um) = &parse2($oldaddr,$server,$oldname,$one_to_one);
- if ($newaddr =~ m,^["/],) {
- return (undef, $oldaddr, $newname) if $valid;
- return (undef, $um, $newname);
- }
- return ($newhost, $newaddr, $newname);
-}
-
-# returns ($new_smtp_server,$new_address,$new_name)
-# given a response from a SMTP server ($newaddr), the
-# current host ($server), the old "name" and a flag that
-# indicates if it is being called during the initial
-# command line parsing ($parsing_args)
-sub parse2
-{
- local($newaddr,$context_host,$old_name,$parsing_args) = @_;
- local(@names) = $old_name;
- local($urx) = "[-A-Za-z_.0-9+]+";
- local($unmangle);
-
- #
- # first, separate out the address part.
- #
-
- #
- # [NAME] <ADDR [(NAME)]>
- # [NAME] <[(NAME)] ADDR
- # ADDR [(NAME)]
- # (NAME) ADDR
- # [(NAME)] <ADDR>
- #
- if ($newaddr =~ /^\<(.*)\>$/) {
- print "<A:$1>\n" if $debug;
- ($newaddr) = &trim($1);
- print "na = $newaddr\n" if $debug;
- }
- if ($newaddr =~ /^([^\<\>]*)\<([^\<\>]*)\>([^\<\>]*)$/) {
- # address has a < > pair in it.
- print "N:$1 <A:$2> N:$3\n" if $debug;
- ($newaddr) = &trim($2);
- unshift(@names, &trim($3,$1));
- print "na = $newaddr\n" if $debug;
- }
- if ($newaddr =~ /^([^\(\)]*)\(([^\(\)]*)\)([^\(\)]*)$/) {
- # address has a ( ) pair in it.
- print "A:$1 (N:$2) A:$3\n" if $debug;
- unshift(@names,&trim($2));
- local($f,$l) = (&trim($1),&trim($3));
- if (($f && $l) || !($f || $l)) {
- # address looks like:
- # foo (bar) baz or (bar)
- # not allowed!
- print STDERR "Could not parse $newaddr\n" if $vw;
- return(undef,$newaddr,&firstname(@names));
- }
- $newaddr = $f if $f;
- $newaddr = $l if $l;
- print "newaddr now = $newaddr\n" if $debug;
- }
- #
- # @foo:bar
- # j%k@l
- # a@b
- # b!a
- # a
- #
- $unmangle = $newaddr;
- if ($newaddr =~ /^\@($urx)\:(.+)$/) {
- print "(\@:)" if $debug;
- # this is a bit of a cheat, but it seems necessary
- return (&domainify($1,$context_host,$2),$2,&firstname(@names),$unmangle);
- }
- if ($newaddr =~ /^(.+)\@($urx)$/) {
- print "(\@)" if $debug;
- return (&domainify($2,$context_host,$newaddr),$newaddr,&firstname(@names),$unmangle);
- }
- if ($parsing_args) {
- if ($newaddr =~ /^($urx)\!(.+)$/) {
- return (&domainify($1,$context_host,$newaddr),$newaddr,&firstname(@names),$unmangle);
- }
- if ($newaddr =~ /^($urx)$/) {
- return ($context_host,$newaddr,&firstname(@names),$unmangle);
- }
- print STDERR "Could not parse $newaddr\n";
- }
- print "(?)" if $debug;
- return(undef,$newaddr,&firstname(@names),$unmangle);
-}
-# return $u (@$server) unless $u includes reference to $server
-sub compact
-{
- local($u, $server) = @_;
- local($se) = $server;
- local($sp);
- $se =~ s/(\W)/\\$1/g;
- $sp = " (\@$server)";
- if ($u !~ /$se/i) {
- return "$u$sp";
- }
- return $u;
-}
-# remove empty (spaces don't count) members from an array
-sub trim
-{
- local(@v) = @_;
- local($v,@r);
- for $v (@v) {
- $v =~ s/^\s+//;
- $v =~ s/\s+$//;
- push(@r,$v) if ($v =~ /\S/);
- }
- return(@r);
-}
-# using the host part of an address, and the server name, add the
-# servers' domain to the address if it doesn't already have a
-# domain. Since this sometimes fails, save a back reference so
-# it can be unrolled.
-sub domainify
-{
- local($host,$domain_host,$u) = @_;
- local($domain,$newhost);
-
- # cut of trailing dots
- $host =~ s/\.$//;
- $domain_host =~ s/\.$//;
-
- if ($domain_host !~ /\./) {
- #
- # domain host isn't, keep $host whatever it is
- #
- print "domainify($host,$domain_host) = $host\n" if $debug;
- return $host;
- }
-
- #
- # There are several weird situations that need to be
- # accounted for. They have to do with domain relay hosts.
- #
- # Examples:
- # host server "right answer"
- #
- # shiva.cs cs.berkeley.edu shiva.cs.berkeley.edu
- # shiva cs.berkeley.edu shiva.cs.berekley.edu
- # cumulus reed.edu @reed.edu:cumulus.uucp
- # tiberius tc.cornell.edu tiberius.tc.cornell.edu
- #
- # The first try must always be to cut the domain part out of
- # the server and tack it onto the host.
- #
- # A reasonable second try is to tack the whole server part onto
- # the host and for each possible repeated element, eliminate
- # just that part.
- #
- # These extra "guesses" get put into the %domainify_fallback
- # array. They will be used to give addresses a second chance
- # in the &giveup routine
- #
-
- local(%fallback);
-
- local($long);
- $long = "$host $domain_host";
- $long =~ tr/A-Z/a-z/;
- print "long = $long\n" if $debug;
- if ($long =~ s/^([^ ]+\.)([^ ]+) \2(\.[^ ]+\.[^ ]+)/$1$2$3/) {
- # matches shiva.cs cs.berkeley.edu and returns shiva.cs.berkeley.edu
- print "condensed fallback $host $domain_host -> $long\n" if $debug;
- $fallback{$long} = 9;
- }
-
- local($fh);
- $fh = $domain_host;
- while ($fh =~ /\./) {
- print "FALLBACK $host.$fh = 1\n" if $debug > 7;
- $fallback{"$host.$fh"} = 1;
- $fh =~ s/^[^\.]+\.//;
- }
-
- $fallback{"$host.$domain_host"} = 2;
-
- ($domain = $domain_host) =~ s/^[^\.]+//;
- $fallback{"$host$domain"} = 6
- if ($domain =~ /\./);
-
- if ($host =~ /\./) {
- #
- # Host is already okay, but let's look for multiple
- # interpretations
- #
- print "domainify($host,$domain_host) = $host\n" if $debug;
- delete $fallback{$host};
- $domainify_fallback{"$u *** $host"} = join(' ',sort {$fallback{$b} <=> $fallback{$a};} keys %fallback) if %fallback;
- return $host;
- }
-
- $domain = ".$domain_host"
- if ($domain !~ /\..*\./);
- $newhost = "$host$domain";
-
- $create_host_backtrack{"$u *** $newhost"} = $domain_host;
- print "domainify($host,$domain_host) = $newhost\n" if $debug;
- delete $fallback{$newhost};
- $domainify_fallback{"$u *** $newhost"} = join(' ',sort {$fallback{$b} <=> $fallback{$a};} keys %fallback) if %fallback;
- if ($debug) {
- print "fallback = ";
- print $domainify_fallback{"$u *** $newhost"}
- if defined($domainify_fallback{"$u *** $newhost"});
- print "\n";
- }
- return $newhost;
-}
-# return the first non-empty element of an array
-sub firstname
-{
- local(@names) = @_;
- local($n);
- while(@names) {
- $n = shift(@names);
- return $n if $n =~ /\S/;
- }
- return undef;
-}
-# queue up more addresses to expand
-sub expn
-{
- local($host,$addr,$name,$level) = @_;
- if ($host) {
- $host = &trhost($host);
-
- if (($debug > 3) || (defined $giveup{$host})) {
- unshift(@hosts,$host) unless $users{$host};
- } else {
- push(@hosts,$host) unless $users{$host};
- }
- $users{$host} .= " $addr";
- $names{"$addr *** $host"} = $name;
- $level{"$addr *** $host"} = $level + 1;
- print "expn($host,$addr,$name)\n" if $debug;
- return "\t$addr\n";
- } else {
- return &final($addr,'NONE',$name);
- }
-}
-# compute the numerical average value of an array
-sub average
-{
- local(@e) = @_;
- return 0 unless @e;
- local($e,$sum);
- for $e (@e) {
- $sum += $e;
- }
- $sum / @e;
-}
-# print to the server (also to stdout, if -w)
-sub ps
-{
- local($p) = @_;
- print ">>> $p\n" if $watch;
- print S "$p\n";
-}
-# return case-adjusted name for a host (for comparison purposes)
-sub trhost
-{
- # treat foo.bar as an alias for Foo.BAR
- local($host) = @_;
- local($trhost) = $host;
- $trhost =~ tr/A-Z/a-z/;
- if ($trhost{$trhost}) {
- $host = $trhost{$trhost};
- } else {
- $trhost{$trhost} = $host;
- }
- $trhost{$trhost};
-}
-# re-queue users if an mx record dictates a redirect
-# don't allow a user to be redirected more than once
-sub mxredirect
-{
- local($server,*users) = @_;
- local($u,$nserver,@still_there);
-
- $nserver = &mx($server);
-
- if (&trhost($nserver) ne &trhost($server)) {
- $0 = "$av0 - mx redirect $server -> $nserver\n";
- for $u (@users) {
- if (defined $mxbacktrace{"$u *** $nserver"}) {
- push(@still_there,$u);
- } else {
- $mxbacktrace{"$u *** $nserver"} = $server;
- print "mxbacktrace{$u *** $nserver} = $server\n"
- if ($debug > 1);
- &expn($nserver,$u,$names{"$u *** $server"});
- }
- }
- @users = @still_there;
- if (! @users) {
- return $nserver;
- } else {
- return undef;
- }
- }
- return undef;
-}
-# follow mx records, return a hostname
-# also follow temporary redirections coming from &domainify and
-# &mxlookup
-sub mx
-{
- local($h,$u) = @_;
-
- for (;;) {
- if (defined $mx{&trhost($h)} && $h ne $mx{&trhost($h)}) {
- $0 = "$av0 - mx expand $h";
- $h = $mx{&trhost($h)};
- return $h;
- }
- if ($u) {
- if (defined $temporary_redirect{"$u *** $h"}) {
- $0 = "$av0 - internal redirect $h";
- print "Temporary redirect taken $u *** $h -> " if $debug;
- $h = $temporary_redirect{"$u *** $h"};
- print "$h\n" if $debug;
- next;
- }
- $htr = &trhost($h);
- if (defined $temporary_redirect{"$u *** $htr"}) {
- $0 = "$av0 - internal redirect $h";
- print "temporary redirect taken $u *** $h -> " if $debug;
- $h = $temporary_redirect{"$u *** $htr"};
- print "$h\n" if $debug;
- next;
- }
- }
- return $h;
- }
-}
-# look up mx records with the name server.
-# re-queue expansion requests if possible
-# optionally give up on this host.
-sub mxlookup
-{
- local($lastchance,$server,$giveup,*users) = @_;
- local(*T);
- local(*NSLOOKUP);
- local($nh, $pref,$cpref);
- local($o0) = $0;
- local($nserver);
- local($name,$aliases,$type,$len,$thataddr);
- local(%fallback);
-
- return 1 if &mxredirect($server,*users);
-
- if ((defined $mx{$server}) || (! $have_nslookup)) {
- return 0 unless $lastchance;
- &giveup('mx domainify',$giveup);
- return 0;
- }
-
- $0 = "$av0 - nslookup of $server";
- open(T,">/tmp/expn$$") || die "open > /tmp/expn$$: $!\n";
- print T "set querytype=MX\n";
- print T "$server\n";
- close(T);
- $cpref = 1.0E12;
- undef $nserver;
- open(NSLOOKUP,"nslookup < /tmp/expn$$ 2>&1 |") || die "open nslookup: $!";
- while(<NSLOOKUP>) {
- print if ($debug > 2);
- if (/mail exchanger = ([-A-Za-z_.0-9+]+)/) {
- $nh = $1;
- if (/preference = (\d+)/) {
- $pref = $1;
- if ($pref < $cpref) {
- $nserver = $nh;
- $cpref = $pref;
- } elsif ($pref) {
- $fallback{$pref} .= " $nh";
- }
- }
- }
- if (/Non-existent domain/) {
- #
- # These addresses are hosed. Kaput! Dead!
- # However, if we created the address in the
- # first place then there is a chance of
- # salvation.
- #
- 1 while(<NSLOOKUP>);
- close(NSLOOKUP);
- return 0 unless $lastchance;
- &giveup('domainify',"$server: Non-existent domain",undef,1);
- return 0;
- }
-
- }
- close(NSLOOKUP);
- unlink("/tmp/expn$$");
- unless ($nserver) {
- $0 = "$o0 - finished mxlookup";
- return 0 unless $lastchance;
- &giveup('mx domainify',"$server: Could not resolve address");
- return 0;
- }
-
- # provide fallbacks in case $nserver doesn't work out
- if (defined $fallback{$cpref}) {
- $mx_secondary{$server} = $fallback{$cpref};
- }
-
- $0 = "$av0 - gethostbyname($nserver)";
- ($name,$aliases,$type,$len,$thataddr) = gethostbyname($nserver);
-
- unless ($thataddr) {
- $0 = $o0;
- return 0 unless $lastchance;
- &giveup('mx domainify',"$nserver: could not resolve address");
- return 0;
- }
- print "MX($server) = $nserver\n" if $debug;
- print "$server -> $nserver\n" if $vw && !$debug;
- $mx{&trhost($server)} = $nserver;
- # redeploy the users
- unless (&mxredirect($server,*users)) {
- return 0 unless $lastchance;
- &giveup('mx domainify',"$nserver: only one level of mx redirect allowed");
- return 0;
- }
- $0 = "$o0 - finished mxlookup";
- return 1;
-}
-# if mx expansion did not help to resolve an address
-# (ie: foo@bar became @baz:foo@bar, then undo the
-# expansion).
-# this is only used by &final
-sub mxunroll
-{
- local(*host,*addr) = @_;
- local($r) = 0;
- print "looking for mxbacktrace{$addr *** $host}\n"
- if ($debug > 1);
- while (defined $mxbacktrace{"$addr *** $host"}) {
- print "Unrolling MX expansion: \@$host:$addr -> "
- if ($debug || $verbose);
- $host = $mxbacktrace{"$addr *** $host"};
- print "\@$host:$addr\n"
- if ($debug || $verbose);
- $r = 1;
- }
- return 1 if $r;
- $addr = "\@$host:$addr"
- if ($host =~ /\./);
- return 0;
-}
-# register a completed expansion. Make the final address as
-# simple as possible.
-sub final
-{
- local($addr,$host,$name,$error) = @_;
- local($he);
- local($hb,$hr);
- local($au,$ah);
-
- if ($error =~ /Non-existent domain/) {
- #
- # If we created the domain, then let's undo the
- # damage...
- #
- if (defined $create_host_backtrack{"$addr *** $host"}) {
- while (defined $create_host_backtrack{"$addr *** $host"}) {
- print "Un&domainifying($host) = " if $debug;
- $host = $create_host_backtrack{"$addr *** $host"};
- print "$host\n" if $debug;
- }
- $error = "$host: could not locate";
- } else {
- #
- # If we only want valid addresses, toss out
- # bad host names.
- #
- if ($valid) {
- print STDERR "\@$host:$addr ($name) Non-existent domain\n";
- return "";
- }
- }
- }
-
- MXUNWIND: {
- $0 = "$av0 - final parsing of \@$host:$addr";
- ($he = $host) =~ s/(\W)/\\$1/g;
- if ($addr !~ /@/) {
- # addr does not contain any host
- $addr = "$addr@$host";
- } elsif ($addr !~ /$he/i) {
- # if host part really something else, use the something
- # else.
- if ($addr =~ m/(.*)\@([^\@]+)$/) {
- ($au,$ah) = ($1,$2);
- print "au = $au ah = $ah\n" if $debug;
- if (defined $temporary_redirect{"$addr *** $ah"}) {
- $addr = "$au\@".$temporary_redirect{"$addr *** $ah"};
- print "Rewrite! to $addr\n" if $debug;
- next MXUNWIND;
- }
- }
- # addr does not contain full host
- if ($valid) {
- if ($host =~ /^([^\.]+)(\..+)$/) {
- # host part has a . in it - foo.bar
- ($hb, $hr) = ($1, $2);
- if ($addr =~ /\@([^\.\@]+)$/ && ($1 eq $hb)) {
- # addr part has not .
- # and matches beginning of
- # host part -- tack on a
- # domain name.
- $addr .= $hr;
- } else {
- &mxunroll(*host,*addr)
- && redo MXUNWIND;
- }
- } else {
- &mxunroll(*host,*addr)
- && redo MXUNWIND;
- }
- } else {
- $addr = "${addr}[\@$host]"
- if ($host =~ /\./);
- }
- }
- }
- $name = "$name " if $name;
- $error = " $error" if $error;
- if ($valid) {
- push(@final,"$name<$addr>");
- } else {
- push(@final,"$name<$addr>$error");
- }
- "\t$name<$addr>$error\n";
-}
-
-sub alarm
-{
- local($alarm_action,$alarm_redirect,$alarm_user) = @_;
- alarm(3600);
- $SIG{ALRM} = 'handle_alarm';
-}
-# this involves one great big ugly hack.
-# the "next HOST" unwinds the stack!
-sub handle_alarm
-{
- &giveup($alarm_redirect,"Timed out during $alarm_action",$alarm_user);
- next HOST;
-}
-
-# read the rest of the current smtp daemon's response (and toss it away)
-sub read_response
-{
- local($done,$watch) = @_;
- local(@resp);
- print $s if $watch;
- while(($done eq "-") && ($s = <S>) && ($s =~ /^\d+([- ])/)) {
- print $s if $watch;
- $done = $1;
- push(@resp,$s);
- }
- return @resp;
-}
-# print args if verbose. Return them in any case
-sub verbose
-{
- local(@tp) = @_;
- print "@tp" if $verbose;
-}
-# to pass perl -w:
-@tp;
-$flag_a;
-$flag_d;
-$flag_1;
-%already_domainify_fellback;
-%already_mx_fellback;
-&handle_alarm;
-################### BEGIN PERL/TROFF TRANSITION
-.00 ;
-
-'di
-.nr nl 0-1
-.nr % 0
-.\\"'; __END__
-.\" ############## END PERL/TROFF TRANSITION
-.TH EXPN 1 "March 11, 1993"
-.AT 3
-.SH NAME
-expn \- recursively expand mail aliases
-.SH SYNOPSIS
-.B expn
-.RI [ -a ]
-.RI [ -v ]
-.RI [ -w ]
-.RI [ -d ]
-.RI [ -1 ]
-.IR user [@ hostname ]
-.RI [ user [@ hostname ]]...
-.SH DESCRIPTION
-.B expn
-will use the SMTP
-.B expn
-and
-.B vrfy
-commands to expand mail aliases.
-It will first look up the addresses you provide on the command line.
-If those expand into addresses on other systems, it will
-connect to the other systems and expand again. It will keep
-doing this until no further expansion is possible.
-.SH OPTIONS
-The default output of
-.B expn
-can contain many lines which are not valid
-email addresses. With the
-.I -aa
-flag, only expansions that result in legal addresses
-are used. Since many mailing lists have an illegal
-address or two, the single
-.IR -a ,
-address, flag specifies that a few illegal addresses can
-be mixed into the results. More
-.I -a
-flags vary the ratio. Read the source to track down
-the formula. With the
-.I -a
-option, you should be able to construct a new mailing
-list out of an existing one.
-.LP
-If you wish to limit the number of levels deep that
-.B expn
-will recurse as it traces addresses, use the
-.I -1
-option. For each
-.I -1
-another level will be traversed. So,
-.I -111
-will traverse no more than three levels deep.
-.LP
-The normal mode of operation for
-.B expn
-is to do all of its work silently.
-The following options make it more verbose.
-It is not necessary to make it verbose to see what it is
-doing because as it works, it changes its
-.BR argv [0]
-variable to reflect its current activity.
-To see how it is expanding things, the
-.IR -v ,
-verbose, flag will cause
-.B expn
-to show each address before
-and after translation as it works.
-The
-.IR -w ,
-watch, flag will cause
-.B expn
-to show you its conversations with the mail daemons.
-Finally, the
-.IR -d ,
-debug, flag will expose many of the inner workings so that
-it is possible to eliminate bugs.
-.SH ENVIRONMENT
-No environment variables are used.
-.SH FILES
-.PD 0
-.B /tmp/expn$$
-.B temporary file used as input to
-.BR nslookup .
-.SH SEE ALSO
-.BR aliases (5),
-.BR sendmail (8),
-.BR nslookup (8),
-RFC 823, and RFC 1123.
-.SH BUGS
-Not all mail daemons will implement
-.B expn
-or
-.BR vrfy .
-It is not possible to verify addresses that are served
-by such daemons.
-.LP
-When attempting to connect to a system to verify an address,
-.B expn
-only tries one IP address. Most mail daemons
-will try harder.
-.LP
-It is assumed that you are running domain names and that
-the
-.BR nslookup (8)
-program is available. If not,
-.B expn
-will not be able to verify many addresses. It will also pause
-for a long time unless you change the code where it says
-.I $have_nslookup = 1
-to read
-.I $have_nslookup =
-.IR 0 .
-.LP
-Lastly,
-.B expn
-does not handle every valid address. If you have an example,
-please submit a bug report.
-.SH CREDITS
-In 1986 or so, Jon Broome wrote a program of the same name
-that did about the same thing. It has since suffered bit rot
-and Jon Broome has dropped off the face of the earth!
-(Jon, if you are out there, drop me a line)
-.SH AVAILABILITY
-The latest version of
-.B expn
-is available through anonymous ftp at
-.IR ftp://ftp.idiom.com/pub/muir-programs/expn .
-.SH AUTHOR
-.I David Muir Sharnoff\ \ \ \ <muir@idiom.com>
diff --git a/contrib/amd/scripts/fix-amd-map.in b/contrib/amd/scripts/fix-amd-map.in
deleted file mode 100755
index 9bbc9b6a21bc..000000000000
--- a/contrib/amd/scripts/fix-amd-map.in
+++ /dev/null
@@ -1,52 +0,0 @@
-#!@PERL@
-#
-# fix an old-syntax amd map to new one
-#
-# takes any number of files on the command line, and produces
-# a fixed map on stdout.
-#
-# Package: am-utils-6.x
-# Author: Erez Zadok <ezk@cs.columbia.edu>
-#
-
-##############################################################################
-### MAINTAINER EDITABLE SECTION
-
-# Mappings of old names to new ones:
-# Update when needed, do not forget commas but not on the last entry!
-# For your convenience, this is the complete list of all OSs that were
-# supported by amd-upl102, in their old names:
-#
-# 386bsd acis43 aix3 aoi aux bsd43 bsd44 bsdi11
-# concentrix dgux fpx4 freebsd hcx hlh42 hpux irix3 irix4 irix5 isc3
-# linux mach2 mach3 netbsd news4 next osf1 pyrOSx riscix riscos
-# rtu6 sos3 sos4 sos5 stellix svr4 u2_2 u3_0 u4_0 u4_2 u4_3 u4_4
-# umax43 utek utx32 xinu43
-#
-%mappings = (
- "sos4", "sunos4",
- "sos5", "sunos5",
- "freebsd", "freebsd2"
-);
-
-##############################################################################
-### DO NOT EDIT ANYTHING BELOW
-
-# This is a trivial parser and works as follows:
-# (1) read each line
-# (2) search of regexps that start with '=', continue with a word to replace
-# and end with a non-value name (whitespace, ';', or newline
-while (<>) {
- # skip trivial lines
- if ($_ =~ /^$/ || $_ =~ /^#/) {
- print;
- next;
- }
- # modify the line if needed
- foreach $m (keys %mappings) {
- $val = $mappings{$m};
- $_ =~ s/=$m([^a-zA-Z0-9_])/=$val$1/g;
- }
- # print the (possibly) modified line
- print;
-}
diff --git a/contrib/amd/scripts/fixrmtab.in b/contrib/amd/scripts/fixrmtab.in
deleted file mode 100755
index a1fbebf61507..000000000000
--- a/contrib/amd/scripts/fixrmtab.in
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-#
-# Invalidate /etc/rmtab entries for hosts named.
-# Restart mountd for changes to take effect.
-#
-# usage: fixrmtab host1 host2 ...
-#
-# Package: am-utils-6.x
-# Author: Andreas Stolcke <stolcke@icsi.berkeley.edu>
-
-#set -x
-
-# allow user to pass RMTAB file name from environment
-if test -z "${RMTAB}" ; then
- RMTAB=/etc/rmtab
-fi
-
-if [ ! -f "$RMTAB" ]; then
- exit 0
-fi
-
-TMP="$(mktemp ${RMTAB}.XXXXXX)"
-if [ -z "$TMP" ]; then
- exit 1
-fi
-
-trap "rm -f $TMP" 0 1 2 3 15
-
-for host
-do
- sed -e "/^$host:/s/^./#/" "$RMTAB" > "$TMP" && cp "$TMP" "$RMTAB"
-done
diff --git a/contrib/amd/scripts/redhat-ctl-amd.in b/contrib/amd/scripts/redhat-ctl-amd.in
deleted file mode 100755
index 4d00d472c24a..000000000000
--- a/contrib/amd/scripts/redhat-ctl-amd.in
+++ /dev/null
@@ -1,106 +0,0 @@
-#!/bin/bash
-#
-# Version: 1.3
-#
-# chkconfig: - 72 28
-# description: Runs the automount daemon that mounts devices and NFS hosts \
-# on demand.
-# processname: amd
-# config: /etc/amd.conf
-#
-
-# we require the /etc/amd.conf file
-[ -f /etc/amd.conf ] || exit 0
-[ -f /etc/sysconfig/amd ] || exit 0
-
-# Source function library.
-. /etc/init.d/functions
-
-# Recover AMDOPTS from /etc/sysconfig/amd.
-if [ -f /etc/sysconfig/amd ] ; then
- . /etc/sysconfig/amd
-fi
-
-RETVAL=0
-prog=amd
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-amd=@sbindir@/amd
-
-start() {
- echo -n "Starting $prog: "
- daemon $amd -F /etc/amd.conf $AMDOPTS $OPTIONS $MOUNTPTS
- RETVAL=$?
- echo
- [ $RETVAL = 0 ] && touch /var/lock/subsys/amd
- return $RETVAL
-}
-
-stop() {
-
- echo -n "Stopping $prog: "
- # modeled from /usr/sbin/ctl-amd
- pid=`/usr/sbin/amq -p 2>/dev/null`
- if [ "$pid" = "" ] ; then
- # amq -p did not give pid, so try ps
- pid=`ps acx 2>/dev/null | grep "amd" | sed -e 's/^ *//' -e 's/ .*//'`
- fi
- if [ "$pid" = "" ] ; then
- failure "amd shutdown pid"
- echo
- return 1
- fi
- kill $pid
- # and this part is from wait4amd2die
- delay=5
- count=6
- i=1
- maxcount=`expr $count + 1`
- while [ $i != $maxcount ]; do
- # run amq
- /usr/sbin/amq > /dev/null 2>&1
- if [ $? != 0 ]
- then
- # amq failed to run (because amd is dead)
- success "amd shutdown"
- rm -f /var/lock/subsys/amd
- echo
- return 0
- fi
- sleep $delay
- i=`expr $i + 1`
- done
- failure "amd shutdown (still up)"
- echo
- return 1
-}
-# See how we were called.
-case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- status)
- status $amd
- ;;
- restart)
- stop
- start
- ;;
- condrestart)
- if [ -f /var/lock/subsys/amd ]; then
- stop
- start
- fi
- ;;
- reload)
- action "Reloading $prog:" killall -HUP $amd
- ;;
- *)
- echo "Usage: $0 {start|stop|restart|reload|condrestart|status}"
- exit 1
-esac
-
-exit 0
diff --git a/contrib/amd/scripts/test-attrcache.in b/contrib/amd/scripts/test-attrcache.in
deleted file mode 100755
index 061308b42dbe..000000000000
--- a/contrib/amd/scripts/test-attrcache.in
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/bin/sh
-# Script to test the attribute cache behavior of the local OS client.
-# If this script fails, it means that Amd cannot turn off the attrcache
-# reliably on this host, and Amd therefore may not run reliably. See
-# the README.attrcache file distributed with this am-utils.
-# -Erez Zadok, September 29, 2005
-
-# set PATH (must install am-utils first)
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-PATH=@sbindir@:@bindir@:/usr/ucb:/usr/bin:/bin:${PATH}
-export PATH
-
-# test if amd is running
-amq -p > /dev/null 2>&1
-if test $? = 0
-then
- echo "### Amd already running... please shutdown Amd first"
- exit 1
-fi
-
-mapfile="/tmp/amd.testmap.$$"
-logfile="/var/log/amd"
-delay=1
-a=/a
-
-CreateMap1 () {
- echo "### Creating correct map"
- cat - >$mapfile <<EOF
-a type:=link;fs:=/tmp/a
-EOF
-}
-
-CreateMap2 () {
- echo "### Creating weird map"
- cat - >$mapfile <<EOF
-a type:=link;fs:=/tmp/b
-EOF
-}
-
-StopAMD () {
- ctl-amd stop
-# do not delete files we may need to use to debug Amd
-# rm -f /tmp/a /tmp/b $mapfile $logfile
-}
-
-touch /tmp/a
-touch /tmp/b
-
-CreateMap1
-echo amd -x all -D all -r -l $logfile $a $mapfile -cache:=mapdefault,sync
-amd -x all -D all -r -l $logfile $a $mapfile -cache:=mapdefault,sync
-sleep 3 # give amd chance to start properly
-amq
-inode_a=`ls -lLi /tmp/a | awk '{print $1}'`
-inode_b=`ls -lLi /tmp/b | awk '{print $1}'`
-ls -lLi $a/a
-ls -lLi $a/b
-ls -l $mapfile
-
-# how many times to try until we call it a success...
-maxtry=10
-while test $maxtry -gt 0
-do
- echo "$maxtry tries left ..."
- let maxtry=maxtry-1
- amq
- CreateMap1
- sleep $delay
-
- ls -l $mapfile
- echo "### looking at a... should get a"
- ino=`ls -lLi $a/a | awk '{print $1}'`
- if test -z "$ino"
- then
- ls -li $a/a
- amq
- amq -m
- stat $a
- echo "a link does not exist!"
- StopAMD
- exit 1
- fi
- if test $ino -ne $inode_a
- then
- ls -li $a/a
- amq
- amq -m
- stat $a
- echo "a link does not point to A!"
- StopAMD
- exit 1
- fi
-
-# Here is the main trick we try: force amd to flush one entry, then
-# change the amd map on disk, and then see if the kernel will have
-# flushed the attribute cache; if it did, then Amd will see the
-# correctly changed map entry.
-
- amq -u $a/a
- sleep $delay
- stat $a
-
- CreateMap2
- sleep $delay
-
- ls -l $mapfile
- echo "### looking at a... should get b"
- ino=`ls -lLi $a/a | awk '{print $1}'`
- if test -z "$ino"
- then
- ls -li $a/a
- amq
- amq -m
- stat $a
- echo "a link does not exist!"
- StopAMD
- exit 1
- fi
- if test $ino -ne $inode_b
- then
- ls -li $a/a
- amq
- amq -m
- stat $a
- echo "a link does not point to B!"
- StopAMD
- exit 1
- fi
-
- amq -u $a/a
- sleep $delay
- stat $a
-done
-StopAMD
diff --git a/contrib/amd/scripts/wait4amd.in b/contrib/amd/scripts/wait4amd.in
deleted file mode 100755
index 5e6c33a579c4..000000000000
--- a/contrib/amd/scripts/wait4amd.in
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-# wait for amd to start up and then execute program
-# usage: wait4amd <hostname> [<command> [args ...]]
-# If only hostname is supplied, command defaults to rsh $hostname
-#
-# Package: am-utils-6.x
-# Author: Erez Zadok <ezk@cs.columbia.edu>
-
-#set -x
-
-if [ "X$1" = "X" ]; then
- echo "Usage: wait4amd <hostname> [<command> [args ...]]"
- exit 1
-else
- hostname=$1
- shift
-fi
-
-# set path
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-PATH=@sbindir@:@bindir@:${PATH}
-export PATH
-
-while true
-do
- amq -h $hostname > /dev/null 2>&1
- if [ $? != 0 ]
- then
- # failed
- echo "Amd not up. Sleeping..."
- sleep 5;
- else
- echo "Amd is active on host $hostname!"
- cmd=$*
- if [ -z "${cmd}" ]
- then
- cmd="rlogin $hostname"
- fi
- echo "Running: $cmd"
- $cmd
- echo "Sleep 1 second"
- sleep 1
- fi
-done
diff --git a/contrib/amd/scripts/wait4amd2die.in b/contrib/amd/scripts/wait4amd2die.in
deleted file mode 100755
index 94a08513f889..000000000000
--- a/contrib/amd/scripts/wait4amd2die.in
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-# wait for amd to die on local host before returning from program.
-# Usage: wait4amd2die [delay [count]]
-# If not specified, delay=5 seconds and count=6 (total 30 seconds)
-# If at end of total delay amd is till up, return 1; else return 0.
-#
-# Package: am-utils-6.x
-# Author: Erez Zadok <ezk@cs.columbia.edu>
-
-#set -x
-
-# set path
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-PATH=@sbindir@:@bindir@:/usr/bin:/bin:${PATH}
-export PATH
-
-# how long to wait?
-if test -n "$1"
-then
- delay=$1
-else
- delay=3
-fi
-# how many times to delay
-if test -n "$2"
-then
- count=$2
-else
- count=10
-fi
-
-i=1
-maxcount=`expr $count + 1`
-while [ $i != $maxcount ]; do
- # run amq
- @sbindir@/amq > /dev/null 2>&1
- if [ $? != 0 ]
- then
- # amq failed to run (because amd is dead)
- echo "wait4amd2die: amd is down!"
- exit 0
- fi
- echo "wait4amd2die: delay $delay sec ($i of $count)..."
- sleep $delay
- i=`expr $i + 1`
-done
-echo "wait4amd2die: amd is still up..."
-exit 1
diff --git a/contrib/amd/tasks b/contrib/amd/tasks
deleted file mode 100644
index 24b6834cba6a..000000000000
--- a/contrib/amd/tasks
+++ /dev/null
@@ -1,111 +0,0 @@
- AM-UTILS-6.1 TASKS TODO
-
-Please volunteer to do any of the following:
-
-- autofs support: see README.autofs for details.
-
-- deal with everything that has XXX on it in the sources
-- documentation update ("XXX: FILL IN" sections).
-
-- compatibility with Sun's automount maps?
- should be easier via the amd.conf file to specify type of map
-
-- convert to using my own rpcgen .x files for amq/amq/nfs (v2 and v3)
-
-- use packaging info for various OSs (such as RPM, Redhat Package Manager)
-
-- $mindelay and $maxdelay in milliseconds
-
-- multiple nfsl should be matched if one matched and nfs mount failed. fall
- through.
-- support multiple "fail-over read-only" NFS mounts in Solaris 2.6+.
-
-- random nfs rhost:={srv1, srv2, srv3}
-
-- nfslx, same as nfsl, but using linkx
-
-- loadable info_*, amfs_*, and ops_* modules (lazy evaluation).
-
-- hlfsd should daemonize even if -DDEBUG, then use -D nofork
-
-- fixmount should use generic code from transp/transp_{tli,sockets}.c
-
-- reverse notion of -F and other cmd-line options, so they override the
- amd.conf file (right now amd.conf overrides cmd-line options).
-
-- add am-utils URL and COPYRIGHT to all distributed scripts and sources and
- programs etc. also to amq -v output.
-
-- ion: browsable_dirs only works for nis if in [global] broken if it is file
- maps.
-
-- browsable 'auto' style maps.
-
-- mention signals in amd man page
-
-- ALLOWED_MOUNT_TIME of 40 seconds is way too long!
-- detecting down'ed hosts faster: use default portmap TTL variables?
-- push get_nfs_version() down into a child process
-
-- type:=program should not require umount command. can use default
- umount(). it works for smbmount/umount.
-
-- document var[0-7] variables/selectors
-
-- need a way to export a nfs-mount point after it is being mounted (jukebox
- mounts). can do this with type:=program.
-
-- support port=n, for machines that use NFS on a different port
-
-- nfsl may be buggy when fs:= is specified explicitly (lockup?)
-
-- y2k: amq /home (mounted time uses YY instead of YYYY)
-
-- new amd.conf option to disable amq listener altogether (security)
- Should be available even if DEBUG is off.
-
-- new amd.conf option dynamic_system_params to recompute osver, karch,
- etc. from uname() dynamically.
-
-- solaris 8 doesn't pick up hsfs/pcfs/etc *_args structures and mount flags
-
-- avoid having to compile ops_nfs3.o
-
-- linux support for ext3
-
-- be able to pass generic mount options to systems w/ a mount(2) that
- supports it (Linux). Perhaps genopt="foo,bar" syntax.
-
-- support several different nfs servers inside one nfsx entry
-
-- reimplement the "parallel mounting" for multiple matching sub-entries
-
-- fix amd.conf parser so it can parse key=value without spaces around the
- "=" sign. Note this isn't so trivial because 'value' may include "="
- signs.
-
-- NFSv4 support (such a short "tasks" entry given how much work it is :-)
-
-
-* documentation
-- document what can and what can't be a top-level mount type (i.e. a
- map-backed or map-holding type). Currently that's toplvl, auto, and
- direct.
-- document how to add a direct map to amd.conf.
-
-* autofs stuff
-Linux:
-- host mounts broken with autofs v3
-- nfsx status unknown
-- local filesystems (ufs, etc) status unknown
-
-Solaris:
-- host mounts status unknown
-- nfsx status unknown
-- local filesystems (ufs, etc) status unknown
-
-FreeBSD:
-- just do it
-
-All:
-- mntfs->mf_fo->opt_fs can contain garbage sometimes??
diff --git a/contrib/amd/vers.m4 b/contrib/amd/vers.m4
deleted file mode 100644
index 99d4f06750c7..000000000000
--- a/contrib/amd/vers.m4
+++ /dev/null
@@ -1 +0,0 @@
-[6.2]dnl
diff --git a/contrib/amd/wire-test/wire-test.8 b/contrib/amd/wire-test/wire-test.8
deleted file mode 100644
index b8d60d89d10f..000000000000
--- a/contrib/amd/wire-test/wire-test.8
+++ /dev/null
@@ -1,110 +0,0 @@
-.\"
-.\" Copyright (c) 1997-2014 Erez Zadok
-.\" Copyright (c) 1990 Jan-Simon Pendry
-.\" Copyright (c) 1990 Imperial College of Science, Technology & Medicine
-.\" Copyright (c) 1990 The Regents of the University of California.
-.\" All rights reserved.
-.\"
-.\" This code is derived from software contributed to Berkeley by
-.\" Jan-Simon Pendry at Imperial College, London.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 3. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\"
-.\" File: am-utils/wire-test/wire-test.8
-.\" $FreeBSD$
-.\"
-.Dd February 26, 2016
-.Dt WIRE-TEST 8
-.Os
-.Sh NAME
-.Nm wire-test
-.Nd test your network interfaces and local IP address
-.Sh SYNOPSIS
-.Nm
-.Op Ar host
-.Sh DESCRIPTION
-.Bf -symbolic
-This command is obsolete.
-Users are advised to use
-.Xr autofs 5
-instead.
-.Ef
-.Pp
-The
-.Nm
-utility
-is used to find out what
-.Xr amd 8
-thinks are the first two network
-interfaces and network names/numbers used, as well as the IP address
-used for
-.Xr amd 8
-to NFS-mount itself.
-.Pp
-If
-.Ar host
-is specified, then
-.Nm
-will test for the working combinations of
-.Tn NFS
-protocol and version from the current client to the
-.Tn NFS
-server
-.Ar host .
-If not specified,
-.Ar host
-defaults to
-.Dq Li localhost .
-.Sh SEE ALSO
-.Xr amd 8
-.Pp
-.Dq am-utils
-.Xr info 1
-entry.
-.Rs
-.%A Erez Zadok
-.%B "Linux NFS and Automounter Administration"
-.%O ISBN 0-7821-2739-8
-.%I Sybex
-.%D 2001
-.Re
-.Pp
-.Pa http://www.am-utils.org/
-.Rs
-.%T Amd \- The 4.4 BSD Automounter
-.Re
-.Sh HISTORY
-The
-.Nm
-utility appeared in
-.Fx 3.0 .
-.Sh AUTHORS
-.An Erez Zadok Aq ezk@cs.sunysb.edu ,
-Computer Science Department, Stony Brook University, Stony Brook, New York, USA.
-.Pp
-Other authors and contributors to am-utils are listed in the
-.Pa AUTHORS
-file distributed with am-utils.
diff --git a/contrib/amd/wire-test/wire-test.c b/contrib/amd/wire-test/wire-test.c
deleted file mode 100644
index 0adcf5d66665..000000000000
--- a/contrib/amd/wire-test/wire-test.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 1997-2014 Erez Zadok
- * Copyright (c) 1990 Jan-Simon Pendry
- * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
- * Copyright (c) 1990 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Jan-Simon Pendry at Imperial College, London.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *
- * File: am-utils/wire-test/wire-test.c
- *
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif /* HAVE_CONFIG_H */
-#include <am_defs.h>
-
-#define STRMAX 100
-
-char hostname[MAXHOSTNAMELEN + 1];
-
-
-int
-main(int argc, char **argv)
-{
- char *networkName1, *networkNumber1;
- struct in_addr myipaddr; /* (An) IP address of this host */
- char *testhost, *proto, *tmp_buf;
- int nv, ret;
- struct sockaddr_in *ip;
- struct hostent *hp = NULL;
-
- am_set_progname(argv[0]);
-
- if (gethostname(hostname, sizeof(hostname)) < 0) {
- perror(argv[0]);
- exit(1);
- }
- hostname[sizeof(hostname) - 1] = '\0';
-
- /* get list of networks */
- getwire(&networkName1, &networkNumber1);
- tmp_buf = print_wires();
- if (tmp_buf) {
- fprintf(stderr, "%s", tmp_buf);
- XFREE(tmp_buf);
- }
-
- /* also print my IP address */
- amu_get_myaddress(&myipaddr, NULL);
- fprintf(stderr, "My IP address is 0x%x.\n", (unsigned int) htonl(myipaddr.s_addr));
-
- /*
- * NFS VERSION/PROTOCOL TESTS:
- * If argv[1] is specified perform nfs tests to that host, else use
- * localhost.
- */
- if (argc > 1)
- testhost = argv[1];
- else
- testhost = "localhost";
- hp = gethostbyname(testhost);
- if (!hp) {
- fprintf(stderr, "NFS vers/proto failed: no such hostname \"%s\"\n", testhost);
- exit(1);
- }
- ip = (struct sockaddr_in *) xmalloc(sizeof(struct sockaddr_in));
- memset((voidp) ip, 0, sizeof(*ip));
- /* as per POSIX, sin_len need not be set (used internally by kernel) */
- ip->sin_family = AF_INET;
- memmove((voidp) &ip->sin_addr, (voidp) hp->h_addr, sizeof(ip->sin_addr));
- ip->sin_port = htons(NFS_PORT);
-
- fprintf(stderr, "NFS Version and protocol tests to host \"%s\"...\n", testhost);
- proto = "udp";
- for (nv=2; nv<=3; ++nv) {
- fprintf(stderr, "\ttesting vers=%d, proto=\"%s\" -> ", nv, proto);
- ret = get_nfs_version(testhost, ip, nv, proto, 0);
- if (ret == 0)
- fprintf(stderr, "failed!\n");
- else
- fprintf(stderr, "found version %d.\n", ret);
- }
-
- proto = "tcp";
- for (nv=2; nv<=3; ++nv) {
- fprintf(stderr, "\ttesting vers=%d, proto=\"%s\" -> ", nv, proto);
- ret = get_nfs_version(testhost, ip, nv, proto, 0);
- if (ret == 0)
- fprintf(stderr, "failed!\n");
- else
- fprintf(stderr, "found version %d.\n", ret);
- }
-
- exit(0);
- return 0; /* should never reach here */
-}
diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile
index ca417fdf657b..d33275d5d274 100644
--- a/libexec/rc/rc.d/Makefile
+++ b/libexec/rc/rc.d/Makefile
@@ -1,335 +1,329 @@
# $FreeBSD$
.include <src.opts.mk>
CONFDIR= /etc/rc.d
CONFGROUPS= CONFS
CONFSPACKAGE= rc
CONFS= DAEMON \
FILESYSTEMS \
LOGIN \
NETWORKING \
SERVERS \
addswap \
adjkerntz \
archdep \
bgfsck \
${_blacklistd} \
bridge \
cfumass \
cleanvar \
cleartmp \
cron \
ctld \
ddb \
defaultroute \
devd \
devfs \
devmatch \
dhclient \
dmesg \
dumpon \
fsck \
gbde \
geli \
geli2 \
gptboot \
growfs \
gssd \
hostid \
hostid_save \
hostname \
iovctl \
ip6addrctl \
ipsec \
${_kadmind} \
${_kdc} \
${_kfd} \
kld \
kldxref \
${_kpasswdd} \
ldconfig \
linux \
local \
localpkg \
lockd \
mixer \
motd \
mountcritlocal \
mountcritremote \
mountlate \
mdconfig \
mdconfig2 \
mountd \
msgs \
natd \
netif \
netoptions \
netwait \
newsyslog \
nfsclient \
nfscbd \
nfsd \
nfsuserd \
nisdomain \
${_nscd} \
nsswitch \
ntpdate \
${_opensm} \
os-release \
pf \
pflog \
pfsync \
ppp \
pppoed \
pwcheck \
quota \
random \
rarpd \
rctl \
resolv \
root \
route6d \
routing \
rpcbind \
rtadvd \
rtsold \
rwho \
savecore \
securelevel \
serial \
sppp \
statd \
static_arp \
static_ndp \
stf \
swap \
swaplate \
sysctl \
syslogd \
sysvipc \
tmp \
ugidfw \
${_utx} \
var \
watchdogd
.if ${MK_NIS} != "no"
CONFS+= ypbind \
ypldap \
yppasswdd \
ypserv \
ypset \
ypupdated \
ypxfrd
.endif
.if ${MK_ACCT} != "no"
CONFGROUPS+= ACCT
ACCT+= accounting
ACCTPACKAGE= acct
.endif
.if ${MK_ACPI} != "no"
CONFGROUPS+= ACPI
ACPI= power_profile
ACPIPACKAGE= acpi
.endif
.if ${MK_ACPI} != "no" || ${MK_APM} != "no"
CONFS+= powerd
.endif
-.if ${MK_AMD} != "no"
-CONFGROUPS+= AMD
-AMD+= amd
-AMDPACKAGE= amd
-.endif
-
.if ${MK_APM} != "no"
CONFGROUPS+= APM
APM+= apm
.if ${MACHINE} == "i386"
APM+= apmd
.endif
APMPACKAGE= apm
.endif
.if ${MK_AUDIT} != "no"
CONFGROUPS+= AUDIT
AUDIT+= auditd
AUDIT+= auditdistd
.endif
.if ${MK_AUTOFS} != "no"
CONFS+= automount
CONFS+= automountd
CONFS+= autounmountd
.endif
.if ${MK_BLACKLIST} != "no"
_blacklistd+= blacklistd
.endif
.if ${MK_BLUETOOTH} != "no"
CONFGROUPS+= BLUETOOTH
BLUETOOTH+= bluetooth \
bthidd \
hcsecd \
rfcomm_pppd_server \
sdpd \
ubthidhci
BLUETOOTHPACKAGE= bluetooth
.endif
.if ${MK_BOOTPARAMD} != "no"
CONFS+= bootparams
.endif
.if ${MK_BSNMP} != "no"
CONFGROUPS+= BSNMP
BSNMP+= bsnmpd
BSNMPPACKAGE= bsnmp
.endif
.if ${MK_CCD} != "no"
CONFS+= ccd
.endif
.if ${MK_FTP} != "no"
CONFS+= ftpd
.endif
.if ${MK_HAST} != "no"
CONFGROUPS+= HAST
HAST= hastd
HASTPACKAGE= hast
.endif
.if ${MK_INETD} != "no"
CONFS+= inetd
.endif
.if ${MK_IPFILTER} != "no"
CONFS+= ipfilter \
ipfs \
ipmon \
ipnat \
ippool
.endif
.if ${MK_IPFW} != "no"
CONFS+= ipfw
.if ${MK_NETGRAPH} != "no"
CONFS+= ipfw_netflow
.endif
.endif
.if ${MK_ISCSI} != "no"
CONFS+= iscsictl
CONFS+= iscsid
.endif
.if ${MK_JAIL} != "no"
CONFGROUPS+= JAIL
JAIL+= jail
JAILPACKAGE= jail
.endif
.if ${MK_LEGACY_CONSOLE} != "no"
CONFS+= moused
CONFS+= syscons
.endif
.if ${MK_LPR} != "no"
CONFS+= lpd
.endif
.if ${MK_KERBEROS} != "no"
CONFS+= ipropd_master
CONFS+= ipropd_slave
_kadmind= kadmind
_kdc= kdc
_kfd= kfd
_kpasswdd= kpasswdd
DIRS+= VAR_HEMIDAL
VAR_HEMIDAL= /var/heimdal
VAR_HEMIDAL_MODE= 700
.endif
.if ${MK_MAIL} != "no"
CONFS+= othermta
.endif
.if ${MK_NS_CACHING} != "no"
_nscd= nscd
.endif
.if ${MK_NTP} != "no"
CONFS+= ntpd
.endif
.if ${MK_OFED} != "no"
_opensm= opensm
.endif
.if ${MK_OPENSSL} != "no"
CONFS+= keyserv
.endif
.if ${MK_OPENSSH} != "no"
CONFGROUPS+= SSH
SSH= sshd
SSHPACKAGE= ssh
.endif
.if ${MK_PF} != "no"
CONFS+= ftp-proxy
.endif
.if ${MK_ROUTED} != "no"
CONFS+= routed
.endif
.if ${MK_SENDMAIL} != "no"
CONFGROUPS+= SMRCD
SMRCD= sendmail
SMRCDPACKAGE= sendmail
.endif
.if ${MK_UNBOUND} != "no"
CONFGROUPS+= UNBOUND
UNBOUND+= local_unbound
UNBOUNDPACKAGE= unbound
.endif
.if ${MK_UTMPX} != "no"
_utx= utx
.endif
.if ${MK_VI} != "no"
CONFGROUPS+= VI
VI+= virecover
VIPACKAGE= vi
.endif
.if ${MK_WIRELESS} != "no"
CONFS+= hostapd
CONFS+= wpa_supplicant
.endif
.if ${MK_ZFS} != "no"
CONFGROUPS+= ZFS
ZFS+= zfs
ZFS+= zfsbe
ZFS+= zfsd
ZFS+= zvol
.endif
.for fg in ${CONFGROUPS}
${fg}MODE?= ${BINMODE}
.endfor
.include <bsd.prog.mk>
diff --git a/libexec/rc/rc.d/amd b/libexec/rc/rc.d/amd
deleted file mode 100755
index 123e89fbe656..000000000000
--- a/libexec/rc/rc.d/amd
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-#
-# $FreeBSD$
-#
-
-# PROVIDE: amd
-# REQUIRE: rpcbind ypset nfsclient FILESYSTEMS ldconfig
-# BEFORE: DAEMON
-# KEYWORD: nojail shutdown
-
-. /etc/rc.subr
-
-name="amd"
-desc="Automatically mount filesystems"
-rcvar="amd_enable"
-command="/usr/sbin/${name}"
-start_precmd="amd_precmd"
-command_args="&"
-extra_commands="reload"
-
-amd_precmd()
-{
- force_depend nfsclient nfs_client || return 1
- force_depend rpcbind || return 1
-
- case ${amd_map_program} in
- [Nn][Oo] | '')
- ;;
- *)
- rc_flags="${rc_flags} `echo $(eval ${amd_map_program})`"
- ;;
- esac
-
- case "${amd_flags}" in
- '')
- if [ ! -r /etc/amd.conf ]; then
- warn 'amd will not load without arguments'
- return 1
- fi
- ;;
- *)
- rc_flags="-p ${rc_flags}"
- command_args="> /var/run/amd.pid 2> /dev/null"
- ;;
- esac
-}
-
-load_rc_config $name
-run_rc_command "$1"
diff --git a/release/Makefile b/release/Makefile
index 5fc62f5a3979..4c4c3de59267 100644
--- a/release/Makefile
+++ b/release/Makefile
@@ -1,339 +1,339 @@
# $FreeBSD$
#
# Makefile for building releases and release media.
#
# User-driven targets:
# cdrom: Builds release CD-ROM media (disc1.iso)
# dvdrom: Builds release DVD-ROM media (dvd1.iso)
# memstick: Builds memory stick image (memstick.img)
# mini-memstick: Builds minimal memory stick image (mini-memstick.img)
# ftp: Sets up FTP distribution area (ftp)
# release: Invokes real-release, vm-release, and cloudware-release targets
# real-release: Build all media and FTP distribution area
# vm-release: Build all virtual machine image targets
# cloudware-release: Build all cloud hosting provider targets
# install: Invokes the release-install and vm-install targets
# release-install: Copies all release installation media into ${DESTDIR}
# vm-install: Copies all virtual machine images into ${DESTDIR}
#
# Variables affecting the build process:
# WORLDDIR: location of src tree -- must have built world and default kernel
# (by default, the directory above this one)
# PORTSDIR: location of ports tree to distribute (default: /usr/ports)
# DOCDIR: location of doc tree (default: /usr/doc)
# XTRADIR: xtra-bits-dir argument for <arch>/mkisoimages.sh
# NOPKG: if set, do not distribute third-party packages
# NOPORTS: if set, do not distribute ports tree
# NOSRC: if set, do not distribute source tree
# NODOC: if set, do not generate release documentation
# WITH_DVD: if set, generate dvd1.iso
# WITH_COMPRESSED_IMAGES: if set, compress installation images with xz(1)
# (uncompressed images are not removed)
# WITH_VMIMAGES: if set, build virtual machine images with the release
# WITH_COMPRESSED_VMIMAGES: if set, compress virtual machine disk images
# with xz(1) (extremely time consuming)
# WITH_CLOUDWARE: if set, build cloud hosting disk images with the release
# TARGET/TARGET_ARCH: architecture of built release
#
WORLDDIR?= ${.CURDIR}/..
PORTSDIR?= /usr/ports
DOCDIR?= /usr/doc
RELNOTES_LANG?= en_US.ISO8859-1
.if !defined(TARGET) || empty(TARGET)
TARGET= ${MACHINE}
.endif
.if !defined(TARGET_ARCH) || empty(TARGET_ARCH)
.if ${TARGET} == ${MACHINE}
TARGET_ARCH= ${MACHINE_ARCH}
.else
TARGET_ARCH= ${TARGET}
.endif
.endif
IMAKE= ${MAKE} TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}
DISTDIR= dist
# Define OSRELEASE by using newvers.sh
.if !defined(OSRELEASE) || empty(OSRELEASE)
.for _V in TYPE BRANCH REVISION
${_V}!= eval $$(awk '/^${_V}=/{print}' ${.CURDIR}/../sys/conf/newvers.sh); echo $$${_V}
.endfor
.for _V in ${TARGET_ARCH}
.if !empty(TARGET:M${_V})
OSRELEASE= ${TYPE}-${REVISION}-${BRANCH}-${TARGET}
VOLUME_LABEL= ${REVISION:C/[.-]/_/g}_${BRANCH:C/[.-]/_/g}_${TARGET}
.else
OSRELEASE= ${TYPE}-${REVISION}-${BRANCH}-${TARGET}-${TARGET_ARCH}
VOLUME_LABEL= ${REVISION:C/[.-]/_/g}_${BRANCH:C/[.-]/_/g}_${TARGET_ARCH}
.endif
.endfor
.endif
.if !defined(VOLUME_LABEL) || empty(VOLUME_LABEL)
VOLUME_LABEL= FreeBSD_Install
.endif
.if !exists(${DOCDIR})
NODOC= true
.endif
.if !exists(${PORTSDIR})
NOPORTS= true
.endif
EXTRA_PACKAGES=
.if !defined(NOPORTS)
EXTRA_PACKAGES+= ports.txz
.endif
.if !defined(NOSRC)
EXTRA_PACKAGES+= src.txz
.endif
.if !defined(NODOC)
EXTRA_PACKAGES+= reldoc
. if !defined(SVN) || empty(SVN)
. for S in svn svnlite
. for D in /usr/local/bin /usr/bin
. if(exists(${D}/${S}))
SVN?= ${D}/${S}
. endif
. endfor
. endfor
. endif
.endif
RELEASE_TARGETS= ftp
IMAGES=
.if exists(${.CURDIR}/${TARGET}/mkisoimages.sh)
RELEASE_TARGETS+= cdrom
IMAGES+= disc1.iso bootonly.iso
. if defined(WITH_DVD) && !empty(WITH_DVD)
RELEASE_TARGETS+= dvdrom
IMAGES+= dvd1.iso
. endif
.endif
.if exists(${.CURDIR}/${TARGET}/make-memstick.sh)
RELEASE_TARGETS+= memstick.img
RELEASE_TARGETS+= mini-memstick.img
IMAGES+= memstick.img
IMAGES+= mini-memstick.img
.endif
CLEANFILES= packagesystem *.txz MANIFEST release ${IMAGES}
.if defined(WITH_COMPRESSED_IMAGES) && !empty(WITH_COMPRESSED_IMAGES)
. for I in ${IMAGES}
CLEANFILES+= ${I}.xz
. endfor
.endif
.if defined(WITH_DVD) && !empty(WITH_DVD)
CLEANFILES+= pkg-stage
.endif
CLEANDIRS= dist ftp disc1 bootonly dvd
.if !defined(NODOC)
CLEANDIRS+= reldoc rdoc
.endif
beforeclean:
chflags -R noschg .
.include <bsd.obj.mk>
clean: beforeclean
base.txz:
mkdir -p ${DISTDIR}
cd ${WORLDDIR} && ${IMAKE} distributeworld DISTDIR=${.OBJDIR}/${DISTDIR}
# Set up mergemaster root database
sh ${.CURDIR}/scripts/mm-mtree.sh -m ${WORLDDIR} -F \
"TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET} ${.MAKE.JOBS:D-j${.MAKE.JOBS}}" \
-D "${.OBJDIR}/${DISTDIR}/base"
etcupdate extract -B -M "TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}" \
-s ${WORLDDIR} -d "${.OBJDIR}/${DISTDIR}/base/var/db/etcupdate"
# Package all components
cd ${WORLDDIR} && ${IMAKE} packageworld DISTDIR=${.OBJDIR}/${DISTDIR}
mv ${DISTDIR}/*.txz .
kernel.txz:
mkdir -p ${DISTDIR}
cd ${WORLDDIR} && ${IMAKE} distributekernel packagekernel DISTDIR=${.OBJDIR}/${DISTDIR}
mv ${DISTDIR}/kernel*.txz .
src.txz:
mkdir -p ${DISTDIR}/usr
ln -fs ${WORLDDIR} ${DISTDIR}/usr/src
cd ${DISTDIR} && tar cLvf - --exclude .svn --exclude .zfs \
--exclude .git --exclude @ --exclude usr/src/release/dist usr/src | \
${XZ_CMD} > ${.OBJDIR}/src.txz
ports.txz:
mkdir -p ${DISTDIR}/usr
ln -fs ${PORTSDIR} ${DISTDIR}/usr/ports
cd ${DISTDIR} && tar cLvf - \
--exclude .git --exclude .svn \
--exclude usr/ports/distfiles --exclude usr/ports/packages \
--exclude 'usr/ports/INDEX*' --exclude work usr/ports | \
${XZ_CMD} > ${.OBJDIR}/ports.txz
reldoc:
cd ${DOCDIR}/en_US.ISO8859-1/htdocs/releases/${REVISION}R && \
env MAN4DIR=${WORLDDIR}/share/man/man4 \
SVN=${SVN} \
_BRANCH=${BRANCH} \
${MAKE} all install clean "FORMATS=html txt" \
INSTALL_COMPRESSED='' URLS_ABSOLUTE=YES DOCDIR=${.OBJDIR}/rdoc \
WEBDIR=${DOCDIR} DESTDIR=${.OBJDIR}/rdoc
mkdir -p reldoc
.for i in hardware readme relnotes errata
ln -f ${.OBJDIR}/rdoc/${i:tl}.txt \
reldoc/${i:tu}.TXT
ln -f ${.OBJDIR}/rdoc/${i:tl}.html \
reldoc/${i:tu}.HTML
.endfor
cp ${.OBJDIR}/rdoc/docbook.css \
reldoc/
disc1: packagesystem
# Install system
mkdir -p ${.TARGET}
cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \
- DESTDIR=${.OBJDIR}/${.TARGET} MK_AMD=no MK_AT=no \
+ DESTDIR=${.OBJDIR}/${.TARGET} MK_AT=no \
MK_INSTALLLIB=no MK_LIB32=no MK_MAIL=no \
MK_TOOLCHAIN=no MK_PROFILE=no \
MK_RESCUE=no MK_DICT=no \
MK_KERNEL_SYMBOLS=no MK_TESTS=no MK_DEBUG_FILES=no \
-DDB_FROM_SRC
# Copy distfiles
mkdir -p ${.TARGET}/usr/freebsd-dist
for dist in MANIFEST $$(ls *.txz | grep -vE -- '(base|lib32)-dbg'); \
do cp $${dist} ${.TARGET}/usr/freebsd-dist; \
done
# Copy documentation, if generated
.if !defined(NODOC)
cp reldoc/* ${.TARGET}
.endif
# Set up installation environment
ln -fs /tmp/bsdinstall_etc/resolv.conf ${.TARGET}/etc/resolv.conf
echo sendmail_enable=\"NONE\" > ${.TARGET}/etc/rc.conf
echo hostid_enable=\"NO\" >> ${.TARGET}/etc/rc.conf
echo debug.witness.trace=0 >> ${.TARGET}/etc/sysctl.conf
echo vfs.mountroot.timeout=\"10\" >> ${.TARGET}/boot/loader.conf
echo kernels_autodetect=\"NO\" >> ${.TARGET}/boot/loader.conf
cp ${.CURDIR}/rc.local ${.TARGET}/etc
touch ${.TARGET}
bootonly: packagesystem
# Install system
mkdir -p ${.TARGET}
cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \
- DESTDIR=${.OBJDIR}/${.TARGET} MK_AMD=no MK_AT=no \
+ DESTDIR=${.OBJDIR}/${.TARGET} MK_AT=no \
MK_GAMES=no \
MK_INSTALLLIB=no MK_LIB32=no MK_MAIL=no \
MK_TOOLCHAIN=no MK_PROFILE=no \
MK_RESCUE=no MK_DICT=no \
MK_KERNEL_SYMBOLS=no MK_TESTS=no MK_DEBUG_FILES=no \
-DDB_FROM_SRC
# Copy manifest only (no distfiles) to get checksums
mkdir -p ${.TARGET}/usr/freebsd-dist
cp MANIFEST ${.TARGET}/usr/freebsd-dist
# Copy documentation, if generated
.if !defined(NODOC)
cp reldoc/* ${.TARGET}
.endif
# Set up installation environment
ln -fs /tmp/bsdinstall_etc/resolv.conf ${.TARGET}/etc/resolv.conf
echo sendmail_enable=\"NONE\" > ${.TARGET}/etc/rc.conf
echo hostid_enable=\"NO\" >> ${.TARGET}/etc/rc.conf
echo debug.witness.trace=0 >> ${.TARGET}/etc/sysctl.conf
echo vfs.mountroot.timeout=\"10\" >> ${.TARGET}/boot/loader.conf
echo kernels_autodetect=\"NO\" >> ${.TARGET}/boot/loader.conf
cp ${.CURDIR}/rc.local ${.TARGET}/etc
dvd: packagesystem
# Install system
mkdir -p ${.TARGET}
cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution \
DESTDIR=${.OBJDIR}/${.TARGET} MK_RESCUE=no MK_KERNEL_SYMBOLS=no \
MK_TESTS=no MK_DEBUG_FILES=no \
-DDB_FROM_SRC
# Copy distfiles
mkdir -p ${.TARGET}/usr/freebsd-dist
for dist in MANIFEST $$(ls *.txz | grep -v -- '(base|lib32)-dbg'); \
do cp $${dist} ${.TARGET}/usr/freebsd-dist; \
done
# Copy documentation, if generated
.if !defined(NODOC)
cp reldoc/* ${.TARGET}
.endif
# Set up installation environment
ln -fs /tmp/bsdinstall_etc/resolv.conf ${.TARGET}/etc/resolv.conf
echo sendmail_enable=\"NONE\" > ${.TARGET}/etc/rc.conf
echo hostid_enable=\"NO\" >> ${.TARGET}/etc/rc.conf
echo debug.witness.trace=0 >> ${.TARGET}/etc/sysctl.conf
echo vfs.mountroot.timeout=\"10\" >> ${.TARGET}/boot/loader.conf
echo kernels_autodetect=\"NO\" >> ${.TARGET}/boot/loader.conf
cp ${.CURDIR}/rc.local ${.TARGET}/etc
touch ${.TARGET}
release.iso: disc1.iso
disc1.iso: disc1
sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b ${VOLUME_LABEL}_CD ${.TARGET} disc1 ${XTRADIR}
dvd1.iso: dvd pkg-stage
sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b ${VOLUME_LABEL}_DVD ${.TARGET} dvd ${XTRADIR}
bootonly.iso: bootonly
sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b ${VOLUME_LABEL}_BO ${.TARGET} bootonly ${XTRADIR}
memstick: memstick.img
memstick.img: disc1
sh ${.CURDIR}/${TARGET}/make-memstick.sh disc1 ${.TARGET}
mini-memstick: mini-memstick.img
mini-memstick.img: bootonly
sh ${.CURDIR}/${TARGET}/make-memstick.sh bootonly ${.TARGET}
packagesystem: base.txz kernel.txz ${EXTRA_PACKAGES}
sh ${.CURDIR}/scripts/make-manifest.sh *.txz > MANIFEST
touch ${.TARGET}
pkg-stage:
.if !defined(NOPKG) || empty(NOPKG)
env PORTSDIR=${PORTSDIR} REPOS_DIR=${.CURDIR}/pkg_repos/ \
sh ${.CURDIR}/scripts/pkg-stage.sh
mkdir -p ${.OBJDIR}/dvd/packages/repos/
cp ${.CURDIR}/scripts/FreeBSD_install_cdrom.conf \
${.OBJDIR}/dvd/packages/repos/
.endif
touch ${.TARGET}
cdrom: disc1.iso bootonly.iso
dvdrom: dvd1.iso
ftp: packagesystem
rm -rf ftp
mkdir -p ftp
cp *.txz MANIFEST ftp
release: real-release vm-release cloudware-release
${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} release-done
true
release-done:
touch release
real-release:
${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} obj
${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${RELEASE_TARGETS}
install: release-install vm-install
release-install:
.if defined(DESTDIR) && !empty(DESTDIR)
mkdir -p ${DESTDIR}
.endif
cp -a ftp ${DESTDIR}/
.for I in ${IMAGES}
cp -p ${I} ${DESTDIR}/${OSRELEASE}-${I}
. if defined(WITH_COMPRESSED_IMAGES) && !empty(WITH_COMPRESSED_IMAGES)
${XZ_CMD} -k ${DESTDIR}/${OSRELEASE}-${I}
. endif
.endfor
cd ${DESTDIR} && sha512 ${OSRELEASE}* > ${DESTDIR}/CHECKSUM.SHA512
cd ${DESTDIR} && sha256 ${OSRELEASE}* > ${DESTDIR}/CHECKSUM.SHA256
.include "${.CURDIR}/Makefile.vm"
diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc
index 1802de846f70..f2a250af462d 100644
--- a/tools/build/mk/OptionalObsoleteFiles.inc
+++ b/tools/build/mk/OptionalObsoleteFiles.inc
@@ -1,10238 +1,10214 @@
#
# $FreeBSD$
#
# This file add support for the WITHOUT_* and WITH_* knobs in src.conf(5) to
# the check-old and delete-old* targets.
#
.if ${MK_ACCT} == no
OLD_FILES+=etc/rc.d/accounting
OLD_FILES+=etc/periodic/daily/310.accounting
OLD_FILES+=usr/sbin/accton
OLD_FILES+=usr/sbin/sa
OLD_FILES+=usr/share/man/man8/accton.8.gz
OLD_FILES+=usr/share/man/man8/sa.8.gz
OLD_FILES+=usr/tests/usr.sbin/sa/Kyuafile
OLD_FILES+=usr/tests/usr.sbin/sa/legacy_test
OLD_FILES+=usr/tests/usr.sbin/sa/v1-amd64-sav.in
OLD_FILES+=usr/tests/usr.sbin/sa/v1-amd64-sav.out
OLD_FILES+=usr/tests/usr.sbin/sa/v1-amd64-u.out
OLD_FILES+=usr/tests/usr.sbin/sa/v1-amd64-usr.in
OLD_FILES+=usr/tests/usr.sbin/sa/v1-amd64-usr.out
OLD_FILES+=usr/tests/usr.sbin/sa/v1-i386-sav.in
OLD_FILES+=usr/tests/usr.sbin/sa/v1-i386-sav.out
OLD_FILES+=usr/tests/usr.sbin/sa/v1-i386-u.out
OLD_FILES+=usr/tests/usr.sbin/sa/v1-i386-usr.in
OLD_FILES+=usr/tests/usr.sbin/sa/v1-i386-usr.out
OLD_FILES+=usr/tests/usr.sbin/sa/v1-sparc64-sav.in
OLD_FILES+=usr/tests/usr.sbin/sa/v1-sparc64-sav.out
OLD_FILES+=usr/tests/usr.sbin/sa/v1-sparc64-u.out
OLD_FILES+=usr/tests/usr.sbin/sa/v1-sparc64-usr.in
OLD_FILES+=usr/tests/usr.sbin/sa/v1-sparc64-usr.out
OLD_FILES+=usr/tests/usr.sbin/sa/v2-amd64-sav.in
OLD_FILES+=usr/tests/usr.sbin/sa/v2-amd64-u.out
OLD_FILES+=usr/tests/usr.sbin/sa/v2-amd64-usr.in
OLD_FILES+=usr/tests/usr.sbin/sa/v2-i386-sav.in
OLD_FILES+=usr/tests/usr.sbin/sa/v2-i386-u.out
OLD_FILES+=usr/tests/usr.sbin/sa/v2-i386-usr.in
OLD_FILES+=usr/tests/usr.sbin/sa/v2-sparc64-sav.in
OLD_FILES+=usr/tests/usr.sbin/sa/v2-sparc64-u.out
OLD_FILES+=usr/tests/usr.sbin/sa/v2-sparc64-usr.in
OLD_DIRS+=usr/tests/usr.sbin/sa
.endif
.if ${MK_ACPI} == no
OLD_FILES+=etc/devd/asus.conf
OLD_FILES+=etc/rc.d/power_profile
OLD_FILES+=usr/sbin/acpiconf
OLD_FILES+=usr/sbin/acpidb
OLD_FILES+=usr/sbin/acpidump
OLD_FILES+=usr/sbin/iasl
OLD_FILES+=usr/share/man/man8/acpiconf.8.gz
OLD_FILES+=usr/share/man/man8/acpidb.8.gz
OLD_FILES+=usr/share/man/man8/acpidump.8.gz
OLD_FILES+=usr/share/man/man8/iasl.8.gz
.endif
.if ${MK_ACPI} == no && ${MK_APM} == no
OLD_FILES+=etc/rc.d/powerd
.endif
-.if ${MK_AMD} == no
-OLD_FILES+=etc/amd.map
-OLD_FILES+=etc/newsyslog.conf.d/amd.conf
-OLD_FILES+=etc/rc.d/amd
-OLD_FILES+=usr/bin/pawd
-OLD_FILES+=usr/sbin/amd
-OLD_FILES+=usr/sbin/amq
-OLD_FILES+=usr/sbin/fixmount
-OLD_FILES+=usr/sbin/fsinfo
-OLD_FILES+=usr/sbin/hlfsd
-OLD_FILES+=usr/sbin/mk-amd-map
-OLD_FILES+=usr/sbin/wire-test
-OLD_FILES+=usr/share/examples/etc/amd.map
-OLD_FILES+=usr/share/man/man1/pawd.1.gz
-OLD_FILES+=usr/share/man/man5/amd.conf.5.gz
-OLD_FILES+=usr/share/man/man8/amd.8.gz
-OLD_FILES+=usr/share/man/man8/amq.8.gz
-OLD_FILES+=usr/share/man/man8/fixmount.8.gz
-OLD_FILES+=usr/share/man/man8/fsinfo.8.gz
-OLD_FILES+=usr/share/man/man8/hlfsd.8.gz
-OLD_FILES+=usr/share/man/man8/mk-amd-map.8.gz
-OLD_FILES+=usr/share/man/man8/wire-test.8.gz
-.endif
-
.if ${MK_APM} == no
OLD_FILES+=etc/rc.d/apm
OLD_FILES+=etc/rc.d/apmd
OLD_FILES+=etc/apmd.conf
OLD_FILES+=usr/sbin/apm
OLD_FILES+=usr/share/examples/etc/apmd.conf
OLD_FILES+=usr/share/man/man8/amd64/apm.8.gz
OLD_FILES+=usr/share/man/man8/amd64/apmconf.8.gz
.endif
.if ${MK_AT} == no
OLD_FILES+=etc/pam.d/atrun
OLD_FILES+=usr/bin/at
OLD_FILES+=usr/bin/atq
OLD_FILES+=usr/bin/atrm
OLD_FILES+=usr/bin/batch
OLD_FILES+=usr/libexec/atrun
OLD_FILES+=usr/share/man/man1/at.1.gz
OLD_FILES+=usr/share/man/man1/atq.1.gz
OLD_FILES+=usr/share/man/man1/atrm.1.gz
OLD_FILES+=usr/share/man/man1/batch.1.gz
OLD_FILES+=usr/share/man/man8/atrun.8.gz
.endif
.if ${MK_ATM} == no
OLD_FILES+=usr/bin/sscop
OLD_FILES+=usr/include/netnatm/addr.h
OLD_FILES+=usr/include/netnatm/api/atmapi.h
OLD_FILES+=usr/include/netnatm/api/ccatm.h
OLD_FILES+=usr/include/netnatm/api/unisap.h
OLD_DIRS+=usr/include/netnatm/api
OLD_FILES+=usr/include/netnatm/msg/uni_config.h
OLD_FILES+=usr/include/netnatm/msg/uni_hdr.h
OLD_FILES+=usr/include/netnatm/msg/uni_ie.h
OLD_FILES+=usr/include/netnatm/msg/uni_msg.h
OLD_FILES+=usr/include/netnatm/msg/unimsglib.h
OLD_FILES+=usr/include/netnatm/msg/uniprint.h
OLD_FILES+=usr/include/netnatm/msg/unistruct.h
OLD_DIRS+=usr/include/netnatm/msg
OLD_FILES+=usr/include/netnatm/saal/sscfu.h
OLD_FILES+=usr/include/netnatm/saal/sscfudef.h
OLD_FILES+=usr/include/netnatm/saal/sscop.h
OLD_FILES+=usr/include/netnatm/saal/sscopdef.h
OLD_DIRS+=usr/include/netnatm/saal
OLD_FILES+=usr/include/netnatm/sig/uni.h
OLD_FILES+=usr/include/netnatm/sig/unidef.h
OLD_FILES+=usr/include/netnatm/sig/unisig.h
OLD_DIRS+=usr/include/netnatm/sig
OLD_FILES+=usr/include/netnatm/unimsg.h
OLD_FILES+=usr/lib/libngatm.a
OLD_FILES+=usr/lib/libngatm.so
OLD_LIBS+=usr/lib/libngatm.so.4
OLD_FILES+=usr/lib/libngatm_p.a
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/libngatm.a
OLD_FILES+=usr/lib32/libngatm.so
OLD_LIBS+=usr/lib32/libngatm.so.4
OLD_FILES+=usr/lib32/libngatm_p.a
.endif
OLD_FILES+=usr/share/man/man1/sscop.1.gz
OLD_FILES+=usr/share/man/man3/libngatm.3.gz
OLD_FILES+=usr/share/man/man3/uniaddr.3.gz
OLD_FILES+=usr/share/man/man3/unifunc.3.gz
OLD_FILES+=usr/share/man/man3/unimsg.3.gz
OLD_FILES+=usr/share/man/man3/unisap.3.gz
OLD_FILES+=usr/share/man/man3/unistruct.3.gz
.endif
.if ${MK_AUDIT} == no
OLD_FILES+=etc/rc.d/auditd
OLD_FILES+=etc/rc.d/auditdistd
OLD_FILES+=usr/sbin/audit
OLD_FILES+=usr/sbin/auditd
OLD_FILES+=usr/sbin/auditdistd
OLD_FILES+=usr/sbin/auditreduce
OLD_FILES+=usr/sbin/praudit
OLD_FILES+=usr/share/man/man1/auditreduce.1.gz
OLD_FILES+=usr/share/man/man1/praudit.1.gz
OLD_FILES+=usr/share/man/man5/auditdistd.conf.5.gz
OLD_FILES+=usr/share/man/man8/audit.8.gz
OLD_FILES+=usr/share/man/man8/auditd.8.gz
OLD_FILES+=usr/share/man/man8/auditdistd.8.gz
OLD_FILES+=usr/tests/sys/audit/process-control
OLD_FILES+=usr/tests/sys/audit/open
OLD_FILES+=usr/tests/sys/audit/network
OLD_FILES+=usr/tests/sys/audit/miscellaneous
OLD_FILES+=usr/tests/sys/audit/Kyuafile
OLD_FILES+=usr/tests/sys/audit/ioctl
OLD_FILES+=usr/tests/sys/audit/inter-process
OLD_FILES+=usr/tests/sys/audit/file-write
OLD_FILES+=usr/tests/sys/audit/file-read
OLD_FILES+=usr/tests/sys/audit/file-delete
OLD_FILES+=usr/tests/sys/audit/file-create
OLD_FILES+=usr/tests/sys/audit/file-close
OLD_FILES+=usr/tests/sys/audit/file-attribute-modify
OLD_FILES+=usr/tests/sys/audit/file-attribute-access
OLD_FILES+=usr/tests/sys/audit/administrative
OLD_DIRS+=usr/tests/sys/audit
.endif
.if ${MK_AUTHPF} == no
OLD_FILES+=usr/sbin/authpf
OLD_FILES+=usr/sbin/authpf-noip
OLD_FILES+=usr/share/man/man8/authpf.8.gz
OLD_FILES+=usr/share/man/man8/authpf-noip.8.gz
.endif
.if ${MK_AUTOFS} == no
OLD_FILES+=etc/autofs/include_ldap
OLD_FILES+=etc/autofs/special_hosts
OLD_FILES+=etc/autofs/special_media
OLD_FILES+=etc/autofs/special_noauto
OLD_FILES+=etc/autofs/special_null
OLD_FILES+=etc/auto_master
OLD_FILES+=etc/rc.d/automount
OLD_FILES+=etc/rc.d/automountd
OLD_FILES+=etc/rc.d/autounmountd
OLD_FILES+=usr/sbin/automount
OLD_FILES+=usr/sbin/automountd
OLD_FILES+=usr/sbin/autounmountd
OLD_FILES+=usr/share/man/man5/autofs.5.gz
OLD_FILES+=usr/share/man/man5/auto_master.5.gz
OLD_FILES+=usr/share/man/man8/automount.8.gz
OLD_FILES+=usr/share/man/man8/automountd.8.gz
OLD_FILES+=usr/share/man/man8/autounmountd.8.gz
OLD_DIRS+=etc/autofs
.endif
.if ${MK_BHYVE} == no
OLD_FILES+=usr/lib/libvmmapi.a
OLD_FILES+=usr/lib/libvmmapi.so
OLD_LIBS+=usr/lib/libvmmapi.so.5
OLD_FILES+=usr/include/vmmapi.h
OLD_FILES+=usr/sbin/bhyve
OLD_FILES+=usr/sbin/bhyvectl
OLD_FILES+=usr/sbin/bhyveload
OLD_FILES+=usr/share/examples/bhyve/vmrun.sh
OLD_FILES+=usr/share/man/man8/bhyve.8.gz
OLD_FILES+=usr/share/man/man8/bhyveload.8.gz
OLD_DIRS+=usr/share/examples/bhyve
.endif
.if ${MK_BINUTILS} == no
.if !defined(WITH_PORT_BASE_BINUTILS)
OLD_FILES+=usr/bin/as
.if ${MK_LLD_IS_LD} == no
OLD_FILES+=usr/bin/ld
OLD_FILES+=usr/share/man/man1/ld.1.gz
.endif
OLD_FILES+=usr/bin/objdump
.endif
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/armelf_fbsd.xw
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/armelfb_fbsd.xw
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.x
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xbn
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xc
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xd
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xdc
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xdw
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xn
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xr
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xs
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xsc
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xsw
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xu
OLD_FILES+=usr/libdata/ldscripts/elf32_sparc.xw
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/elf32btsmip_fbsd.xw
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/elf32btsmipn32_fbsd.xw
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmip_fbsd.xw
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/elf32ltsmipn32_fbsd.xw
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/elf32ppc_fbsd.xw
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.x
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xbn
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xc
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xd
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xdc
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xdw
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xn
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xr
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xs
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xsc
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xsw
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xu
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc.xw
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/elf64_sparc_fbsd.xw
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/elf64btsmip_fbsd.xw
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/elf64ltsmip_fbsd.xw
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/elf64ppc_fbsd.xw
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/elf_i386_fbsd.xw
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.x
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xbn
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xc
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xd
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xdc
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xdw
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xn
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xr
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xs
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xsc
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xsw
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xu
OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xw
.if !defined(WITH_PORT_BASE_BINUTILS)
OLD_FILES+=usr/share/man/man1/as.1.gz
OLD_FILES+=usr/share/man/man1/objdump.1.gz
OLD_FILES+=usr/share/man/man7/as.7.gz
OLD_FILES+=usr/share/man/man7/ld.7.gz
OLD_FILES+=usr/share/man/man7/ldint.7.gz
OLD_FILES+=usr/share/man/man7/binutils.7.gz
.endif
.endif
# powerpc64 still needs ld.bfd for 32-bit binaries/libraries
.if !defined(WITH_PORT_BASE_BINUTILS) && ${TARGET_ARCH} != "powerpc64"
.if ${MK_BINUTILS} == no || ${MK_LLD_IS_LD} == yes
OLD_FILES+=usr/bin/ld.bfd
.endif
.endif
.if ${MK_BLACKLIST} == no
OLD_FILES+=etc/blacklistd.conf
OLD_FILES+=etc/rc.d/blacklistd
OLD_FILES+=usr/include/blacklist.h
OLD_FILES+=usr/lib/libblacklist.a
OLD_FILES+=usr/lib/libblacklist_p.a
OLD_FILES+=usr/lib/libblacklist.so
OLD_LIBS+=usr/lib/libblacklist.so.0
OLD_FILES+=usr/libexec/blacklistd-helper
OLD_FILES+=usr/sbin/blacklistctl
OLD_FILES+=usr/sbin/blacklistd
OLD_FILES+=usr/share/man/man3/blacklist.3.gz
OLD_FILES+=usr/share/man/man3/blacklist_close.3.gz
OLD_FILES+=usr/share/man/man3/blacklist_open.3.gz
OLD_FILES+=usr/share/man/man3/blacklist_r.3.gz
OLD_FILES+=usr/share/man/man3/blacklist_sa.3.gz
OLD_FILES+=usr/share/man/man3/blacklist_sa_r.3.gz
OLD_FILES+=usr/share/man/man5/blacklistd.conf.5.gz
OLD_FILES+=usr/share/man/man8/blacklistctl.8.gz
OLD_FILES+=usr/share/man/man8/blacklistd.8.gz
.endif
.if ${MK_BLUETOOTH} == no
OLD_FILES+=etc/bluetooth/hcsecd.conf
OLD_FILES+=etc/bluetooth/hosts
OLD_FILES+=etc/bluetooth/protocols
OLD_FILES+=etc/defaults/bluetooth.device.conf
OLD_FILES+=etc/devd/iwmbtfw.conf
OLD_DIRS+=etc/bluetooth
OLD_FILES+=etc/rc.d/bluetooth
OLD_FILES+=etc/rc.d/bthidd
OLD_FILES+=etc/rc.d/hcsecd
OLD_FILES+=etc/rc.d/rfcomm_pppd_server
OLD_FILES+=etc/rc.d/sdpd
OLD_FILES+=etc/rc.d/ubthidhci
OLD_FILES+=usr/bin/bthost
OLD_FILES+=usr/bin/btsockstat
OLD_FILES+=usr/bin/rfcomm_sppd
OLD_FILES+=usr/include/bluetooth.h
OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_bluetooth.h
OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_bt3c.h
OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_btsocket.h
OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_btsocket_hci_raw.h
OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_btsocket_l2cap.h
OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_btsocket_rfcomm.h
OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_btsocket_sco.h
OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_h4.h
OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_hci.h
OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_l2cap.h
OLD_FILES+=usr/include/netgraph/bluetooth/include/ng_ubt.h
OLD_DIRS+=usr/include/netgraph/bluetooth/include
OLD_DIRS+=usr/include/netgraph/bluetooth
OLD_FILES+=usr/include/sdp.h
OLD_FILES+=usr/lib/libbluetooth.a
OLD_FILES+=usr/lib/libbluetooth.so
OLD_LIBS+=usr/lib/libbluetooth.so.4
OLD_FILES+=usr/lib/libbluetooth_p.a
OLD_FILES+=usr/lib/libsdp.a
OLD_FILES+=usr/lib/libsdp.so
OLD_LIBS+=usr/lib/libsdp.so.4
OLD_FILES+=usr/lib/libsdp_p.a
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/libbluetooth.a
OLD_FILES+=usr/lib32/libbluetooth.so
OLD_LIBS+=usr/lib32/libbluetooth.so.4
OLD_FILES+=usr/lib32/libbluetooth_p.a
OLD_FILES+=usr/lib32/libsdp.a
OLD_FILES+=usr/lib32/libsdp.so
OLD_LIBS+=usr/lib32/libsdp.so.4
OLD_FILES+=usr/lib32/libsdp_p.a
.endif
OLD_FILES+=usr/sbin/ath3kfw
OLD_FILES+=usr/sbin/bcmfw
OLD_FILES+=usr/sbin/bluetooth-config
OLD_FILES+=usr/sbin/bt3cfw
OLD_FILES+=usr/sbin/bthidcontrol
OLD_FILES+=usr/sbin/bthidd
OLD_FILES+=usr/sbin/btpand
OLD_FILES+=usr/sbin/hccontrol
OLD_FILES+=usr/sbin/hcsecd
OLD_FILES+=usr/sbin/hcseriald
OLD_FILES+=usr/sbin/iwmbtfw
OLD_FILES+=usr/sbin/l2control
OLD_FILES+=usr/sbin/l2ping
OLD_FILES+=usr/sbin/rfcomm_pppd
OLD_FILES+=usr/sbin/sdpcontrol
OLD_FILES+=usr/sbin/sdpd
OLD_FILES+=usr/share/examples/etc/defaults/bluetooth.device.conf
OLD_FILES+=usr/share/man/man1/bthost.1.gz
OLD_FILES+=usr/share/man/man1/btsockstat.1.gz
OLD_FILES+=usr/share/man/man1/rfcomm_sppd.1.gz
OLD_FILES+=usr/share/man/man3/SDP_GET128.3.gz
OLD_FILES+=usr/share/man/man3/SDP_GET16.3.gz
OLD_FILES+=usr/share/man/man3/SDP_GET32.3.gz
OLD_FILES+=usr/share/man/man3/SDP_GET64.3.gz
OLD_FILES+=usr/share/man/man3/SDP_GET8.3.gz
OLD_FILES+=usr/share/man/man3/SDP_PUT128.3.gz
OLD_FILES+=usr/share/man/man3/SDP_PUT16.3.gz
OLD_FILES+=usr/share/man/man3/SDP_PUT32.3.gz
OLD_FILES+=usr/share/man/man3/SDP_PUT64.3.gz
OLD_FILES+=usr/share/man/man3/SDP_PUT8.3.gz
OLD_FILES+=usr/share/man/man3/bdaddr_any.3.gz
OLD_FILES+=usr/share/man/man3/bdaddr_copy.3.gz
OLD_FILES+=usr/share/man/man3/bdaddr_same.3.gz
OLD_FILES+=usr/share/man/man3/bluetooth.3.gz
OLD_FILES+=usr/share/man/man3/bt_aton.3.gz
OLD_FILES+=usr/share/man/man3/bt_devaddr.3.gz
OLD_FILES+=usr/share/man/man3/bt_devclose.3.gz
OLD_FILES+=usr/share/man/man3/bt_devenum.3.gz
OLD_FILES+=usr/share/man/man3/bt_devfilter.3.gz
OLD_FILES+=usr/share/man/man3/bt_devfilter_evt_clr.3.gz
OLD_FILES+=usr/share/man/man3/bt_devfilter_evt_set.3.gz
OLD_FILES+=usr/share/man/man3/bt_devfilter_evt_tst.3.gz
OLD_FILES+=usr/share/man/man3/bt_devfilter_pkt_clr.3.gz
OLD_FILES+=usr/share/man/man3/bt_devfilter_pkt_set.3.gz
OLD_FILES+=usr/share/man/man3/bt_devfilter_pkt_tst.3.gz
OLD_FILES+=usr/share/man/man3/bt_devinfo.3.gz
OLD_FILES+=usr/share/man/man3/bt_devinquiry.3.gz
OLD_FILES+=usr/share/man/man3/bt_devname.3.gz
OLD_FILES+=usr/share/man/man3/bt_devopen.3.gz
OLD_FILES+=usr/share/man/man3/bt_devreq.3.gz
OLD_FILES+=usr/share/man/man3/bt_devsend.3.gz
OLD_FILES+=usr/share/man/man3/bt_endhostent.3.gz
OLD_FILES+=usr/share/man/man3/bt_endprotoent.3.gz
OLD_FILES+=usr/share/man/man3/bt_gethostbyaddr.3.gz
OLD_FILES+=usr/share/man/man3/bt_gethostbyname.3.gz
OLD_FILES+=usr/share/man/man3/bt_gethostent.3.gz
OLD_FILES+=usr/share/man/man3/bt_getprotobyname.3.gz
OLD_FILES+=usr/share/man/man3/bt_getprotobynumber.3.gz
OLD_FILES+=usr/share/man/man3/bt_getprotoent.3.gz
OLD_FILES+=usr/share/man/man3/bt_ntoa.3.gz
OLD_FILES+=usr/share/man/man3/bt_sethostent.3.gz
OLD_FILES+=usr/share/man/man3/bt_setprotoent.3.gz
OLD_FILES+=usr/share/man/man3/sdp.3.gz
OLD_FILES+=usr/share/man/man3/sdp_attr2desc.3.gz
OLD_FILES+=usr/share/man/man3/sdp_change_service.3.gz
OLD_FILES+=usr/share/man/man3/sdp_close.3.gz
OLD_FILES+=usr/share/man/man3/sdp_error.3.gz
OLD_FILES+=usr/share/man/man3/sdp_open.3.gz
OLD_FILES+=usr/share/man/man3/sdp_open_local.3.gz
OLD_FILES+=usr/share/man/man3/sdp_register_service.3.gz
OLD_FILES+=usr/share/man/man3/sdp_search.3.gz
OLD_FILES+=usr/share/man/man3/sdp_unregister_service.3.gz
OLD_FILES+=usr/share/man/man3/sdp_uuid2desc.3.gz
OLD_FILES+=usr/share/man/man4/ng_bluetooth.4.gz
OLD_FILES+=usr/share/man/man5/bluetooth.device.conf.5.gz
OLD_FILES+=usr/share/man/man5/bluetooth.hosts.5.gz
OLD_FILES+=usr/share/man/man5/bluetooth.protocols.5.gz
OLD_FILES+=usr/share/man/man5/hcsecd.conf.5.gz
OLD_FILES+=usr/share/man/man8/ath3kfw.8.gz
OLD_FILES+=usr/share/man/man8/bcmfw.8.gz
OLD_FILES+=usr/share/man/man8/bluetooth-config.8.gz
OLD_FILES+=usr/share/man/man8/bt3cfw.8.gz
OLD_FILES+=usr/share/man/man8/bthidcontrol.8.gz
OLD_FILES+=usr/share/man/man8/bthidd.8.gz
OLD_FILES+=usr/share/man/man8/btpand.8.gz
OLD_FILES+=usr/share/man/man8/hccontrol.8.gz
OLD_FILES+=usr/share/man/man8/hcsecd.8.gz
OLD_FILES+=usr/share/man/man8/hcseriald.8.gz
OLD_FILES+=usr/share/man/man8/iwmbtfw.8.gz
OLD_FILES+=usr/share/man/man8/l2control.8.gz
OLD_FILES+=usr/share/man/man8/l2ping.8.gz
OLD_FILES+=usr/share/man/man8/rfcomm_pppd.8.gz
OLD_FILES+=usr/share/man/man8/sdpcontrol.8.gz
OLD_FILES+=usr/share/man/man8/sdpd.8.gz
.endif
.if ${MK_BOOT} == no
OLD_FILES+=boot/beastie.4th
OLD_FILES+=boot/boot
OLD_FILES+=boot/boot0
OLD_FILES+=boot/boot0sio
OLD_FILES+=boot/boot1
OLD_FILES+=boot/boot1.efi
OLD_FILES+=boot/boot2
OLD_FILES+=boot/brand.4th
OLD_FILES+=boot/cdboot
OLD_FILES+=boot/check-password.4th
OLD_FILES+=boot/color.4th
OLD_FILES+=boot/defaults/loader.conf
OLD_FILES+=boot/delay.4th
OLD_FILES+=boot/device.hints
OLD_FILES+=boot/frames.4th
OLD_FILES+=boot/gptboot
OLD_FILES+=boot/gptzfsboot
OLD_FILES+=boot/loader
OLD_FILES+=boot/loader.4th
OLD_FILES+=boot/loader.efi
OLD_FILES+=boot/loader.help
OLD_FILES+=boot/loader.rc
OLD_FILES+=boot/mbr
OLD_FILES+=boot/menu-commands.4th
OLD_FILES+=boot/menu.4th
OLD_FILES+=boot/menu.rc
OLD_FILES+=boot/menusets.4th
OLD_FILES+=boot/pcibios.4th
OLD_FILES+=boot/pmbr
OLD_FILES+=boot/pxeboot
OLD_FILES+=boot/screen.4th
OLD_FILES+=boot/shortcuts.4th
OLD_FILES+=boot/support.4th
OLD_FILES+=boot/userboot.so
OLD_FILES+=boot/version.4th
OLD_FILES+=boot/zfsboot
OLD_FILES+=boot/zfsloader
OLD_FILES+=usr/lib/kgzldr.o
OLD_FILES+=usr/share/man/man5/loader.conf.5.gz
OLD_FILES+=usr/share/man/man8/beastie.4th.8.gz
OLD_FILES+=usr/share/man/man8/brand.4th.8.gz
OLD_FILES+=usr/share/man/man8/check-password.4th.8.gz
OLD_FILES+=usr/share/man/man8/color.4th.8.gz
OLD_FILES+=usr/share/man/man8/delay.4th.8.gz
OLD_FILES+=usr/share/man/man8/gptboot.8.gz
OLD_FILES+=usr/share/man/man8/gptzfsboot.8.gz
OLD_FILES+=usr/share/man/man8/loader.4th.8.gz
OLD_FILES+=usr/share/man/man8/loader.8.gz
OLD_FILES+=usr/share/man/man8/menu.4th.8.gz
OLD_FILES+=usr/share/man/man8/menusets.4th.8.gz
OLD_FILES+=usr/share/man/man8/pxeboot.8.gz
OLD_FILES+=usr/share/man/man8/version.4th.8.gz
OLD_FILES+=usr/share/man/man8/zfsboot.8.gz
OLD_FILES+=usr/share/man/man8/zfsloader.8.gz
.endif
.if ${MK_BOOTPARAMD} == no
OLD_FILES+=etc/rc.d/bootparams
OLD_FILES+=usr/sbin/bootparamd
OLD_FILES+=usr/share/man/man5/bootparams.5.gz
OLD_FILES+=usr/share/man/man8/bootparamd.8.gz
OLD_FILES+=usr/sbin/callbootd
.endif
.if ${MK_BOOTPD} == no
OLD_FILES+=usr/libexec/bootpd
OLD_FILES+=usr/share/man/man5/bootptab.5.gz
OLD_FILES+=usr/share/man/man8/bootpd.8.gz
OLD_FILES+=usr/libexec/bootpgw
OLD_FILES+=usr/sbin/bootpef
OLD_FILES+=usr/share/man/man8/bootpef.8.gz
OLD_FILES+=usr/sbin/bootptest
OLD_FILES+=usr/share/man/man8/bootptest.8.gz
.endif
.if ${MK_BSD_CPIO} == no
OLD_FILES+=usr/bin/bsdcpio
OLD_FILES+=usr/bin/cpio
OLD_FILES+=usr/share/man/man1/bsdcpio.1.gz
OLD_FILES+=usr/share/man/man1/cpio.1.gz
.endif
.if ${MK_BSDINSTALL} == no
OLD_FILES+=usr/libexec/bsdinstall/adduser
OLD_FILES+=usr/libexec/bsdinstall/auto
OLD_FILES+=usr/libexec/bsdinstall/autopart
OLD_FILES+=usr/libexec/bsdinstall/bootconfig
OLD_FILES+=usr/libexec/bsdinstall/checksum
OLD_FILES+=usr/libexec/bsdinstall/config
OLD_FILES+=usr/libexec/bsdinstall/distextract
OLD_FILES+=usr/libexec/bsdinstall/distfetch
OLD_FILES+=usr/libexec/bsdinstall/docsinstall
OLD_FILES+=usr/libexec/bsdinstall/entropy
OLD_FILES+=usr/libexec/bsdinstall/hardening
OLD_FILES+=usr/libexec/bsdinstall/hostname
OLD_FILES+=usr/libexec/bsdinstall/jail
OLD_FILES+=usr/libexec/bsdinstall/keymap
OLD_FILES+=usr/libexec/bsdinstall/mirrorselect
OLD_FILES+=usr/libexec/bsdinstall/mount
OLD_FILES+=usr/libexec/bsdinstall/netconfig
OLD_FILES+=usr/libexec/bsdinstall/netconfig_ipv4
OLD_FILES+=usr/libexec/bsdinstall/netconfig_ipv6
OLD_FILES+=usr/libexec/bsdinstall/partedit
OLD_FILES+=usr/libexec/bsdinstall/rootpass
OLD_FILES+=usr/libexec/bsdinstall/script
OLD_FILES+=usr/libexec/bsdinstall/scriptedpart
OLD_FILES+=usr/libexec/bsdinstall/services
OLD_FILES+=usr/libexec/bsdinstall/time
OLD_FILES+=usr/libexec/bsdinstall/umount
OLD_FILES+=usr/libexec/bsdinstall/wlanconfig
OLD_FILES+=usr/libexec/bsdinstall/zfsboot
OLD_FILES+=usr/sbin/bsdinstall
OLD_FILES+=usr/share/man/man8/bsdinstall.8.gz
OLD_FILES+=usr/share/man/man8/sade.8.gz
OLD_DIRS+=usr/libexec/bsdinstall
.endif
.if ${MK_BSNMP} == no
OLD_FILES+=etc/snmpd.config
OLD_FILES+=etc/rc.d/bsnmpd
OLD_FILES+=usr/bin/bsnmpget
OLD_FILES+=usr/bin/bsnmpset
OLD_FILES+=usr/bin/bsnmpwalk
OLD_FILES+=usr/include/bsnmp/asn1.h
OLD_FILES+=usr/include/bsnmp/bridge_snmp.h
OLD_FILES+=usr/include/bsnmp/snmp.h
OLD_FILES+=usr/include/bsnmp/snmp_mibII.h
OLD_FILES+=usr/include/bsnmp/snmp_netgraph.h
OLD_FILES+=usr/include/bsnmp/snmpagent.h
OLD_FILES+=usr/include/bsnmp/snmpclient.h
OLD_FILES+=usr/include/bsnmp/snmpmod.h
OLD_FILES+=usr/lib/libbsnmp.a
OLD_FILES+=usr/lib/libbsnmp.so
OLD_LIBS+=usr/lib/libbsnmp.so.6
OLD_FILES+=usr/lib/libbsnmp_p.a
OLD_FILES+=usr/lib/libbsnmptools.a
OLD_FILES+=usr/lib/libbsnmptools.so
OLD_LIBS+=usr/lib/libbsnmptools.so.0
OLD_FILES+=usr/lib/libbsnmptools_p.a
OLD_FILES+=usr/lib/snmp_bridge.so
OLD_LIBS+=usr/lib/snmp_bridge.so.6
OLD_FILES+=usr/lib/snmp_hast.so
OLD_LIBS+=usr/lib/snmp_hast.so.6
OLD_FILES+=usr/lib/snmp_hostres.so
OLD_LIBS+=usr/lib/snmp_hostres.so.6
OLD_FILES+=usr/lib/snmp_lm75.so
OLD_LIBS+=usr/lib/snmp_lm75.so.6
OLD_FILES+=usr/lib/snmp_mibII.so
OLD_LIBS+=usr/lib/snmp_mibII.so.6
OLD_FILES+=usr/lib/snmp_netgraph.so
OLD_LIBS+=usr/lib/snmp_netgraph.so.6
OLD_FILES+=usr/lib/snmp_pf.so
OLD_LIBS+=usr/lib/snmp_pf.so.6
OLD_FILES+=usr/lib/snmp_target.so
OLD_LIBS+=usr/lib/snmp_target.so.6
OLD_FILES+=usr/lib/snmp_usm.so
OLD_LIBS+=usr/lib/snmp_usm.so.6
OLD_FILES+=usr/lib/snmp_vacm.so
OLD_LIBS+=usr/lib/snmp_vacm.so.6
OLD_FILES+=usr/lib/snmp_wlan.so
OLD_LIBS+=usr/lib/snmp_wlan.so.6
OLD_FILES+=usr/lib32/libbsnmp.a
OLD_FILES+=usr/lib32/libbsnmp.so
OLD_LIBS+=usr/lib32/libbsnmp.so.6
OLD_FILES+=usr/lib32/libbsnmp_p.a
OLD_FILES+=usr/sbin/bsnmpd
OLD_FILES+=usr/sbin/gensnmptree
OLD_FILES+=usr/share/examples/etc/snmpd.config
OLD_FILES+=usr/share/man/man1/bsnmpd.1.gz
OLD_FILES+=usr/share/man/man1/bsnmpget.1.gz
OLD_FILES+=usr/share/man/man1/bsnmpset.1.gz
OLD_FILES+=usr/share/man/man1/bsnmpwalk.1.gz
OLD_FILES+=usr/share/man/man1/gensnmptree.1.gz
# lib/libbsnmp/libbsnmp
OLD_FILES+=usr/share/man/man3/TRUTH_GET.3.gz
OLD_FILES+=usr/share/man/man3/TRUTH_MK.3.gz
OLD_FILES+=usr/share/man/man3/TRUTH_OK.3.gz
OLD_FILES+=usr/share/man/man3/asn1.3.gz
OLD_FILES+=usr/share/man/man3/asn_append_oid.3.gz
OLD_FILES+=usr/share/man/man3/asn_commit_header.3.gz
OLD_FILES+=usr/share/man/man3/asn_compare_oid.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_counter64_raw.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_header.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_integer.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_integer_raw.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_ipaddress.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_ipaddress_raw.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_null.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_null_raw.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_objid.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_objid_raw.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_octetstring.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_octetstring_raw.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_sequence.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_timeticks.3.gz
OLD_FILES+=usr/share/man/man3/asn_get_uint32_raw.3.gz
OLD_FILES+=usr/share/man/man3/asn_is_suboid.3.gz
OLD_FILES+=usr/share/man/man3/asn_oid2str.3.gz
OLD_FILES+=usr/share/man/man3/asn_oid2str_r.3.gz
OLD_FILES+=usr/share/man/man3/asn_put_counter64.3.gz
OLD_FILES+=usr/share/man/man3/asn_put_exception.3.gz
OLD_FILES+=usr/share/man/man3/asn_put_header.3.gz
OLD_FILES+=usr/share/man/man3/asn_put_integer.3.gz
OLD_FILES+=usr/share/man/man3/asn_put_ipaddress.3.gz
OLD_FILES+=usr/share/man/man3/asn_put_null.3.gz
OLD_FILES+=usr/share/man/man3/asn_put_objid.3.gz
OLD_FILES+=usr/share/man/man3/asn_put_octetstring.3.gz
OLD_FILES+=usr/share/man/man3/asn_put_temp_header.3.gz
OLD_FILES+=usr/share/man/man3/asn_put_timeticks.3.gz
OLD_FILES+=usr/share/man/man3/asn_put_uint32.3.gz
OLD_FILES+=usr/share/man/man3/asn_skip.3.gz
OLD_FILES+=usr/share/man/man3/asn_slice_oid.3.gz
OLD_FILES+=usr/share/man/man3/snmp_add_binding.3.gz
OLD_FILES+=usr/share/man/man3/snmp_calc_keychange.3.gz
OLD_FILES+=usr/share/man/man3/snmp_client.3.gz
OLD_FILES+=usr/share/man/man3/snmp_client_init.3.gz
OLD_FILES+=usr/share/man/man3/snmp_client_set_host.3.gz
OLD_FILES+=usr/share/man/man3/snmp_client_set_port.3.gz
OLD_FILES+=usr/share/man/man3/snmp_close.3.gz
OLD_FILES+=usr/share/man/man3/snmp_debug.3.gz
OLD_FILES+=usr/share/man/man3/snmp_dep_commit.3.gz
OLD_FILES+=usr/share/man/man3/snmp_dep_finish.3.gz
OLD_FILES+=usr/share/man/man3/snmp_dep_lookup.3.gz
OLD_FILES+=usr/share/man/man3/snmp_dep_rollback.3.gz
OLD_FILES+=usr/share/man/man3/snmp_depop_t.3.gz
OLD_FILES+=usr/share/man/man3/snmp_dialog.3.gz
OLD_FILES+=usr/share/man/man3/snmp_discover_engine.3.gz
OLD_FILES+=usr/share/man/man3/snmp_get.3.gz
OLD_FILES+=usr/share/man/man3/snmp_get_local_keys.3.gz
OLD_FILES+=usr/share/man/man3/snmp_getbulk.3.gz
OLD_FILES+=usr/share/man/man3/snmp_getnext.3.gz
OLD_FILES+=usr/share/man/man3/snmp_init_context.3.gz
OLD_FILES+=usr/share/man/man3/snmp_make_errresp.3.gz
OLD_FILES+=usr/share/man/man3/snmp_oid_append.3.gz
OLD_FILES+=usr/share/man/man3/snmp_op_t.3.gz
OLD_FILES+=usr/share/man/man3/snmp_open.3.gz
OLD_FILES+=usr/share/man/man3/snmp_parse_server.3.gz
OLD_FILES+=usr/share/man/man3/snmp_passwd_to_keys.3.gz
OLD_FILES+=usr/share/man/man3/snmp_pdu_check.3.gz
OLD_FILES+=usr/share/man/man3/snmp_pdu_create.3.gz
OLD_FILES+=usr/share/man/man3/snmp_pdu_decode.3.gz
OLD_FILES+=usr/share/man/man3/snmp_pdu_decode_header.3.gz
OLD_FILES+=usr/share/man/man3/snmp_pdu_decode_scoped.3.gz
OLD_FILES+=usr/share/man/man3/snmp_pdu_decode_secmode.3.gz
OLD_FILES+=usr/share/man/man3/snmp_pdu_dump.3.gz
OLD_FILES+=usr/share/man/man3/snmp_pdu_encode.3.gz
OLD_FILES+=usr/share/man/man3/snmp_pdu_free.3.gz
OLD_FILES+=usr/share/man/man3/snmp_pdu_init_secparams.3.gz
OLD_FILES+=usr/share/man/man3/snmp_pdu_send.3.gz
OLD_FILES+=usr/share/man/man3/snmp_receive.3.gz
OLD_FILES+=usr/share/man/man3/snmp_send_cb_f.3.gz
OLD_FILES+=usr/share/man/man3/snmp_set.3.gz
OLD_FILES+=usr/share/man/man3/snmp_table_cb_f.3.gz
OLD_FILES+=usr/share/man/man3/snmp_table_fetch.3.gz
OLD_FILES+=usr/share/man/man3/snmp_table_fetch_async.3.gz
OLD_FILES+=usr/share/man/man3/snmp_timeout_cb_f.3.gz
OLD_FILES+=usr/share/man/man3/snmp_timeout_start_f.3.gz
OLD_FILES+=usr/share/man/man3/snmp_timeout_stop_f.3.gz
OLD_FILES+=usr/share/man/man3/snmp_trace.3.gz
OLD_FILES+=usr/share/man/man3/snmp_value_copy.3.gz
OLD_FILES+=usr/share/man/man3/snmp_value_free.3.gz
OLD_FILES+=usr/share/man/man3/snmp_value_parse.3.gz
OLD_FILES+=usr/share/man/man3/tree_size.3.gz
# usr.sbin/bsnmpd/bsnmpd
OLD_FILES+=usr/share/man/man3/FIND_OBJECT_INT.3.gz
OLD_FILES+=usr/share/man/man3/FIND_OBJECT_INT_LINK.3.gz
OLD_FILES+=usr/share/man/man3/FIND_OBJECT_INT_LINK_INDEX.3.gz
OLD_FILES+=usr/share/man/man3/FIND_OBJECT_OID.3.gz
OLD_FILES+=usr/share/man/man3/FIND_OBJECT_OID_LINK.3.gz
OLD_FILES+=usr/share/man/man3/FIND_OBJECT_OID_LINK_INDEX.3.gz
OLD_FILES+=usr/share/man/man3/INSERT_OBJECT_INT.3.gz
OLD_FILES+=usr/share/man/man3/INSERT_OBJECT_INT_LINK.3.gz
OLD_FILES+=usr/share/man/man3/INSERT_OBJECT_INT_LINK_INDEX.3.gz
OLD_FILES+=usr/share/man/man3/INSERT_OBJECT_OID.3.gz
OLD_FILES+=usr/share/man/man3/INSERT_OBJECT_OID_LINK.3.gz
OLD_FILES+=usr/share/man/man3/INSERT_OBJECT_OID_LINK_INDEX.3.gz
OLD_FILES+=usr/share/man/man3/NEXT_OBJECT_INT.3.gz
OLD_FILES+=usr/share/man/man3/NEXT_OBJECT_INT_LINK.3.gz
OLD_FILES+=usr/share/man/man3/NEXT_OBJECT_INT_LINK_INDEX.3.gz
OLD_FILES+=usr/share/man/man3/NEXT_OBJECT_OID.3.gz
OLD_FILES+=usr/share/man/man3/NEXT_OBJECT_OID_LINK.3.gz
OLD_FILES+=usr/share/man/man3/NEXT_OBJECT_OID_LINK_INDEX.3.gz
OLD_FILES+=usr/share/man/man3/asn1.3.gz
OLD_FILES+=usr/share/man/man3/bsnmpagent.3.gz
OLD_FILES+=usr/share/man/man3/bsnmpclient.3.gz
OLD_FILES+=usr/share/man/man3/bsnmpd_get_target_stats.3.gz
OLD_FILES+=usr/share/man/man3/bsnmpd_get_usm_stats.3.gz
OLD_FILES+=usr/share/man/man3/bsnmpd_reset_usm_stats.3.gz
OLD_FILES+=usr/share/man/man3/bsnmplib.3.gz
OLD_FILES+=usr/share/man/man3/buf_alloc.3.gz
OLD_FILES+=usr/share/man/man3/buf_size.3.gz
OLD_FILES+=usr/share/man/man3/comm_define.3.gz
OLD_FILES+=usr/share/man/man3/community.3.gz
OLD_FILES+=usr/share/man/man3/fd_deselect.3.gz
OLD_FILES+=usr/share/man/man3/fd_resume.3.gz
OLD_FILES+=usr/share/man/man3/fd_select.3.gz
OLD_FILES+=usr/share/man/man3/fd_suspend.3.gz
OLD_FILES+=usr/share/man/man3/get_ticks.3.gz
OLD_FILES+=usr/share/man/man3/index_append.3.gz
OLD_FILES+=usr/share/man/man3/index_append_off.3.gz
OLD_FILES+=usr/share/man/man3/index_compare.3.gz
OLD_FILES+=usr/share/man/man3/index_compare_off.3.gz
OLD_FILES+=usr/share/man/man3/index_decode.3.gz
OLD_FILES+=usr/share/man/man3/ip_commit.3.gz
OLD_FILES+=usr/share/man/man3/ip_get.3.gz
OLD_FILES+=usr/share/man/man3/ip_rollback.3.gz
OLD_FILES+=usr/share/man/man3/ip_save.3.gz
OLD_FILES+=usr/share/man/man3/or_register.3.gz
OLD_FILES+=usr/share/man/man3/or_unregister.3.gz
OLD_FILES+=usr/share/man/man3/oid_commit.3.gz
OLD_FILES+=usr/share/man/man3/oid_get.3.gz
OLD_FILES+=usr/share/man/man3/oid_rollback.3.gz
OLD_FILES+=usr/share/man/man3/oid_save.3.gz
OLD_FILES+=usr/share/man/man3/oid_usmNotInTimeWindows.3.gz
OLD_FILES+=usr/share/man/man3/oid_usmUnknownEngineIDs.3.gz
OLD_FILES+=usr/share/man/man3/oid_zeroDotZero.3.gz
OLD_FILES+=usr/share/man/man3/reqid_allocate.3.gz
OLD_FILES+=usr/share/man/man3/reqid_base.3.gz
OLD_FILES+=usr/share/man/man3/reqid_istype.3.gz
OLD_FILES+=usr/share/man/man3/reqid_next.3.gz
OLD_FILES+=usr/share/man/man3/reqid_type.3.gz
OLD_FILES+=usr/share/man/man3/snmp_bridge.3.gz
OLD_FILES+=usr/share/man/man3/snmp_hast.3.gz
OLD_FILES+=usr/share/man/man3/snmp_hostres.3.gz
OLD_FILES+=usr/share/man/man3/snmp_input_finish.3.gz
OLD_FILES+=usr/share/man/man3/snmp_input_start.3.gz
OLD_FILES+=usr/share/man/man3/snmp_lm75.3.gz
OLD_FILES+=usr/share/man/man3/snmp_mibII.3.gz
OLD_FILES+=usr/share/man/man3/snmp_netgraph.3.gz
OLD_FILES+=usr/share/man/man3/snmp_output.3.gz
OLD_FILES+=usr/share/man/man3/snmp_pdu_auth_access.3.gz
OLD_FILES+=usr/share/man/man3/snmp_send_port.3.gz
OLD_FILES+=usr/share/man/man3/snmp_send_trap.3.gz
OLD_FILES+=usr/share/man/man3/snmp_target.3.gz
OLD_FILES+=usr/share/man/man3/snmp_usm.3.gz
OLD_FILES+=usr/share/man/man3/snmp_vacm.3.gz
OLD_FILES+=usr/share/man/man3/snmp_wlan.3.gz
OLD_FILES+=usr/share/man/man3/snmpd_target_stat.3.gz
OLD_FILES+=usr/share/man/man3/snmpd_usmstats.3.gz
OLD_FILES+=usr/share/man/man3/snmpmod.3.gz
OLD_FILES+=usr/share/man/man3/start_tick.3.gz
OLD_FILES+=usr/share/man/man3/string_commit.3.gz
OLD_FILES+=usr/share/man/man3/string_free.3.gz
OLD_FILES+=usr/share/man/man3/string_get.3.gz
OLD_FILES+=usr/share/man/man3/string_get_max.3.gz
OLD_FILES+=usr/share/man/man3/string_rollback.3.gz
OLD_FILES+=usr/share/man/man3/string_save.3.gz
OLD_FILES+=usr/share/man/man3/systemg.3.gz
OLD_FILES+=usr/share/man/man3/this_tick.3.gz
OLD_FILES+=usr/share/man/man3/timer_start.3.gz
OLD_FILES+=usr/share/man/man3/timer_start_repeat.3.gz
OLD_FILES+=usr/share/man/man3/timer_stop.3.gz
OLD_FILES+=usr/share/man/man3/target_activate_address.3.gz
OLD_FILES+=usr/share/man/man3/target_address.3.gz
OLD_FILES+=usr/share/man/man3/target_delete_address.3.gz
OLD_FILES+=usr/share/man/man3/target_delete_notify.3.gz
OLD_FILES+=usr/share/man/man3/target_delete_param.3.gz
OLD_FILES+=usr/share/man/man3/target_first_address.3.gz
OLD_FILES+=usr/share/man/man3/target_first_notify.3.gz
OLD_FILES+=usr/share/man/man3/target_first_param.3.gz
OLD_FILES+=usr/share/man/man3/target_flush_all.3.gz
OLD_FILES+=usr/share/man/man3/target_next_address.3.gz
OLD_FILES+=usr/share/man/man3/target_next_notify.3.gz
OLD_FILES+=usr/share/man/man3/target_next_param.3.gz
OLD_FILES+=usr/share/man/man3/target_new_address.3.gz
OLD_FILES+=usr/share/man/man3/target_new_notify.3.gz
OLD_FILES+=usr/share/man/man3/target_new_param.3.gz
OLD_FILES+=usr/share/man/man3/target_notify.3.gz
OLD_FILES+=usr/share/man/man3/target_param.3.gz
OLD_FILES+=usr/share/man/man3/usm_delete_user.3.gz
OLD_FILES+=usr/share/man/man3/usm_find_user.3.gz
OLD_FILES+=usr/share/man/man3/usm_first_user.3.gz
OLD_FILES+=usr/share/man/man3/usm_flush_users.3.gz
OLD_FILES+=usr/share/man/man3/usm_next_user.3.gz
OLD_FILES+=usr/share/man/man3/usm_new_user.3.gz
OLD_FILES+=usr/share/man/man3/usm_user.3.gz
OLD_FILES+=usr/share/snmp/defs/bridge_tree.def
OLD_FILES+=usr/share/snmp/defs/hast_tree.def
OLD_FILES+=usr/share/snmp/defs/hostres_tree.def
OLD_FILES+=usr/share/snmp/defs/lm75_tree.def
OLD_FILES+=usr/share/snmp/defs/mibII_tree.def
OLD_FILES+=usr/share/snmp/defs/netgraph_tree.def
OLD_FILES+=usr/share/snmp/defs/pf_tree.def
OLD_FILES+=usr/share/snmp/defs/target_tree.def
OLD_FILES+=usr/share/snmp/defs/tree.def
OLD_FILES+=usr/share/snmp/defs/usm_tree.def
OLD_FILES+=usr/share/snmp/defs/vacm_tree.def
OLD_FILES+=usr/share/snmp/defs/wlan_tree.def
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-ATM-FREEBSD-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-ATM.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-BRIDGE-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-HAST-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-HOSTRES-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-IP-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-LM75-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-MIB2-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-NETGRAPH.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-PF-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-SNMPD.txt
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-WIRELESS-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/BRIDGE-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/FOKUS-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/FREEBSD-MIB.txt
OLD_FILES+=usr/share/snmp/mibs/RSTP-MIB.txt
OLD_DIRS+=usr/include/bsnmp
OLD_DIRS+=usr/share/snmp
OLD_DIRS+=usr/share/snmp/defs
OLD_DIRS+=usr/share/snmp/mibs
.endif
.if ${MK_CALENDAR} == no
OLD_FILES+=etc/periodic/daily/300.calendar
OLD_FILES+=usr/bin/calendar
OLD_FILES+=usr/share/calendar/calendar.all
OLD_FILES+=usr/share/calendar/calendar.australia
OLD_FILES+=usr/share/calendar/calendar.birthday
OLD_FILES+=usr/share/calendar/calendar.brazilian
OLD_FILES+=usr/share/calendar/calendar.christian
OLD_FILES+=usr/share/calendar/calendar.computer
OLD_FILES+=usr/share/calendar/calendar.croatian
OLD_FILES+=usr/share/calendar/calendar.dutch
OLD_FILES+=usr/share/calendar/calendar.freebsd
OLD_FILES+=usr/share/calendar/calendar.french
OLD_FILES+=usr/share/calendar/calendar.german
OLD_FILES+=usr/share/calendar/calendar.history
OLD_FILES+=usr/share/calendar/calendar.holiday
OLD_FILES+=usr/share/calendar/calendar.hungarian
OLD_FILES+=usr/share/calendar/calendar.judaic
OLD_FILES+=usr/share/calendar/calendar.lotr
OLD_FILES+=usr/share/calendar/calendar.music
OLD_FILES+=usr/share/calendar/calendar.newzealand
OLD_FILES+=usr/share/calendar/calendar.russian
OLD_FILES+=usr/share/calendar/calendar.southafrica
OLD_FILES+=usr/share/calendar/calendar.ukrainian
OLD_FILES+=usr/share/calendar/calendar.usholiday
OLD_FILES+=usr/share/calendar/calendar.world
OLD_FILES+=usr/share/calendar/de_AT.ISO_8859-15/calendar.feiertag
OLD_DIRS+=usr/share/calendar/de_AT.ISO_8859-15
OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.all
OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.feiertag
OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.geschichte
OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.kirche
OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.literatur
OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.musik
OLD_FILES+=usr/share/calendar/de_DE.ISO8859-1/calendar.wissenschaft
OLD_DIRS+=usr/share/calendar/de_DE.ISO8859-1
OLD_FILES+=usr/share/calendar/de_DE.ISO8859-15
OLD_FILES+=usr/share/calendar/fr_FR.ISO8859-1/calendar.all
OLD_FILES+=usr/share/calendar/fr_FR.ISO8859-1/calendar.fetes
OLD_FILES+=usr/share/calendar/fr_FR.ISO8859-1/calendar.french
OLD_FILES+=usr/share/calendar/fr_FR.ISO8859-1/calendar.jferies
OLD_FILES+=usr/share/calendar/fr_FR.ISO8859-1/calendar.proverbes
OLD_DIRS+=usr/share/calendar/fr_FR.ISO8859-1
OLD_FILES+=usr/share/calendar/fr_FR.ISO8859-15
OLD_FILES+=usr/share/calendar/hr_HR.ISO8859-2/calendar.all
OLD_FILES+=usr/share/calendar/hr_HR.ISO8859-2/calendar.praznici
OLD_DIRS+=usr/share/calendar/hr_HR.ISO8859-2
OLD_FILES+=usr/share/calendar/hu_HU.ISO8859-2/calendar.all
OLD_FILES+=usr/share/calendar/hu_HU.ISO8859-2/calendar.nevnapok
OLD_FILES+=usr/share/calendar/hu_HU.ISO8859-2/calendar.unnepek
OLD_DIRS+=usr/share/calendar/hu_HU.ISO8859-2
OLD_FILES+=usr/share/calendar/pt_BR.ISO8859-1/calendar.all
OLD_FILES+=usr/share/calendar/pt_BR.ISO8859-1/calendar.commemorative
OLD_FILES+=usr/share/calendar/pt_BR.ISO8859-1/calendar.holidays
OLD_FILES+=usr/share/calendar/pt_BR.ISO8859-1/calendar.mcommemorative
OLD_DIRS+=usr/share/calendar/pt_BR.ISO8859-1
OLD_FILES+=usr/share/calendar/pt_BR.UTF-8/calendar.all
OLD_FILES+=usr/share/calendar/pt_BR.UTF-8/calendar.commemorative
OLD_FILES+=usr/share/calendar/pt_BR.UTF-8/calendar.holidays
OLD_FILES+=usr/share/calendar/pt_BR.UTF-8/calendar.mcommemorative
OLD_DIRS+=usr/share/calendar/pt_BR.UTF-8
OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.all
OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.common
OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.holiday
OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.military
OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.orthodox
OLD_FILES+=usr/share/calendar/ru_RU.KOI8-R/calendar.pagan
OLD_DIRS+=usr/share/calendar/ru_RU.KOI8-R
OLD_FILES+=usr/share/calendar/ru_RU.UTF-8/calendar.all
OLD_FILES+=usr/share/calendar/ru_RU.UTF-8/calendar.common
OLD_FILES+=usr/share/calendar/ru_RU.UTF-8/calendar.holiday
OLD_FILES+=usr/share/calendar/ru_RU.UTF-8/calendar.military
OLD_FILES+=usr/share/calendar/ru_RU.UTF-8/calendar.orthodox
OLD_FILES+=usr/share/calendar/ru_RU.UTF-8/calendar.pagan
OLD_DIRS+=usr/share/calendar/ru_RU.UTF-8
OLD_FILES+=usr/share/calendar/uk_UA.KOI8-U/calendar.all
OLD_FILES+=usr/share/calendar/uk_UA.KOI8-U/calendar.holiday
OLD_FILES+=usr/share/calendar/uk_UA.KOI8-U/calendar.misc
OLD_FILES+=usr/share/calendar/uk_UA.KOI8-U/calendar.orthodox
OLD_DIRS+=usr/share/calendar/uk_UA.KOI8-U
OLD_DIRS+=usr/share/calendar
OLD_FILES+=usr/share/man/man1/calendar.1.gz
OLD_FILES+=usr/tests/usr.bin/calendar/Kyuafile
OLD_FILES+=usr/tests/usr.bin/calendar/calendar.calibrate
OLD_FILES+=usr/tests/usr.bin/calendar/legacy_test
OLD_FILES+=usr/tests/usr.bin/calendar/regress.a1.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.a2.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.a3.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.a4.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.a5.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.b1.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.b2.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.b3.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.b4.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.b5.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.s1.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.s2.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.s3.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.s4.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.sh
OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-1.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-2.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-3.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-4.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-5.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-6.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.w0-7.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-1.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-2.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-3.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-4.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-5.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-6.out
OLD_FILES+=usr/tests/usr.bin/calendar/regress.wn-7.out
OLD_DIRS+=usr/tests/usr.bin/calendar
.endif
.if ${MK_CASPER} == no
OLD_LIBS+=lib/libcasper.so.1
OLD_LIBS+=lib/casper/libcap_dns.so.2
OLD_LIBS+=lib/casper/libcap_fileargs.so.1
OLD_LIBS+=lib/casper/libcap_grp.so.1
OLD_LIBS+=lib/casper/libcap_net.so.1
OLD_LIBS+=lib/casper/libcap_pwd.so.1
OLD_LIBS+=lib/casper/libcap_sysctl.so.1
OLD_LIBS+=lib/casper/libcap_sysctl.so.2
OLD_LIBS+=lib/casper/libcap_syslog.so.1
.endif
.if ${MK_CCD} == no
OLD_FILES+=etc/rc.d/ccd
OLD_FILES+=rescue/ccdconfig
OLD_FILES+=sbin/ccdconfig
OLD_FILES+=usr/share/man/man4/ccd.4.gz
OLD_FILES+=usr/share/man/man8/ccdconfig.8.gz
.endif
.if ${MK_CDDL} == no
OLD_LIBS+=lib/libavl.so.2
OLD_LIBS+=lib/libctf.so.2
OLD_LIBS+=lib/libdtrace.so.2
OLD_LIBS+=lib/libnvpair.so.2
OLD_LIBS+=lib/libumem.so.2
OLD_LIBS+=lib/libuutil.so.2
OLD_FILES+=usr/bin/ctfconvert
OLD_FILES+=usr/bin/ctfdump
OLD_FILES+=usr/bin/ctfmerge
OLD_FILES+=usr/lib/dtrace/drti.o
OLD_FILES+=usr/lib/dtrace/errno.d
OLD_FILES+=usr/lib/dtrace/io.d
OLD_FILES+=usr/lib/dtrace/ip.d
OLD_FILES+=usr/lib/dtrace/psinfo.d
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
OLD_FILES+=usr/lib/dtrace/regs_x86.d
.endif
OLD_FILES+=usr/lib/dtrace/signal.d
OLD_FILES+=usr/lib/dtrace/tcp.d
OLD_FILES+=usr/lib/dtrace/udp.d
OLD_FILES+=usr/lib/dtrace/unistd.d
OLD_FILES+=usr/lib/libavl.a
OLD_FILES+=usr/lib/libavl.so
OLD_FILES+=usr/lib/libavl_p.a
OLD_FILES+=usr/lib/libctf.a
OLD_FILES+=usr/lib/libctf.so
OLD_FILES+=usr/lib/libctf_p.a
OLD_FILES+=usr/lib/libdtrace.a
OLD_FILES+=usr/lib/libdtrace.so
OLD_FILES+=usr/lib/libdtrace_p.a
OLD_FILES+=usr/lib/libnvpair.a
OLD_FILES+=usr/lib/libnvpair.so
OLD_FILES+=usr/lib/libnvpair_p.a
OLD_FILES+=usr/lib/libumem.a
OLD_FILES+=usr/lib/libumem.so
OLD_FILES+=usr/lib/libumem_p.a
OLD_FILES+=usr/lib/libuutil.a
OLD_FILES+=usr/lib/libuutil.so
OLD_FILES+=usr/lib/libuutil_p.a
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/dtrace/drti.o
OLD_FILES+=usr/lib32/libavl.a
OLD_FILES+=usr/lib32/libavl.so
OLD_LIBS+=usr/lib32/libavl.so.2
OLD_FILES+=usr/lib32/libavl_p.a
OLD_FILES+=usr/lib32/libctf.a
OLD_FILES+=usr/lib32/libctf.so
OLD_LIBS+=usr/lib32/libctf.so.2
OLD_FILES+=usr/lib32/libctf_p.a
OLD_FILES+=usr/lib32/libdtrace.a
OLD_FILES+=usr/lib32/libdtrace.so
OLD_LIBS+=usr/lib32/libdtrace.so.2
OLD_FILES+=usr/lib32/libdtrace_p.a
OLD_FILES+=usr/lib32/libnvpair.a
OLD_FILES+=usr/lib32/libnvpair.so
OLD_LIBS+=usr/lib32/libnvpair.so.2
OLD_FILES+=usr/lib32/libnvpair_p.a
OLD_FILES+=usr/lib32/libumem.a
OLD_FILES+=usr/lib32/libumem.so
OLD_LIBS+=usr/lib32/libumem.so.2
OLD_FILES+=usr/lib32/libumem_p.a
OLD_FILES+=usr/lib32/libuutil.a
OLD_FILES+=usr/lib32/libuutil.so
OLD_LIBS+=usr/lib32/libuutil.so.2
OLD_FILES+=usr/lib32/libuutil_p.a
.endif
OLD_LIBS+=lib/libdtrace.so.2
OLD_FILES+=usr/sbin/dtrace
OLD_FILES+=usr/sbin/lockstat
OLD_FILES+=usr/sbin/plockstat
OLD_FILES+=usr/share/man/man1/dtrace.1.gz
OLD_FILES+=usr/share/man/man1/dtruss.1.gz
OLD_FILES+=usr/share/man/man1/lockstat.1.gz
OLD_FILES+=usr/share/man/man1/plockstat.1.gz
OLD_FILES+=usr/share/dtrace/disklatency
OLD_FILES+=usr/share/dtrace/disklatencycmd
OLD_FILES+=usr/share/dtrace/hotopen
OLD_FILES+=usr/share/dtrace/nfsclienttime
OLD_FILES+=usr/share/dtrace/toolkit/execsnoop
OLD_FILES+=usr/share/dtrace/toolkit/hotkernel
OLD_FILES+=usr/share/dtrace/toolkit/hotuser
OLD_FILES+=usr/share/dtrace/toolkit/opensnoop
OLD_FILES+=usr/share/dtrace/toolkit/procsystime
OLD_FILES+=usr/share/dtrace/tcpconn
OLD_FILES+=usr/share/dtrace/tcpstate
OLD_FILES+=usr/share/dtrace/tcptrack
OLD_FILES+=usr/share/dtrace/udptrack
OLD_FILES+=usr/share/man/man1/dtrace.1.gz
OLD_DIRS+=usr/lib/dtrace
OLD_DIRS+=usr/lib32/dtrace
OLD_DIRS+=usr/share/dtrace/toolkit
OLD_DIRS+=usr/share/dtrace
.endif
.if ${MK_ZFS} == no
OLD_FILES+=boot/gptzfsboot
OLD_FILES+=boot/zfsboot
OLD_FILES+=boot/zfsloader
OLD_FILES+=etc/rc.d/zfs
OLD_FILES+=etc/rc.d/zfsd
OLD_FILES+=etc/rc.d/zfsbe
OLD_FILES+=etc/rc.d/zvol
OLD_FILES+=etc/devd/zfs.conf
OLD_FILES+=etc/periodic/daily/404.status-zfs
OLD_FILES+=etc/periodic/daily/800.scrub-zfs
OLD_FILES+=etc/zfs/exports
OLD_DIRS+=etc/zfs
OLD_LIBS+=lib/libzfs.so.2
OLD_LIBS+=lib/libzfs.so.3
OLD_LIBS+=lib/libzfs_core.so.2
OLD_LIBS+=lib/libzpool.so.2
OLD_FILES+=rescue/zdb
OLD_FILES+=rescue/zfs
OLD_FILES+=rescue/zpool
OLD_FILES+=sbin/bectl
OLD_FILES+=sbin/zfs
OLD_FILES+=sbin/zpool
OLD_FILES+=sbin/zfsbootcfg
OLD_FILES+=usr/bin/zinject
OLD_FILES+=usr/bin/zstreamdump
OLD_FILES+=usr/bin/ztest
OLD_FILES+=usr/lib/libbe.a
OLD_FILES+=usr/lib/libbe_p.a
OLD_FILES+=usr/lib/libbe.so
OLD_LIBS+=lib/libbe.so.1
OLD_FILES+=usr/lib/libzfs.a
OLD_LIBS+=usr/lib/libzfs.so
OLD_FILES+=usr/lib/libzfs_core.a
OLD_LIBS+=usr/lib/libzfs_core.so
OLD_LIBS+=usr/lib/libzfs_core_p.a
OLD_FILES+=usr/lib/libzfs_p.a
OLD_FILES+=usr/lib/libzpool.a
OLD_FILES+=usr/lib/libzpool.so
OLD_LIBS+=usr/lib/libzpool.so.2
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/libzfs.a
OLD_FILES+=usr/lib32/libzfs.so
OLD_LIBS+=usr/lib32/libzfs.so.2
OLD_LIBS+=usr/lib32/libzfs.so.3
OLD_FILES+=usr/lib32/libzfs_core.a
OLD_FILES+=usr/lib32/libzfs_core.so
OLD_LIBS+=usr/lib32/libzfs_core.so.2
OLD_FILES+=usr/lib32/libzfs_core_p.a
OLD_FILES+=usr/lib32/libzfs_p.a
OLD_FILES+=usr/lib32/libzpool.a
OLD_FILES+=usr/lib32/libzpool.so
OLD_LIBS+=usr/lib32/libzpool.so.2
.endif
OLD_FILES+=usr/sbin/zfsd
OLD_FILES+=usr/sbin/zhack
OLD_FILES+=usr/sbin/zdb
OLD_FILES+=usr/share/man/man3/libbe.3.gz
OLD_FILES+=usr/share/man/man7/zpool-features.7.gz
OLD_FILES+=usr/share/man/man8/bectl.8.gz
OLD_FILES+=usr/share/man/man8/gptzfsboot.8.gz
OLD_FILES+=usr/share/man/man8/zdb.8.gz
OLD_FILES+=usr/share/man/man8/zfs-program.8.gz
OLD_FILES+=usr/share/man/man8/zfs.8.gz
OLD_FILES+=usr/share/man/man8/zfsboot.8.gz
OLD_FILES+=usr/share/man/man8/zfsbootcfg.8.gz
OLD_FILES+=usr/share/man/man8/zfsd.8.gz
OLD_FILES+=usr/share/man/man8/zfsloader.8.gz
OLD_FILES+=usr/share/man/man8/zpool.8.gz
.endif
.if ${MK_CLANG} == no
OLD_FILES+=usr/bin/clang
OLD_FILES+=usr/bin/clang++
OLD_FILES+=usr/bin/clang-cpp
OLD_FILES+=usr/bin/clang-tblgen
OLD_FILES+=usr/bin/llvm-ar
OLD_FILES+=usr/bin/llvm-nm
OLD_FILES+=usr/bin/llvm-objdump
OLD_FILES+=usr/bin/llvm-ranlib
OLD_FILES+=usr/bin/llvm-symbolizer
OLD_FILES+=usr/bin/llvm-tblgen
OLD_FILES+=usr/lib/clang/9.0.1/include/cuda_wrappers/algorithm
OLD_FILES+=usr/lib/clang/9.0.1/include/cuda_wrappers/complex
OLD_FILES+=usr/lib/clang/9.0.1/include/cuda_wrappers/new
OLD_DIRS+=usr/lib/clang/9.0.1/include/cuda_wrappers
OLD_FILES+=usr/lib/clang/9.0.1/include/openmp_wrappers/__clang_openmp_math.h
OLD_FILES+=usr/lib/clang/9.0.1/include/openmp_wrappers/__clang_openmp_math_declares.h
OLD_FILES+=usr/lib/clang/9.0.1/include/openmp_wrappers/cmath
OLD_FILES+=usr/lib/clang/9.0.1/include/openmp_wrappers/math.h
OLD_DIRS+=usr/lib/clang/9.0.1/include/openmp_wrappers
OLD_FILES+=usr/lib/clang/9.0.1/include/ppc_wrappers/emmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/ppc_wrappers/mm_malloc.h
OLD_FILES+=usr/lib/clang/9.0.1/include/ppc_wrappers/mmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/ppc_wrappers/xmmintrin.h
OLD_DIRS+=usr/lib/clang/9.0.1/include/ppc_wrappers
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/allocator_interface.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/asan_interface.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/common_interface_defs.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/coverage_interface.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/dfsan_interface.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/hwasan_interface.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/linux_syscall_hooks.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/lsan_interface.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/msan_interface.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/netbsd_syscall_hooks.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/scudo_interface.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/tsan_interface.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sanitizer/tsan_interface_atomic.h
OLD_DIRS+=usr/lib/clang/9.0.1/include/sanitizer
OLD_FILES+=usr/lib/clang/9.0.1/include/__clang_cuda_builtin_vars.h
OLD_FILES+=usr/lib/clang/9.0.1/include/__clang_cuda_cmath.h
OLD_FILES+=usr/lib/clang/9.0.1/include/__clang_cuda_complex_builtins.h
OLD_FILES+=usr/lib/clang/9.0.1/include/__clang_cuda_device_functions.h
OLD_FILES+=usr/lib/clang/9.0.1/include/__clang_cuda_intrinsics.h
OLD_FILES+=usr/lib/clang/9.0.1/include/__clang_cuda_libdevice_declares.h
OLD_FILES+=usr/lib/clang/9.0.1/include/__clang_cuda_math_forward_declares.h
OLD_FILES+=usr/lib/clang/9.0.1/include/__clang_cuda_runtime_wrapper.h
OLD_FILES+=usr/lib/clang/9.0.1/include/__stddef_max_align_t.h
OLD_FILES+=usr/lib/clang/9.0.1/include/__wmmintrin_aes.h
OLD_FILES+=usr/lib/clang/9.0.1/include/__wmmintrin_pclmul.h
OLD_FILES+=usr/lib/clang/9.0.1/include/adxintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/altivec.h
OLD_FILES+=usr/lib/clang/9.0.1/include/ammintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/arm64intr.h
OLD_FILES+=usr/lib/clang/9.0.1/include/arm_acle.h
OLD_FILES+=usr/lib/clang/9.0.1/include/arm_fp16.h
OLD_FILES+=usr/lib/clang/9.0.1/include/arm_neon.h
OLD_FILES+=usr/lib/clang/9.0.1/include/armintr.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx2intrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512bf16intrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512bitalgintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512bwintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512cdintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512dqintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512erintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512fintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512ifmaintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512ifmavlintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512pfintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vbmi2intrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vbmiintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vbmivlintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vlbf16intrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vlbitalgintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vlbwintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vlcdintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vldqintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vlintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vlvbmi2intrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vlvnniintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vlvp2intersectintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vnniintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vp2intersectintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vpopcntdqintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avx512vpopcntdqvlintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/avxintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/bmi2intrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/bmiintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/cetintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/cldemoteintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/clflushoptintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/clwbintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/clzerointrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/cpuid.h
OLD_FILES+=usr/lib/clang/9.0.1/include/emmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/enqcmdintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/f16cintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/float.h
OLD_FILES+=usr/lib/clang/9.0.1/include/fma4intrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/fmaintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/fxsrintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/gfniintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/htmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/htmxlintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/ia32intrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/immintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/intrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/inttypes.h
OLD_FILES+=usr/lib/clang/9.0.1/include/invpcidintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/iso646.h
OLD_FILES+=usr/lib/clang/9.0.1/include/limits.h
OLD_FILES+=usr/lib/clang/9.0.1/include/lwpintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/lzcntintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/mm3dnow.h
OLD_FILES+=usr/lib/clang/9.0.1/include/mm_malloc.h
OLD_FILES+=usr/lib/clang/9.0.1/include/mmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/module.modulemap
OLD_FILES+=usr/lib/clang/9.0.1/include/movdirintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/msa.h
OLD_FILES+=usr/lib/clang/9.0.1/include/mwaitxintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/nmmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/opencl-c-base.h
OLD_FILES+=usr/lib/clang/9.0.1/include/opencl-c.h
OLD_FILES+=usr/lib/clang/9.0.1/include/pconfigintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/pkuintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/pmmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/popcntintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/prfchwintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/ptwriteintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/rdseedintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/rtmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/s390intrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/sgxintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/shaintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/smmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/stdalign.h
OLD_FILES+=usr/lib/clang/9.0.1/include/stdarg.h
OLD_FILES+=usr/lib/clang/9.0.1/include/stdatomic.h
OLD_FILES+=usr/lib/clang/9.0.1/include/stdbool.h
OLD_FILES+=usr/lib/clang/9.0.1/include/stddef.h
OLD_FILES+=usr/lib/clang/9.0.1/include/stdint.h
OLD_FILES+=usr/lib/clang/9.0.1/include/stdnoreturn.h
OLD_FILES+=usr/lib/clang/9.0.1/include/tbmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/tgmath.h
OLD_FILES+=usr/lib/clang/9.0.1/include/tmmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/unwind.h
OLD_FILES+=usr/lib/clang/9.0.1/include/vadefs.h
OLD_FILES+=usr/lib/clang/9.0.1/include/vaesintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/varargs.h
OLD_FILES+=usr/lib/clang/9.0.1/include/vecintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/vpclmulqdqintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/waitpkgintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/wbnoinvdintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/wmmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/x86intrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/xmmintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/xopintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/xsavecintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/xsaveintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/xsaveoptintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/xsavesintrin.h
OLD_FILES+=usr/lib/clang/9.0.1/include/xtestintrin.h
OLD_DIRS+=usr/lib/clang/9.0.1/include
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-aarch64.so
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-arm.so
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-armhf.so
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-i386.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-i386.so
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-preinit-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-preinit-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-preinit-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-preinit-i386.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan-x86_64.so
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan_cxx-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan_cxx-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan_cxx-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan_cxx-i386.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.cfi-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.cfi-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.cfi-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.cfi-i386.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.cfi-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.cfi_diag-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.cfi_diag-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.cfi_diag-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.cfi_diag-i386.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.cfi_diag-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.dd-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.dd-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.fuzzer-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.fuzzer-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.fuzzer_no_main-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.fuzzer_no_main-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.msan-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.msan-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.msan_cxx-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.msan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.profile-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.profile-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.profile-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.profile-i386.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.profile-powerpc.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.profile-powerpc64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.profile-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.safestack-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.safestack-i386.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.safestack-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.stats-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.stats-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.stats-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.stats-i386.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.stats-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.stats_client-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.stats_client-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.stats_client-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.stats_client-i386.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.stats_client-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.tsan-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.tsan-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.tsan_cxx-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_minimal-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_minimal-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_minimal-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_minimal-i386.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_standalone-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_standalone-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_standalone-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-basic-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-basic-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-basic-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-basic-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-fdr-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-fdr-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-fdr-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-fdr-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-profiling-aarch64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-profiling-arm.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-profiling-armhf.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-profiling-x86_64.a
OLD_FILES+=usr/lib/clang/9.0.1/lib/freebsd/libclang_rt.xray-x86_64.a
OLD_DIRS+=usr/lib/clang/9.0.1/lib/freebsd
OLD_DIRS+=usr/lib/clang/9.0.1/lib
OLD_DIRS+=usr/lib/clang/9.0.1
OLD_DIRS+=usr/lib/clang
OLD_FILES+=usr/share/doc/llvm/clang/LICENSE.TXT
OLD_DIRS+=usr/share/doc/llvm/clang
OLD_FILES+=usr/share/doc/llvm/COPYRIGHT.regex
OLD_FILES+=usr/share/doc/llvm/LICENSE.TXT
OLD_DIRS+=usr/share/doc/llvm
OLD_FILES+=usr/share/man/man1/clang.1.gz
OLD_FILES+=usr/share/man/man1/clang++.1.gz
OLD_FILES+=usr/share/man/man1/clang-cpp.1.gz
OLD_FILES+=usr/share/man/man1/llvm-ar.1.gz
OLD_FILES+=usr/share/man/man1/llvm-nm.1.gz
OLD_FILES+=usr/share/man/man1/llvm-symbolizer.1.gz
OLD_FILES+=usr/share/man/man1/llvm-tblgen.1.gz
.endif
.if ${MK_CLANG_EXTRAS} == no
OLD_FILES+=usr/bin/bugpoint
OLD_FILES+=usr/bin/clang-format
OLD_FILES+=usr/bin/llc
OLD_FILES+=usr/bin/lli
OLD_FILES+=usr/bin/llvm-as
OLD_FILES+=usr/bin/llvm-bcanalyzer
OLD_FILES+=usr/bin/llvm-cxxdump
OLD_FILES+=usr/bin/llvm-cxxfilt
OLD_FILES+=usr/bin/llvm-diff
OLD_FILES+=usr/bin/llvm-dis
OLD_FILES+=usr/bin/llvm-dwarfdump
OLD_FILES+=usr/bin/llvm-extract
OLD_FILES+=usr/bin/llvm-link
OLD_FILES+=usr/bin/llvm-lto
OLD_FILES+=usr/bin/llvm-lto2
OLD_FILES+=usr/bin/llvm-mc
OLD_FILES+=usr/bin/llvm-mca
OLD_FILES+=usr/bin/llvm-modextract
OLD_FILES+=usr/bin/llvm-objcopy
OLD_FILES+=usr/bin/llvm-pdbutil
OLD_FILES+=usr/bin/llvm-rtdyld
OLD_FILES+=usr/bin/llvm-xray
OLD_FILES+=usr/bin/opt
OLD_FILES+=usr/share/man/man1/bugpoint.1.gz
OLD_FILES+=usr/share/man/man1/llc.1.gz
OLD_FILES+=usr/share/man/man1/lli.1.gz
OLD_FILES+=usr/share/man/man1/llvm-as.1.gz
OLD_FILES+=usr/share/man/man1/llvm-bcanalyzer.1.gz
OLD_FILES+=usr/share/man/man1/llvm-diff.1.gz
OLD_FILES+=usr/share/man/man1/llvm-dis.1.gz
OLD_FILES+=usr/share/man/man1/llvm-dwarfdump.1
OLD_FILES+=usr/share/man/man1/llvm-extract.1.gz
OLD_FILES+=usr/share/man/man1/llvm-link.1.gz
OLD_FILES+=usr/share/man/man1/llvm-pdbutil.1.gz
OLD_FILES+=usr/share/man/man1/opt.1.gz
.endif
.if ${MK_CPP} == no
OLD_FILES+=usr/bin/cpp
OLD_FILES+=usr/share/man/man1/cpp.1.gz
.endif
.if ${MK_CUSE} == no
OLD_FILES+=usr/include/fs/cuse/cuse_defs.h
OLD_FILES+=usr/include/fs/cuse/cuse_ioctl.h
OLD_FILES+=usr/include/cuse.h
OLD_FILES+=usr/lib/libcuse.a
OLD_LIBS+=usr/lib/libcuse.so.1
OLD_FILES+=usr/lib/libcuse_p.a
OLD_FILES+=usr/share/man/man3/cuse.3.gz
OLD_FILES+=usr/share/man/man3/cuse_alloc_unit_number.3.gz
OLD_FILES+=usr/share/man/man3/cuse_alloc_unit_number_by_id.3.gz
OLD_FILES+=usr/share/man/man3/cuse_copy_in.3.gz
OLD_FILES+=usr/share/man/man3/cuse_copy_out.3.gz
OLD_FILES+=usr/share/man/man3/cuse_dev_create.3.gz
OLD_FILES+=usr/share/man/man3/cuse_dev_destroy.3.gz
OLD_FILES+=usr/share/man/man3/cuse_dev_get_current.3.gz
OLD_FILES+=usr/share/man/man3/cuse_dev_get_per_file_handle.3.gz
OLD_FILES+=usr/share/man/man3/cuse_dev_get_priv0.3.gz
OLD_FILES+=usr/share/man/man3/cuse_dev_get_priv1.3.gz
OLD_FILES+=usr/share/man/man3/cuse_dev_set_per_file_handle.3.gz
OLD_FILES+=usr/share/man/man3/cuse_dev_set_priv0.3.gz
OLD_FILES+=usr/share/man/man3/cuse_dev_set_priv1.3.gz
OLD_FILES+=usr/share/man/man3/cuse_free_unit_number.3.gz
OLD_FILES+=usr/share/man/man3/cuse_free_unit_number_by_id.3.gz
OLD_FILES+=usr/share/man/man3/cuse_get_local.3.gz
OLD_FILES+=usr/share/man/man3/cuse_got_peer_signal.3.gz
OLD_FILES+=usr/share/man/man3/cuse_init.3.gz
OLD_FILES+=usr/share/man/man3/cuse_is_vmalloc_addr.3.gz
OLD_FILES+=usr/share/man/man3/cuse_poll_wakeup.3.gz
OLD_FILES+=usr/share/man/man3/cuse_set_local.3.gz
OLD_FILES+=usr/share/man/man3/cuse_uninit.3.gz
OLD_FILES+=usr/share/man/man3/cuse_vmalloc.3.gz
OLD_FILES+=usr/share/man/man3/cuse_vmfree.3.gz
OLD_FILES+=usr/share/man/man3/cuse_vmoffset.3.gz
OLD_FILES+=usr/share/man/man3/cuse_wait_and_process.3.gz
OLD_DIRS+=usr/include/fs/cuse
.endif
# devd(8) not listed here on purpose
.if ${MK_CXX} == no
OLD_FILES+=usr/bin/CC
OLD_FILES+=usr/bin/c++
OLD_FILES+=usr/bin/g++
OLD_FILES+=usr/libexec/cc1plus
.endif
.if ${MK_DEBUG_FILES} == no
.if exists(${DESTDIR}/usr/lib/debug)
DEBUG_DIRS!=find ${DESTDIR}/usr/lib/debug -mindepth 1 \
-type d \! -path "${DESTDIR}/usr/lib/debug/boot/*" \
| sed -e 's,^${DESTDIR}/,,'; echo
DEBUG_FILES!=find ${DESTDIR}/usr/lib/debug \
\! -type d \! -path "${DESTDIR}/usr/lib/debug/boot/*" \! -name "lib*.so*" \
| sed -e 's,^${DESTDIR}/,,'; echo
DEBUG_LIBS!=find ${DESTDIR}/usr/lib/debug \! -type d -name "lib*.so*" \
| sed -e 's,^${DESTDIR}/,,'; echo
OLD_DIRS+=${DEBUG_DIRS}
OLD_FILES+=${DEBUG_FILES}
OLD_LIBS+=${DEBUG_LIBS}
.endif
.endif
.if ${MK_DIALOG} == no
OLD_FILES+=usr/bin/dialog
OLD_FILES+=usr/bin/dpv
OLD_FILES+=usr/lib/libdialog.a
OLD_FILES+=usr/lib/libdialog.so
OLD_FILES+=usr/lib/libdialog.so.8
OLD_FILES+=usr/lib/libdialog_p.a
OLD_FILES+=usr/lib/libdpv.a
OLD_FILES+=usr/lib/libdpv.so
OLD_FILES+=usr/lib/libdpv.so.1
OLD_FILES+=usr/lib/libdpv_p.a
OLD_FILES+=usr/sbin/bsdconfig
OLD_FILES+=usr/share/man/man1/dialog.1.gz
OLD_FILES+=usr/share/man/man1/dpv.1.gz
OLD_FILES+=usr/share/man/man3/dialog.3.gz
OLD_FILES+=usr/share/man/man3/dpv.3.gz
OLD_FILES+=usr/share/man/man8/bsdconfig.8.gz
OLD_DIRS+=usr/share/bsdconfig
OLD_DIRS+=usr/share/bsdconfig/media
OLD_DIRS+=usr/share/bsdconfig/networking
OLD_DIRS+=usr/share/bsdconfig/packages
OLD_DIRS+=usr/share/bsdconfig/password
OLD_DIRS+=usr/share/bsdconfig/startup
OLD_DIRS+=usr/share/bsdconfig/timezone
OLD_DIRS+=usr/share/bsdconfig/usermgmt
.endif
.if ${MK_EFI} == no
OLD_FILES+=usr/sbin/efibootmgr
OLD_FILES+=usr/sbin/efidp
OLD_FILES+=usr/sbin/efivar
OLD_FILES+=usr/sbin/uefisign
OLD_FILES+=usr/share/examples/uefisign/uefikeys
.endif
.if ${MK_FMTREE} == no
OLD_FILES+=usr/sbin/fmtree
OLD_FILES+=usr/share/man/man8/fmtree.8.gz
.endif
.if ${MK_FTP} == no
OLD_FILES+=etc/ftpusers
OLD_FILES+=etc/newsyslog.conf.d/ftp.conf
OLD_FILES+=etc/pam.d/ftp
OLD_FILES+=etc/pam.d/ftpd
OLD_FILES+=etc/rc.d/ftpd
OLD_FILES+=etc/syslog.d/ftp.conf
OLD_FILES+=usr/bin/ftp
OLD_FILES+=usr/bin/gate-ftp
OLD_FILES+=usr/bin/pftp
OLD_FILES+=usr/libexec/ftpd
OLD_FILES+=usr/share/man/man1/ftp.1.gz
OLD_FILES+=usr/share/man/man1/gate-ftp.1.gz
OLD_FILES+=usr/share/man/man1/pftp.1.gz
OLD_FILES+=usr/share/man/man5/ftpchroot.5.gz
OLD_FILES+=usr/share/man/man8/ftpd.8.gz
.endif
.if ${MK_DICT} == no
OLD_FILES+=usr/share/dict/README
OLD_FILES+=usr/share/dict/freebsd
OLD_FILES+=usr/share/dict/propernames
OLD_FILES+=usr/share/dict/web2
OLD_FILES+=usr/share/dict/web2a
OLD_FILES+=usr/share/dict/words
OLD_DIRS+=usr/share/dict
.endif
.if ${MK_DMAGENT} == no
OLD_FILES+=etc/dma/dma.conf
OLD_DIRS+=etc/dma
OLD_FILES+=usr/libexec/dma
OLD_FILES+=usr/libexec/dma-mbox-create
OLD_FILES+=usr/share/man/man8/dma.8.gz
OLD_FILES+=usr/share/examples/dma/mailer.conf
.endif
.if ${MK_EE} == no
OLD_FILES+=usr/bin/edit
OLD_FILES+=usr/bin/ee
OLD_FILES+=usr/bin/ree
OLD_FILES+=usr/share/man/man1/edit.1.gz
OLD_FILES+=usr/share/man/man1/ee.1.gz
OLD_FILES+=usr/share/man/man1/ree.1.gz
OLD_FILES+=usr/share/nls/C/ee.cat
OLD_FILES+=usr/share/nls/de_DE.ISO8859-1/ee.cat
OLD_FILES+=usr/share/nls/fr_FR.ISO8859-1/ee.cat
OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/ee.cat
OLD_FILES+=usr/share/nls/pl_PL.ISO8859-2/ee.cat
OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/ee.cat
OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/ee.cat
OLD_FILES+=usr/share/nls/uk_UA.KOI8-U/ee.cat
.endif
.if ${MK_EXAMPLES} == no
OLD_FILES+=usr/share/examples/BSD_daemon/FreeBSD.pfa
OLD_FILES+=usr/share/examples/BSD_daemon/README
OLD_FILES+=usr/share/examples/BSD_daemon/beastie.eps
OLD_FILES+=usr/share/examples/BSD_daemon/beastie.fig
OLD_FILES+=usr/share/examples/BSD_daemon/eps.patch
OLD_FILES+=usr/share/examples/BSD_daemon/poster.sh
OLD_FILES+=usr/share/examples/FreeBSD_version/FreeBSD_version.c
OLD_FILES+=usr/share/examples/FreeBSD_version/Makefile
OLD_FILES+=usr/share/examples/FreeBSD_version/README
OLD_FILES+=usr/share/examples/IPv6/USAGE
OLD_FILES+=usr/share/examples/bhyve/vmrun.sh
OLD_FILES+=usr/share/examples/bootforth/README
OLD_FILES+=usr/share/examples/bootforth/boot.4th
OLD_FILES+=usr/share/examples/bootforth/frames.4th
OLD_FILES+=usr/share/examples/bootforth/loader.rc
OLD_FILES+=usr/share/examples/bootforth/menu.4th
OLD_FILES+=usr/share/examples/bootforth/menuconf.4th
OLD_FILES+=usr/share/examples/bootforth/screen.4th
OLD_FILES+=usr/share/examples/bsdconfig/add_some_packages.sh
OLD_FILES+=usr/share/examples/bsdconfig/browse_packages_http.sh
OLD_FILES+=usr/share/examples/bsdconfig/bsdconfigrc
OLD_FILES+=usr/share/examples/csh/dot.cshrc
OLD_FILES+=usr/share/examples/diskless/ME
OLD_FILES+=usr/share/examples/diskless/README.BOOTP
OLD_FILES+=usr/share/examples/diskless/README.TEMPLATING
OLD_FILES+=usr/share/examples/diskless/clone_root
OLD_FILES+=usr/share/examples/dma/mailer.conf
OLD_FILES+=usr/share/examples/drivers/README
OLD_FILES+=usr/share/examples/drivers/make_device_driver.sh
OLD_FILES+=usr/share/examples/drivers/make_pseudo_driver.sh
OLD_FILES+=usr/share/examples/dwatch/profile_template
OLD_FILES+=usr/share/examples/etc/README.examples
OLD_FILES+=usr/share/examples/etc/bsd-style-copyright
OLD_FILES+=usr/share/examples/etc/group
OLD_FILES+=usr/share/examples/etc/login.access
OLD_FILES+=usr/share/examples/etc/make.conf
OLD_FILES+=usr/share/examples/etc/rc.bsdextended
OLD_FILES+=usr/share/examples/etc/rc.firewall
OLD_FILES+=usr/share/examples/etc/rc.sendmail
OLD_FILES+=usr/share/examples/etc/termcap.small
OLD_FILES+=usr/share/examples/etc/wpa_supplicant.conf
OLD_FILES+=usr/share/examples/find_interface/Makefile
OLD_FILES+=usr/share/examples/find_interface/README
OLD_FILES+=usr/share/examples/find_interface/find_interface.c
OLD_FILES+=usr/share/examples/hast/ucarp.sh
OLD_FILES+=usr/share/examples/hast/ucarp_down.sh
OLD_FILES+=usr/share/examples/hast/ucarp_up.sh
OLD_FILES+=usr/share/examples/hast/vip-down.sh
OLD_FILES+=usr/share/examples/hast/vip-up.sh
OLD_FILES+=usr/share/examples/hostapd/hostapd.conf
OLD_FILES+=usr/share/examples/hostapd/hostapd.eap_user
OLD_FILES+=usr/share/examples/hostapd/hostapd.wpa_psk
OLD_FILES+=usr/share/examples/indent/indent.pro
OLD_FILES+=usr/share/examples/ipfilter/BASIC.NAT
OLD_FILES+=usr/share/examples/ipfilter/BASIC_1.FW
OLD_FILES+=usr/share/examples/ipfilter/BASIC_2.FW
OLD_FILES+=usr/share/examples/ipfilter/README
OLD_FILES+=usr/share/examples/ipfilter/example.1
OLD_FILES+=usr/share/examples/ipfilter/example.10
OLD_FILES+=usr/share/examples/ipfilter/example.11
OLD_FILES+=usr/share/examples/ipfilter/example.12
OLD_FILES+=usr/share/examples/ipfilter/example.13
OLD_FILES+=usr/share/examples/ipfilter/example.14
OLD_FILES+=usr/share/examples/ipfilter/example.2
OLD_FILES+=usr/share/examples/ipfilter/example.3
OLD_FILES+=usr/share/examples/ipfilter/example.4
OLD_FILES+=usr/share/examples/ipfilter/example.5
OLD_FILES+=usr/share/examples/ipfilter/example.6
OLD_FILES+=usr/share/examples/ipfilter/example.7
OLD_FILES+=usr/share/examples/ipfilter/example.8
OLD_FILES+=usr/share/examples/ipfilter/example.9
OLD_FILES+=usr/share/examples/ipfilter/example.sr
OLD_FILES+=usr/share/examples/ipfilter/examples.txt
OLD_FILES+=usr/share/examples/ipfilter/firewall
OLD_FILES+=usr/share/examples/ipfilter/firewall.1
OLD_FILES+=usr/share/examples/ipfilter/firewall.2
OLD_FILES+=usr/share/examples/ipfilter/ftp-proxy
OLD_FILES+=usr/share/examples/ipfilter/ftppxy
OLD_FILES+=usr/share/examples/ipfilter/ipf-howto.txt
OLD_FILES+=usr/share/examples/ipfilter/ipf.conf.permissive
OLD_FILES+=usr/share/examples/ipfilter/ipf.conf.restrictive
OLD_FILES+=usr/share/examples/ipfilter/ipf.conf.sample
OLD_FILES+=usr/share/examples/ipfilter/ipnat.conf.sample
OLD_FILES+=usr/share/examples/ipfilter/mkfilters
OLD_FILES+=usr/share/examples/ipfilter/nat-setup
OLD_FILES+=usr/share/examples/ipfilter/nat.eg
OLD_FILES+=usr/share/examples/ipfilter/rules.txt
OLD_FILES+=usr/share/examples/ipfilter/server
OLD_FILES+=usr/share/examples/ipfilter/tcpstate
OLD_FILES+=usr/share/examples/ipfw/change_rules.sh
OLD_FILES+=usr/share/examples/jails/README
OLD_FILES+=usr/share/examples/jails/VIMAGE
OLD_FILES+=usr/share/examples/jails/jail.xxx.conf
OLD_FILES+=usr/share/examples/jails/jib
OLD_FILES+=usr/share/examples/jails/jng
OLD_FILES+=usr/share/examples/jails/rc.conf.jails
OLD_FILES+=usr/share/examples/jails/rcjail.xxx.conf
OLD_FILES+=usr/share/examples/kld/Makefile
OLD_FILES+=usr/share/examples/kld/cdev/Makefile
OLD_FILES+=usr/share/examples/kld/cdev/README
OLD_FILES+=usr/share/examples/kld/cdev/module/Makefile
OLD_FILES+=usr/share/examples/kld/cdev/module/cdev.c
OLD_FILES+=usr/share/examples/kld/cdev/module/cdev.h
OLD_FILES+=usr/share/examples/kld/cdev/module/cdevmod.c
OLD_FILES+=usr/share/examples/kld/cdev/test/Makefile
OLD_FILES+=usr/share/examples/kld/cdev/test/testcdev.c
OLD_FILES+=usr/share/examples/kld/dyn_sysctl/Makefile
OLD_FILES+=usr/share/examples/kld/dyn_sysctl/README
OLD_FILES+=usr/share/examples/kld/dyn_sysctl/dyn_sysctl.c
OLD_FILES+=usr/share/examples/kld/firmware/Makefile
OLD_FILES+=usr/share/examples/kld/firmware/README
OLD_FILES+=usr/share/examples/kld/firmware/fwconsumer/Makefile
OLD_FILES+=usr/share/examples/kld/firmware/fwconsumer/fw_consumer.c
OLD_FILES+=usr/share/examples/kld/firmware/fwimage/Makefile
OLD_FILES+=usr/share/examples/kld/firmware/fwimage/firmware.img.uu
OLD_FILES+=usr/share/examples/kld/khelp/Makefile
OLD_FILES+=usr/share/examples/kld/khelp/README
OLD_FILES+=usr/share/examples/kld/khelp/h_example.c
OLD_FILES+=usr/share/examples/kld/syscall/Makefile
OLD_FILES+=usr/share/examples/kld/syscall/module/Makefile
OLD_FILES+=usr/share/examples/kld/syscall/module/syscall.c
OLD_FILES+=usr/share/examples/kld/syscall/test/Makefile
OLD_FILES+=usr/share/examples/kld/syscall/test/call.c
OLD_FILES+=usr/share/examples/libusb20/Makefile
OLD_FILES+=usr/share/examples/libusb20/README
OLD_FILES+=usr/share/examples/libusb20/bulk.c
OLD_FILES+=usr/share/examples/libusb20/control.c
OLD_FILES+=usr/share/examples/libusb20/util.c
OLD_FILES+=usr/share/examples/libusb20/util.h
OLD_FILES+=usr/share/examples/libvgl/Makefile
OLD_FILES+=usr/share/examples/libvgl/demo.c
OLD_FILES+=usr/share/examples/mdoc/POSIX-copyright
OLD_FILES+=usr/share/examples/mdoc/deshallify.sh
OLD_FILES+=usr/share/examples/mdoc/example.1
OLD_FILES+=usr/share/examples/mdoc/example.3
OLD_FILES+=usr/share/examples/mdoc/example.4
OLD_FILES+=usr/share/examples/mdoc/example.9
OLD_FILES+=usr/share/examples/netgraph/ether.bridge
OLD_FILES+=usr/share/examples/netgraph/frame_relay
OLD_FILES+=usr/share/examples/netgraph/ngctl
OLD_FILES+=usr/share/examples/netgraph/raw
OLD_FILES+=usr/share/examples/netgraph/udp.tunnel
OLD_FILES+=usr/share/examples/netgraph/virtual.chain
OLD_FILES+=usr/share/examples/netgraph/virtual.lan
OLD_FILES+=usr/share/examples/perfmon/Makefile
OLD_FILES+=usr/share/examples/perfmon/README
OLD_FILES+=usr/share/examples/perfmon/perfmon.c
OLD_FILES+=usr/share/examples/pf/ackpri
OLD_FILES+=usr/share/examples/pf/faq-example1
OLD_FILES+=usr/share/examples/pf/faq-example2
OLD_FILES+=usr/share/examples/pf/faq-example3
OLD_FILES+=usr/share/examples/pf/pf.conf
OLD_FILES+=usr/share/examples/pf/queue1
OLD_FILES+=usr/share/examples/pf/queue2
OLD_FILES+=usr/share/examples/pf/queue3
OLD_FILES+=usr/share/examples/pf/queue4
OLD_FILES+=usr/share/examples/pf/spamd
OLD_FILES+=usr/share/examples/ppi/Makefile
OLD_FILES+=usr/share/examples/ppi/ppilcd.c
OLD_FILES+=usr/share/examples/ppp/chap-auth
OLD_FILES+=usr/share/examples/ppp/login-auth
OLD_FILES+=usr/share/examples/ppp/ppp.conf.sample
OLD_FILES+=usr/share/examples/ppp/ppp.conf.span-isp
OLD_FILES+=usr/share/examples/ppp/ppp.conf.span-isp.working
OLD_FILES+=usr/share/examples/ppp/ppp.linkdown.sample
OLD_FILES+=usr/share/examples/ppp/ppp.linkdown.span-isp
OLD_FILES+=usr/share/examples/ppp/ppp.linkdown.span-isp.working
OLD_FILES+=usr/share/examples/ppp/ppp.linkup.sample
OLD_FILES+=usr/share/examples/ppp/ppp.linkup.span-isp
OLD_FILES+=usr/share/examples/ppp/ppp.linkup.span-isp.working
OLD_FILES+=usr/share/examples/ppp/ppp.secret.sample
OLD_FILES+=usr/share/examples/ppp/ppp.secret.span-isp
OLD_FILES+=usr/share/examples/ppp/ppp.secret.span-isp.working
OLD_FILES+=usr/share/examples/printing/diablo-if-net
OLD_FILES+=usr/share/examples/printing/hpdf
OLD_FILES+=usr/share/examples/printing/hpif
OLD_FILES+=usr/share/examples/printing/hpof
OLD_FILES+=usr/share/examples/printing/hprf
OLD_FILES+=usr/share/examples/printing/hpvf
OLD_FILES+=usr/share/examples/printing/if-simple
OLD_FILES+=usr/share/examples/printing/if-simpleX
OLD_FILES+=usr/share/examples/printing/ifhp
OLD_FILES+=usr/share/examples/printing/make-ps-header
OLD_FILES+=usr/share/examples/printing/netprint
OLD_FILES+=usr/share/examples/printing/psdf
OLD_FILES+=usr/share/examples/printing/psdfX
OLD_FILES+=usr/share/examples/printing/psif
OLD_FILES+=usr/share/examples/printing/pstf
OLD_FILES+=usr/share/examples/printing/pstfX
OLD_FILES+=usr/share/examples/scsi_target/Makefile
OLD_FILES+=usr/share/examples/scsi_target/scsi_cmds.c
OLD_FILES+=usr/share/examples/scsi_target/scsi_target.8
OLD_FILES+=usr/share/examples/scsi_target/scsi_target.c
OLD_FILES+=usr/share/examples/scsi_target/scsi_target.h
OLD_FILES+=usr/share/examples/ses/Makefile
OLD_FILES+=usr/share/examples/ses/Makefile.inc
OLD_FILES+=usr/share/examples/ses/getencstat/Makefile
OLD_FILES+=usr/share/examples/ses/getencstat/getencstat.0
OLD_FILES+=usr/share/examples/ses/sesd/Makefile
OLD_FILES+=usr/share/examples/ses/sesd/sesd.0
OLD_FILES+=usr/share/examples/ses/setencstat/Makefile
OLD_FILES+=usr/share/examples/ses/setencstat/setencstat.0
OLD_FILES+=usr/share/examples/ses/setobjstat/Makefile
OLD_FILES+=usr/share/examples/ses/setobjstat/setobjstat.0
OLD_FILES+=usr/share/examples/ses/srcs/chpmon.c
OLD_FILES+=usr/share/examples/ses/srcs/eltsub.c
OLD_FILES+=usr/share/examples/ses/srcs/eltsub.h
OLD_FILES+=usr/share/examples/ses/srcs/getencstat.c
OLD_FILES+=usr/share/examples/ses/srcs/getnobj.c
OLD_FILES+=usr/share/examples/ses/srcs/getobjmap.c
OLD_FILES+=usr/share/examples/ses/srcs/getobjstat.c
OLD_FILES+=usr/share/examples/ses/srcs/inienc.c
OLD_FILES+=usr/share/examples/ses/srcs/sesd.c
OLD_FILES+=usr/share/examples/ses/srcs/setencstat.c
OLD_FILES+=usr/share/examples/ses/srcs/setobjstat.c
OLD_FILES+=usr/share/examples/smbfs/dot.nsmbrc
OLD_FILES+=usr/share/examples/smbfs/print/lj6l
OLD_FILES+=usr/share/examples/smbfs/print/ljspool
OLD_FILES+=usr/share/examples/smbfs/print/printcap.sample
OLD_FILES+=usr/share/examples/smbfs/print/tolj
OLD_FILES+=usr/share/examples/sunrpc/Makefile
OLD_FILES+=usr/share/examples/sunrpc/dir/Makefile
OLD_FILES+=usr/share/examples/sunrpc/dir/dir.x
OLD_FILES+=usr/share/examples/sunrpc/dir/dir_proc.c
OLD_FILES+=usr/share/examples/sunrpc/dir/rls.c
OLD_FILES+=usr/share/examples/sunrpc/msg/Makefile
OLD_FILES+=usr/share/examples/sunrpc/msg/msg.x
OLD_FILES+=usr/share/examples/sunrpc/msg/msg_proc.c
OLD_FILES+=usr/share/examples/sunrpc/msg/printmsg.c
OLD_FILES+=usr/share/examples/sunrpc/msg/rprintmsg.c
OLD_FILES+=usr/share/examples/sunrpc/sort/Makefile
OLD_FILES+=usr/share/examples/sunrpc/sort/rsort.c
OLD_FILES+=usr/share/examples/sunrpc/sort/sort.x
OLD_FILES+=usr/share/examples/sunrpc/sort/sort_proc.c
OLD_FILES+=usr/share/examples/tcsh/complete.tcsh
OLD_FILES+=usr/share/examples/tcsh/csh-mode.el
OLD_FILES+=usr/share/examples/uefisign/uefikeys
OLD_FILES+=usr/share/examples/ypldap/ypldap.conf
OLD_DIRS+=usr/share/examples
OLD_DIRS+=usr/share/examples/BSD_daemon
OLD_DIRS+=usr/share/examples/FreeBSD_version
OLD_DIRS+=usr/share/examples/IPv6
OLD_DIRS+=usr/share/examples/bhyve
OLD_DIRS+=usr/share/examples/bootforth
OLD_DIRS+=usr/share/examples/bsdconfig
OLD_DIRS+=usr/share/examples/csh
OLD_DIRS+=usr/share/examples/diskless
OLD_DIRS+=usr/share/examples/dma
OLD_DIRS+=usr/share/examples/drivers
OLD_DIRS+=usr/share/examples/dwatch
OLD_DIRS+=usr/share/examples/etc
OLD_DIRS+=usr/share/examples/etc/defaults
OLD_DIRS+=usr/share/examples/find_interface
OLD_DIRS+=usr/share/examples/hast
OLD_DIRS+=usr/share/examples/ibcs2
OLD_DIRS+=usr/share/examples/hostapd
OLD_DIRS+=usr/share/examples/indent
OLD_DIRS+=usr/share/examples/ipfilter
OLD_DIRS+=usr/share/examples/ipfw
OLD_DIRS+=usr/share/examples/jails
OLD_DIRS+=usr/share/examples/kld
OLD_DIRS+=usr/share/examples/kld/cdev
OLD_DIRS+=usr/share/examples/kld/cdev/module
OLD_DIRS+=usr/share/examples/kld/cdev/test
OLD_DIRS+=usr/share/examples/kld/dyn_sysctl
OLD_DIRS+=usr/share/examples/kld/firmware
OLD_DIRS+=usr/share/examples/kld/firmware/fwconsumer
OLD_DIRS+=usr/share/examples/kld/firmware/fwimage
OLD_DIRS+=usr/share/examples/kld/khelp
OLD_DIRS+=usr/share/examples/kld/syscall
OLD_DIRS+=usr/share/examples/kld/syscall/module
OLD_DIRS+=usr/share/examples/kld/syscall/test
OLD_DIRS+=usr/share/examples/libusb20
OLD_DIRS+=usr/share/examples/libvgl
OLD_DIRS+=usr/share/examples/mdoc
OLD_DIRS+=usr/share/examples/netgraph
OLD_DIRS+=usr/share/examples/perfmon
OLD_DIRS+=usr/share/examples/pf
OLD_DIRS+=usr/share/examples/ppi
OLD_DIRS+=usr/share/examples/ppp
OLD_DIRS+=usr/share/examples/printing
OLD_DIRS+=usr/share/examples/scsi_target
OLD_DIRS+=usr/share/examples/ses
OLD_DIRS+=usr/share/examples/ses/getencstat
OLD_DIRS+=usr/share/examples/ses/sesd
OLD_DIRS+=usr/share/examples/ses/setencstat
OLD_DIRS+=usr/share/examples/ses/setobjstat
OLD_DIRS+=usr/share/examples/ses/srcs
OLD_DIRS+=usr/share/examples/smbfs
OLD_DIRS+=usr/share/examples/smbfs/print
OLD_DIRS+=usr/share/examples/sunrpc
OLD_DIRS+=usr/share/examples/sunrpc/dir
OLD_DIRS+=usr/share/examples/sunrpc/msg
OLD_DIRS+=usr/share/examples/sunrpc/sort
OLD_DIRS+=usr/share/examples/tcsh
OLD_DIRS+=usr/share/examples/uefisign
OLD_DIRS+=usr/share/examples/ypldap
.endif
.if ${MK_FINGER} == no
OLD_FILES+=usr/bin/finger
OLD_FILES+=usr/share/man/man1/finger.1.gz
OLD_FILES+=usr/share/man/man5/finger.conf.5.gz
OLD_FILES+=usr/libexec/fingerd
OLD_FILES+=usr/share/man/man8/fingerd.8.gz
.endif
.if ${MK_FLOPPY} == no
OLD_FILES+=usr/sbin/fdcontrol
OLD_FILES+=usr/sbin/fdformat
OLD_FILES+=usr/sbin/fdread
OLD_FILES+=usr/sbin/fdwrite
OLD_FILES+=usr/share/man/man1/fdformat.1.gz
OLD_FILES+=usr/share/man/man1/fdread.1.gz
OLD_FILES+=usr/share/man/man1/fdwrite.1.gz
OLD_FILES+=usr/share/man/man8/fdcontrol.8.gz
.endif
.if ${MK_FORTH} == no
OLD_FILES+=usr/share/man/man8/beastie.4th.8.gz
OLD_FILES+=usr/share/man/man8/brand.4th.8.gz
OLD_FILES+=usr/share/man/man8/check-password.4th.8.gz
OLD_FILES+=usr/share/man/man8/color.4th.8.gz
OLD_FILES+=usr/share/man/man8/delay.4th.8.gz
OLD_FILES+=usr/share/man/man8/loader.4th.8.gz
OLD_FILES+=usr/share/man/man8/menu.4th.8.gz
OLD_FILES+=usr/share/man/man8/menusets.4th.8.gz
OLD_FILES+=usr/share/man/man8/version.4th.8.gz
.endif
.if ${MK_FREEBSD_UPDATE} == no
OLD_FILES+=etc/freebsd-update.conf
OLD_FILES+=usr/sbin/freebsd-update
OLD_FILES+=usr/share/examples/etc/freebsd-update.conf
OLD_FILES+=usr/share/man/man5/freebsd-update.conf.5.gz
OLD_FILES+=usr/share/man/man8/freebsd-update.8.gz
.endif
.if ${MK_GAMES} == no
OLD_FILES+=usr/bin/caesar
OLD_FILES+=usr/bin/factor
OLD_FILES+=usr/bin/fortune
OLD_FILES+=usr/bin/grdc
OLD_FILES+=usr/bin/morse
OLD_FILES+=usr/bin/number
OLD_FILES+=usr/bin/pom
OLD_FILES+=usr/bin/primes
OLD_FILES+=usr/bin/random
OLD_FILES+=usr/bin/rot13
OLD_FILES+=usr/bin/strfile
OLD_FILES+=usr/bin/unstr
OLD_FILES+=usr/share/games/fortune/fortunes
OLD_FILES+=usr/share/games/fortune/fortunes.dat
OLD_FILES+=usr/share/games/fortune/freebsd-tips
OLD_FILES+=usr/share/games/fortune/freebsd-tips.dat
OLD_FILES+=usr/share/games/fortune/gerrold.limerick
OLD_FILES+=usr/share/games/fortune/gerrold.limerick.dat
OLD_FILES+=usr/share/games/fortune/limerick
OLD_FILES+=usr/share/games/fortune/limerick.dat
OLD_FILES+=usr/share/games/fortune/murphy
OLD_FILES+=usr/share/games/fortune/murphy-o
OLD_FILES+=usr/share/games/fortune/murphy-o.dat
OLD_FILES+=usr/share/games/fortune/murphy.dat
OLD_FILES+=usr/share/games/fortune/startrek
OLD_FILES+=usr/share/games/fortune/startrek.dat
OLD_FILES+=usr/share/games/fortune/zippy
OLD_FILES+=usr/share/games/fortune/zippy.dat
OLD_DIRS+=usr/share/games/fortune
OLD_DIRS+=usr/share/games
OLD_FILES+=usr/share/man/man6/caesar.6.gz
OLD_FILES+=usr/share/man/man6/factor.6.gz
OLD_FILES+=usr/share/man/man6/fortune.6.gz
OLD_FILES+=usr/share/man/man6/grdc.6.gz
OLD_FILES+=usr/share/man/man6/morse.6.gz
OLD_FILES+=usr/share/man/man6/number.6.gz
OLD_FILES+=usr/share/man/man6/pom.6.gz
OLD_FILES+=usr/share/man/man6/primes.6.gz
OLD_FILES+=usr/share/man/man6/random.6.gz
OLD_FILES+=usr/share/man/man6/rot13.6.gz
OLD_FILES+=usr/share/man/man8/strfile.8.gz
OLD_FILES+=usr/share/man/man8/unstr.8.gz
.endif
.if ${MK_LLVM_COV} == no && !defined(WITH_PORT_BASE_GCC)
OLD_FILES+=usr/bin/gcov
OLD_FILES+=usr/share/man/man1/gcov.1.gz
.endif
.if ${MK_LLVM_COV} == no
OLD_FILES+=usr/bin/llvm-cov
OLD_FILES+=usr/bin/llvm-profdata
OLD_FILES+=usr/share/man/man1/llvm-cov.1.gz
.endif
.if ${MK_GDB} == no || ${MK_GDB_LIBEXEC} == yes
OLD_FILES+=usr/bin/gdb
OLD_FILES+=usr/bin/gdbserver
OLD_FILES+=usr/bin/kgdb
OLD_FILES+=usr/share/man/man1/gdb.1.gz
OLD_FILES+=usr/share/man/man1/gdbserver.1.gz
OLD_FILES+=usr/share/man/man1/kgdb.1.gz
.endif
.if ${MK_GDB} == no || ${MK_GDB_LIBEXEC} == no
OLD_FILES+=usr/libexec/gdb
OLD_FILES+=usr/libexec/kgdb
.endif
.if ${MK_GOOGLETEST} == no
OLD_FILES+=usr/include/gmock/gmock-actions.h
OLD_FILES+=usr/include/gmock/gmock-cardinalities.h
OLD_FILES+=usr/include/gmock/gmock-generated-actions.h
OLD_FILES+=usr/include/gmock/gmock-generated-function-mockers.h
OLD_FILES+=usr/include/gmock/gmock-generated-matchers.h
OLD_FILES+=usr/include/gmock/gmock-generated-nice-strict.h
OLD_FILES+=usr/include/gmock/gmock-matchers.h
OLD_FILES+=usr/include/gmock/gmock-more-actions.h
OLD_FILES+=usr/include/gmock/gmock-more-matchers.h
OLD_FILES+=usr/include/gmock/gmock-spec-builders.h
OLD_FILES+=usr/include/gmock/gmock.h
OLD_FILES+=usr/include/gmock/internal/custom/gmock-generated-actions.h
OLD_FILES+=usr/include/gmock/internal/custom/gmock-matchers.h
OLD_FILES+=usr/include/gmock/internal/custom/gmock-port.h
OLD_FILES+=usr/include/gmock/internal/gmock-generated-internal-utils.h
OLD_FILES+=usr/include/gmock/internal/gmock-internal-utils.h
OLD_FILES+=usr/include/gmock/internal/gmock-port.h
OLD_DIRS+=usr/include/gmock
OLD_FILES+=usr/include/gtest/gtest_pred_impl.h
OLD_FILES+=usr/include/gtest/gtest_prod.h
OLD_FILES+=usr/include/gtest/gtest-death-test.h
OLD_FILES+=usr/include/gtest/gtest-message.h
OLD_FILES+=usr/include/gtest/gtest-param-test.h
OLD_FILES+=usr/include/gtest/gtest-printers.h
OLD_FILES+=usr/include/gtest/gtest-spi.h
OLD_FILES+=usr/include/gtest/gtest-test-part.h
OLD_FILES+=usr/include/gtest/gtest-typed-test.h
OLD_FILES+=usr/include/gtest/gtest.h
OLD_FILES+=usr/include/gtest/internal/custom/gtest-port.h
OLD_FILES+=usr/include/gtest/internal/custom/gtest-printers.h
OLD_FILES+=usr/include/gtest/internal/custom/gtest.h
OLD_FILES+=usr/include/gtest/internal/gtest-death-test-internal.h
OLD_FILES+=usr/include/gtest/internal/gtest-filepath.h
OLD_FILES+=usr/include/gtest/internal/gtest-internal.h
OLD_FILES+=usr/include/gtest/internal/gtest-linked_ptr.h
OLD_FILES+=usr/include/gtest/internal/gtest-param-util-generated.h
OLD_FILES+=usr/include/gtest/internal/gtest-param-util.h
OLD_FILES+=usr/include/gtest/internal/gtest-port-arch.h
OLD_FILES+=usr/include/gtest/internal/gtest-port.h
OLD_FILES+=usr/include/gtest/internal/gtest-string.h
OLD_FILES+=usr/include/gtest/internal/gtest-tuple.h
OLD_FILES+=usr/include/gtest/internal/gtest-type-util.h
OLD_DIRS+=usr/include/gtest
OLD_FILES+=usr/lib/libprivategmock_main.a
OLD_FILES+=usr/lib/libprivategmock_main.so
OLD_LIBS+=usr/lib/libprivategmock_main.so.0
OLD_FILES+=usr/lib/libprivategmock_main_p.a
OLD_FILES+=usr/lib/libprivategmock.a
OLD_FILES+=usr/lib/libprivategmock.so
OLD_LIBS+=usr/lib/libprivategmock.so.0
OLD_FILES+=usr/lib/libprivategmock_p.a
OLD_FILES+=usr/lib/libprivategtest_main.a
OLD_FILES+=usr/lib/libprivategtest_main.so
OLD_LIBS+=usr/lib/libprivategtest_main.so.0
OLD_FILES+=usr/lib/libprivategtest_main_p.a
OLD_FILES+=usr/lib/libprivategtest.a
OLD_FILES+=usr/lib/libprivategtest.so
OLD_LIBS+=usr/lib/libprivategtest.so.0
OLD_FILES+=usr/lib/libprivategtest_p.a
OLD_FILES+=usr/tests/lib/googletest/gmock/gmock_stress_test
OLD_FILES+=usr/tests/lib/googletest/gmock/Kyuafile
OLD_DIRS+=usr/tests/lib/googletest/gmock
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_ex_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_link_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-actions_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-cardinalities_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-ex_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-actions_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-function-mockers_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-internal-utils_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-generated-matchers_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-internal-utils_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-matchers_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-more-actions_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-nice-strict_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-port_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/gmock-spec-builders_test
OLD_FILES+=usr/tests/lib/googletest/gmock_main/Kyuafile
OLD_DIRS+=usr/tests/lib/googletest/gmock_main
OLD_FILES+=usr/tests/lib/googletest/gtest/googletest-param-test-test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_all_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_environment_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_no_test_unittest
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_premature_exit_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_repeat_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_stress_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest_throw_on_failure_ex_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest-death-test_ex_catch_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest-death-test_ex_nocatch_test
OLD_FILES+=usr/tests/lib/googletest/gtest/gtest-unittest-api_test
OLD_FILES+=usr/tests/lib/googletest/gtest/Kyuafile
OLD_DIRS+=usr/tests/lib/googletest/gtest
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-death-test-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-filepath-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-linked-ptr-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-listener-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-message-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-options-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-port-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-printers-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/googletest-test-part-test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_help_test_
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_main_unittest
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_pred_impl_unittest
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_prod_test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_sole_header_test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_unittest
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_xml_outfile1_test_
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest_xml_outfile2_test_
OLD_FILES+=usr/tests/lib/googletest/gtest_main/gtest-typed-test_test
OLD_FILES+=usr/tests/lib/googletest/gtest_main/Kyuafile
OLD_DIRS+=usr/tests/lib/googletest/gtest_main
OLD_FILES+=usr/tests/lib/googletest/Kyuafile
OLD_DIRS+=usr/tests/lib/googletest/
OLD_FILES+=usr/tests/share/examples/tests/googletest/Kyuafile
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample1_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample10_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample2_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample3_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample4_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample5_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample6_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample7_unittest
OLD_FILES+=usr/tests/share/examples/tests/googletest/sample8_unittest
OLD_DIRS+=usr/tests/share/examples/tests/googletest
.endif
.if ${MK_GPIO} == no
OLD_FILES+=usr/include/libgpio.h
OLD_FILES+=usr/lib/libgpio.a
OLD_FILES+=usr/lib/libgpio.so
OLD_LIBS+=usr/lib/libgpio.so.0
OLD_FILES+=usr/lib/libgpio_p.a
OLD_FILES+=usr/lib32/libgpio.a
OLD_FILES+=usr/lib32/libgpio.so
OLD_LIBS+=usr/lib32/libgpio.so.0
OLD_FILES+=usr/lib32/libgpio_p.a
OLD_FILES+=usr/sbin/gpioctl
OLD_FILES+=usr/share/man/man3/gpio.3.gz
OLD_FILES+=usr/share/man/man3/gpio_close.3.gz
OLD_FILES+=usr/share/man/man3/gpio_open.3.gz
OLD_FILES+=usr/share/man/man3/gpio_open_device.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_config.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_get.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_high.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_input.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_invin.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_invout.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_list.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_low.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_opendrain.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_output.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_pulldown.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_pullup.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_pulsate.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_pushpull.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_set.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_set_flags.3.gz
OLD_FILES+=usr/share/man/man3/gpio_pin_tristate.3.gz
OLD_FILES+=usr/share/man/man8/gpioctl.8.gz
.endif
.if ${MK_GNU_DIFF} == no
OLD_FILES+=usr/bin/diff3
OLD_FILES+=usr/share/man/man1/diff3.1.gz
.endif
.if ${MK_GNU_GREP} == no
OLD_FILES+=usr/bin/gnugrep
OLD_FILES+=usr/share/man/man1/gnugrep.1.gz
.if ${MK_BSD_GREP} == no
OLD_FILES+=usr/bin/bzgrep
OLD_FILES+=usr/bin/bzegrep
OLD_FILES+=usr/bin/bzfgrep
OLD_FILES+=usr/bin/egrep
OLD_FILES+=usr/bin/fgrep
OLD_FILES+=usr/bin/grep
OLD_FILES+=usr/bin/zegrep
OLD_FILES+=usr/bin/zfgrep
OLD_FILES+=usr/bin/zgrep
OLD_FILES+=usr/share/man/man1/bzegrep.1.gz
OLD_FILES+=usr/share/man/man1/bzfgrep.1.gz
OLD_FILES+=usr/share/man/man1/bzgrep.1.gz
OLD_FILES+=usr/share/man/man1/egrep.1.gz
OLD_FILES+=usr/share/man/man1/fgrep.1.gz
OLD_FILES+=usr/share/man/man1/grep.1.gz
OLD_FILES+=usr/share/man/man1/zegrep.1.gz
OLD_FILES+=usr/share/man/man1/zfgrep.1.gz
OLD_FILES+=usr/share/man/man1/zgrep.1.gz
.endif
.endif
.if ${MK_GSSAPI} == no
OLD_FILES+=usr/include/gssapi/gssapi.h
OLD_DIRS+=usr/include/gssapi
OLD_FILES+=usr/include/gssapi.h
OLD_FILES+=usr/lib/libgssapi.a
OLD_FILES+=usr/lib/libgssapi.so
OLD_LIBS+=usr/lib/libgssapi.so.10
OLD_FILES+=usr/lib/libgssapi_p.a
OLD_FILES+=usr/lib/librpcsec_gss.a
OLD_FILES+=usr/lib/librpcsec_gss.so
OLD_LIBS+=usr/lib/librpcsec_gss.so.1
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/libgssapi.a
OLD_FILES+=usr/lib32/libgssapi.so
OLD_LIBS+=usr/lib32/libgssapi.so.10
OLD_FILES+=usr/lib32/libgssapi_p.a
OLD_FILES+=usr/lib32/librpcsec_gss.a
OLD_FILES+=usr/lib32/librpcsec_gss.so
OLD_LIBS+=usr/lib32/librpcsec_gss.so.1
.endif
OLD_FILES+=usr/sbin/gssd
OLD_FILES+=usr/share/man/man3/gss_accept_sec_context.3.gz
OLD_FILES+=usr/share/man/man3/gss_acquire_cred.3.gz
OLD_FILES+=usr/share/man/man3/gss_add_cred.3.gz
OLD_FILES+=usr/share/man/man3/gss_add_oid_set_member.3.gz
OLD_FILES+=usr/share/man/man3/gss_canonicalize_name.3.gz
OLD_FILES+=usr/share/man/man3/gss_compare_name.3.gz
OLD_FILES+=usr/share/man/man3/gss_context_time.3.gz
OLD_FILES+=usr/share/man/man3/gss_create_empty_oid_set.3.gz
OLD_FILES+=usr/share/man/man3/gss_delete_sec_context.3.gz
OLD_FILES+=usr/share/man/man3/gss_display_name.3.gz
OLD_FILES+=usr/share/man/man3/gss_display_status.3.gz
OLD_FILES+=usr/share/man/man3/gss_duplicate_name.3.gz
OLD_FILES+=usr/share/man/man3/gss_export_name.3.gz
OLD_FILES+=usr/share/man/man3/gss_export_sec_context.3.gz
OLD_FILES+=usr/share/man/man3/gss_get_mic.3.gz
OLD_FILES+=usr/share/man/man3/gss_import_name.3.gz
OLD_FILES+=usr/share/man/man3/gss_import_sec_context.3.gz
OLD_FILES+=usr/share/man/man3/gss_indicate_mechs.3.gz
OLD_FILES+=usr/share/man/man3/gss_init_sec_context.3.gz
OLD_FILES+=usr/share/man/man3/gss_inquire_context.3.gz
OLD_FILES+=usr/share/man/man3/gss_inquire_cred.3.gz
OLD_FILES+=usr/share/man/man3/gss_inquire_cred_by_mech.3.gz
OLD_FILES+=usr/share/man/man3/gss_inquire_mechs_for_name.3.gz
OLD_FILES+=usr/share/man/man3/gss_inquire_names_for_mech.3.gz
OLD_FILES+=usr/share/man/man3/gss_process_context_token.3.gz
OLD_FILES+=usr/share/man/man3/gss_release_buffer.3.gz
OLD_FILES+=usr/share/man/man3/gss_release_cred.3.gz
OLD_FILES+=usr/share/man/man3/gss_release_name.3.gz
OLD_FILES+=usr/share/man/man3/gss_release_oid_set.3.gz
OLD_FILES+=usr/share/man/man3/gss_seal.3.gz
OLD_FILES+=usr/share/man/man3/gss_sign.3.gz
OLD_FILES+=usr/share/man/man3/gss_test_oid_set_member.3.gz
OLD_FILES+=usr/share/man/man3/gss_unseal.3.gz
OLD_FILES+=usr/share/man/man3/gss_unwrap.3.gz
OLD_FILES+=usr/share/man/man3/gss_verify.3.gz
OLD_FILES+=usr/share/man/man3/gss_verify_mic.3.gz
OLD_FILES+=usr/share/man/man3/gss_wrap.3.gz
OLD_FILES+=usr/share/man/man3/gss_wrap_size_limit.3.gz
OLD_FILES+=usr/share/man/man3/gssapi.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_get_error.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_get_mech_info.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_get_mechanisms.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_get_principal_name.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_get_versions.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_getcred.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_is_installed.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_max_data_length.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_mech_to_oid.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_oid_to_mech.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_qop_to_num.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_seccreate.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_set_callback.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_set_defaults.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_set_svc_name.3.gz
OLD_FILES+=usr/share/man/man3/rpc_gss_svc_max_data_length.3.gz
OLD_FILES+=usr/share/man/man3/rpcsec_gss.3.gz
OLD_FILES+=usr/share/man/man5/mech.5.gz
OLD_FILES+=usr/share/man/man5/qop.5.gz
OLD_FILES+=usr/share/man/man8/gssd.8.gz
.endif
.if ${MK_HAST} == no
OLD_FILES+=etc/rc.d/hastd
OLD_FILES+=sbin/hastctl
OLD_FILES+=sbin/hastd
OLD_FILES+=usr/share/examples/hast/ucarp.sh
OLD_FILES+=usr/share/examples/hast/ucarp_down.sh
OLD_FILES+=usr/share/examples/hast/ucarp_up.sh
OLD_FILES+=usr/share/examples/hast/vip-down.sh
OLD_FILES+=usr/share/examples/hast/vip-up.sh
OLD_FILES+=usr/share/man/man5/hast.conf.5.gz
OLD_FILES+=usr/share/man/man8/hastctl.8.gz
OLD_FILES+=usr/share/man/man8/hastd.8.gz
OLD_DIRS+=usr/share/examples/hast
# bsnmp
OLD_FILES+=usr/lib/snmp_hast.so
OLD_LIBS+=usr/lib/snmp_hast.so.6
OLD_FILES+=usr/share/man/man3/snmp_hast.3.gz
OLD_FILES+=usr/share/snmp/defs/hast_tree.def
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-HAST-MIB.txt
.endif
.if ${MK_HESIOD} == no
OLD_FILES+=usr/bin/hesinfo
OLD_FILES+=usr/include/hesiod.h
OLD_FILES+=usr/share/man/man1/hesinfo.1.gz
OLD_FILES+=usr/share/man/man3/hesiod.3.gz
OLD_FILES+=usr/share/man/man5/hesiod.conf.5.gz
.endif
.if ${MK_HTML} == no
OLD_FILES+=usr/share/doc/ncurses/hackguide.html
OLD_FILES+=usr/share/doc/ncurses/ncurses-intro.html
OLD_DIRS+=usr/share/doc/ncurses
OLD_FILES+=usr/share/doc/ntp/accopt.html
OLD_FILES+=usr/share/doc/ntp/assoc.html
OLD_FILES+=usr/share/doc/ntp/audio.html
OLD_FILES+=usr/share/doc/ntp/authopt.html
OLD_FILES+=usr/share/doc/ntp/build.html
OLD_FILES+=usr/share/doc/ntp/clockopt.html
OLD_FILES+=usr/share/doc/ntp/config.html
OLD_FILES+=usr/share/doc/ntp/confopt.html
OLD_FILES+=usr/share/doc/ntp/copyright.html
OLD_FILES+=usr/share/doc/ntp/debug.html
OLD_FILES+=usr/share/doc/ntp/driver1.html
OLD_FILES+=usr/share/doc/ntp/driver10.html
OLD_FILES+=usr/share/doc/ntp/driver11.html
OLD_FILES+=usr/share/doc/ntp/driver12.html
OLD_FILES+=usr/share/doc/ntp/driver16.html
OLD_FILES+=usr/share/doc/ntp/driver18.html
OLD_FILES+=usr/share/doc/ntp/driver19.html
OLD_FILES+=usr/share/doc/ntp/driver2.html
OLD_FILES+=usr/share/doc/ntp/driver20.html
OLD_FILES+=usr/share/doc/ntp/driver22.html
OLD_FILES+=usr/share/doc/ntp/driver26.html
OLD_FILES+=usr/share/doc/ntp/driver27.html
OLD_FILES+=usr/share/doc/ntp/driver28.html
OLD_FILES+=usr/share/doc/ntp/driver29.html
OLD_FILES+=usr/share/doc/ntp/driver3.html
OLD_FILES+=usr/share/doc/ntp/driver30.html
OLD_FILES+=usr/share/doc/ntp/driver32.html
OLD_FILES+=usr/share/doc/ntp/driver33.html
OLD_FILES+=usr/share/doc/ntp/driver34.html
OLD_FILES+=usr/share/doc/ntp/driver35.html
OLD_FILES+=usr/share/doc/ntp/driver36.html
OLD_FILES+=usr/share/doc/ntp/driver37.html
OLD_FILES+=usr/share/doc/ntp/driver4.html
OLD_FILES+=usr/share/doc/ntp/driver5.html
OLD_FILES+=usr/share/doc/ntp/driver6.html
OLD_FILES+=usr/share/doc/ntp/driver7.html
OLD_FILES+=usr/share/doc/ntp/driver8.html
OLD_FILES+=usr/share/doc/ntp/driver9.html
OLD_FILES+=usr/share/doc/ntp/extern.html
OLD_FILES+=usr/share/doc/ntp/hints.html
OLD_FILES+=usr/share/doc/ntp/howto.html
OLD_FILES+=usr/share/doc/ntp/index.html
OLD_FILES+=usr/share/doc/ntp/kern.html
OLD_FILES+=usr/share/doc/ntp/ldisc.html
OLD_FILES+=usr/share/doc/ntp/measure.html
OLD_FILES+=usr/share/doc/ntp/miscopt.html
OLD_FILES+=usr/share/doc/ntp/monopt.html
OLD_FILES+=usr/share/doc/ntp/mx4200data.html
OLD_FILES+=usr/share/doc/ntp/notes.html
OLD_FILES+=usr/share/doc/ntp/ntpd.html
OLD_FILES+=usr/share/doc/ntp/ntpdate.html
OLD_FILES+=usr/share/doc/ntp/ntpdc.html
OLD_FILES+=usr/share/doc/ntp/ntpq.html
OLD_FILES+=usr/share/doc/ntp/ntptime.html
OLD_FILES+=usr/share/doc/ntp/ntptrace.html
OLD_FILES+=usr/share/doc/ntp/parsedata.html
OLD_FILES+=usr/share/doc/ntp/parsenew.html
OLD_FILES+=usr/share/doc/ntp/patches.html
OLD_FILES+=usr/share/doc/ntp/porting.html
OLD_FILES+=usr/share/doc/ntp/pps.html
OLD_FILES+=usr/share/doc/ntp/prefer.html
OLD_FILES+=usr/share/doc/ntp/quick.html
OLD_FILES+=usr/share/doc/ntp/rdebug.html
OLD_FILES+=usr/share/doc/ntp/refclock.html
OLD_FILES+=usr/share/doc/ntp/release.html
OLD_FILES+=usr/share/doc/ntp/tickadj.html
.endif
.if ${MK_ICONV} == no
OLD_FILES+=usr/bin/iconv
OLD_FILES+=usr/bin/mkcsmapper
OLD_FILES+=usr/bin/mkesdb
OLD_FILES+=usr/include/_libiconv_compat.h
OLD_FILES+=usr/include/iconv.h
OLD_FILES+=usr/share/man/man1/iconv.1.gz
OLD_FILES+=usr/share/man/man1/mkcsmapper.1.gz
OLD_FILES+=usr/share/man/man1/mkesdb.1.gz
OLD_FILES+=usr/share/man/man3/__iconv.3.gz
OLD_FILES+=usr/share/man/man3/__iconv_free_list.3.gz
OLD_FILES+=usr/share/man/man3/__iconv_get_list.3.gz
OLD_FILES+=usr/share/man/man3/iconv.3.gz
OLD_FILES+=usr/share/man/man3/iconv_canonicalize.3.gz
OLD_FILES+=usr/share/man/man3/iconv_close.3.gz
OLD_FILES+=usr/share/man/man3/iconv_open.3.gz
OLD_FILES+=usr/share/man/man3/iconv_open_into.3.gz
OLD_FILES+=usr/share/man/man3/iconvctl.3.gz
OLD_FILES+=usr/share/man/man3/iconvlist.3.gz
OLD_DIRS+=usr/share/i18n
OLD_DIRS+=usr/share/i18n/esdb
OLD_DIRS+=usr/share/i18n/esdb/ISO-2022
OLD_DIRS+=usr/share/i18n/esdb/BIG5
OLD_DIRS+=usr/share/i18n/esdb/MISC
OLD_DIRS+=usr/share/i18n/esdb/TCVN
OLD_DIRS+=usr/share/i18n/esdb/EBCDIC
OLD_DIRS+=usr/share/i18n/esdb/ISO-8859
OLD_DIRS+=usr/share/i18n/esdb/GEORGIAN
OLD_DIRS+=usr/share/i18n/esdb/AST
OLD_DIRS+=usr/share/i18n/esdb/KAZAKH
OLD_DIRS+=usr/share/i18n/esdb/APPLE
OLD_DIRS+=usr/share/i18n/esdb/EUC
OLD_DIRS+=usr/share/i18n/esdb/CP
OLD_DIRS+=usr/share/i18n/esdb/DEC
OLD_DIRS+=usr/share/i18n/esdb/UTF
OLD_DIRS+=usr/share/i18n/esdb/GB
OLD_DIRS+=usr/share/i18n/esdb/ISO646
OLD_DIRS+=usr/share/i18n/esdb/KOI
OLD_DIRS+=usr/share/i18n/csmapper
OLD_DIRS+=usr/share/i18n/csmapper/KAZAKH
OLD_DIRS+=usr/share/i18n/csmapper/CNS
OLD_DIRS+=usr/share/i18n/csmapper/BIG5
OLD_DIRS+=usr/share/i18n/csmapper/JIS
OLD_DIRS+=usr/share/i18n/csmapper/KOI
OLD_DIRS+=usr/share/i18n/csmapper/TCVN
OLD_DIRS+=usr/share/i18n/csmapper/MISC
OLD_DIRS+=usr/share/i18n/csmapper/EBCDIC
OLD_DIRS+=usr/share/i18n/csmapper/ISO646
OLD_DIRS+=usr/share/i18n/csmapper/CP
OLD_DIRS+=usr/share/i18n/csmapper/GEORGIAN
OLD_DIRS+=usr/share/i18n/csmapper/ISO-8859
OLD_DIRS+=usr/share/i18n/csmapper/AST
OLD_DIRS+=usr/share/i18n/csmapper/APPLE
OLD_DIRS+=usr/share/i18n/csmapper/KS
OLD_DIRS+=usr/share/i18n/csmapper/GB
.endif
.if ${MK_INET6} == no
OLD_FILES+=sbin/ping6
OLD_FILES+=sbin/rtsol
OLD_FILES+=usr/sbin/ip6addrctl
OLD_FILES+=usr/sbin/mld6query
OLD_FILES+=usr/sbin/ndp
OLD_FILES+=usr/sbin/rip6query
OLD_FILES+=usr/sbin/route6d
OLD_FILES+=usr/sbin/rrenumd
OLD_FILES+=usr/sbin/rtadvctl
OLD_FILES+=usr/sbin/rtadvd
OLD_FILES+=usr/sbin/rtsold
OLD_FILES+=usr/sbin/traceroute6
OLD_FILES+=usr/share/doc/IPv6/IMPLEMENTATION
OLD_FILES+=usr/share/man/man5/rrenumd.conf.5.gz
OLD_FILES+=usr/share/man/man5/rtadvd.conf.5.gz
OLD_FILES+=usr/share/man/man8/ip6addrctl.8.gz
OLD_FILES+=usr/share/man/man8/mld6query.8.gz
OLD_FILES+=usr/share/man/man8/ndp.8.gz
OLD_FILES+=usr/share/man/man8/ping6.8.gz
OLD_FILES+=usr/share/man/man8/rip6query.8.gz
OLD_FILES+=usr/share/man/man8/route6d.8.gz
OLD_FILES+=usr/share/man/man8/rrenumd.8.gz
OLD_FILES+=usr/share/man/man8/rtadvctl.8.gz
OLD_FILES+=usr/share/man/man8/rtadvd.8.gz
OLD_FILES+=usr/share/man/man8/rtsol.8.gz
OLD_FILES+=usr/share/man/man8/rtsold.8.gz
OLD_FILES+=usr/share/man/man8/traceroute6.8.gz
.endif
.if ${MK_INET6_SUPPORT} == no
OLD_FILES+=rescue/ping6
OLD_FILES+=rescue/rtsol
.endif
.if ${MK_INETD} == no
OLD_FILES+=etc/inetd.conf
OLD_FILES+=etc/rc.d/inetd
OLD_FILES+=usr/sbin/inetd
OLD_FILES+=usr/share/man/man5/inetd.conf.5.gz
OLD_FILES+=usr/share/man/man8/inetd.8.gz
.endif
.if ${MK_IPFILTER} == no
OLD_FILES+=etc/periodic/security/510.ipfdenied
OLD_FILES+=etc/periodic/security/610.ipf6denied
OLD_FILES+=etc/rc.d/ipfilter
OLD_FILES+=etc/rc.d/ipfs
OLD_FILES+=etc/rc.d/ipmon
OLD_FILES+=etc/rc.d/ipnat
OLD_FILES+=etc/rc.d/ippool
OLD_FILES+=rescue/ipf
OLD_FILES+=sbin/ipf
OLD_FILES+=sbin/ipfs
OLD_FILES+=sbin/ipfstat
OLD_FILES+=sbin/ipftest
OLD_FILES+=sbin/ipmon
OLD_FILES+=sbin/ipnat
OLD_FILES+=sbin/ippool
OLD_FILES+=sbin/ipresend
OLD_FILES+=usr/include/netinet/ip_auth.h
OLD_FILES+=usr/include/netinet/ip_compat.h
OLD_FILES+=usr/include/netinet/ip_fil.h
OLD_FILES+=usr/include/netinet/ip_frag.h
OLD_FILES+=usr/include/netinet/ip_htable.h
OLD_FILES+=usr/include/netinet/ip_lookup.h
OLD_FILES+=usr/include/netinet/ip_nat.h
OLD_FILES+=usr/include/netinet/ip_pool.h
OLD_FILES+=usr/include/netinet/ip_proxy.h
OLD_FILES+=usr/include/netinet/ip_rules.h
OLD_FILES+=usr/include/netinet/ip_scan.h
OLD_FILES+=usr/include/netinet/ip_state.h
OLD_FILES+=usr/include/netinet/ip_sync.h
OLD_FILES+=usr/include/netinet/ipl.h
OLD_FILES+=usr/share/examples/ipfilter/README
OLD_FILES+=usr/share/examples/ipfilter/BASIC.NAT
OLD_FILES+=usr/share/examples/ipfilter/BASIC_1.FW
OLD_FILES+=usr/share/examples/ipfilter/BASIC_2.FW
OLD_FILES+=usr/share/examples/ipfilter/example.1
OLD_FILES+=usr/share/examples/ipfilter/example.2
OLD_FILES+=usr/share/examples/ipfilter/example.3
OLD_FILES+=usr/share/examples/ipfilter/example.4
OLD_FILES+=usr/share/examples/ipfilter/example.5
OLD_FILES+=usr/share/examples/ipfilter/example.6
OLD_FILES+=usr/share/examples/ipfilter/example.7
OLD_FILES+=usr/share/examples/ipfilter/example.8
OLD_FILES+=usr/share/examples/ipfilter/example.9
OLD_FILES+=usr/share/examples/ipfilter/example.10
OLD_FILES+=usr/share/examples/ipfilter/example.11
OLD_FILES+=usr/share/examples/ipfilter/example.12
OLD_FILES+=usr/share/examples/ipfilter/example.13
OLD_FILES+=usr/share/examples/ipfilter/example.sr
OLD_FILES+=usr/share/examples/ipfilter/firewall
OLD_FILES+=usr/share/examples/ipfilter/ftp-proxy
OLD_FILES+=usr/share/examples/ipfilter/ftppxy
OLD_FILES+=usr/share/examples/ipfilter/nat-setup
OLD_FILES+=usr/share/examples/ipfilter/nat.eg
OLD_FILES+=usr/share/examples/ipfilter/server
OLD_FILES+=usr/share/examples/ipfilter/tcpstate
OLD_FILES+=usr/share/examples/ipfilter/example.14
OLD_FILES+=usr/share/examples/ipfilter/firewall.1
OLD_FILES+=usr/share/examples/ipfilter/firewall.2
OLD_FILES+=usr/share/examples/ipfilter/ipf.conf.permissive
OLD_FILES+=usr/share/examples/ipfilter/ipf.conf.restrictive
OLD_FILES+=usr/share/examples/ipfilter/ipf.conf.sample
OLD_FILES+=usr/share/examples/ipfilter/ipnat.conf.sample
OLD_FILES+=usr/share/examples/ipfilter/ipf-howto.txt
OLD_FILES+=usr/share/examples/ipfilter/examples.txt
OLD_FILES+=usr/share/examples/ipfilter/rules.txt
OLD_FILES+=usr/share/examples/ipfilter/mkfilters
OLD_DIRS+=usr/share/examples/ipfilter
OLD_FILES+=usr/share/man/man1/ipftest.1.gz
OLD_FILES+=usr/share/man/man1/ipresend.1.gz
OLD_FILES+=usr/share/man/man4/ipf.4.gz
OLD_FILES+=usr/share/man/man4/ipl.4.gz
OLD_FILES+=usr/share/man/man4/ipfilter.4.gz
OLD_FILES+=usr/share/man/man4/ipnat.4.gz
OLD_FILES+=usr/share/man/man5/ipf.5.gz
OLD_FILES+=usr/share/man/man5/ipf.conf.5.gz
OLD_FILES+=usr/share/man/man5/ipf6.conf.5.gz
OLD_FILES+=usr/share/man/man5/ipfilter.5.gz
OLD_FILES+=usr/share/man/man8/ipmon.5.gz
OLD_FILES+=usr/share/man/man5/ipmon.conf.5.gz
OLD_FILES+=usr/share/man/man5/ipnat.5.gz
OLD_FILES+=usr/share/man/man5/ipnat.conf.5.gz
OLD_FILES+=usr/share/man/man5/ippool.5.gz
OLD_FILES+=usr/share/man/man8/ipf.8.gz
OLD_FILES+=usr/share/man/man8/ipfs.8.gz
OLD_FILES+=usr/share/man/man8/ipfstat.8.gz
OLD_FILES+=usr/share/man/man8/ipmon.8.gz
OLD_FILES+=usr/share/man/man8/ipnat.8.gz
OLD_FILES+=usr/share/man/man8/ippool.8.gz
.endif
.if ${MK_IPFW} == no
OLD_FILES+=etc/rc.d/ipfw
OLD_FILES+=etc/periodic/security/500.ipfwdenied
OLD_FILES+=etc/periodic/security/550.ipfwlimit
OLD_FILES+=sbin/ipfw
OLD_FILES+=sbin/natd
OLD_FILES+=usr/sbin/ipfwpcap
OLD_FILES+=usr/share/man/man8/ipfw.8.gz
OLD_FILES+=usr/share/man/man8/ipfwpcap.8.gz
OLD_FILES+=usr/share/man/man8/natd.8.gz
.endif
.if ${MK_ISCSI} == no
OLD_FILES+=etc/rc.d/iscsictl
OLD_FILES+=etc/rc.d/iscsid
OLD_FILES+=rescue/iscsictl
OLD_FILES+=rescue/iscsid
OLD_FILES+=sbin/iscontrol
OLD_FILES+=usr/bin/iscsictl
OLD_FILES+=usr/sbin/iscsid
OLD_FILES+=usr/share/man/man4/iscsi.4.gz
OLD_FILES+=usr/share/man/man4/iscsi_initiator.4.gz
OLD_FILES+=usr/share/man/man5/iscsi.conf.5.gz
OLD_FILES+=usr/share/man/man8/iscontrol.8.gz
OLD_FILES+=usr/share/man/man8/iscsictl.8.gz
OLD_FILES+=usr/share/man/man8/iscsid.8.gz
.endif
.if ${MK_JAIL} == no
OLD_FILES+=etc/rc.d/jail
OLD_FILES+=usr/sbin/jail
OLD_FILES+=usr/sbin/jexec
OLD_FILES+=usr/sbin/jls
OLD_FILES+=usr/share/man/man5/jail.conf.5.gz
OLD_FILES+=usr/share/man/man8/jail.8.gz
OLD_FILES+=usr/share/man/man8/jexec.8.gz
OLD_FILES+=usr/share/man/man8/jls.8.gz
.endif
.if ${MK_KDUMP} == no
OLD_FILES+=usr/bin/kdump
OLD_FILES+=usr/bin/truss
OLD_FILES+=usr/share/man/man1/kdump.1.gz
OLD_FILES+=usr/share/man/man1/truss.1.gz
.endif
.if ${MK_KERBEROS} == no
OLD_FILES+=etc/rc.d/ipropd_master
OLD_FILES+=etc/rc.d/ipropd_slave
OLD_FILES+=usr/bin/asn1_compile
OLD_FILES+=usr/bin/compile_et
OLD_FILES+=usr/bin/hxtool
OLD_FILES+=usr/bin/kadmin
OLD_FILES+=usr/bin/kcc
OLD_FILES+=usr/bin/kdestroy
OLD_FILES+=usr/bin/kf
OLD_FILES+=usr/bin/kgetcred
OLD_FILES+=usr/bin/kinit
OLD_FILES+=usr/bin/klist
OLD_FILES+=usr/bin/kpasswd
OLD_FILES+=usr/bin/krb5-config
OLD_FILES+=usr/bin/ksu
OLD_FILES+=usr/bin/kswitch
OLD_FILES+=usr/bin/make-roken
OLD_FILES+=usr/bin/slc
OLD_FILES+=usr/bin/string2key
OLD_FILES+=usr/bin/verify_krb5_conf
OLD_FILES+=usr/include/asn1-common.h
OLD_FILES+=usr/include/asn1_err.h
OLD_FILES+=usr/include/base64.h
OLD_FILES+=usr/include/cms_asn1.h
OLD_FILES+=usr/include/crmf_asn1.h
OLD_FILES+=usr/include/der-private.h
OLD_FILES+=usr/include/der-protos.h
OLD_FILES+=usr/include/der.h
OLD_FILES+=usr/include/digest_asn1.h
OLD_FILES+=usr/include/getarg.h
OLD_FILES+=usr/include/gssapi/gssapi_krb5.h
OLD_FILES+=usr/include/hdb-protos.h
OLD_FILES+=usr/include/hdb.h
OLD_FILES+=usr/include/hdb_asn1.h
OLD_FILES+=usr/include/hdb_err.h
OLD_FILES+=usr/include/heim_asn1.h
OLD_FILES+=usr/include/heim_err.h
OLD_FILES+=usr/include/heim_threads.h
OLD_FILES+=usr/include/heimbase.h
OLD_FILES+=usr/include/heimntlm-protos.h
OLD_FILES+=usr/include/heimntlm.h
OLD_FILES+=usr/include/hex.h
OLD_FILES+=usr/include/hx509-private.h
OLD_FILES+=usr/include/hx509-protos.h
OLD_FILES+=usr/include/hx509.h
OLD_FILES+=usr/include/hx509_err.h
OLD_FILES+=usr/include/k524_err.h
OLD_FILES+=usr/include/kadm5/admin.h
OLD_FILES+=usr/include/kadm5/kadm5-private.h
OLD_FILES+=usr/include/kadm5/kadm5-protos.h
OLD_FILES+=usr/include/kadm5/kadm5-pwcheck.h
OLD_FILES+=usr/include/kadm5/kadm5_err.h
OLD_FILES+=usr/include/kadm5/private.h
OLD_DIRS+=usr/include/kadm5
OLD_FILES+=usr/include/kafs.h
OLD_FILES+=usr/include/kdc-protos.h
OLD_FILES+=usr/include/kdc.h
OLD_FILES+=usr/include/krb5-private.h
OLD_FILES+=usr/include/krb5-protos.h
OLD_FILES+=usr/include/krb5-types.h
OLD_FILES+=usr/include/krb5.h
OLD_FILES+=usr/include/krb5/ccache_plugin.h
OLD_FILES+=usr/include/krb5/locate_plugin.h
OLD_FILES+=usr/include/krb5/send_to_kdc_plugin.h
OLD_FILES+=usr/include/krb5/windc_plugin.h
OLD_DIRS+=usr/include/krb5
OLD_FILES+=usr/include/krb5_asn1.h
OLD_FILES+=usr/include/krb5_ccapi.h
OLD_FILES+=usr/include/krb5_err.h
OLD_FILES+=usr/include/kx509_asn1.h
OLD_FILES+=usr/include/ntlm_err.h
OLD_FILES+=usr/include/ocsp_asn1.h
OLD_FILES+=usr/include/parse_bytes.h
OLD_FILES+=usr/include/parse_time.h
OLD_FILES+=usr/include/parse_units.h
OLD_FILES+=usr/include/pkcs10_asn1.h
OLD_FILES+=usr/include/pkcs12_asn1.h
OLD_FILES+=usr/include/pkcs8_asn1.h
OLD_FILES+=usr/include/pkcs9_asn1.h
OLD_FILES+=usr/include/pkinit_asn1.h
OLD_FILES+=usr/include/resolve.h
OLD_FILES+=usr/include/rfc2459_asn1.h
OLD_FILES+=usr/include/roken-common.h
OLD_FILES+=usr/include/rtbl.h
OLD_FILES+=usr/include/wind.h
OLD_FILES+=usr/include/wind_err.h
OLD_FILES+=usr/include/xdbm.h
OLD_FILES+=usr/lib/libasn1.a
OLD_FILES+=usr/lib/libasn1.so
OLD_LIBS+=usr/lib/libasn1.so.11
OLD_FILES+=usr/lib/libasn1_p.a
OLD_FILES+=usr/lib/libcom_err.a
OLD_FILES+=usr/lib/libcom_err.so
OLD_LIBS+=usr/lib/libcom_err.so.5
OLD_FILES+=usr/lib/libcom_err_p.a
OLD_FILES+=usr/lib/libgssapi_krb5.a
OLD_FILES+=usr/lib/libgssapi_krb5.so
OLD_LIBS+=usr/lib/libgssapi_krb5.so.10
OLD_FILES+=usr/lib/libgssapi_krb5_p.a
OLD_FILES+=usr/lib/libgssapi_ntlm.a
OLD_FILES+=usr/lib/libgssapi_ntlm.so
OLD_LIBS+=usr/lib/libgssapi_ntlm.so.10
OLD_FILES+=usr/lib/libgssapi_ntlm_p.a
OLD_FILES+=usr/lib/libgssapi_spnego.a
OLD_FILES+=usr/lib/libgssapi_spnego.so
OLD_LIBS+=usr/lib/libgssapi_spnego.so.10
OLD_FILES+=usr/lib/libgssapi_spnego_p.a
OLD_FILES+=usr/lib/libhdb.a
OLD_FILES+=usr/lib/libhdb.so
OLD_LIBS+=usr/lib/libhdb.so.11
OLD_FILES+=usr/lib/libhdb_p.a
OLD_FILES+=usr/lib/libheimbase.a
OLD_FILES+=usr/lib/libheimbase.so
OLD_LIBS+=usr/lib/libheimbase.so.11
OLD_FILES+=usr/lib/libheimbase_p.a
OLD_FILES+=usr/lib/libheimntlm.a
OLD_FILES+=usr/lib/libheimntlm.so
OLD_LIBS+=usr/lib/libheimntlm.so.11
OLD_FILES+=usr/lib/libheimntlm_p.a
OLD_FILES+=usr/lib/libheimsqlite.a
OLD_FILES+=usr/lib/libheimsqlite.so
OLD_LIBS+=usr/lib/libheimsqlite.so.11
OLD_FILES+=usr/lib/libheimsqlite_p.a
OLD_FILES+=usr/lib/libhx509.a
OLD_FILES+=usr/lib/libhx509.so
OLD_LIBS+=usr/lib/libhx509.so.11
OLD_FILES+=usr/lib/libhx509_p.a
OLD_FILES+=usr/lib/libkadm5clnt.a
OLD_FILES+=usr/lib/libkadm5clnt.so
OLD_LIBS+=usr/lib/libkadm5clnt.so.11
OLD_FILES+=usr/lib/libkadm5clnt_p.a
OLD_FILES+=usr/lib/libkadm5srv.a
OLD_FILES+=usr/lib/libkadm5srv.so
OLD_LIBS+=usr/lib/libkadm5srv.so.11
OLD_FILES+=usr/lib/libkadm5srv_p.a
OLD_FILES+=usr/lib/libkafs5.a
OLD_FILES+=usr/lib/libkafs5.so
OLD_LIBS+=usr/lib/libkafs5.so.11
OLD_FILES+=usr/lib/libkafs5_p.a
OLD_FILES+=usr/lib/libkdc.a
OLD_FILES+=usr/lib/libkdc.so
OLD_LIBS+=usr/lib/libkdc.so.11
OLD_FILES+=usr/lib/libkdc_p.a
OLD_FILES+=usr/lib/libkrb5.a
OLD_FILES+=usr/lib/libkrb5.so
OLD_LIBS+=usr/lib/libkrb5.so.11
OLD_FILES+=usr/lib/libkrb5_p.a
OLD_FILES+=usr/lib/libroken.a
OLD_FILES+=usr/lib/libroken.so
OLD_LIBS+=usr/lib/libroken.so.11
OLD_FILES+=usr/lib/libroken_p.a
OLD_FILES+=usr/lib/libwind.a
OLD_FILES+=usr/lib/libwind.so
OLD_LIBS+=usr/lib/libwind.so.11
OLD_FILES+=usr/lib/libwind_p.a
OLD_FILES+=usr/lib/pam_krb5.so
OLD_LIBS+=usr/lib/pam_krb5.so.6
OLD_FILES+=usr/lib/pam_ksu.so
OLD_LIBS+=usr/lib/pam_ksu.so.6
OLD_FILES+=usr/lib/private/libheimipcc.a
OLD_FILES+=usr/lib/private/libheimipcc.so
OLD_LIBS+=usr/lib/private/libheimipcc.so.11
OLD_FILES+=usr/lib/private/libheimipcc_p.a
OLD_FILES+=usr/lib/private/libheimipcs.a
OLD_FILES+=usr/lib/private/libheimipcs.so
OLD_LIBS+=usr/lib/private/libheimipcs.so.11
OLD_FILES+=usr/lib/private/libheimipcs_p.a
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/libasn1.a
OLD_FILES+=usr/lib32/libasn1.so
OLD_LIBS+=usr/lib32/libasn1.so.11
OLD_FILES+=usr/lib32/libasn1_p.a
OLD_FILES+=usr/lib32/libgssapi_krb5.a
OLD_FILES+=usr/lib32/libgssapi_krb5.so
OLD_LIBS+=usr/lib32/libgssapi_krb5.so.10
OLD_FILES+=usr/lib32/libgssapi_krb5_p.a
OLD_FILES+=usr/lib32/libgssapi_ntlm.a
OLD_FILES+=usr/lib32/libgssapi_ntlm.so
OLD_LIBS+=usr/lib32/libgssapi_ntlm.so.10
OLD_FILES+=usr/lib32/libgssapi_ntlm_p.a
OLD_FILES+=usr/lib32/libgssapi_spnego.a
OLD_FILES+=usr/lib32/libgssapi_spnego.so
OLD_LIBS+=usr/lib32/libgssapi_spnego.so.10
OLD_FILES+=usr/lib32/libgssapi_spnego_p.a
OLD_FILES+=usr/lib32/libhdb.a
OLD_FILES+=usr/lib32/libhdb.so
OLD_LIBS+=usr/lib32/libhdb.so.11
OLD_FILES+=usr/lib32/libhdb_p.a
OLD_FILES+=usr/lib32/libheimbase.a
OLD_FILES+=usr/lib32/libheimbase.so
OLD_LIBS+=usr/lib32/libheimbase.so.11
OLD_FILES+=usr/lib32/libheimbase_p.a
OLD_FILES+=usr/lib32/libheimntlm.a
OLD_FILES+=usr/lib32/libheimntlm.so
OLD_LIBS+=usr/lib32/libheimntlm.so.11
OLD_FILES+=usr/lib32/libheimntlm_p.a
OLD_FILES+=usr/lib32/libheimsqlite.a
OLD_FILES+=usr/lib32/libheimsqlite.so
OLD_LIBS+=usr/lib32/libheimsqlite.so.11
OLD_FILES+=usr/lib32/libheimsqlite_p.a
OLD_FILES+=usr/lib32/libhx509.a
OLD_FILES+=usr/lib32/libhx509.so
OLD_LIBS+=usr/lib32/libhx509.so.11
OLD_FILES+=usr/lib32/libhx509_p.a
OLD_FILES+=usr/lib32/libkadm5clnt.a
OLD_FILES+=usr/lib32/libkadm5clnt.so
OLD_LIBS+=usr/lib32/libkadm5clnt.so.11
OLD_FILES+=usr/lib32/libkadm5clnt_p.a
OLD_FILES+=usr/lib32/libkadm5srv.a
OLD_FILES+=usr/lib32/libkadm5srv.so
OLD_LIBS+=usr/lib32/libkadm5srv.so.11
OLD_FILES+=usr/lib32/libkadm5srv_p.a
OLD_FILES+=usr/lib32/libkafs5.a
OLD_FILES+=usr/lib32/libkafs5.so
OLD_LIBS+=usr/lib32/libkafs5.so.11
OLD_FILES+=usr/lib32/libkafs5_p.a
OLD_FILES+=usr/lib32/libkdc.a
OLD_FILES+=usr/lib32/libkdc.so
OLD_LIBS+=usr/lib32/libkdc.so.11
OLD_FILES+=usr/lib32/libkdc_p.a
OLD_FILES+=usr/lib32/libkrb5.a
OLD_FILES+=usr/lib32/libkrb5.so
OLD_LIBS+=usr/lib32/libkrb5.so.11
OLD_FILES+=usr/lib32/libkrb5_p.a
OLD_FILES+=usr/lib32/libroken.a
OLD_FILES+=usr/lib32/libroken.so
OLD_LIBS+=usr/lib32/libroken.so.11
OLD_FILES+=usr/lib32/libroken_p.a
OLD_FILES+=usr/lib32/libwind.a
OLD_FILES+=usr/lib32/libwind.so
OLD_LIBS+=usr/lib32/libwind.so.11
OLD_FILES+=usr/lib32/libwind_p.a
OLD_FILES+=usr/lib32/pam_krb5.so
OLD_LIBS+=usr/lib32/pam_krb5.so.6
OLD_FILES+=usr/lib32/pam_ksu.so
OLD_LIBS+=usr/lib32/pam_ksu.so.6
OLD_FILES+=usr/lib32/private/libheimipcc.a
OLD_FILES+=usr/lib32/private/libheimipcc.so
OLD_LIBS+=usr/lib32/private/libheimipcc.so.11
OLD_FILES+=usr/lib32/private/libheimipcc_p.a
OLD_FILES+=usr/lib32/private/libheimipcs.a
OLD_FILES+=usr/lib32/private/libheimipcs.so
OLD_LIBS+=usr/lib32/private/libheimipcs.so.11
OLD_FILES+=usr/lib32/private/libheimipcs_p.a
.endif
OLD_FILES+=usr/libexec/digest-service
OLD_FILES+=usr/libexec/hprop
OLD_FILES+=usr/libexec/hpropd
OLD_FILES+=usr/libexec/ipropd-master
OLD_FILES+=usr/libexec/ipropd-slave
OLD_FILES+=usr/libexec/kadmind
OLD_FILES+=usr/libexec/kcm
OLD_FILES+=usr/libexec/kdc
OLD_FILES+=usr/libexec/kdigest
OLD_FILES+=usr/libexec/kfd
OLD_FILES+=usr/libexec/kimpersonate
OLD_FILES+=usr/libexec/kpasswdd
OLD_FILES+=usr/sbin/kstash
OLD_FILES+=usr/sbin/ktutil
OLD_FILES+=usr/sbin/iprop-log
OLD_FILES+=usr/share/man/man1/kdestroy.1.gz
OLD_FILES+=usr/share/man/man1/kf.1.gz
OLD_FILES+=usr/share/man/man1/kinit.1.gz
OLD_FILES+=usr/share/man/man1/klist.1.gz
OLD_FILES+=usr/share/man/man1/kpasswd.1.gz
OLD_FILES+=usr/share/man/man1/krb5-config.1.gz
OLD_FILES+=usr/share/man/man1/kswitch.1.gz
OLD_FILES+=usr/share/man/man3/HDB.3.gz
OLD_FILES+=usr/share/man/man3/hdb__del.3.gz
OLD_FILES+=usr/share/man/man3/hdb__get.3.gz
OLD_FILES+=usr/share/man/man3/hdb__put.3.gz
OLD_FILES+=usr/share/man/man3/hdb_auth_status.3.gz
OLD_FILES+=usr/share/man/man3/hdb_check_constrained_delegation.3.gz
OLD_FILES+=usr/share/man/man3/hdb_check_pkinit_ms_upn_match.3.gz
OLD_FILES+=usr/share/man/man3/hdb_check_s4u2self.3.gz
OLD_FILES+=usr/share/man/man3/hdb_close.3.gz
OLD_FILES+=usr/share/man/man3/hdb_destroy.3.gz
OLD_FILES+=usr/share/man/man3/hdb_entry_ex.3.gz
OLD_FILES+=usr/share/man/man3/hdb_fetch_kvno.3.gz
OLD_FILES+=usr/share/man/man3/hdb_firstkey.3.gz
OLD_FILES+=usr/share/man/man3/hdb_free.3.gz
OLD_FILES+=usr/share/man/man3/hdb_get_realms.3.gz
OLD_FILES+=usr/share/man/man3/hdb_lock.3.gz
OLD_FILES+=usr/share/man/man3/hdb_name.3.gz
OLD_FILES+=usr/share/man/man3/hdb_nextkey.3.gz
OLD_FILES+=usr/share/man/man3/hdb_open.3.gz
OLD_FILES+=usr/share/man/man3/hdb_password.3.gz
OLD_FILES+=usr/share/man/man3/hdb_remove.3.gz
OLD_FILES+=usr/share/man/man3/hdb_rename.3.gz
OLD_FILES+=usr/share/man/man3/hdb_store.3.gz
OLD_FILES+=usr/share/man/man3/hdb_unlock.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_build_ntlm1_master.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_build_ntlm2_master.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_calculate_lm2.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_calculate_ntlm1.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_calculate_ntlm2.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_decode_targetinfo.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_encode_targetinfo.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_encode_type1.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_encode_type2.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_encode_type3.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_free_buf.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_free_targetinfo.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_free_type1.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_free_type2.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_free_type3.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_keyex_unwrap.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_nt_key.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_ntlmv2_key.3.gz
OLD_FILES+=usr/share/man/man3/heim_ntlm_verify_ntlm2.3.gz
OLD_FILES+=usr/share/man/man3/hx509.3.gz
OLD_FILES+=usr/share/man/man3/hx509_bitstring_print.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_sign.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_sign_self.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_crl_dp_uri.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_eku.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_san_hostname.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_san_jid.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_san_ms_upn.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_san_otherName.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_san_pkinit.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_add_san_rfc822name.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_free.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_init.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_ca.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_domaincontroller.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_notAfter.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_notAfter_lifetime.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_notBefore.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_proxy.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_serialnumber.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_spki.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_subject.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_template.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_set_unique.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_subject_expand.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ca_tbs_template_units.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_binary.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_check_eku.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_cmp.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_find_subjectAltName_otherName.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_free.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_get_SPKI.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_get_SPKI_AlgorithmIdentifier.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_get_attribute.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_get_base_subject.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_get_friendly_name.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_get_issuer.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_get_issuer_unique_id.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_get_notAfter.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_get_notBefore.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_get_serialnumber.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_get_subject.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_get_subject_unique_id.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_init.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_init_data.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_keyusage_print.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_ref.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cert_set_friendly_name.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_add.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_append.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_end_seq.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_filter.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_find.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_free.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_info.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_init.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_iter_f.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_merge.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_next_cert.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_start_seq.3.gz
OLD_FILES+=usr/share/man/man3/hx509_certs_store.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ci_print_names.3.gz
OLD_FILES+=usr/share/man/man3/hx509_clear_error_string.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cms.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cms_create_signed_1.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cms_envelope_1.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cms_unenvelope.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cms_unwrap_ContentInfo.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cms_verify_signed.3.gz
OLD_FILES+=usr/share/man/man3/hx509_cms_wrap_ContentInfo.3.gz
OLD_FILES+=usr/share/man/man3/hx509_context_free.3.gz
OLD_FILES+=usr/share/man/man3/hx509_context_init.3.gz
OLD_FILES+=usr/share/man/man3/hx509_context_set_missing_revoke.3.gz
OLD_FILES+=usr/share/man/man3/hx509_crl_add_revoked_certs.3.gz
OLD_FILES+=usr/share/man/man3/hx509_crl_alloc.3.gz
OLD_FILES+=usr/share/man/man3/hx509_crl_free.3.gz
OLD_FILES+=usr/share/man/man3/hx509_crl_lifetime.3.gz
OLD_FILES+=usr/share/man/man3/hx509_crl_sign.3.gz
OLD_FILES+=usr/share/man/man3/hx509_crypto.3.gz
OLD_FILES+=usr/share/man/man3/hx509_env.3.gz
OLD_FILES+=usr/share/man/man3/hx509_env_add.3.gz
OLD_FILES+=usr/share/man/man3/hx509_env_add_binding.3.gz
OLD_FILES+=usr/share/man/man3/hx509_env_find.3.gz
OLD_FILES+=usr/share/man/man3/hx509_env_find_binding.3.gz
OLD_FILES+=usr/share/man/man3/hx509_env_free.3.gz
OLD_FILES+=usr/share/man/man3/hx509_env_lfind.3.gz
OLD_FILES+=usr/share/man/man3/hx509_err.3.gz
OLD_FILES+=usr/share/man/man3/hx509_error.3.gz
OLD_FILES+=usr/share/man/man3/hx509_free_error_string.3.gz
OLD_FILES+=usr/share/man/man3/hx509_free_octet_string_list.3.gz
OLD_FILES+=usr/share/man/man3/hx509_general_name_unparse.3.gz
OLD_FILES+=usr/share/man/man3/hx509_get_error_string.3.gz
OLD_FILES+=usr/share/man/man3/hx509_get_one_cert.3.gz
OLD_FILES+=usr/share/man/man3/hx509_keyset.3.gz
OLD_FILES+=usr/share/man/man3/hx509_lock.3.gz
OLD_FILES+=usr/share/man/man3/hx509_misc.3.gz
OLD_FILES+=usr/share/man/man3/hx509_name.3.gz
OLD_FILES+=usr/share/man/man3/hx509_name_binary.3.gz
OLD_FILES+=usr/share/man/man3/hx509_name_cmp.3.gz
OLD_FILES+=usr/share/man/man3/hx509_name_copy.3.gz
OLD_FILES+=usr/share/man/man3/hx509_name_expand.3.gz
OLD_FILES+=usr/share/man/man3/hx509_name_free.3.gz
OLD_FILES+=usr/share/man/man3/hx509_name_is_null_p.3.gz
OLD_FILES+=usr/share/man/man3/hx509_name_to_Name.3.gz
OLD_FILES+=usr/share/man/man3/hx509_name_to_string.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ocsp_request.3.gz
OLD_FILES+=usr/share/man/man3/hx509_ocsp_verify.3.gz
OLD_FILES+=usr/share/man/man3/hx509_oid_print.3.gz
OLD_FILES+=usr/share/man/man3/hx509_oid_sprint.3.gz
OLD_FILES+=usr/share/man/man3/hx509_parse_name.3.gz
OLD_FILES+=usr/share/man/man3/hx509_peer.3.gz
OLD_FILES+=usr/share/man/man3/hx509_peer_info_add_cms_alg.3.gz
OLD_FILES+=usr/share/man/man3/hx509_peer_info_alloc.3.gz
OLD_FILES+=usr/share/man/man3/hx509_peer_info_free.3.gz
OLD_FILES+=usr/share/man/man3/hx509_peer_info_set_cert.3.gz
OLD_FILES+=usr/share/man/man3/hx509_peer_info_set_cms_algs.3.gz
OLD_FILES+=usr/share/man/man3/hx509_print.3.gz
OLD_FILES+=usr/share/man/man3/hx509_print_cert.3.gz
OLD_FILES+=usr/share/man/man3/hx509_print_stdout.3.gz
OLD_FILES+=usr/share/man/man3/hx509_query.3.gz
OLD_FILES+=usr/share/man/man3/hx509_query_alloc.3.gz
OLD_FILES+=usr/share/man/man3/hx509_query_free.3.gz
OLD_FILES+=usr/share/man/man3/hx509_query_match_cmp_func.3.gz
OLD_FILES+=usr/share/man/man3/hx509_query_match_eku.3.gz
OLD_FILES+=usr/share/man/man3/hx509_query_match_friendly_name.3.gz
OLD_FILES+=usr/share/man/man3/hx509_query_match_issuer_serial.3.gz
OLD_FILES+=usr/share/man/man3/hx509_query_match_option.3.gz
OLD_FILES+=usr/share/man/man3/hx509_query_statistic_file.3.gz
OLD_FILES+=usr/share/man/man3/hx509_query_unparse_stats.3.gz
OLD_FILES+=usr/share/man/man3/hx509_revoke.3.gz
OLD_FILES+=usr/share/man/man3/hx509_revoke_add_crl.3.gz
OLD_FILES+=usr/share/man/man3/hx509_revoke_add_ocsp.3.gz
OLD_FILES+=usr/share/man/man3/hx509_revoke_free.3.gz
OLD_FILES+=usr/share/man/man3/hx509_revoke_init.3.gz
OLD_FILES+=usr/share/man/man3/hx509_revoke_ocsp_print.3.gz
OLD_FILES+=usr/share/man/man3/hx509_revoke_verify.3.gz
OLD_FILES+=usr/share/man/man3/hx509_set_error_string.3.gz
OLD_FILES+=usr/share/man/man3/hx509_set_error_stringv.3.gz
OLD_FILES+=usr/share/man/man3/hx509_unparse_der_name.3.gz
OLD_FILES+=usr/share/man/man3/hx509_validate_cert.3.gz
OLD_FILES+=usr/share/man/man3/hx509_validate_ctx_add_flags.3.gz
OLD_FILES+=usr/share/man/man3/hx509_validate_ctx_free.3.gz
OLD_FILES+=usr/share/man/man3/hx509_validate_ctx_init.3.gz
OLD_FILES+=usr/share/man/man3/hx509_validate_ctx_set_print.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify_attach_anchors.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify_attach_revoke.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify_ctx_f_allow_default_trustanchors.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify_destroy_ctx.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify_hostname.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify_init_ctx.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify_path.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify_set_max_depth.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify_set_proxy_certificate.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify_set_strict_rfc3280_verification.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify_set_time.3.gz
OLD_FILES+=usr/share/man/man3/hx509_verify_signature.3.gz
OLD_FILES+=usr/share/man/man3/hx509_xfree.3.gz
OLD_FILES+=usr/share/man/man3/k_afs_cell_of_file.3.gz
OLD_FILES+=usr/share/man/man3/k_hasafs.3.gz
OLD_FILES+=usr/share/man/man3/k_pioctl.3.gz
OLD_FILES+=usr/share/man/man3/k_setpag.3.gz
OLD_FILES+=usr/share/man/man3/k_unlog.3.gz
OLD_FILES+=usr/share/man/man3/kadm5_pwcheck.3.gz
OLD_FILES+=usr/share/man/man3/kafs.3.gz
OLD_FILES+=usr/share/man/man3/kafs5.3.gz
OLD_FILES+=usr/share/man/man3/kafs_set_verbose.3.gz
OLD_FILES+=usr/share/man/man3/kafs_settoken.3.gz
OLD_FILES+=usr/share/man/man3/kafs_settoken5.3.gz
OLD_FILES+=usr/share/man/man3/kafs_settoken_rxkad.3.gz
OLD_FILES+=usr/share/man/man3/krb5.3.gz
OLD_FILES+=usr/share/man/man3/krb524_convert_creds_kdc.3.gz
OLD_FILES+=usr/share/man/man3/krb524_convert_creds_kdc_ccache.3.gz
OLD_FILES+=usr/share/man/man3/krb5_425_conv_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_425_conv_principal_ext.3.gz
OLD_FILES+=usr/share/man/man3/krb5_524_conv_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_acc_ops.3.gz
OLD_FILES+=usr/share/man/man3/krb5_acl_match_file.3.gz
OLD_FILES+=usr/share/man/man3/krb5_acl_match_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_add_et_list.3.gz
OLD_FILES+=usr/share/man/man3/krb5_add_extra_addresses.3.gz
OLD_FILES+=usr/share/man/man3/krb5_add_ignore_addresses.3.gz
OLD_FILES+=usr/share/man/man3/krb5_addlog_dest.3.gz
OLD_FILES+=usr/share/man/man3/krb5_addlog_func.3.gz
OLD_FILES+=usr/share/man/man3/krb5_addr2sockaddr.3.gz
OLD_FILES+=usr/share/man/man3/krb5_address.3.gz
OLD_FILES+=usr/share/man/man3/krb5_address_compare.3.gz
OLD_FILES+=usr/share/man/man3/krb5_address_order.3.gz
OLD_FILES+=usr/share/man/man3/krb5_address_prefixlen_boundary.3.gz
OLD_FILES+=usr/share/man/man3/krb5_address_search.3.gz
OLD_FILES+=usr/share/man/man3/krb5_afslog.3.gz
OLD_FILES+=usr/share/man/man3/krb5_afslog_uid.3.gz
OLD_FILES+=usr/share/man/man3/krb5_allow_weak_crypto.3.gz
OLD_FILES+=usr/share/man/man3/krb5_aname_to_localname.3.gz
OLD_FILES+=usr/share/man/man3/krb5_anyaddr.3.gz
OLD_FILES+=usr/share/man/man3/krb5_appdefault.3.gz
OLD_FILES+=usr/share/man/man3/krb5_appdefault_boolean.3.gz
OLD_FILES+=usr/share/man/man3/krb5_appdefault_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_appdefault_time.3.gz
OLD_FILES+=usr/share/man/man3/krb5_append_addresses.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_free.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_genaddrs.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_getaddrs.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_getflags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_getkey.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_getlocalsubkey.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_getrcache.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_getremotesubkey.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_getuserkey.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_init.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_initivector.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_setaddrs.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_setaddrs_from_fd.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_setflags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_setivector.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_setkey.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_setlocalsubkey.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_setrcache.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_setremotesubkey.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_con_setuserkey.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_context.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_getauthenticator.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_getcksumtype.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_getkeytype.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_getlocalseqnumber.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_getremoteseqnumber.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_setcksumtype.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_setkeytype.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_setlocalseqnumber.3.gz
OLD_FILES+=usr/share/man/man3/krb5_auth_setremoteseqnumber.3.gz
OLD_FILES+=usr/share/man/man3/krb5_build_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_build_principal_ext.3.gz
OLD_FILES+=usr/share/man/man3/krb5_build_principal_va.3.gz
OLD_FILES+=usr/share/man/man3/krb5_build_principal_va_ext.3.gz
OLD_FILES+=usr/share/man/man3/krb5_c_enctype_compare.3.gz
OLD_FILES+=usr/share/man/man3/krb5_c_make_checksum.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_cache_end_seq_get.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_cache_get_first.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_cache_match.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_cache_next.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_clear_mcred.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_close.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_copy_cache.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_copy_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_copy_match_f.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_default.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_default_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_destroy.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_end_seq_get.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_gen_new.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_get_config.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_get_flags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_get_friendly_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_get_full_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_get_kdc_offset.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_get_lifetime.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_get_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_get_ops.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_get_prefix_ops.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_get_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_get_type.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_get_version.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_initialize.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_last_change_time.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_move.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_new_unique.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_next_cred.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_register.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_remove_cred.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_resolve.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_retrieve_cred.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_set_config.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_set_default_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_set_flags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_set_friendly_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_set_kdc_offset.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_start_seq_get.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_store_cred.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_support_switch.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cc_switch.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ccache.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ccache_intro.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cccol_cursor_free.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cccol_cursor_new.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cccol_cursor_next.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cccol_last_change_time.3.gz
OLD_FILES+=usr/share/man/man3/krb5_change_password.3.gz
OLD_FILES+=usr/share/man/man3/krb5_check_transited.3.gz
OLD_FILES+=usr/share/man/man3/krb5_checksum_is_collision_proof.3.gz
OLD_FILES+=usr/share/man/man3/krb5_checksum_is_keyed.3.gz
OLD_FILES+=usr/share/man/man3/krb5_checksumsize.3.gz
OLD_FILES+=usr/share/man/man3/krb5_cksumtype_to_enctype.3.gz
OLD_FILES+=usr/share/man/man3/krb5_clear_error_message.3.gz
OLD_FILES+=usr/share/man/man3/krb5_clear_error_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_closelog.3.gz
OLD_FILES+=usr/share/man/man3/krb5_compare_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_file_free.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_free_strings.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_get_bool.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_get_bool_default.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_get_list.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_get_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_get_string_default.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_get_strings.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_get_time.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_get_time_default.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_parse_file_multi.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_parse_string_multi.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_vget_bool.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_vget_bool_default.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_vget_list.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_vget_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_vget_string_default.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_vget_strings.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_vget_time.3.gz
OLD_FILES+=usr/share/man/man3/krb5_config_vget_time_default.3.gz
OLD_FILES+=usr/share/man/man3/krb5_copy_address.3.gz
OLD_FILES+=usr/share/man/man3/krb5_copy_addresses.3.gz
OLD_FILES+=usr/share/man/man3/krb5_copy_context.3.gz
OLD_FILES+=usr/share/man/man3/krb5_copy_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_copy_creds_contents.3.gz
OLD_FILES+=usr/share/man/man3/krb5_copy_data.3.gz
OLD_FILES+=usr/share/man/man3/krb5_copy_host_realm.3.gz
OLD_FILES+=usr/share/man/man3/krb5_copy_keyblock.3.gz
OLD_FILES+=usr/share/man/man3/krb5_copy_keyblock_contents.3.gz
OLD_FILES+=usr/share/man/man3/krb5_copy_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_copy_ticket.3.gz
OLD_FILES+=usr/share/man/man3/krb5_create_checksum.3.gz
OLD_FILES+=usr/share/man/man3/krb5_create_checksum_iov.3.gz
OLD_FILES+=usr/share/man/man3/krb5_credential.3.gz
OLD_FILES+=usr/share/man/man3/krb5_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_creds_get_ticket_flags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_crypto.3.gz
OLD_FILES+=usr/share/man/man3/krb5_crypto_destroy.3.gz
OLD_FILES+=usr/share/man/man3/krb5_crypto_fx_cf2.3.gz
OLD_FILES+=usr/share/man/man3/krb5_crypto_getblocksize.3.gz
OLD_FILES+=usr/share/man/man3/krb5_crypto_getconfoundersize.3.gz
OLD_FILES+=usr/share/man/man3/krb5_crypto_getenctype.3.gz
OLD_FILES+=usr/share/man/man3/krb5_crypto_getpadsize.3.gz
OLD_FILES+=usr/share/man/man3/krb5_crypto_init.3.gz
OLD_FILES+=usr/share/man/man3/krb5_crypto_iov.3.gz
OLD_FILES+=usr/share/man/man3/krb5_data_alloc.3.gz
OLD_FILES+=usr/share/man/man3/krb5_data_cmp.3.gz
OLD_FILES+=usr/share/man/man3/krb5_data_copy.3.gz
OLD_FILES+=usr/share/man/man3/krb5_data_ct_cmp.3.gz
OLD_FILES+=usr/share/man/man3/krb5_data_free.3.gz
OLD_FILES+=usr/share/man/man3/krb5_data_realloc.3.gz
OLD_FILES+=usr/share/man/man3/krb5_data_zero.3.gz
OLD_FILES+=usr/share/man/man3/krb5_decrypt.3.gz
OLD_FILES+=usr/share/man/man3/krb5_decrypt_EncryptedData.3.gz
OLD_FILES+=usr/share/man/man3/krb5_decrypt_iov_ivec.3.gz
OLD_FILES+=usr/share/man/man3/krb5_deprecated.3.gz
OLD_FILES+=usr/share/man/man3/krb5_digest.3.gz
OLD_FILES+=usr/share/man/man3/krb5_digest_probe.3.gz
OLD_FILES+=usr/share/man/man3/krb5_eai_to_heim_errno.3.gz
OLD_FILES+=usr/share/man/man3/krb5_encrypt.3.gz
OLD_FILES+=usr/share/man/man3/krb5_encrypt_EncryptedData.3.gz
OLD_FILES+=usr/share/man/man3/krb5_encrypt_iov_ivec.3.gz
OLD_FILES+=usr/share/man/man3/krb5_enctype_disable.3.gz
OLD_FILES+=usr/share/man/man3/krb5_enctype_enable.3.gz
OLD_FILES+=usr/share/man/man3/krb5_enctype_valid.3.gz
OLD_FILES+=usr/share/man/man3/krb5_enctypes_compatible_keys.3.gz
OLD_FILES+=usr/share/man/man3/krb5_error.3.gz
OLD_FILES+=usr/share/man/man3/krb5_expand_hostname.3.gz
OLD_FILES+=usr/share/man/man3/krb5_expand_hostname_realms.3.gz
OLD_FILES+=usr/share/man/man3/krb5_fcc_ops.3.gz
OLD_FILES+=usr/share/man/man3/krb5_fileformats.3.gz
OLD_FILES+=usr/share/man/man3/krb5_find_padata.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_address.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_addresses.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_config_files.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_context.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_cred_contents.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_creds_contents.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_data.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_data_contents.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_error_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_host_realm.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_keyblock.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_keyblock_contents.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_krbhst.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_ticket.3.gz
OLD_FILES+=usr/share/man/man3/krb5_free_unparsed_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_fwd_tgt_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_generate_random_block.3.gz
OLD_FILES+=usr/share/man/man3/krb5_generate_subkey.3.gz
OLD_FILES+=usr/share/man/man3/krb5_generate_subkey_extended.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_all_client_addrs.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_all_server_addrs.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_cred_from_kdc.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_cred_from_kdc_opt.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_credentials.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_default_config_files.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_default_in_tkt_etypes.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_default_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_default_realm.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_default_realms.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_dns_canonicalize_hostname.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_extra_addresses.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_fcache_version.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_forwarded_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_host_realm.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_ignore_addresses.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_in_cred.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_in_tkt_with_keytab.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_in_tkt_with_password.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_in_tkt_with_skey.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_init_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_keyblock.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_keytab.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_opt_alloc.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_opt_free.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_opt_get_error.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_opt_init.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_init_creds_password.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_kdc_sec_offset.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_krb524hst.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_krb_admin_hst.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_krb_changepw_hst.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_krbhst.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_max_time_skew.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_use_admin_kdc.3.gz
OLD_FILES+=usr/share/man/man3/krb5_get_validated_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_getportbyname.3.gz
OLD_FILES+=usr/share/man/man3/krb5_h_addr2addr.3.gz
OLD_FILES+=usr/share/man/man3/krb5_h_addr2sockaddr.3.gz
OLD_FILES+=usr/share/man/man3/krb5_h_errno_to_heim_errno.3.gz
OLD_FILES+=usr/share/man/man3/krb5_init_context.3.gz
OLD_FILES+=usr/share/man/man3/krb5_init_creds_free.3.gz
OLD_FILES+=usr/share/man/man3/krb5_init_creds_get.3.gz
OLD_FILES+=usr/share/man/man3/krb5_init_creds_get_error.3.gz
OLD_FILES+=usr/share/man/man3/krb5_init_creds_init.3.gz
OLD_FILES+=usr/share/man/man3/krb5_init_creds_intro.3.gz
OLD_FILES+=usr/share/man/man3/krb5_init_creds_set_keytab.3.gz
OLD_FILES+=usr/share/man/man3/krb5_init_creds_set_password.3.gz
OLD_FILES+=usr/share/man/man3/krb5_init_creds_set_service.3.gz
OLD_FILES+=usr/share/man/man3/krb5_init_creds_step.3.gz
OLD_FILES+=usr/share/man/man3/krb5_init_ets.3.gz
OLD_FILES+=usr/share/man/man3/krb5_initlog.3.gz
OLD_FILES+=usr/share/man/man3/krb5_introduction.3.gz
OLD_FILES+=usr/share/man/man3/krb5_is_config_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_is_thread_safe.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kerberos_enctypes.3.gz
OLD_FILES+=usr/share/man/man3/krb5_keyblock_get_enctype.3.gz
OLD_FILES+=usr/share/man/man3/krb5_keyblock_init.3.gz
OLD_FILES+=usr/share/man/man3/krb5_keyblock_zero.3.gz
OLD_FILES+=usr/share/man/man3/krb5_keytab.3.gz
OLD_FILES+=usr/share/man/man3/krb5_keytab_intro.3.gz
OLD_FILES+=usr/share/man/man3/krb5_keytab_key_proc.3.gz
OLD_FILES+=usr/share/man/man3/krb5_keytype_to_enctypes.3.gz
OLD_FILES+=usr/share/man/man3/krb5_keytype_to_enctypes_default.3.gz
OLD_FILES+=usr/share/man/man3/krb5_keytype_to_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_krbhst_format_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_krbhst_free.3.gz
OLD_FILES+=usr/share/man/man3/krb5_krbhst_get_addrinfo.3.gz
OLD_FILES+=usr/share/man/man3/krb5_krbhst_init.3.gz
OLD_FILES+=usr/share/man/man3/krb5_krbhst_next.3.gz
OLD_FILES+=usr/share/man/man3/krb5_krbhst_next_as_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_krbhst_reset.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_add_entry.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_close.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_compare.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_copy_entry_contents.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_default.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_default_modify_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_default_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_destroy.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_end_seq_get.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_free_entry.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_get_entry.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_get_full_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_get_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_get_type.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_have_content.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_next_entry.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_read_service_key.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_register.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_remove_entry.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_resolve.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kt_start_seq_get.3.gz
OLD_FILES+=usr/share/man/man3/krb5_kuserok.3.gz
OLD_FILES+=usr/share/man/man3/krb5_log.3.gz
OLD_FILES+=usr/share/man/man3/krb5_log_msg.3.gz
OLD_FILES+=usr/share/man/man3/krb5_make_addrport.3.gz
OLD_FILES+=usr/share/man/man3/krb5_make_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_max_sockaddr_size.3.gz
OLD_FILES+=usr/share/man/man3/krb5_mcc_ops.3.gz
OLD_FILES+=usr/share/man/man3/krb5_mk_req.3.gz
OLD_FILES+=usr/share/man/man3/krb5_mk_safe.3.gz
OLD_FILES+=usr/share/man/man3/krb5_openlog.3.gz
OLD_FILES+=usr/share/man/man3/krb5_pac.3.gz
OLD_FILES+=usr/share/man/man3/krb5_pac_get_buffer.3.gz
OLD_FILES+=usr/share/man/man3/krb5_pac_verify.3.gz
OLD_FILES+=usr/share/man/man3/krb5_parse_address.3.gz
OLD_FILES+=usr/share/man/man3/krb5_parse_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_parse_name_flags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_parse_nametype.3.gz
OLD_FILES+=usr/share/man/man3/krb5_password_key_proc.3.gz
OLD_FILES+=usr/share/man/man3/krb5_plugin_register.3.gz
OLD_FILES+=usr/share/man/man3/krb5_prepend_config_files_default.3.gz
OLD_FILES+=usr/share/man/man3/krb5_princ_realm.3.gz
OLD_FILES+=usr/share/man/man3/krb5_princ_set_realm.3.gz
OLD_FILES+=usr/share/man/man3/krb5_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_principal_compare.3.gz
OLD_FILES+=usr/share/man/man3/krb5_principal_compare_any_realm.3.gz
OLD_FILES+=usr/share/man/man3/krb5_principal_get_comp_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_principal_get_num_comp.3.gz
OLD_FILES+=usr/share/man/man3/krb5_principal_get_realm.3.gz
OLD_FILES+=usr/share/man/man3/krb5_principal_get_type.3.gz
OLD_FILES+=usr/share/man/man3/krb5_principal_intro.3.gz
OLD_FILES+=usr/share/man/man3/krb5_principal_is_krbtgt.3.gz
OLD_FILES+=usr/share/man/man3/krb5_principal_match.3.gz
OLD_FILES+=usr/share/man/man3/krb5_principal_set_realm.3.gz
OLD_FILES+=usr/share/man/man3/krb5_principal_set_type.3.gz
OLD_FILES+=usr/share/man/man3/krb5_print_address.3.gz
OLD_FILES+=usr/share/man/man3/krb5_random_to_key.3.gz
OLD_FILES+=usr/share/man/man3/krb5_rcache.3.gz
OLD_FILES+=usr/share/man/man3/krb5_rd_error.3.gz
OLD_FILES+=usr/share/man/man3/krb5_rd_req_ctx.3.gz
OLD_FILES+=usr/share/man/man3/krb5_rd_req_in_ctx_alloc.3.gz
OLD_FILES+=usr/share/man/man3/krb5_rd_req_in_set_keytab.3.gz
OLD_FILES+=usr/share/man/man3/krb5_rd_req_in_set_pac_check.3.gz
OLD_FILES+=usr/share/man/man3/krb5_rd_req_out_ctx_free.3.gz
OLD_FILES+=usr/share/man/man3/krb5_rd_req_out_get_server.3.gz
OLD_FILES+=usr/share/man/man3/krb5_rd_safe.3.gz
OLD_FILES+=usr/share/man/man3/krb5_realm_compare.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_address.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_addrs.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_authdata.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_creds_tag.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_data.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_int16.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_int32.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_int8.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_keyblock.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_stringz.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_times.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_uint16.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_uint32.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ret_uint8.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_config_files.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_default_in_tkt_etypes.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_default_realm.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_dns_canonicalize_hostname.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_error_message.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_error_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_extra_addresses.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_fcache_version.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_home_dir_access.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_ignore_addresses.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_kdc_sec_offset.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_max_time_skew.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_password.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_real_time.3.gz
OLD_FILES+=usr/share/man/man3/krb5_set_use_admin_kdc.3.gz
OLD_FILES+=usr/share/man/man3/krb5_sname_to_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_sock_to_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_sockaddr2address.3.gz
OLD_FILES+=usr/share/man/man3/krb5_sockaddr2port.3.gz
OLD_FILES+=usr/share/man/man3/krb5_sockaddr_uninteresting.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_clear_flags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_emem.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_free.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_from_data.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_from_fd.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_from_mem.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_from_readonly_mem.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_get_byteorder.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_get_eof_code.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_is_flags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_read.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_seek.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_set_byteorder.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_set_eof_code.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_set_flags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_set_max_alloc.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_to_data.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_truncate.3.gz
OLD_FILES+=usr/share/man/man3/krb5_storage_write.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_address.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_addrs.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_authdata.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_creds_tag.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_data.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_int16.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_int32.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_int8.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_keyblock.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_principal.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_stringz.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_times.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_uint16.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_uint32.3.gz
OLD_FILES+=usr/share/man/man3/krb5_store_uint8.3.gz
OLD_FILES+=usr/share/man/man3/krb5_string_to_key.3.gz
OLD_FILES+=usr/share/man/man3/krb5_string_to_keytype.3.gz
OLD_FILES+=usr/share/man/man3/krb5_support.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ticket.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ticket_get_authorization_data_type.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ticket_get_client.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ticket_get_endtime.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ticket_get_flags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_ticket_get_server.3.gz
OLD_FILES+=usr/share/man/man3/krb5_timeofday.3.gz
OLD_FILES+=usr/share/man/man3/krb5_unparse_name.3.gz
OLD_FILES+=usr/share/man/man3/krb5_unparse_name_fixed.3.gz
OLD_FILES+=usr/share/man/man3/krb5_unparse_name_fixed_flags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_unparse_name_fixed_short.3.gz
OLD_FILES+=usr/share/man/man3/krb5_unparse_name_flags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_unparse_name_short.3.gz
OLD_FILES+=usr/share/man/man3/krb5_us_timeofday.3.gz
OLD_FILES+=usr/share/man/man3/krb5_v4compat.3.gz
OLD_FILES+=usr/share/man/man3/krb5_verify_checksum.3.gz
OLD_FILES+=usr/share/man/man3/krb5_verify_checksum_iov.3.gz
OLD_FILES+=usr/share/man/man3/krb5_verify_init_creds.3.gz
OLD_FILES+=usr/share/man/man3/krb5_verify_opt_init.3.gz
OLD_FILES+=usr/share/man/man3/krb5_verify_opt_set_flags.3.gz
OLD_FILES+=usr/share/man/man3/krb5_verify_opt_set_keytab.3.gz
OLD_FILES+=usr/share/man/man3/krb5_verify_opt_set_secure.3.gz
OLD_FILES+=usr/share/man/man3/krb5_verify_opt_set_service.3.gz
OLD_FILES+=usr/share/man/man3/krb5_verify_user.3.gz
OLD_FILES+=usr/share/man/man3/krb5_verify_user_lrealm.3.gz
OLD_FILES+=usr/share/man/man3/krb5_verify_user_opt.3.gz
OLD_FILES+=usr/share/man/man3/krb5_vlog.3.gz
OLD_FILES+=usr/share/man/man3/krb5_vlog_msg.3.gz
OLD_FILES+=usr/share/man/man3/krb5_vset_error_string.3.gz
OLD_FILES+=usr/share/man/man3/krb5_vwarn.3.gz
OLD_FILES+=usr/share/man/man3/krb_afslog.3.gz
OLD_FILES+=usr/share/man/man3/krb_afslog_uid.3.gz
OLD_FILES+=usr/share/man/man3/ntlm_buf.3.gz
OLD_FILES+=usr/share/man/man3/ntlm_core.3.gz
OLD_FILES+=usr/share/man/man3/ntlm_type1.3.gz
OLD_FILES+=usr/share/man/man3/ntlm_type2.3.gz
OLD_FILES+=usr/share/man/man3/ntlm_type3.3.gz
OLD_FILES+=usr/share/man/man5/krb5.conf.5.gz
OLD_FILES+=usr/share/man/man8/hprop.8.gz
OLD_FILES+=usr/share/man/man8/hpropd.8.gz
OLD_FILES+=usr/share/man/man8/iprop-log.8.gz
OLD_FILES+=usr/share/man/man8/iprop.8.gz
OLD_FILES+=usr/share/man/man8/kadmin.8.gz
OLD_FILES+=usr/share/man/man8/kadmind.8.gz
OLD_FILES+=usr/share/man/man8/kcm.8.gz
OLD_FILES+=usr/share/man/man8/kdc.8.gz
OLD_FILES+=usr/share/man/man8/kdigest.8.gz
OLD_FILES+=usr/share/man/man8/kerberos.8.gz
OLD_FILES+=usr/share/man/man8/kimpersonate.8.gz
OLD_FILES+=usr/share/man/man8/kpasswdd.8.gz
OLD_FILES+=usr/share/man/man8/kstash.8.gz
OLD_FILES+=usr/share/man/man8/ktutil.8.gz
OLD_FILES+=usr/share/man/man8/pam_krb5.8.gz
OLD_FILES+=usr/share/man/man8/pam_ksu.8.gz
OLD_FILES+=usr/share/man/man8/string2key.8.gz
OLD_FILES+=usr/share/man/man8/verify_krb5_conf.8.gz
.endif
.if ${MK_KERBEROS_SUPPORT} == no
OLD_FILES+=usr/bin/compile_et
OLD_FILES+=usr/include/com_err.h
OLD_FILES+=usr/include/com_right.h
OLD_FILES+=usr/lib/libcom_err.a
OLD_FILES+=usr/lib/libcom_err.so
OLD_LIBS+=usr/lib/libcom_err.so.5
OLD_FILES+=usr/lib/libcom_err_p.a
OLD_FILES+=usr/lib32/libcom_err.a
OLD_FILES+=usr/lib32/libcom_err.so
OLD_LIBS+=usr/lib32/libcom_err.so.5
OLD_FILES+=usr/lib32/libcom_err_p.a
OLD_FILES+=usr/share/man/man1/compile_et.1.gz
OLD_FILES+=usr/share/man/man3/com_err.3.gz
.endif
.if ${MK_LDNS} == no
OLD_FILES+=usr/lib/private/libldns.a
OLD_FILES+=usr/lib/private/libldns.so
OLD_LIBS+=usr/lib/private/libldns.so.5
OLD_FILES+=usr/lib/private/libldns_p.a
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/private/libldns.a
OLD_FILES+=usr/lib32/private/libldns.so
OLD_LIBS+=usr/lib32/private/libldns.so.5
OLD_FILES+=usr/lib32/private/libldns_p.a
.endif
.endif
.if ${MK_LDNS_UTILS} == no
OLD_FILES+=usr/bin/drill
OLD_FILES+=usr/share/man/man1/drill.1.gz
OLD_FILES+=usr/bin/host
OLD_FILES+=usr/share/man/man1/host.1.gz
.endif
.if ${MK_LEGACY_CONSOLE} == no
OLD_FILES+=etc/rc.d/moused
OLD_FILES+=etc/rc.d/syscons
OLD_FILES+=usr/sbin/kbdcontrol
OLD_FILES+=usr/sbin/kbdmap
OLD_FILES+=usr/sbin/moused
OLD_FILES+=usr/sbin/vidcontrol
OLD_FILES+=usr/sbin/vidfont
OLD_FILES+=usr/share/man/man1/kbdcontrol.1.gz
OLD_FILES+=usr/share/man/man1/kbdmap.1.gz
OLD_FILES+=usr/share/man/man1/vidcontrol.1.gz
OLD_FILES+=usr/share/man/man1/vidfont.1.gz
OLD_FILES+=usr/share/man/man5/kbdmap.5.gz
OLD_FILES+=usr/share/man/man5/keymap.5.gz
OLD_FILES+=usr/share/man/man8/moused.8.gz
.endif
.if ${MK_LIB32} == no
OLD_FILES+=etc/mtree/BSD.lib32.dist
OLD_FILES+=libexec/ld-elf32.so.1
. if exists(${DESTDIR}/usr/lib32)
LIB32_DIRS!=find ${DESTDIR}/usr/lib32 -type d \
| sed -e 's,^${DESTDIR}/,,'; echo
LIB32_FILES!=find ${DESTDIR}/usr/lib32 \! -type d \
\! -name "lib*.so*" | sed -e 's,^${DESTDIR}/,,'; echo
LIB32_LIBS!=find ${DESTDIR}/usr/lib32 \! -type d \
-name "lib*.so*" | sed -e 's,^${DESTDIR}/,,'; echo
OLD_DIRS+=${LIB32_DIRS}
OLD_FILES+=${LIB32_FILES}
OLD_LIBS+=${LIB32_LIBS}
. endif
. if ${MK_DEBUG_FILES} == no
. if exists(${DESTDIR}/usr/lib/debug/usr/lib32)
DEBUG_LIB32_DIRS!=find ${DESTDIR}/usr/lib/debug/usr/lib32 -type d \
| sed -e 's,^${DESTDIR}/,,'; echo
DEBUG_LIB32_FILES!=find ${DESTDIR}/usr/lib/debug/usr/lib32 \! -type d \
\! -name "lib*.so*" | sed -e 's,^${DESTDIR}/,,'; echo
DEBUG_LIB32_LIBS!=find ${DESTDIR}/usr/lib/debug/usr/lib32 \! -type d \
-name "lib*.so*" | sed -e 's,^${DESTDIR}/,,'; echo
OLD_DIRS+=${DEBUG_LIB32_DIRS}
OLD_FILES+=${DEBUG_LIB32_FILES}
OLD_LIBS+=${DEBUG_LIB32_LIBS}
. endif
. endif
.endif
.if ${MK_LIBCPLUSPLUS} == no
OLD_LIBS+=lib/libcxxrt.so.1
OLD_FILES+=usr/lib/libc++.a
OLD_FILES+=usr/lib/libc++_p.a
OLD_FILES+=usr/lib/libc++experimental.a
OLD_FILES+=usr/lib/libc++fs.a
OLD_FILES+=usr/lib/libc++.so
OLD_LIBS+=usr/lib/libc++.so.1
OLD_FILES+=usr/lib/libcxxrt.a
OLD_FILES+=usr/lib/libcxxrt.so
OLD_FILES+=usr/lib/libcxxrt_p.a
OLD_FILES+=usr/include/c++/v1/__bit_reference
OLD_FILES+=usr/include/c++/v1/__bsd_locale_defaults.h
OLD_FILES+=usr/include/c++/v1/__bsd_locale_fallbacks.h
OLD_FILES+=usr/include/c++/v1/__config
OLD_FILES+=usr/include/c++/v1/__debug
OLD_FILES+=usr/include/c++/v1/__errc
OLD_FILES+=usr/include/c++/v1/__functional_03
OLD_FILES+=usr/include/c++/v1/__functional_base
OLD_FILES+=usr/include/c++/v1/__functional_base_03
OLD_FILES+=usr/include/c++/v1/__hash_table
OLD_FILES+=usr/include/c++/v1/__libcpp_version
OLD_FILES+=usr/include/c++/v1/__locale
OLD_FILES+=usr/include/c++/v1/__mutex_base
OLD_FILES+=usr/include/c++/v1/__node_handle
OLD_FILES+=usr/include/c++/v1/__nullptr
OLD_FILES+=usr/include/c++/v1/__split_buffer
OLD_FILES+=usr/include/c++/v1/__sso_allocator
OLD_FILES+=usr/include/c++/v1/__std_stream
OLD_FILES+=usr/include/c++/v1/__string
OLD_FILES+=usr/include/c++/v1/__threading_support
OLD_FILES+=usr/include/c++/v1/__tree
OLD_FILES+=usr/include/c++/v1/__tuple
OLD_FILES+=usr/include/c++/v1/__undef_macros
OLD_FILES+=usr/include/c++/v1/algorithm
OLD_FILES+=usr/include/c++/v1/any
OLD_FILES+=usr/include/c++/v1/array
OLD_FILES+=usr/include/c++/v1/atomic
OLD_FILES+=usr/include/c++/v1/bit
OLD_FILES+=usr/include/c++/v1/bitset
OLD_FILES+=usr/include/c++/v1/cassert
OLD_FILES+=usr/include/c++/v1/ccomplex
OLD_FILES+=usr/include/c++/v1/cctype
OLD_FILES+=usr/include/c++/v1/cerrno
OLD_FILES+=usr/include/c++/v1/cfenv
OLD_FILES+=usr/include/c++/v1/cfloat
OLD_FILES+=usr/include/c++/v1/charconv
OLD_FILES+=usr/include/c++/v1/chrono
OLD_FILES+=usr/include/c++/v1/cinttypes
OLD_FILES+=usr/include/c++/v1/ciso646
OLD_FILES+=usr/include/c++/v1/climits
OLD_FILES+=usr/include/c++/v1/clocale
OLD_FILES+=usr/include/c++/v1/cmath
OLD_FILES+=usr/include/c++/v1/codecvt
OLD_FILES+=usr/include/c++/v1/compare
OLD_FILES+=usr/include/c++/v1/complex
OLD_FILES+=usr/include/c++/v1/complex.h
OLD_FILES+=usr/include/c++/v1/condition_variable
OLD_FILES+=usr/include/c++/v1/csetjmp
OLD_FILES+=usr/include/c++/v1/csignal
OLD_FILES+=usr/include/c++/v1/cstdarg
OLD_FILES+=usr/include/c++/v1/cstdbool
OLD_FILES+=usr/include/c++/v1/cstddef
OLD_FILES+=usr/include/c++/v1/cstdint
OLD_FILES+=usr/include/c++/v1/cstdio
OLD_FILES+=usr/include/c++/v1/cstdlib
OLD_FILES+=usr/include/c++/v1/cstring
OLD_FILES+=usr/include/c++/v1/ctgmath
OLD_FILES+=usr/include/c++/v1/ctime
OLD_FILES+=usr/include/c++/v1/ctype.h
OLD_FILES+=usr/include/c++/v1/cwchar
OLD_FILES+=usr/include/c++/v1/cwctype
OLD_FILES+=usr/include/c++/v1/cxxabi.h
OLD_FILES+=usr/include/c++/v1/deque
OLD_FILES+=usr/include/c++/v1/errno.h
OLD_FILES+=usr/include/c++/v1/exception
OLD_FILES+=usr/include/c++/v1/experimental/__config
OLD_FILES+=usr/include/c++/v1/experimental/__memory
OLD_FILES+=usr/include/c++/v1/experimental/algorithm
OLD_FILES+=usr/include/c++/v1/experimental/any
OLD_FILES+=usr/include/c++/v1/experimental/chrono
OLD_FILES+=usr/include/c++/v1/experimental/coroutine
OLD_FILES+=usr/include/c++/v1/experimental/deque
OLD_FILES+=usr/include/c++/v1/experimental/dynarray
OLD_FILES+=usr/include/c++/v1/experimental/filesystem
OLD_FILES+=usr/include/c++/v1/experimental/forward_list
OLD_FILES+=usr/include/c++/v1/experimental/functional
OLD_FILES+=usr/include/c++/v1/experimental/iterator
OLD_FILES+=usr/include/c++/v1/experimental/list
OLD_FILES+=usr/include/c++/v1/experimental/map
OLD_FILES+=usr/include/c++/v1/experimental/memory_resource
OLD_FILES+=usr/include/c++/v1/experimental/numeric
OLD_FILES+=usr/include/c++/v1/experimental/optional
OLD_FILES+=usr/include/c++/v1/experimental/propagate_const
OLD_FILES+=usr/include/c++/v1/experimental/ratio
OLD_FILES+=usr/include/c++/v1/experimental/regex
OLD_FILES+=usr/include/c++/v1/experimental/set
OLD_FILES+=usr/include/c++/v1/experimental/simd
OLD_FILES+=usr/include/c++/v1/experimental/string
OLD_FILES+=usr/include/c++/v1/experimental/string_view
OLD_FILES+=usr/include/c++/v1/experimental/system_error
OLD_FILES+=usr/include/c++/v1/experimental/tuple
OLD_FILES+=usr/include/c++/v1/experimental/type_traits
OLD_FILES+=usr/include/c++/v1/experimental/unordered_map
OLD_FILES+=usr/include/c++/v1/experimental/unordered_set
OLD_FILES+=usr/include/c++/v1/experimental/utility
OLD_FILES+=usr/include/c++/v1/experimental/vector
OLD_FILES+=usr/include/c++/v1/ext/__hash
OLD_FILES+=usr/include/c++/v1/ext/hash_map
OLD_FILES+=usr/include/c++/v1/ext/hash_set
OLD_FILES+=usr/include/c++/v1/filesystem
OLD_FILES+=usr/include/c++/v1/float.h
OLD_FILES+=usr/include/c++/v1/forward_list
OLD_FILES+=usr/include/c++/v1/fstream
OLD_FILES+=usr/include/c++/v1/functional
OLD_FILES+=usr/include/c++/v1/future
OLD_FILES+=usr/include/c++/v1/initializer_list
OLD_FILES+=usr/include/c++/v1/inttypes.h
OLD_FILES+=usr/include/c++/v1/iomanip
OLD_FILES+=usr/include/c++/v1/ios
OLD_FILES+=usr/include/c++/v1/iosfwd
OLD_FILES+=usr/include/c++/v1/iostream
OLD_FILES+=usr/include/c++/v1/istream
OLD_FILES+=usr/include/c++/v1/iterator
OLD_FILES+=usr/include/c++/v1/limits
OLD_FILES+=usr/include/c++/v1/limits.h
OLD_FILES+=usr/include/c++/v1/list
OLD_FILES+=usr/include/c++/v1/locale
OLD_FILES+=usr/include/c++/v1/locale.h
OLD_FILES+=usr/include/c++/v1/map
OLD_FILES+=usr/include/c++/v1/math.h
OLD_FILES+=usr/include/c++/v1/memory
OLD_FILES+=usr/include/c++/v1/mutex
OLD_FILES+=usr/include/c++/v1/new
OLD_FILES+=usr/include/c++/v1/numeric
OLD_FILES+=usr/include/c++/v1/numeric
OLD_FILES+=usr/include/c++/v1/optional
OLD_FILES+=usr/include/c++/v1/ostream
OLD_FILES+=usr/include/c++/v1/queue
OLD_FILES+=usr/include/c++/v1/random
OLD_FILES+=usr/include/c++/v1/ratio
OLD_FILES+=usr/include/c++/v1/regex
OLD_FILES+=usr/include/c++/v1/scoped_allocator
OLD_FILES+=usr/include/c++/v1/set
OLD_FILES+=usr/include/c++/v1/setjmp.h
OLD_FILES+=usr/include/c++/v1/shared_mutex
OLD_FILES+=usr/include/c++/v1/span
OLD_FILES+=usr/include/c++/v1/sstream
OLD_FILES+=usr/include/c++/v1/stack
OLD_FILES+=usr/include/c++/v1/stdbool.h
OLD_FILES+=usr/include/c++/v1/stddef.h
OLD_FILES+=usr/include/c++/v1/stdexcept
OLD_FILES+=usr/include/c++/v1/stdint.h
OLD_FILES+=usr/include/c++/v1/stdio.h
OLD_FILES+=usr/include/c++/v1/stdlib.h
OLD_FILES+=usr/include/c++/v1/streambuf
OLD_FILES+=usr/include/c++/v1/string
OLD_FILES+=usr/include/c++/v1/string.h
OLD_FILES+=usr/include/c++/v1/string_view
OLD_FILES+=usr/include/c++/v1/strstream
OLD_FILES+=usr/include/c++/v1/system_error
OLD_FILES+=usr/include/c++/v1/tgmath.h
OLD_FILES+=usr/include/c++/v1/thread
OLD_FILES+=usr/include/c++/v1/version
OLD_FILES+=usr/include/c++/v1/tr1/__bit_reference
OLD_FILES+=usr/include/c++/v1/tr1/__bsd_locale_defaults.h
OLD_FILES+=usr/include/c++/v1/tr1/__bsd_locale_fallbacks.h
OLD_FILES+=usr/include/c++/v1/tr1/__config
OLD_FILES+=usr/include/c++/v1/tr1/__debug
OLD_FILES+=usr/include/c++/v1/tr1/__functional_03
OLD_FILES+=usr/include/c++/v1/tr1/__functional_base
OLD_FILES+=usr/include/c++/v1/tr1/__functional_base_03
OLD_FILES+=usr/include/c++/v1/tr1/__hash_table
OLD_FILES+=usr/include/c++/v1/tr1/__libcpp_version
OLD_FILES+=usr/include/c++/v1/tr1/__locale
OLD_FILES+=usr/include/c++/v1/tr1/__mutex_base
OLD_FILES+=usr/include/c++/v1/tr1/__nullptr
OLD_FILES+=usr/include/c++/v1/tr1/__split_buffer
OLD_FILES+=usr/include/c++/v1/tr1/__sso_allocator
OLD_FILES+=usr/include/c++/v1/tr1/__std_stream
OLD_FILES+=usr/include/c++/v1/tr1/__string
OLD_FILES+=usr/include/c++/v1/tr1/__threading_support
OLD_FILES+=usr/include/c++/v1/tr1/__tree
OLD_FILES+=usr/include/c++/v1/tr1/__tuple
OLD_FILES+=usr/include/c++/v1/tr1/__undef_macros
OLD_FILES+=usr/include/c++/v1/tr1/algorithm
OLD_FILES+=usr/include/c++/v1/tr1/any
OLD_FILES+=usr/include/c++/v1/tr1/array
OLD_FILES+=usr/include/c++/v1/tr1/atomic
OLD_FILES+=usr/include/c++/v1/tr1/bitset
OLD_FILES+=usr/include/c++/v1/tr1/cassert
OLD_FILES+=usr/include/c++/v1/tr1/ccomplex
OLD_FILES+=usr/include/c++/v1/tr1/cctype
OLD_FILES+=usr/include/c++/v1/tr1/cerrno
OLD_FILES+=usr/include/c++/v1/tr1/cfenv
OLD_FILES+=usr/include/c++/v1/tr1/cfloat
OLD_FILES+=usr/include/c++/v1/tr1/chrono
OLD_FILES+=usr/include/c++/v1/tr1/cinttypes
OLD_FILES+=usr/include/c++/v1/tr1/ciso646
OLD_FILES+=usr/include/c++/v1/tr1/climits
OLD_FILES+=usr/include/c++/v1/tr1/clocale
OLD_FILES+=usr/include/c++/v1/tr1/cmath
OLD_FILES+=usr/include/c++/v1/tr1/codecvt
OLD_FILES+=usr/include/c++/v1/tr1/complex
OLD_FILES+=usr/include/c++/v1/tr1/complex.h
OLD_FILES+=usr/include/c++/v1/tr1/condition_variable
OLD_FILES+=usr/include/c++/v1/tr1/csetjmp
OLD_FILES+=usr/include/c++/v1/tr1/csignal
OLD_FILES+=usr/include/c++/v1/tr1/cstdarg
OLD_FILES+=usr/include/c++/v1/tr1/cstdbool
OLD_FILES+=usr/include/c++/v1/tr1/cstddef
OLD_FILES+=usr/include/c++/v1/tr1/cstdint
OLD_FILES+=usr/include/c++/v1/tr1/cstdio
OLD_FILES+=usr/include/c++/v1/tr1/cstdlib
OLD_FILES+=usr/include/c++/v1/tr1/cstring
OLD_FILES+=usr/include/c++/v1/tr1/ctgmath
OLD_FILES+=usr/include/c++/v1/tr1/ctime
OLD_FILES+=usr/include/c++/v1/tr1/ctype.h
OLD_FILES+=usr/include/c++/v1/tr1/cwchar
OLD_FILES+=usr/include/c++/v1/tr1/cwctype
OLD_FILES+=usr/include/c++/v1/tr1/deque
OLD_FILES+=usr/include/c++/v1/tr1/errno.h
OLD_FILES+=usr/include/c++/v1/tr1/exception
OLD_FILES+=usr/include/c++/v1/tr1/float.h
OLD_FILES+=usr/include/c++/v1/tr1/forward_list
OLD_FILES+=usr/include/c++/v1/tr1/fstream
OLD_FILES+=usr/include/c++/v1/tr1/functional
OLD_FILES+=usr/include/c++/v1/tr1/future
OLD_FILES+=usr/include/c++/v1/tr1/initializer_list
OLD_FILES+=usr/include/c++/v1/tr1/inttypes.h
OLD_FILES+=usr/include/c++/v1/tr1/iomanip
OLD_FILES+=usr/include/c++/v1/tr1/ios
OLD_FILES+=usr/include/c++/v1/tr1/iosfwd
OLD_FILES+=usr/include/c++/v1/tr1/iostream
OLD_FILES+=usr/include/c++/v1/tr1/istream
OLD_FILES+=usr/include/c++/v1/tr1/iterator
OLD_FILES+=usr/include/c++/v1/tr1/limits
OLD_FILES+=usr/include/c++/v1/tr1/limits.h
OLD_FILES+=usr/include/c++/v1/tr1/list
OLD_FILES+=usr/include/c++/v1/tr1/locale
OLD_FILES+=usr/include/c++/v1/tr1/locale.h
OLD_FILES+=usr/include/c++/v1/tr1/map
OLD_FILES+=usr/include/c++/v1/tr1/math.h
OLD_FILES+=usr/include/c++/v1/tr1/memory
OLD_FILES+=usr/include/c++/v1/tr1/mutex
OLD_FILES+=usr/include/c++/v1/tr1/new
OLD_FILES+=usr/include/c++/v1/tr1/numeric
OLD_FILES+=usr/include/c++/v1/tr1/numeric
OLD_FILES+=usr/include/c++/v1/tr1/optional
OLD_FILES+=usr/include/c++/v1/tr1/ostream
OLD_FILES+=usr/include/c++/v1/tr1/queue
OLD_FILES+=usr/include/c++/v1/tr1/random
OLD_FILES+=usr/include/c++/v1/tr1/ratio
OLD_FILES+=usr/include/c++/v1/tr1/regex
OLD_FILES+=usr/include/c++/v1/tr1/scoped_allocator
OLD_FILES+=usr/include/c++/v1/tr1/set
OLD_FILES+=usr/include/c++/v1/tr1/setjmp.h
OLD_FILES+=usr/include/c++/v1/tr1/shared_mutex
OLD_FILES+=usr/include/c++/v1/tr1/sstream
OLD_FILES+=usr/include/c++/v1/tr1/stack
OLD_FILES+=usr/include/c++/v1/tr1/stdbool.h
OLD_FILES+=usr/include/c++/v1/tr1/stddef.h
OLD_FILES+=usr/include/c++/v1/tr1/stdexcept
OLD_FILES+=usr/include/c++/v1/tr1/stdint.h
OLD_FILES+=usr/include/c++/v1/tr1/stdio.h
OLD_FILES+=usr/include/c++/v1/tr1/stdlib.h
OLD_FILES+=usr/include/c++/v1/tr1/streambuf
OLD_FILES+=usr/include/c++/v1/tr1/string
OLD_FILES+=usr/include/c++/v1/tr1/string.h
OLD_FILES+=usr/include/c++/v1/tr1/string_view
OLD_FILES+=usr/include/c++/v1/tr1/strstream
OLD_FILES+=usr/include/c++/v1/tr1/system_error
OLD_FILES+=usr/include/c++/v1/tr1/tgmath.h
OLD_FILES+=usr/include/c++/v1/tr1/thread
OLD_FILES+=usr/include/c++/v1/tr1/tuple
OLD_FILES+=usr/include/c++/v1/tr1/type_traits
OLD_FILES+=usr/include/c++/v1/tr1/typeindex
OLD_FILES+=usr/include/c++/v1/tr1/typeinfo
OLD_FILES+=usr/include/c++/v1/tr1/unordered_map
OLD_FILES+=usr/include/c++/v1/tr1/unordered_set
OLD_FILES+=usr/include/c++/v1/tr1/utility
OLD_FILES+=usr/include/c++/v1/tr1/valarray
OLD_FILES+=usr/include/c++/v1/tr1/variant
OLD_FILES+=usr/include/c++/v1/tr1/vector
OLD_FILES+=usr/include/c++/v1/tr1/wchar.h
OLD_FILES+=usr/include/c++/v1/tr1/wctype.h
OLD_FILES+=usr/include/c++/v1/tuple
OLD_FILES+=usr/include/c++/v1/type_traits
OLD_FILES+=usr/include/c++/v1/typeindex
OLD_FILES+=usr/include/c++/v1/typeinfo
OLD_FILES+=usr/include/c++/v1/unordered_map
OLD_FILES+=usr/include/c++/v1/unordered_set
OLD_FILES+=usr/include/c++/v1/unwind-arm.h
OLD_FILES+=usr/include/c++/v1/unwind-itanium.h
OLD_FILES+=usr/include/c++/v1/unwind.h
OLD_FILES+=usr/include/c++/v1/utility
OLD_FILES+=usr/include/c++/v1/valarray
OLD_FILES+=usr/include/c++/v1/variant
OLD_FILES+=usr/include/c++/v1/vector
OLD_FILES+=usr/include/c++/v1/wchar.h
OLD_FILES+=usr/include/c++/v1/wctype.h
OLD_FILES+=usr/lib32/libc++.a
OLD_FILES+=usr/lib32/libc++.so
OLD_LIBS+=usr/lib32/libc++.so.1
OLD_FILES+=usr/lib32/libc++_p.a
OLD_FILES+=usr/lib32/libc++experimental.a
OLD_FILES+=usr/lib32/libc++fs.a
OLD_FILES+=usr/lib32/libcxxrt.a
OLD_FILES+=usr/lib32/libcxxrt.so
OLD_LIBS+=usr/lib32/libcxxrt.so.1
OLD_FILES+=usr/lib32/libcxxrt_p.a
OLD_DIRS+=usr/include/c++/v1/tr1
OLD_DIRS+=usr/include/c++/v1/experimental
OLD_DIRS+=usr/include/c++/v1/ext
OLD_DIRS+=usr/include/c++/v1
.endif
.if ${MK_LIBTHR} == no
OLD_LIBS+=lib/libthr.so.3
OLD_FILES+=usr/lib/libthr.a
OLD_FILES+=usr/lib/libthr_p.a
OLD_FILES+=usr/share/man/man3/libthr.3.gz
.endif
.if ${MK_LLD} == no
OLD_FILES+=usr/bin/ld.lld
.endif
.if ${MK_LLDB} == no
OLD_FILES+=usr/bin/lldb
OLD_FILES+=usr/share/man/man1/lldb.1.gz
.endif
.if ${MK_LOCALES} == no
OLD_DIRS+=usr/share/locale/af_ZA.ISO8859-15
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/af_ZA.ISO8859-1
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/af_ZA.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/af_ZA.UTF-8
OLD_FILES+=usr/share/locale/af_ZA.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/af_ZA.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/af_ZA.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/af_ZA.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/af_ZA.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/af_ZA.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/am_ET.UTF-8
OLD_FILES+=usr/share/locale/am_ET.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/am_ET.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/am_ET.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/am_ET.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/am_ET.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/am_ET.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ar_AE.UTF-8
OLD_FILES+=usr/share/locale/ar_AE.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ar_AE.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ar_AE.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ar_AE.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ar_AE.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ar_AE.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ar_EG.UTF-8
OLD_FILES+=usr/share/locale/ar_EG.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ar_EG.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ar_EG.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ar_EG.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ar_EG.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ar_EG.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ar_JO.UTF-8
OLD_FILES+=usr/share/locale/ar_JO.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ar_JO.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ar_JO.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ar_JO.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ar_JO.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ar_JO.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ar_MA.UTF-8
OLD_FILES+=usr/share/locale/ar_MA.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ar_MA.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ar_MA.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ar_MA.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ar_MA.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ar_MA.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ar_QA.UTF-8
OLD_FILES+=usr/share/locale/ar_QA.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ar_QA.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ar_QA.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ar_QA.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ar_QA.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ar_QA.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ar_SA.UTF-8
OLD_FILES+=usr/share/locale/ar_SA.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ar_SA.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ar_SA.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ar_SA.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ar_SA.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ar_SA.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/be_BY.CP1131
OLD_FILES+=usr/share/locale/be_BY.CP1131/LC_COLLATE
OLD_FILES+=usr/share/locale/be_BY.CP1131/LC_CTYPE
OLD_FILES+=usr/share/locale/be_BY.CP1131/LC_MESSAGES
OLD_FILES+=usr/share/locale/be_BY.CP1131/LC_MONETARY
OLD_FILES+=usr/share/locale/be_BY.CP1131/LC_NUMERIC
OLD_FILES+=usr/share/locale/be_BY.CP1131/LC_TIME
OLD_DIRS+=usr/share/locale/be_BY.CP1251
OLD_FILES+=usr/share/locale/be_BY.CP1251/LC_COLLATE
OLD_FILES+=usr/share/locale/be_BY.CP1251/LC_CTYPE
OLD_FILES+=usr/share/locale/be_BY.CP1251/LC_MESSAGES
OLD_FILES+=usr/share/locale/be_BY.CP1251/LC_MONETARY
OLD_FILES+=usr/share/locale/be_BY.CP1251/LC_NUMERIC
OLD_FILES+=usr/share/locale/be_BY.CP1251/LC_TIME
OLD_DIRS+=usr/share/locale/be_BY.ISO8859-5
OLD_FILES+=usr/share/locale/be_BY.ISO8859-5/LC_COLLATE
OLD_FILES+=usr/share/locale/be_BY.ISO8859-5/LC_CTYPE
OLD_FILES+=usr/share/locale/be_BY.ISO8859-5/LC_MESSAGES
OLD_FILES+=usr/share/locale/be_BY.ISO8859-5/LC_MONETARY
OLD_FILES+=usr/share/locale/be_BY.ISO8859-5/LC_NUMERIC
OLD_FILES+=usr/share/locale/be_BY.ISO8859-5/LC_TIME
OLD_DIRS+=usr/share/locale/be_BY.UTF-8
OLD_FILES+=usr/share/locale/be_BY.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/be_BY.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/be_BY.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/be_BY.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/be_BY.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/be_BY.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/bg_BG.CP1251
OLD_FILES+=usr/share/locale/bg_BG.CP1251/LC_COLLATE
OLD_FILES+=usr/share/locale/bg_BG.CP1251/LC_CTYPE
OLD_FILES+=usr/share/locale/bg_BG.CP1251/LC_MESSAGES
OLD_FILES+=usr/share/locale/bg_BG.CP1251/LC_MONETARY
OLD_FILES+=usr/share/locale/bg_BG.CP1251/LC_NUMERIC
OLD_FILES+=usr/share/locale/bg_BG.CP1251/LC_TIME
OLD_DIRS+=usr/share/locale/bg_BG.UTF-8
OLD_FILES+=usr/share/locale/bg_BG.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/bg_BG.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/bg_BG.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/bg_BG.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/bg_BG.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/bg_BG.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ca_AD.ISO8859-1
OLD_FILES+=usr/share/locale/ca_AD.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/ca_AD.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/ca_AD.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/ca_AD.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/ca_AD.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/ca_AD.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/ca_AD.ISO8859-15
OLD_FILES+=usr/share/locale/ca_AD.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/ca_AD.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/ca_AD.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/ca_AD.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/ca_AD.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/ca_AD.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/ca_AD.UTF-8
OLD_FILES+=usr/share/locale/ca_AD.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ca_AD.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ca_AD.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ca_AD.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ca_AD.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ca_AD.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ca_ES.ISO8859-1
OLD_FILES+=usr/share/locale/ca_ES.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/ca_ES.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/ca_ES.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/ca_ES.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/ca_ES.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/ca_ES.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/ca_ES.ISO8859-15
OLD_FILES+=usr/share/locale/ca_ES.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/ca_ES.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/ca_ES.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/ca_ES.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/ca_ES.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/ca_ES.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/ca_ES.UTF-8
OLD_FILES+=usr/share/locale/ca_ES.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ca_ES.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ca_ES.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ca_ES.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ca_ES.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ca_ES.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ca_FR.ISO8859-1
OLD_FILES+=usr/share/locale/ca_FR.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/ca_FR.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/ca_FR.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/ca_FR.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/ca_FR.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/ca_FR.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/ca_FR.ISO8859-15
OLD_FILES+=usr/share/locale/ca_FR.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/ca_FR.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/ca_FR.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/ca_FR.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/ca_FR.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/ca_FR.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/ca_FR.UTF-8
OLD_FILES+=usr/share/locale/ca_FR.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ca_FR.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ca_FR.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ca_FR.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ca_FR.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ca_FR.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ca_IT.ISO8859-1
OLD_FILES+=usr/share/locale/ca_IT.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/ca_IT.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/ca_IT.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/ca_IT.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/ca_IT.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/ca_IT.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/ca_IT.ISO8859-15
OLD_FILES+=usr/share/locale/ca_IT.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/ca_IT.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/ca_IT.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/ca_IT.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/ca_IT.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/ca_IT.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/ca_IT.UTF-8
OLD_FILES+=usr/share/locale/ca_IT.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ca_IT.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ca_IT.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ca_IT.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ca_IT.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ca_IT.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/cs_CZ.ISO8859-2
OLD_FILES+=usr/share/locale/cs_CZ.ISO8859-2/LC_COLLATE
OLD_FILES+=usr/share/locale/cs_CZ.ISO8859-2/LC_CTYPE
OLD_FILES+=usr/share/locale/cs_CZ.ISO8859-2/LC_MESSAGES
OLD_FILES+=usr/share/locale/cs_CZ.ISO8859-2/LC_MONETARY
OLD_FILES+=usr/share/locale/cs_CZ.ISO8859-2/LC_NUMERIC
OLD_FILES+=usr/share/locale/cs_CZ.ISO8859-2/LC_TIME
OLD_DIRS+=usr/share/locale/cs_CZ.UTF-8
OLD_FILES+=usr/share/locale/cs_CZ.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/cs_CZ.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/cs_CZ.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/cs_CZ.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/cs_CZ.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/cs_CZ.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/da_DK.ISO8859-1
OLD_FILES+=usr/share/locale/da_DK.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/da_DK.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/da_DK.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/da_DK.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/da_DK.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/da_DK.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/da_DK.ISO8859-15
OLD_FILES+=usr/share/locale/da_DK.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/da_DK.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/da_DK.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/da_DK.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/da_DK.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/da_DK.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/da_DK.UTF-8
OLD_FILES+=usr/share/locale/da_DK.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/da_DK.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/da_DK.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/da_DK.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/da_DK.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/da_DK.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/de_AT.ISO8859-1
OLD_FILES+=usr/share/locale/de_AT.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/de_AT.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/de_AT.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/de_AT.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/de_AT.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/de_AT.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/de_AT.ISO8859-15
OLD_FILES+=usr/share/locale/de_AT.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/de_AT.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/de_AT.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/de_AT.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/de_AT.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/de_AT.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/de_AT.UTF-8
OLD_FILES+=usr/share/locale/de_AT.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/de_AT.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/de_AT.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/de_AT.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/de_AT.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/de_AT.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/de_CH.ISO8859-1
OLD_FILES+=usr/share/locale/de_CH.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/de_CH.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/de_CH.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/de_CH.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/de_CH.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/de_CH.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/de_CH.ISO8859-15
OLD_FILES+=usr/share/locale/de_CH.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/de_CH.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/de_CH.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/de_CH.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/de_CH.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/de_CH.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/de_CH.UTF-8
OLD_FILES+=usr/share/locale/de_CH.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/de_CH.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/de_CH.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/de_CH.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/de_CH.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/de_CH.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/de_DE.ISO8859-1
OLD_FILES+=usr/share/locale/de_DE.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/de_DE.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/de_DE.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/de_DE.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/de_DE.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/de_DE.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/de_DE.ISO8859-15
OLD_FILES+=usr/share/locale/de_DE.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/de_DE.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/de_DE.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/de_DE.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/de_DE.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/de_DE.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/de_DE.UTF-8
OLD_FILES+=usr/share/locale/de_DE.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/de_DE.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/de_DE.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/de_DE.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/de_DE.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/de_DE.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/el_GR.ISO8859-7
OLD_FILES+=usr/share/locale/el_GR.ISO8859-7/LC_COLLATE
OLD_FILES+=usr/share/locale/el_GR.ISO8859-7/LC_CTYPE
OLD_FILES+=usr/share/locale/el_GR.ISO8859-7/LC_MESSAGES
OLD_FILES+=usr/share/locale/el_GR.ISO8859-7/LC_MONETARY
OLD_FILES+=usr/share/locale/el_GR.ISO8859-7/LC_NUMERIC
OLD_FILES+=usr/share/locale/el_GR.ISO8859-7/LC_TIME
OLD_DIRS+=usr/share/locale/el_GR.UTF-8
OLD_FILES+=usr/share/locale/el_GR.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/el_GR.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/el_GR.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/el_GR.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/el_GR.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/el_GR.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/en_AU.ISO8859-1
OLD_FILES+=usr/share/locale/en_AU.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/en_AU.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/en_AU.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_AU.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/en_AU.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_AU.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/en_AU.ISO8859-15
OLD_FILES+=usr/share/locale/en_AU.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/en_AU.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/en_AU.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_AU.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/en_AU.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_AU.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/en_AU.US-ASCII
OLD_FILES+=usr/share/locale/en_AU.US-ASCII/LC_COLLATE
OLD_FILES+=usr/share/locale/en_AU.US-ASCII/LC_CTYPE
OLD_FILES+=usr/share/locale/en_AU.US-ASCII/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_AU.US-ASCII/LC_MONETARY
OLD_FILES+=usr/share/locale/en_AU.US-ASCII/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_AU.US-ASCII/LC_TIME
OLD_DIRS+=usr/share/locale/en_AU.UTF-8
OLD_FILES+=usr/share/locale/en_AU.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/en_AU.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/en_AU.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_AU.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/en_AU.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_AU.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/en_CA.ISO8859-1
OLD_FILES+=usr/share/locale/en_CA.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/en_CA.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/en_CA.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_CA.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/en_CA.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_CA.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/en_CA.ISO8859-15
OLD_FILES+=usr/share/locale/en_CA.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/en_CA.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/en_CA.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_CA.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/en_CA.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_CA.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/en_CA.US-ASCII
OLD_FILES+=usr/share/locale/en_CA.US-ASCII/LC_COLLATE
OLD_FILES+=usr/share/locale/en_CA.US-ASCII/LC_CTYPE
OLD_FILES+=usr/share/locale/en_CA.US-ASCII/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_CA.US-ASCII/LC_MONETARY
OLD_FILES+=usr/share/locale/en_CA.US-ASCII/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_CA.US-ASCII/LC_TIME
OLD_DIRS+=usr/share/locale/en_CA.UTF-8
OLD_FILES+=usr/share/locale/en_CA.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/en_CA.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/en_CA.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_CA.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/en_CA.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_CA.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/en_GB.ISO8859-1
OLD_FILES+=usr/share/locale/en_GB.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/en_GB.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/en_GB.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_GB.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/en_GB.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_GB.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/en_GB.ISO8859-15
OLD_FILES+=usr/share/locale/en_GB.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/en_GB.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/en_GB.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_GB.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/en_GB.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_GB.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/en_GB.US-ASCII
OLD_FILES+=usr/share/locale/en_GB.US-ASCII/LC_COLLATE
OLD_FILES+=usr/share/locale/en_GB.US-ASCII/LC_CTYPE
OLD_FILES+=usr/share/locale/en_GB.US-ASCII/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_GB.US-ASCII/LC_MONETARY
OLD_FILES+=usr/share/locale/en_GB.US-ASCII/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_GB.US-ASCII/LC_TIME
OLD_DIRS+=usr/share/locale/en_GB.UTF-8
OLD_FILES+=usr/share/locale/en_GB.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/en_GB.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/en_GB.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_GB.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/en_GB.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_GB.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/en_HK.ISO8859-1
OLD_FILES+=usr/share/locale/en_HK.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/en_HK.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/en_HK.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_HK.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/en_HK.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_HK.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/en_HK.UTF-8
OLD_FILES+=usr/share/locale/en_HK.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/en_HK.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/en_HK.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_HK.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/en_HK.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_HK.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/en_IE.ISO8859-1
OLD_FILES+=usr/share/locale/en_IE.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/en_IE.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/en_IE.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_IE.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/en_IE.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_IE.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/en_IE.ISO8859-15
OLD_FILES+=usr/share/locale/en_IE.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/en_IE.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/en_IE.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_IE.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/en_IE.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_IE.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/en_IE.UTF-8
OLD_FILES+=usr/share/locale/en_IE.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/en_IE.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/en_IE.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_IE.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/en_IE.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_IE.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/en_NZ.ISO8859-1
OLD_FILES+=usr/share/locale/en_NZ.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/en_NZ.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/en_NZ.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_NZ.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/en_NZ.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_NZ.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/en_NZ.ISO8859-15
OLD_FILES+=usr/share/locale/en_NZ.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/en_NZ.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/en_NZ.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_NZ.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/en_NZ.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_NZ.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/en_NZ.US-ASCII
OLD_FILES+=usr/share/locale/en_NZ.US-ASCII/LC_COLLATE
OLD_FILES+=usr/share/locale/en_NZ.US-ASCII/LC_CTYPE
OLD_FILES+=usr/share/locale/en_NZ.US-ASCII/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_NZ.US-ASCII/LC_MONETARY
OLD_FILES+=usr/share/locale/en_NZ.US-ASCII/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_NZ.US-ASCII/LC_TIME
OLD_DIRS+=usr/share/locale/en_NZ.UTF-8
OLD_FILES+=usr/share/locale/en_NZ.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/en_NZ.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/en_NZ.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_NZ.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/en_NZ.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_NZ.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/en_PH.UTF-8
OLD_FILES+=usr/share/locale/en_PH.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/en_PH.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/en_PH.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_PH.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/en_PH.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_PH.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/en_SG.ISO8859-1
OLD_FILES+=usr/share/locale/en_SG.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/en_SG.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/en_SG.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_SG.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/en_SG.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_SG.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/en_SG.UTF-8
OLD_FILES+=usr/share/locale/en_SG.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/en_SG.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/en_SG.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_SG.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/en_SG.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_SG.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/en_US.ISO8859-1
OLD_FILES+=usr/share/locale/en_US.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/en_US.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/en_US.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_US.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/en_US.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_US.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/en_US.ISO8859-15
OLD_FILES+=usr/share/locale/en_US.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/en_US.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/en_US.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_US.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/en_US.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_US.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/en_US.US-ASCII
OLD_FILES+=usr/share/locale/en_US.US-ASCII/LC_COLLATE
OLD_FILES+=usr/share/locale/en_US.US-ASCII/LC_CTYPE
OLD_FILES+=usr/share/locale/en_US.US-ASCII/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_US.US-ASCII/LC_MONETARY
OLD_FILES+=usr/share/locale/en_US.US-ASCII/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_US.US-ASCII/LC_TIME
OLD_DIRS+=usr/share/locale/en_US.UTF-8
OLD_FILES+=usr/share/locale/en_US.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/en_US.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/en_US.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_US.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/en_US.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_US.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/en_ZA.ISO8859-1
OLD_FILES+=usr/share/locale/en_ZA.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/en_ZA.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/en_ZA.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_ZA.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/en_ZA.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_ZA.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/en_ZA.ISO8859-15
OLD_FILES+=usr/share/locale/en_ZA.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/en_ZA.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/en_ZA.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_ZA.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/en_ZA.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_ZA.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/en_ZA.US-ASCII
OLD_FILES+=usr/share/locale/en_ZA.US-ASCII/LC_COLLATE
OLD_FILES+=usr/share/locale/en_ZA.US-ASCII/LC_CTYPE
OLD_FILES+=usr/share/locale/en_ZA.US-ASCII/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_ZA.US-ASCII/LC_MONETARY
OLD_FILES+=usr/share/locale/en_ZA.US-ASCII/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_ZA.US-ASCII/LC_TIME
OLD_DIRS+=usr/share/locale/en_ZA.UTF-8
OLD_FILES+=usr/share/locale/en_ZA.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/en_ZA.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/en_ZA.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/en_ZA.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/en_ZA.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/en_ZA.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/es_AR.ISO8859-1
OLD_FILES+=usr/share/locale/es_AR.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/es_AR.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/es_AR.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/es_AR.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/es_AR.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/es_AR.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/es_AR.UTF-8
OLD_FILES+=usr/share/locale/es_AR.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/es_AR.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/es_AR.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/es_AR.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/es_AR.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/es_AR.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/es_CR.UTF-8
OLD_FILES+=usr/share/locale/es_CR.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/es_CR.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/es_CR.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/es_CR.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/es_CR.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/es_CR.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/es_ES.ISO8859-1
OLD_FILES+=usr/share/locale/es_ES.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/es_ES.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/es_ES.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/es_ES.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/es_ES.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/es_ES.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/es_ES.ISO8859-15
OLD_FILES+=usr/share/locale/es_ES.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/es_ES.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/es_ES.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/es_ES.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/es_ES.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/es_ES.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/es_ES.UTF-8
OLD_FILES+=usr/share/locale/es_ES.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/es_ES.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/es_ES.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/es_ES.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/es_ES.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/es_ES.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/es_MX.ISO8859-1
OLD_FILES+=usr/share/locale/es_MX.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/es_MX.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/es_MX.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/es_MX.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/es_MX.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/es_MX.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/es_MX.UTF-8
OLD_FILES+=usr/share/locale/es_MX.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/es_MX.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/es_MX.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/es_MX.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/es_MX.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/es_MX.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/et_EE.ISO8859-1
OLD_FILES+=usr/share/locale/et_EE.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/et_EE.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/et_EE.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/et_EE.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/et_EE.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/et_EE.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/et_EE.ISO8859-15
OLD_FILES+=usr/share/locale/et_EE.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/et_EE.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/et_EE.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/et_EE.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/et_EE.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/et_EE.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/et_EE.UTF-8
OLD_FILES+=usr/share/locale/et_EE.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/et_EE.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/et_EE.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/et_EE.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/et_EE.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/et_EE.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/eu_ES.ISO8859-1
OLD_FILES+=usr/share/locale/eu_ES.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/eu_ES.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/eu_ES.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/eu_ES.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/eu_ES.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/eu_ES.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/eu_ES.ISO8859-15
OLD_FILES+=usr/share/locale/eu_ES.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/eu_ES.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/eu_ES.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/eu_ES.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/eu_ES.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/eu_ES.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/eu_ES.UTF-8
OLD_FILES+=usr/share/locale/eu_ES.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/eu_ES.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/eu_ES.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/eu_ES.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/eu_ES.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/eu_ES.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/fi_FI.ISO8859-1
OLD_FILES+=usr/share/locale/fi_FI.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/fi_FI.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/fi_FI.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/fi_FI.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/fi_FI.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/fi_FI.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/fi_FI.ISO8859-15
OLD_FILES+=usr/share/locale/fi_FI.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/fi_FI.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/fi_FI.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/fi_FI.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/fi_FI.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/fi_FI.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/fi_FI.UTF-8
OLD_FILES+=usr/share/locale/fi_FI.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/fi_FI.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/fi_FI.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/fi_FI.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/fi_FI.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/fi_FI.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/fr_BE.ISO8859-1
OLD_FILES+=usr/share/locale/fr_BE.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/fr_BE.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/fr_BE.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/fr_BE.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/fr_BE.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/fr_BE.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/fr_BE.ISO8859-15
OLD_FILES+=usr/share/locale/fr_BE.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/fr_BE.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/fr_BE.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/fr_BE.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/fr_BE.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/fr_BE.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/fr_BE.UTF-8
OLD_FILES+=usr/share/locale/fr_BE.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/fr_BE.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/fr_BE.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/fr_BE.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/fr_BE.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/fr_BE.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/fr_CA.ISO8859-1
OLD_FILES+=usr/share/locale/fr_CA.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/fr_CA.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/fr_CA.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/fr_CA.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/fr_CA.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/fr_CA.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/fr_CA.ISO8859-15
OLD_FILES+=usr/share/locale/fr_CA.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/fr_CA.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/fr_CA.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/fr_CA.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/fr_CA.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/fr_CA.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/fr_CA.UTF-8
OLD_FILES+=usr/share/locale/fr_CA.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/fr_CA.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/fr_CA.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/fr_CA.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/fr_CA.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/fr_CA.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/fr_CH.ISO8859-1
OLD_FILES+=usr/share/locale/fr_CH.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/fr_CH.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/fr_CH.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/fr_CH.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/fr_CH.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/fr_CH.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/fr_CH.ISO8859-15
OLD_FILES+=usr/share/locale/fr_CH.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/fr_CH.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/fr_CH.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/fr_CH.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/fr_CH.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/fr_CH.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/fr_CH.UTF-8
OLD_FILES+=usr/share/locale/fr_CH.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/fr_CH.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/fr_CH.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/fr_CH.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/fr_CH.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/fr_CH.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/fr_FR.ISO8859-1
OLD_FILES+=usr/share/locale/fr_FR.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/fr_FR.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/fr_FR.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/fr_FR.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/fr_FR.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/fr_FR.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/fr_FR.ISO8859-15
OLD_FILES+=usr/share/locale/fr_FR.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/fr_FR.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/fr_FR.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/fr_FR.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/fr_FR.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/fr_FR.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/fr_FR.UTF-8
OLD_FILES+=usr/share/locale/fr_FR.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/fr_FR.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/fr_FR.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/fr_FR.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/fr_FR.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/fr_FR.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/he_IL.UTF-8
OLD_FILES+=usr/share/locale/he_IL.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/he_IL.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/he_IL.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/he_IL.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/he_IL.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/he_IL.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/hi_IN.ISCII-DEV
OLD_FILES+=usr/share/locale/hi_IN.ISCII-DEV/LC_COLLATE
OLD_FILES+=usr/share/locale/hi_IN.ISCII-DEV/LC_CTYPE
OLD_FILES+=usr/share/locale/hi_IN.ISCII-DEV/LC_MESSAGES
OLD_FILES+=usr/share/locale/hi_IN.ISCII-DEV/LC_MONETARY
OLD_FILES+=usr/share/locale/hi_IN.ISCII-DEV/LC_NUMERIC
OLD_FILES+=usr/share/locale/hi_IN.ISCII-DEV/LC_TIME
OLD_DIRS+=usr/share/locale/hi_IN.UTF-8
OLD_FILES+=usr/share/locale/hi_IN.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/hi_IN.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/hi_IN.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/hi_IN.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/hi_IN.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/hi_IN.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/hr_HR.ISO8859-2
OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_COLLATE
OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_CTYPE
OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_MESSAGES
OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_MONETARY
OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_NUMERIC
OLD_FILES+=usr/share/locale/hr_HR.ISO8859-2/LC_TIME
OLD_DIRS+=usr/share/locale/hr_HR.UTF-8
OLD_FILES+=usr/share/locale/hr_HR.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/hr_HR.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/hr_HR.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/hr_HR.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/hr_HR.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/hr_HR.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/hu_HU.ISO8859-2
OLD_FILES+=usr/share/locale/hu_HU.ISO8859-2/LC_COLLATE
OLD_FILES+=usr/share/locale/hu_HU.ISO8859-2/LC_CTYPE
OLD_FILES+=usr/share/locale/hu_HU.ISO8859-2/LC_MESSAGES
OLD_FILES+=usr/share/locale/hu_HU.ISO8859-2/LC_MONETARY
OLD_FILES+=usr/share/locale/hu_HU.ISO8859-2/LC_NUMERIC
OLD_FILES+=usr/share/locale/hu_HU.ISO8859-2/LC_TIME
OLD_DIRS+=usr/share/locale/hu_HU.UTF-8
OLD_FILES+=usr/share/locale/hu_HU.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/hu_HU.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/hu_HU.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/hu_HU.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/hu_HU.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/hu_HU.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/hy_AM.ARMSCII-8
OLD_FILES+=usr/share/locale/hy_AM.ARMSCII-8/LC_COLLATE
OLD_FILES+=usr/share/locale/hy_AM.ARMSCII-8/LC_CTYPE
OLD_FILES+=usr/share/locale/hy_AM.ARMSCII-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/hy_AM.ARMSCII-8/LC_MONETARY
OLD_FILES+=usr/share/locale/hy_AM.ARMSCII-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/hy_AM.ARMSCII-8/LC_TIME
OLD_DIRS+=usr/share/locale/hy_AM.UTF-8
OLD_FILES+=usr/share/locale/hy_AM.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/hy_AM.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/hy_AM.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/hy_AM.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/hy_AM.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/hy_AM.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/is_IS.ISO8859-1
OLD_FILES+=usr/share/locale/is_IS.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/is_IS.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/is_IS.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/is_IS.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/is_IS.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/is_IS.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/is_IS.ISO8859-15
OLD_FILES+=usr/share/locale/is_IS.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/is_IS.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/is_IS.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/is_IS.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/is_IS.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/is_IS.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/is_IS.UTF-8
OLD_FILES+=usr/share/locale/is_IS.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/is_IS.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/is_IS.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/is_IS.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/is_IS.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/is_IS.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/it_CH.ISO8859-1
OLD_FILES+=usr/share/locale/it_CH.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/it_CH.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/it_CH.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/it_CH.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/it_CH.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/it_CH.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/it_CH.ISO8859-15
OLD_FILES+=usr/share/locale/it_CH.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/it_CH.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/it_CH.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/it_CH.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/it_CH.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/it_CH.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/it_CH.UTF-8
OLD_FILES+=usr/share/locale/it_CH.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/it_CH.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/it_CH.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/it_CH.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/it_CH.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/it_CH.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/it_IT.ISO8859-1
OLD_FILES+=usr/share/locale/it_IT.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/it_IT.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/it_IT.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/it_IT.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/it_IT.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/it_IT.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/it_IT.ISO8859-15
OLD_FILES+=usr/share/locale/it_IT.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/it_IT.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/it_IT.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/it_IT.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/it_IT.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/it_IT.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/it_IT.UTF-8
OLD_FILES+=usr/share/locale/it_IT.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/it_IT.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/it_IT.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/it_IT.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/it_IT.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/it_IT.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ja_JP.eucJP
OLD_FILES+=usr/share/locale/ja_JP.eucJP/LC_COLLATE
OLD_FILES+=usr/share/locale/ja_JP.eucJP/LC_CTYPE
OLD_FILES+=usr/share/locale/ja_JP.eucJP/LC_MESSAGES
OLD_FILES+=usr/share/locale/ja_JP.eucJP/LC_MONETARY
OLD_FILES+=usr/share/locale/ja_JP.eucJP/LC_NUMERIC
OLD_FILES+=usr/share/locale/ja_JP.eucJP/LC_TIME
OLD_DIRS+=usr/share/locale/ja_JP.SJIS
OLD_FILES+=usr/share/locale/ja_JP.SJIS/LC_COLLATE
OLD_FILES+=usr/share/locale/ja_JP.SJIS/LC_CTYPE
OLD_FILES+=usr/share/locale/ja_JP.SJIS/LC_MESSAGES
OLD_FILES+=usr/share/locale/ja_JP.SJIS/LC_MONETARY
OLD_FILES+=usr/share/locale/ja_JP.SJIS/LC_NUMERIC
OLD_FILES+=usr/share/locale/ja_JP.SJIS/LC_TIME
OLD_DIRS+=usr/share/locale/ja_JP.UTF-8
OLD_FILES+=usr/share/locale/ja_JP.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ja_JP.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ja_JP.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ja_JP.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ja_JP.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ja_JP.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/kk_KZ.UTF-8
OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/kk_KZ.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ko_KR.CP949
OLD_FILES+=usr/share/locale/ko_KR.CP949/LC_COLLATE
OLD_FILES+=usr/share/locale/ko_KR.CP949/LC_CTYPE
OLD_FILES+=usr/share/locale/ko_KR.CP949/LC_MESSAGES
OLD_FILES+=usr/share/locale/ko_KR.CP949/LC_MONETARY
OLD_FILES+=usr/share/locale/ko_KR.CP949/LC_NUMERIC
OLD_FILES+=usr/share/locale/ko_KR.CP949/LC_TIME
OLD_DIRS+=usr/share/locale/ko_KR.eucKR
OLD_FILES+=usr/share/locale/ko_KR.eucKR/LC_COLLATE
OLD_FILES+=usr/share/locale/ko_KR.eucKR/LC_CTYPE
OLD_FILES+=usr/share/locale/ko_KR.eucKR/LC_MESSAGES
OLD_FILES+=usr/share/locale/ko_KR.eucKR/LC_MONETARY
OLD_FILES+=usr/share/locale/ko_KR.eucKR/LC_NUMERIC
OLD_FILES+=usr/share/locale/ko_KR.eucKR/LC_TIME
OLD_DIRS+=usr/share/locale/ko_KR.UTF-8
OLD_FILES+=usr/share/locale/ko_KR.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ko_KR.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ko_KR.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ko_KR.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ko_KR.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ko_KR.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/lt_LT.ISO8859-13
OLD_FILES+=usr/share/locale/lt_LT.ISO8859-13/LC_COLLATE
OLD_FILES+=usr/share/locale/lt_LT.ISO8859-13/LC_CTYPE
OLD_FILES+=usr/share/locale/lt_LT.ISO8859-13/LC_MESSAGES
OLD_FILES+=usr/share/locale/lt_LT.ISO8859-13/LC_MONETARY
OLD_FILES+=usr/share/locale/lt_LT.ISO8859-13/LC_NUMERIC
OLD_FILES+=usr/share/locale/lt_LT.ISO8859-13/LC_TIME
OLD_DIRS+=usr/share/locale/lt_LT.UTF-8
OLD_FILES+=usr/share/locale/lt_LT.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/lt_LT.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/lt_LT.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/lt_LT.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/lt_LT.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/lt_LT.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/lv_LV.ISO8859-13
OLD_FILES+=usr/share/locale/lv_LV.ISO8859-13/LC_COLLATE
OLD_FILES+=usr/share/locale/lv_LV.ISO8859-13/LC_CTYPE
OLD_FILES+=usr/share/locale/lv_LV.ISO8859-13/LC_MESSAGES
OLD_FILES+=usr/share/locale/lv_LV.ISO8859-13/LC_MONETARY
OLD_FILES+=usr/share/locale/lv_LV.ISO8859-13/LC_NUMERIC
OLD_FILES+=usr/share/locale/lv_LV.ISO8859-13/LC_TIME
OLD_DIRS+=usr/share/locale/lv_LV.UTF-8
OLD_FILES+=usr/share/locale/lv_LV.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/lv_LV.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/lv_LV.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/lv_LV.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/lv_LV.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/lv_LV.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/mn_MN.UTF-8
OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/mn_MN.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/nb_NO.ISO8859-1
OLD_FILES+=usr/share/locale/nb_NO.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/nb_NO.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/nb_NO.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/nb_NO.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/nb_NO.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/nb_NO.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/nb_NO.ISO8859-15
OLD_FILES+=usr/share/locale/nb_NO.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/nb_NO.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/nb_NO.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/nb_NO.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/nb_NO.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/nb_NO.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/nb_NO.UTF-8
OLD_FILES+=usr/share/locale/nb_NO.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/nb_NO.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/nb_NO.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/nb_NO.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/nb_NO.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/nb_NO.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/nl_BE.ISO8859-1
OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/nl_BE.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/nl_BE.ISO8859-15
OLD_FILES+=usr/share/locale/nl_BE.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/nl_BE.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/nl_BE.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/nl_BE.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/nl_BE.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/nl_BE.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/nl_BE.UTF-8
OLD_FILES+=usr/share/locale/nl_BE.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/nl_BE.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/nl_BE.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/nl_BE.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/nl_BE.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/nl_BE.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/nl_NL.ISO8859-1
OLD_FILES+=usr/share/locale/nl_NL.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/nl_NL.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/nl_NL.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/nl_NL.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/nl_NL.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/nl_NL.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/nl_NL.ISO8859-15
OLD_FILES+=usr/share/locale/nl_NL.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/nl_NL.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/nl_NL.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/nl_NL.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/nl_NL.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/nl_NL.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/nl_NL.UTF-8
OLD_FILES+=usr/share/locale/nl_NL.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/nl_NL.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/nl_NL.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/nl_NL.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/nl_NL.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/nl_NL.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/nn_NO.ISO8859-1
OLD_FILES+=usr/share/locale/nn_NO.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/nn_NO.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/nn_NO.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/nn_NO.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/nn_NO.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/nn_NO.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/nn_NO.ISO8859-15
OLD_FILES+=usr/share/locale/nn_NO.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/nn_NO.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/nn_NO.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/nn_NO.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/nn_NO.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/nn_NO.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/nn_NO.UTF-8
OLD_FILES+=usr/share/locale/nn_NO.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/nn_NO.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/nn_NO.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/nn_NO.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/nn_NO.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/nn_NO.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/pl_PL.ISO8859-2
OLD_FILES+=usr/share/locale/pl_PL.ISO8859-2/LC_COLLATE
OLD_FILES+=usr/share/locale/pl_PL.ISO8859-2/LC_CTYPE
OLD_FILES+=usr/share/locale/pl_PL.ISO8859-2/LC_MESSAGES
OLD_FILES+=usr/share/locale/pl_PL.ISO8859-2/LC_MONETARY
OLD_FILES+=usr/share/locale/pl_PL.ISO8859-2/LC_NUMERIC
OLD_FILES+=usr/share/locale/pl_PL.ISO8859-2/LC_TIME
OLD_DIRS+=usr/share/locale/pl_PL.UTF-8
OLD_FILES+=usr/share/locale/pl_PL.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/pl_PL.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/pl_PL.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/pl_PL.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/pl_PL.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/pl_PL.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/pt_BR.ISO8859-1
OLD_FILES+=usr/share/locale/pt_BR.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/pt_BR.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/pt_BR.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/pt_BR.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/pt_BR.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/pt_BR.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/pt_BR.UTF-8
OLD_FILES+=usr/share/locale/pt_BR.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/pt_BR.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/pt_BR.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/pt_BR.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/pt_BR.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/pt_BR.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/pt_PT.ISO8859-1
OLD_FILES+=usr/share/locale/pt_PT.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/pt_PT.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/pt_PT.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/pt_PT.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/pt_PT.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/pt_PT.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/pt_PT.ISO8859-15
OLD_FILES+=usr/share/locale/pt_PT.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/pt_PT.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/pt_PT.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/pt_PT.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/pt_PT.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/pt_PT.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/pt_PT.UTF-8
OLD_FILES+=usr/share/locale/pt_PT.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/pt_PT.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/pt_PT.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/pt_PT.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/pt_PT.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/pt_PT.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ro_RO.ISO8859-2
OLD_FILES+=usr/share/locale/ro_RO.ISO8859-2/LC_COLLATE
OLD_FILES+=usr/share/locale/ro_RO.ISO8859-2/LC_CTYPE
OLD_FILES+=usr/share/locale/ro_RO.ISO8859-2/LC_MESSAGES
OLD_FILES+=usr/share/locale/ro_RO.ISO8859-2/LC_MONETARY
OLD_FILES+=usr/share/locale/ro_RO.ISO8859-2/LC_NUMERIC
OLD_FILES+=usr/share/locale/ro_RO.ISO8859-2/LC_TIME
OLD_DIRS+=usr/share/locale/ro_RO.UTF-8
OLD_FILES+=usr/share/locale/ro_RO.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ro_RO.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ro_RO.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ro_RO.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ro_RO.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ro_RO.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/ru_RU.CP1251
OLD_FILES+=usr/share/locale/ru_RU.CP1251/LC_COLLATE
OLD_FILES+=usr/share/locale/ru_RU.CP1251/LC_CTYPE
OLD_FILES+=usr/share/locale/ru_RU.CP1251/LC_MESSAGES
OLD_FILES+=usr/share/locale/ru_RU.CP1251/LC_MONETARY
OLD_FILES+=usr/share/locale/ru_RU.CP1251/LC_NUMERIC
OLD_FILES+=usr/share/locale/ru_RU.CP1251/LC_TIME
OLD_DIRS+=usr/share/locale/ru_RU.CP866
OLD_FILES+=usr/share/locale/ru_RU.CP866/LC_COLLATE
OLD_FILES+=usr/share/locale/ru_RU.CP866/LC_CTYPE
OLD_FILES+=usr/share/locale/ru_RU.CP866/LC_MESSAGES
OLD_FILES+=usr/share/locale/ru_RU.CP866/LC_MONETARY
OLD_FILES+=usr/share/locale/ru_RU.CP866/LC_NUMERIC
OLD_FILES+=usr/share/locale/ru_RU.CP866/LC_TIME
OLD_DIRS+=usr/share/locale/ru_RU.ISO8859-5
OLD_FILES+=usr/share/locale/ru_RU.ISO8859-5/LC_COLLATE
OLD_FILES+=usr/share/locale/ru_RU.ISO8859-5/LC_CTYPE
OLD_FILES+=usr/share/locale/ru_RU.ISO8859-5/LC_MESSAGES
OLD_FILES+=usr/share/locale/ru_RU.ISO8859-5/LC_MONETARY
OLD_FILES+=usr/share/locale/ru_RU.ISO8859-5/LC_NUMERIC
OLD_FILES+=usr/share/locale/ru_RU.ISO8859-5/LC_TIME
OLD_DIRS+=usr/share/locale/ru_RU.KOI8-R
OLD_FILES+=usr/share/locale/ru_RU.KOI8-R/LC_COLLATE
OLD_FILES+=usr/share/locale/ru_RU.KOI8-R/LC_CTYPE
OLD_FILES+=usr/share/locale/ru_RU.KOI8-R/LC_MESSAGES
OLD_FILES+=usr/share/locale/ru_RU.KOI8-R/LC_MONETARY
OLD_FILES+=usr/share/locale/ru_RU.KOI8-R/LC_NUMERIC
OLD_FILES+=usr/share/locale/ru_RU.KOI8-R/LC_TIME
OLD_DIRS+=usr/share/locale/ru_RU.UTF-8
OLD_FILES+=usr/share/locale/ru_RU.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/ru_RU.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/ru_RU.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/ru_RU.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/ru_RU.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/ru_RU.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/se_FI.UTF-8
OLD_FILES+=usr/share/locale/se_FI.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/se_FI.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/se_FI.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/se_FI.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/se_FI.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/se_FI.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/se_NO.UTF-8
OLD_FILES+=usr/share/locale/se_NO.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/se_NO.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/se_NO.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/se_NO.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/se_NO.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/se_NO.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/sk_SK.ISO8859-2
OLD_FILES+=usr/share/locale/sk_SK.ISO8859-2/LC_COLLATE
OLD_FILES+=usr/share/locale/sk_SK.ISO8859-2/LC_CTYPE
OLD_FILES+=usr/share/locale/sk_SK.ISO8859-2/LC_MESSAGES
OLD_FILES+=usr/share/locale/sk_SK.ISO8859-2/LC_MONETARY
OLD_FILES+=usr/share/locale/sk_SK.ISO8859-2/LC_NUMERIC
OLD_FILES+=usr/share/locale/sk_SK.ISO8859-2/LC_TIME
OLD_DIRS+=usr/share/locale/sk_SK.UTF-8
OLD_FILES+=usr/share/locale/sk_SK.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/sk_SK.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/sk_SK.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/sk_SK.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/sk_SK.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/sk_SK.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/sl_SI.ISO8859-2
OLD_FILES+=usr/share/locale/sl_SI.ISO8859-2/LC_COLLATE
OLD_FILES+=usr/share/locale/sl_SI.ISO8859-2/LC_CTYPE
OLD_FILES+=usr/share/locale/sl_SI.ISO8859-2/LC_MESSAGES
OLD_FILES+=usr/share/locale/sl_SI.ISO8859-2/LC_MONETARY
OLD_FILES+=usr/share/locale/sl_SI.ISO8859-2/LC_NUMERIC
OLD_FILES+=usr/share/locale/sl_SI.ISO8859-2/LC_TIME
OLD_DIRS+=usr/share/locale/sl_SI.UTF-8
OLD_FILES+=usr/share/locale/sl_SI.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/sl_SI.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/sl_SI.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/sl_SI.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/sl_SI.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/sl_SI.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/sr_RS.ISO8859-5
OLD_FILES+=usr/share/locale/sr_RS.ISO8859-5/LC_COLLATE
OLD_FILES+=usr/share/locale/sr_RS.ISO8859-5/LC_CTYPE
OLD_FILES+=usr/share/locale/sr_RS.ISO8859-5/LC_MESSAGES
OLD_FILES+=usr/share/locale/sr_RS.ISO8859-5/LC_MONETARY
OLD_FILES+=usr/share/locale/sr_RS.ISO8859-5/LC_NUMERIC
OLD_FILES+=usr/share/locale/sr_RS.ISO8859-5/LC_TIME
OLD_DIRS+=usr/share/locale/sr_RS.UTF-8
OLD_FILES+=usr/share/locale/sr_RS.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/sr_RS.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/sr_RS.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/sr_RS.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/sr_RS.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/sr_RS.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/sr_RS.ISO8859-2
OLD_FILES+=usr/share/locale/sr_RS.ISO8859-2/LC_COLLATE
OLD_FILES+=usr/share/locale/sr_RS.ISO8859-2/LC_CTYPE
OLD_FILES+=usr/share/locale/sr_RS.ISO8859-2/LC_MESSAGES
OLD_FILES+=usr/share/locale/sr_RS.ISO8859-2/LC_MONETARY
OLD_FILES+=usr/share/locale/sr_RS.ISO8859-2/LC_NUMERIC
OLD_FILES+=usr/share/locale/sr_RS.ISO8859-2/LC_TIME
OLD_DIRS+=usr/share/locale/sr_RS.UTF-8@latin
OLD_FILES+=usr/share/locale/sr_RS.UTF-8@latin/LC_COLLATE
OLD_FILES+=usr/share/locale/sr_RS.UTF-8@latin/LC_CTYPE
OLD_FILES+=usr/share/locale/sr_RS.UTF-8@latin/LC_MESSAGES
OLD_FILES+=usr/share/locale/sr_RS.UTF-8@latin/LC_MONETARY
OLD_FILES+=usr/share/locale/sr_RS.UTF-8@latin/LC_NUMERIC
OLD_FILES+=usr/share/locale/sr_RS.UTF-8@latin/LC_TIME
OLD_DIRS+=usr/share/locale/sv_FI.ISO8859-1
OLD_FILES+=usr/share/locale/sv_FI.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/sv_FI.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/sv_FI.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/sv_FI.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/sv_FI.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/sv_FI.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/sv_FI.ISO8859-15
OLD_FILES+=usr/share/locale/sv_FI.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/sv_FI.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/sv_FI.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/sv_FI.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/sv_FI.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/sv_FI.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/sv_FI.UTF-8
OLD_FILES+=usr/share/locale/sv_FI.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/sv_FI.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/sv_FI.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/sv_FI.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/sv_FI.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/sv_FI.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/sv_SE.ISO8859-1
OLD_FILES+=usr/share/locale/sv_SE.ISO8859-1/LC_COLLATE
OLD_FILES+=usr/share/locale/sv_SE.ISO8859-1/LC_CTYPE
OLD_FILES+=usr/share/locale/sv_SE.ISO8859-1/LC_MESSAGES
OLD_FILES+=usr/share/locale/sv_SE.ISO8859-1/LC_MONETARY
OLD_FILES+=usr/share/locale/sv_SE.ISO8859-1/LC_NUMERIC
OLD_FILES+=usr/share/locale/sv_SE.ISO8859-1/LC_TIME
OLD_DIRS+=usr/share/locale/sv_SE.ISO8859-15
OLD_FILES+=usr/share/locale/sv_SE.ISO8859-15/LC_COLLATE
OLD_FILES+=usr/share/locale/sv_SE.ISO8859-15/LC_CTYPE
OLD_FILES+=usr/share/locale/sv_SE.ISO8859-15/LC_MESSAGES
OLD_FILES+=usr/share/locale/sv_SE.ISO8859-15/LC_MONETARY
OLD_FILES+=usr/share/locale/sv_SE.ISO8859-15/LC_NUMERIC
OLD_FILES+=usr/share/locale/sv_SE.ISO8859-15/LC_TIME
OLD_DIRS+=usr/share/locale/sv_SE.UTF-8
OLD_FILES+=usr/share/locale/sv_SE.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/sv_SE.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/sv_SE.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/sv_SE.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/sv_SE.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/sv_SE.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/tr_TR.ISO8859-9
OLD_FILES+=usr/share/locale/tr_TR.ISO8859-9/LC_COLLATE
OLD_FILES+=usr/share/locale/tr_TR.ISO8859-9/LC_CTYPE
OLD_FILES+=usr/share/locale/tr_TR.ISO8859-9/LC_MESSAGES
OLD_FILES+=usr/share/locale/tr_TR.ISO8859-9/LC_MONETARY
OLD_FILES+=usr/share/locale/tr_TR.ISO8859-9/LC_NUMERIC
OLD_FILES+=usr/share/locale/tr_TR.ISO8859-9/LC_TIME
OLD_DIRS+=usr/share/locale/tr_TR.UTF-8
OLD_FILES+=usr/share/locale/tr_TR.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/tr_TR.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/tr_TR.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/tr_TR.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/tr_TR.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/tr_TR.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/uk_UA.CP1251
OLD_FILES+=usr/share/locale/uk_UA.CP1251/LC_COLLATE
OLD_FILES+=usr/share/locale/uk_UA.CP1251/LC_CTYPE
OLD_FILES+=usr/share/locale/uk_UA.CP1251/LC_MESSAGES
OLD_FILES+=usr/share/locale/uk_UA.CP1251/LC_MONETARY
OLD_FILES+=usr/share/locale/uk_UA.CP1251/LC_NUMERIC
OLD_FILES+=usr/share/locale/uk_UA.CP1251/LC_TIME
OLD_DIRS+=usr/share/locale/uk_UA.ISO8859-5
OLD_FILES+=usr/share/locale/uk_UA.ISO8859-5/LC_COLLATE
OLD_FILES+=usr/share/locale/uk_UA.ISO8859-5/LC_CTYPE
OLD_FILES+=usr/share/locale/uk_UA.ISO8859-5/LC_MESSAGES
OLD_FILES+=usr/share/locale/uk_UA.ISO8859-5/LC_MONETARY
OLD_FILES+=usr/share/locale/uk_UA.ISO8859-5/LC_NUMERIC
OLD_FILES+=usr/share/locale/uk_UA.ISO8859-5/LC_TIME
OLD_DIRS+=usr/share/locale/uk_UA.KOI8-U
OLD_FILES+=usr/share/locale/uk_UA.KOI8-U/LC_COLLATE
OLD_FILES+=usr/share/locale/uk_UA.KOI8-U/LC_CTYPE
OLD_FILES+=usr/share/locale/uk_UA.KOI8-U/LC_MESSAGES
OLD_FILES+=usr/share/locale/uk_UA.KOI8-U/LC_MONETARY
OLD_FILES+=usr/share/locale/uk_UA.KOI8-U/LC_NUMERIC
OLD_FILES+=usr/share/locale/uk_UA.KOI8-U/LC_TIME
OLD_DIRS+=usr/share/locale/uk_UA.UTF-8
OLD_FILES+=usr/share/locale/uk_UA.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/uk_UA.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/uk_UA.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/uk_UA.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/uk_UA.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/uk_UA.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/zh_CN.eucCN
OLD_FILES+=usr/share/locale/zh_CN.eucCN/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_CN.eucCN/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_CN.eucCN/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_CN.eucCN/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_CN.eucCN/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_CN.eucCN/LC_TIME
OLD_DIRS+=usr/share/locale/zh_CN.GB18030
OLD_FILES+=usr/share/locale/zh_CN.GB18030/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_CN.GB18030/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_CN.GB18030/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_CN.GB18030/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_CN.GB18030/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_CN.GB18030/LC_TIME
OLD_DIRS+=usr/share/locale/zh_CN.GB2312
OLD_FILES+=usr/share/locale/zh_CN.GB2312/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_CN.GB2312/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_CN.GB2312/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_CN.GB2312/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_CN.GB2312/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_CN.GB2312/LC_TIME
OLD_DIRS+=usr/share/locale/zh_CN.GBK
OLD_FILES+=usr/share/locale/zh_CN.GBK/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_CN.GBK/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_CN.GBK/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_CN.GBK/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_CN.GBK/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_CN.GBK/LC_TIME
OLD_DIRS+=usr/share/locale/zh_CN.UTF-8
OLD_FILES+=usr/share/locale/zh_CN.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_CN.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_CN.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_CN.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_CN.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_CN.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/zh_HK.UTF-8
OLD_FILES+=usr/share/locale/zh_HK.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_HK.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_HK.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_HK.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_HK.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_HK.UTF-8/LC_TIME
OLD_DIRS+=usr/share/locale/zh_TW.Big5
OLD_FILES+=usr/share/locale/zh_TW.Big5/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_TW.Big5/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_TW.Big5/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_TW.Big5/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_TW.Big5/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_TW.Big5/LC_TIME
OLD_DIRS+=usr/share/locale/zh_TW.UTF-8
OLD_FILES+=usr/share/locale/zh_TW.UTF-8/LC_COLLATE
OLD_FILES+=usr/share/locale/zh_TW.UTF-8/LC_CTYPE
OLD_FILES+=usr/share/locale/zh_TW.UTF-8/LC_MESSAGES
OLD_FILES+=usr/share/locale/zh_TW.UTF-8/LC_MONETARY
OLD_FILES+=usr/share/locale/zh_TW.UTF-8/LC_NUMERIC
OLD_FILES+=usr/share/locale/zh_TW.UTF-8/LC_TIME
.endif
.if ${MK_LOCATE} == no
OLD_FILES+=etc/locate.rc
OLD_FILES+=etc/periodic/weekly/310.locate
OLD_FILES+=usr/bin/locate
OLD_FILES+=usr/libexec/locate.bigram
OLD_FILES+=usr/libexec/locate.code
OLD_FILES+=usr/libexec/locate.concatdb
OLD_FILES+=usr/libexec/locate.mklocatedb
OLD_FILES+=usr/libexec/locate.updatedb
OLD_FILES+=usr/share/man/man1/locate.1.gz
OLD_FILES+=usr/share/man/man8/locate.updatedb.8.gz
OLD_FILES+=usr/share/man/man8/updatedb.8.gz
.endif
.if ${MK_LPR} == no
OLD_FILES+=etc/hosts.lpd
OLD_FILES+=etc/printcap
OLD_FILES+=etc/newsyslog.conf.d/lpr.conf
OLD_FILES+=etc/rc.d/lpd
OLD_FILES+=etc/syslog.d/lpr.conf
OLD_FILES+=usr/bin/lp
OLD_FILES+=usr/bin/lpq
OLD_FILES+=usr/bin/lpr
OLD_FILES+=usr/bin/lprm
OLD_FILES+=usr/libexec/lpr/ru/bjc-240.sh.sample
OLD_FILES+=usr/libexec/lpr/ru/koi2alt
OLD_FILES+=usr/libexec/lpr/ru/koi2855
OLD_DIRS+=usr/libexec/lpr/ru
OLD_FILES+=usr/libexec/lpr/lpf
OLD_DIRS+=usr/libexec/lpr
OLD_FILES+=usr/sbin/chkprintcap
OLD_FILES+=usr/sbin/lpc
OLD_FILES+=usr/sbin/lpd
OLD_FILES+=usr/sbin/lptest
OLD_FILES+=usr/sbin/pac
OLD_FILES+=usr/share/doc/smm/07.lpd/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/07.lpd
OLD_FILES+=usr/share/examples/etc/hosts.lpd
OLD_FILES+=usr/share/examples/etc/printcap
OLD_FILES+=usr/share/man/man1/lp.1.gz
OLD_FILES+=usr/share/man/man1/lpq.1.gz
OLD_FILES+=usr/share/man/man1/lpr.1.gz
OLD_FILES+=usr/share/man/man1/lprm.1.gz
OLD_FILES+=usr/share/man/man1/lptest.1.gz
OLD_FILES+=usr/share/man/man5/printcap.5.gz
OLD_FILES+=usr/share/man/man8/chkprintcap.8.gz
OLD_FILES+=usr/share/man/man8/lpc.8.gz
OLD_FILES+=usr/share/man/man8/lpd.8.gz
OLD_FILES+=usr/share/man/man8/pac.8.gz
.endif
.if ${MK_MAIL} == no
OLD_FILES+=etc/aliases
OLD_FILES+=etc/mail.rc
OLD_FILES+=etc/mail/aliases
OLD_FILES+=etc/mail/mailer.conf
OLD_FILES+=etc/periodic/daily/130.clean-msgs
OLD_FILES+=etc/rc.d/othermta
OLD_FILES+=usr/bin/Mail
OLD_FILES+=usr/bin/biff
OLD_FILES+=usr/bin/from
OLD_FILES+=usr/bin/mail
OLD_FILES+=usr/bin/mailx
OLD_FILES+=usr/bin/msgs
OLD_FILES+=usr/libexec/comsat
OLD_FILES+=usr/share/examples/etc/mail.rc
OLD_FILES+=usr/share/man/man1/Mail.1.gz
OLD_FILES+=usr/share/man/man1/biff.1.gz
OLD_FILES+=usr/share/man/man1/from.1.gz
OLD_FILES+=usr/share/man/man1/mail.1.gz
OLD_FILES+=usr/share/man/man1/mailx.1.gz
OLD_FILES+=usr/share/man/man1/msgs.1.gz
OLD_FILES+=usr/share/man/man8/comsat.8.gz
OLD_FILES+=usr/share/misc/mail.help
OLD_FILES+=usr/share/misc/mail.tildehelp
.endif
.if ${MK_MAILWRAPPER} == no
OLD_FILES+=etc/mail/mailer.conf
# Don't remove, for no mailwrapper case:
# /usr/sbin/sendmail -> /usr/sbin/mailwrapper
# /usr/sbin/mailwrapper -> /usr/libexec/sendmail/sendmail
#OLD_FILES+=usr/sbin/mailwrapper
OLD_FILES+=usr/share/man/man8/mailwrapper.8.gz
.endif
.if ${MK_MAKE} == no
OLD_FILES+=usr/bin/make
OLD_FILES+=usr/share/man/man1/make.1.gz
OLD_FILES+=usr/share/mk/atf.test.mk
OLD_FILES+=usr/share/mk/bsd.README
OLD_FILES+=usr/share/mk/bsd.arch.inc.mk
OLD_FILES+=usr/share/mk/bsd.compiler.mk
OLD_FILES+=usr/share/mk/bsd.cpu.mk
OLD_FILES+=usr/share/mk/bsd.crunchgen.mk
OLD_FILES+=usr/share/mk/bsd.dep.mk
OLD_FILES+=usr/share/mk/bsd.doc.mk
OLD_FILES+=usr/share/mk/bsd.dtb.mk
OLD_FILES+=usr/share/mk/bsd.endian.mk
OLD_FILES+=usr/share/mk/bsd.files.mk
OLD_FILES+=usr/share/mk/bsd.incs.mk
OLD_FILES+=usr/share/mk/bsd.info.mk
OLD_FILES+=usr/share/mk/bsd.init.mk
OLD_FILES+=usr/share/mk/bsd.kmod.mk
OLD_FILES+=usr/share/mk/bsd.lib.mk
OLD_FILES+=usr/share/mk/bsd.libnames.mk
OLD_FILES+=usr/share/mk/bsd.links.mk
OLD_FILES+=usr/share/mk/bsd.man.mk
OLD_FILES+=usr/share/mk/bsd.mkopt.mk
OLD_FILES+=usr/share/mk/bsd.nls.mk
OLD_FILES+=usr/share/mk/bsd.obj.mk
OLD_FILES+=usr/share/mk/bsd.opts.mk
OLD_FILES+=usr/share/mk/bsd.own.mk
OLD_FILES+=usr/share/mk/bsd.port.mk
OLD_FILES+=usr/share/mk/bsd.port.options.mk
OLD_FILES+=usr/share/mk/bsd.port.post.mk
OLD_FILES+=usr/share/mk/bsd.port.pre.mk
OLD_FILES+=usr/share/mk/bsd.port.subdir.mk
OLD_FILES+=usr/share/mk/bsd.prog.mk
OLD_FILES+=usr/share/mk/bsd.progs.mk
OLD_FILES+=usr/share/mk/bsd.snmpmod.mk
OLD_FILES+=usr/share/mk/bsd.subdir.mk
OLD_FILES+=usr/share/mk/bsd.symver.mk
OLD_FILES+=usr/share/mk/bsd.sys.mk
OLD_FILES+=usr/share/mk/bsd.test.mk
OLD_FILES+=usr/share/mk/plain.test.mk
OLD_FILES+=usr/share/mk/suite.test.mk
OLD_FILES+=usr/share/mk/sys.mk
OLD_FILES+=usr/share/mk/tap.test.mk
OLD_FILES+=usr/share/mk/version_gen.awk
OLD_FILES+=usr/tests/usr.bin/bmake/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/archives/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.3
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.4
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.5
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.6
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.status.7
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.3
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.4
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.5
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.6
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stderr.7
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.3
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.4
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.5
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.6
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/expected.stdout.7
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd/libtest.a
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.3
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.4
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.5
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.6
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.status.7
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.3
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.4
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.5
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.6
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stderr.7
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.3
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.4
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.5
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.6
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/expected.stdout.7
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_44bsd_mod/libtest.a
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.3
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.4
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.5
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.6
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.status.7
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.3
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.4
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.5
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.6
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stderr.7
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.3
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.4
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.5
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.6
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/expected.stdout.7
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/archives/fmt_oldbsd/libtest.a
OLD_FILES+=usr/tests/usr.bin/bmake/basic/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t0/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t0/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t0/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t0/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t0/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t1/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t1/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t1/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t1/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t1/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t1/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t2/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t2/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t2/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t2/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t2/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t2/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t3/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t3/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t3/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t3/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/basic/t3/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/common.sh
OLD_FILES+=usr/tests/usr.bin/bmake/execution/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/execution/ellipsis/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/execution/ellipsis/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/execution/ellipsis/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/execution/ellipsis/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/execution/ellipsis/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/execution/ellipsis/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/execution/empty/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/execution/empty/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/execution/empty/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/execution/empty/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/execution/empty/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/execution/empty/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/execution/joberr/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/execution/joberr/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/execution/joberr/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/execution/joberr/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/execution/joberr/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/execution/joberr/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/execution/plus/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/execution/plus/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/execution/plus/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/execution/plus/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/execution/plus/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/execution/plus/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/shell/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/shell/builtin/sh
OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/shell/meta/sh
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path/sh
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/shell/path_select/shell
OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/shell/replace/shell
OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/shell/select/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/TEST1.a
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/basic/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/TEST1.a
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/TEST2.a
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild1/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/TEST1.a
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/TEST2.a
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/suffixes/src_wild2/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/directive-t0/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/directive-t0/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/directive-t0/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/directive-t0/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/directive-t0/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/directive-t0/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.status.3
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.status.4
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.status.5
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stderr.3
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stderr.4
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stderr.5
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stdout.3
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stdout.4
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/expected.stdout.5
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/enl/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/funny-targets/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/syntax/semi/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/1/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/1/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/1/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/1/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/1/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/1/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/2/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/mk/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t0/mk/sys.mk
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/1/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/1/cleanup
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/1/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/1/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/1/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/1/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/2/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/mk/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t1/mk/sys.mk
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/1/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/1/cleanup
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/1/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/1/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/1/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/1/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/2/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/mk/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/sysmk/t2/mk/sys.mk
OLD_FILES+=usr/tests/usr.bin/bmake/test-new.mk
OLD_FILES+=usr/tests/usr.bin/bmake/variables/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_M/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_M/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_M/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_M/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_M/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_M/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.status.3
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.stderr.3
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/expected.stdout.3
OLD_FILES+=usr/tests/usr.bin/bmake/variables/modifier_t/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/expected.status.2
OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/bmake/variables/opt_V/legacy_test
OLD_FILES+=usr/tests/usr.bin/bmake/variables/t0/Kyuafile
OLD_FILES+=usr/tests/usr.bin/bmake/variables/t0/Makefile.test
OLD_FILES+=usr/tests/usr.bin/bmake/variables/t0/expected.status.1
OLD_FILES+=usr/tests/usr.bin/bmake/variables/t0/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/bmake/variables/t0/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/bmake/variables/t0/legacy_test
.endif
.if ${MK_MAN} == no
MAN_FILES!=find ${DESTDIR}/usr/share/man ${DESTDIR}/usr/share/openssl/man -type f | sed -e 's,^${DESTDIR}/,,'; echo
OLD_FILES+=${MAN_FILES}
MAN_DIRS!=find ${DESTDIR}/usr/share/man ${DESTDIR}/usr/share/openssl/man -type d | sed -e 's,^${DESTDIR}/,,'; echo
OLD_DIRS+=${MAN_DIRS}
.endif
.if ${MK_MAN_UTILS} == no
OLD_FILES+=etc/periodic/weekly/320.whatis
OLD_FILES+=usr/bin/apropos
OLD_FILES+=usr/bin/makewhatis
OLD_FILES+=usr/bin/man
OLD_FILES+=usr/bin/manpath
OLD_FILES+=usr/bin/whatis
OLD_FILES+=usr/libexec/makewhatis.local
OLD_FILES+=usr/sbin/manctl
OLD_FILES+=usr/share/man/man1/apropos.1.gz
OLD_FILES+=usr/share/man/man1/makewhatis.1.gz
OLD_FILES+=usr/share/man/man1/man.1.gz
OLD_FILES+=usr/share/man/man1/manpath.1.gz
OLD_FILES+=usr/share/man/man1/whatis.1.gz
OLD_FILES+=usr/share/man/man5/man.conf.5.gz
OLD_FILES+=usr/share/man/man8/makewhatis.local.8.gz
OLD_FILES+=usr/share/man/man8/manctl.8.gz
OLD_FILES+=usr/share/man/whatis
OLD_FILES+=usr/share/openssl/man/whatis
.endif
.if ${MK_NDIS} == no
OLD_FILES+=usr/sbin/ndiscvt
OLD_FILES+=usr/sbin/ndisgen
OLD_FILES+=usr/share/man/man8/ndiscvt.8.gz
OLD_FILES+=usr/share/man/man8/ndisgen.8.gz
OLD_FILES+=usr/share/misc/windrv_stub.c
.endif
.if ${MK_NETCAT} == no
OLD_FILES+=rescue/nc
OLD_FILES+=usr/bin/nc
OLD_FILES+=usr/share/man/man1/nc.1.gz
.endif
.if ${MK_NETGRAPH} == no
OLD_FILES+=usr/include/netgraph.h
OLD_FILES+=usr/lib/libnetgraph.a
OLD_FILES+=usr/lib/libnetgraph.so
OLD_LIBS+=usr/lib/libnetgraph.so.4
OLD_FILES+=usr/lib/libnetgraph_p.a
OLD_FILES+=usr/lib32/libnetgraph.a
OLD_FILES+=usr/lib32/libnetgraph.so
OLD_LIBS+=usr/lib32/libnetgraph.so.4
OLD_FILES+=usr/lib32/libnetgraph_p.a
OLD_FILES+=usr/libexec/pppoed
OLD_FILES+=usr/sbin/flowctl
OLD_FILES+=usr/sbin/lmcconfig
OLD_FILES+=usr/sbin/ngctl
OLD_FILES+=usr/sbin/nghook
OLD_FILES+=usr/share/man/man3/NgAllocRecvAsciiMsg.3.gz
OLD_FILES+=usr/share/man/man3/NgAllocRecvData.3.gz
OLD_FILES+=usr/share/man/man3/NgAllocRecvMsg.3.gz
OLD_FILES+=usr/share/man/man3/NgMkSockNode.3.gz
OLD_FILES+=usr/share/man/man3/NgNameNode.3.gz
OLD_FILES+=usr/share/man/man3/NgRecvAsciiMsg.3.gz
OLD_FILES+=usr/share/man/man3/NgRecvData.3.gz
OLD_FILES+=usr/share/man/man3/NgRecvMsg.3.gz
OLD_FILES+=usr/share/man/man3/NgSendAsciiMsg.3.gz
OLD_FILES+=usr/share/man/man3/NgSendData.3.gz
OLD_FILES+=usr/share/man/man3/NgSendMsg.3.gz
OLD_FILES+=usr/share/man/man3/NgSendReplyMsg.3.gz
OLD_FILES+=usr/share/man/man3/NgSetDebug.3.gz
OLD_FILES+=usr/share/man/man3/NgSetErrLog.3.gz
OLD_FILES+=usr/share/man/man3/netgraph.3.gz
OLD_FILES+=usr/share/man/man8/flowctl.8.gz
OLD_FILES+=usr/share/man/man8/lmcconfig.8.gz
OLD_FILES+=usr/share/man/man8/ngctl.8.gz
OLD_FILES+=usr/share/man/man8/nghook.8.gz
OLD_FILES+=usr/share/man/man8/pppoed.8.gz
.endif
.if ${MK_IPFW} == no || ${MK_NETGRAPH} == no
OLD_FILES+=etc/rc.d/ipfw_netflow
.endif
.if ${MK_NETGRAPH_SUPPORT} == no
OLD_FILES+=usr/include/bsnmp/snmp_netgraph.h
OLD_FILES+=usr/lib/snmp_netgraph.so
OLD_LIBS+=usr/lib/snmp_netgraph.so.6
OLD_FILES+=usr/share/man/man3/snmp_netgraph.3.gz
OLD_FILES+=usr/share/snmp/defs/netgraph_tree.def
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-NETGRAPH.txt
.endif
.if ${MK_NIS} == no
OLD_FILES+=etc/rc.d/ypbind
OLD_FILES+=etc/rc.d/ypldap
OLD_FILES+=etc/rc.d/yppasswdd
OLD_FILES+=etc/rc.d/ypserv
OLD_FILES+=etc/rc.d/ypset
OLD_FILES+=etc/rc.d/ypupdated
OLD_FILES+=etc/rc.d/ypxfrd
OLD_FILES+=usr/bin/ypcat
OLD_FILES+=usr/bin/ypchfn
OLD_FILES+=usr/bin/ypchpass
OLD_FILES+=usr/bin/ypchsh
OLD_FILES+=usr/bin/ypmatch
OLD_FILES+=usr/bin/yppasswd
OLD_FILES+=usr/bin/ypwhich
OLD_FILES+=usr/include/ypclnt.h
OLD_FILES+=usr/lib/libypclnt.a
OLD_FILES+=usr/lib/libypclnt.so
OLD_LIBS+=usr/lib/libypclnt.so.4
OLD_FILES+=usr/lib/libypclnt_p.a
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/libypclnt.a
OLD_FILES+=usr/lib32/libypclnt.so
OLD_LIBS+=usr/lib32/libypclnt.so.4
OLD_FILES+=usr/lib32/libypclnt_p.a
.endif
OLD_FILES+=usr/libexec/mknetid
OLD_FILES+=usr/libexec/yppwupdate
OLD_FILES+=usr/libexec/ypxfr
OLD_FILES+=usr/sbin/rpc.yppasswdd
OLD_FILES+=usr/sbin/rpc.ypupdated
OLD_FILES+=usr/sbin/rpc.ypxfrd
OLD_FILES+=usr/sbin/yp_mkdb
OLD_FILES+=usr/sbin/ypbind
OLD_FILES+=usr/sbin/ypinit
OLD_FILES+=usr/sbin/ypldap
OLD_FILES+=usr/sbin/yppoll
OLD_FILES+=usr/sbin/yppush
OLD_FILES+=usr/sbin/ypserv
OLD_FILES+=usr/sbin/ypset
OLD_FILES+=usr/share/man/man1/ypcat.1.gz
OLD_FILES+=usr/share/man/man1/ypchfn.1.gz
OLD_FILES+=usr/share/man/man1/ypchpass.1.gz
OLD_FILES+=usr/share/man/man1/ypchsh.1.gz
OLD_FILES+=usr/share/man/man1/ypmatch.1.gz
OLD_FILES+=usr/share/man/man1/yppasswd.1.gz
OLD_FILES+=usr/share/man/man1/ypwhich.1.gz
OLD_FILES+=usr/share/man/man5/netid.5.gz
OLD_FILES+=usr/share/man/man5/ypldap.conf.5.gz
OLD_FILES+=usr/share/man/man8/mknetid.8.gz
OLD_FILES+=usr/share/man/man8/rpc.yppasswdd.8.gz
OLD_FILES+=usr/share/man/man8/rpc.ypxfrd.8.gz
OLD_FILES+=usr/share/man/man8/NIS.8.gz
OLD_FILES+=usr/share/man/man8/YP.8.gz
OLD_FILES+=usr/share/man/man8/yp.8.gz
OLD_FILES+=usr/share/man/man8/nis.8.gz
OLD_FILES+=usr/share/man/man8/yp_mkdb.8.gz
OLD_FILES+=usr/share/man/man8/ypbind.8.gz
OLD_FILES+=usr/share/man/man8/ypinit.8.gz
OLD_FILES+=usr/share/man/man8/ypldap.8.gz
OLD_FILES+=usr/share/man/man8/yppoll.8.gz
OLD_FILES+=usr/share/man/man8/yppush.8.gz
OLD_FILES+=usr/share/man/man8/ypserv.8.gz
OLD_FILES+=usr/share/man/man8/ypset.8.gz
OLD_FILES+=usr/share/man/man8/ypxfr.8.gz
OLD_FILES+=var/yp/Makefile
OLD_FILES+=var/yp/Makefile.dist
OLD_DIRS+=var/yp
.endif
.if ${MK_NLS} == no
OLD_DIRS+=usr/share/nls/
OLD_DIRS+=usr/share/nls/C
OLD_FILES+=usr/share/nls/C/ee.cat
OLD_DIRS+=usr/share/nls/af_ZA.ISO8859-1
OLD_DIRS+=usr/share/nls/af_ZA.ISO8859-15
OLD_DIRS+=usr/share/nls/af_ZA.UTF-8
OLD_DIRS+=usr/share/nls/am_ET.UTF-8
OLD_DIRS+=usr/share/nls/be_BY.CP1131
OLD_DIRS+=usr/share/nls/be_BY.CP1251
OLD_DIRS+=usr/share/nls/be_BY.ISO8859-5
OLD_DIRS+=usr/share/nls/be_BY.UTF-8
OLD_FILES+=usr/share/nls/be_BY.UTF-8/libc.cat
OLD_DIRS+=usr/share/nls/bg_BG.CP1251
OLD_DIRS+=usr/share/nls/bg_BG.UTF-8
OLD_DIRS+=usr/share/nls/ca_ES.ISO8859-1
OLD_FILES+=usr/share/nls/ca_ES.ISO8859-1/libc.cat
OLD_DIRS+=usr/share/nls/ca_ES.ISO8859-15
OLD_DIRS+=usr/share/nls/ca_ES.UTF-8
OLD_DIRS+=usr/share/nls/cs_CZ.ISO8859-2
OLD_DIRS+=usr/share/nls/cs_CZ.UTF-8
OLD_DIRS+=usr/share/nls/da_DK.ISO8859-1
OLD_DIRS+=usr/share/nls/da_DK.ISO8859-15
OLD_DIRS+=usr/share/nls/da_DK.UTF-8
OLD_DIRS+=usr/share/nls/de_AT.ISO8859-1
OLD_FILES+=usr/share/nls/de_AT.ISO8859-1/ee.cat
OLD_FILES+=usr/share/nls/de_AT.ISO8859-1/tcsh.cat
OLD_DIRS+=usr/share/nls/de_AT.ISO8859-15
OLD_FILES+=usr/share/nls/de_AT.ISO8859-15/ee.cat
OLD_FILES+=usr/share/nls/de_AT.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/de_AT.UTF-8
OLD_FILES+=usr/share/nls/de_AT.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/de_CH.ISO8859-1
OLD_FILES+=usr/share/nls/de_CH.ISO8859-1/ee.cat
OLD_FILES+=usr/share/nls/de_CH.ISO8859-1/tcsh.cat
OLD_DIRS+=usr/share/nls/de_CH.ISO8859-15
OLD_FILES+=usr/share/nls/de_CH.ISO8859-15/ee.cat
OLD_FILES+=usr/share/nls/de_CH.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/de_CH.UTF-8
OLD_FILES+=usr/share/nls/de_CH.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/de_DE.ISO8859-1
OLD_FILES+=usr/share/nls/de_DE.ISO8859-1/ee.cat
OLD_FILES+=usr/share/nls/de_DE.ISO8859-1/libc.cat
OLD_FILES+=usr/share/nls/de_DE.ISO8859-1/tcsh.cat
OLD_DIRS+=usr/share/nls/de_DE.ISO8859-15
OLD_FILES+=usr/share/nls/de_DE.ISO8859-15/ee.cat
OLD_FILES+=usr/share/nls/de_DE.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/de_DE.UTF-8
OLD_FILES+=usr/share/nls/de_DE.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/el_GR.ISO8859-7
OLD_FILES+=usr/share/nls/el_GR.ISO8859-7/libc.cat
OLD_FILES+=usr/share/nls/el_GR.ISO8859-7/tcsh.cat
OLD_DIRS+=usr/share/nls/el_GR.UTF-8
OLD_FILES+=usr/share/nls/el_GR.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/en_AU.ISO8859-1
OLD_DIRS+=usr/share/nls/en_AU.ISO8859-15
OLD_DIRS+=usr/share/nls/en_AU.US-ASCII
OLD_DIRS+=usr/share/nls/en_AU.UTF-8
OLD_DIRS+=usr/share/nls/en_CA.ISO8859-1
OLD_FILES+=usr/share/nls/en_US.ISO8859-1/ee.cat
OLD_DIRS+=usr/share/nls/en_CA.ISO8859-15
OLD_DIRS+=usr/share/nls/en_CA.US-ASCII
OLD_DIRS+=usr/share/nls/en_CA.UTF-8
OLD_DIRS+=usr/share/nls/en_GB.ISO8859-1
OLD_DIRS+=usr/share/nls/en_GB.ISO8859-15
OLD_DIRS+=usr/share/nls/en_GB.US-ASCII
OLD_DIRS+=usr/share/nls/en_GB.UTF-8
OLD_DIRS+=usr/share/nls/en_IE.UTF-8
OLD_DIRS+=usr/share/nls/en_NZ.ISO8859-1
OLD_DIRS+=usr/share/nls/en_NZ.ISO8859-15
OLD_DIRS+=usr/share/nls/en_NZ.US-ASCII
OLD_DIRS+=usr/share/nls/en_NZ.UTF-8
OLD_DIRS+=usr/share/nls/en_US.ISO8859-1
OLD_DIRS+=usr/share/nls/en_US.ISO8859-15
OLD_FILES+=usr/share/nls/en_US.ISO8859-15/ee.cat
OLD_DIRS+=usr/share/nls/en_US.UTF-8
OLD_DIRS+=usr/share/nls/es_ES.UTF-8
OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/grep.cat
OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/libc.cat
OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/tcsh.cat
OLD_DIRS+=usr/share/nls/es_ES.ISO8859-1
OLD_DIRS+=usr/share/nls/es_ES.ISO8859-15
OLD_FILES+=usr/share/nls/es_ES.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/es_ES.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/et_EE.ISO8859-15
OLD_FILES+=usr/share/nls/et_EE.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/et_EE.UTF-8
OLD_FILES+=usr/share/nls/et_EE.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/fi_FI.ISO8859-1
OLD_FILES+=usr/share/nls/fi_FI.ISO8859-1/libc.cat
OLD_FILES+=usr/share/nls/fi_FI.ISO8859-1/tcsh.cat
OLD_DIRS+=usr/share/nls/fi_FI.ISO8859-15
OLD_FILES+=usr/share/nls/fi_FI.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/fi_FI.UTF-8
OLD_FILES+=usr/share/nls/fi_FI.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_BE.ISO8859-1
OLD_FILES+=usr/share/nls/fr_BE.ISO8859-1/ee.cat
OLD_FILES+=usr/share/nls/fr_BE.ISO8859-1/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_BE.ISO8859-15
OLD_FILES+=usr/share/nls/fr_BE.ISO8859-15/ee.cat
OLD_FILES+=usr/share/nls/fr_BE.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_BE.UTF-8
OLD_FILES+=usr/share/nls/fr_BE.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_CA.ISO8859-1
OLD_FILES+=usr/share/nls/fr_CA.ISO8859-1/ee.cat
OLD_FILES+=usr/share/nls/fr_CA.ISO8859-1/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_CA.ISO8859-15
OLD_FILES+=usr/share/nls/fr_CA.ISO8859-15/ee.cat
OLD_FILES+=usr/share/nls/fr_CA.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_CA.UTF-8
OLD_FILES+=usr/share/nls/fr_CA.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_CH.ISO8859-1
OLD_FILES+=usr/share/nls/fr_CH.ISO8859-1/ee.cat
OLD_FILES+=usr/share/nls/fr_CH.ISO8859-1/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_CH.ISO8859-15
OLD_FILES+=usr/share/nls/fr_CH.ISO8859-15/ee.cat
OLD_FILES+=usr/share/nls/fr_CH.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_CH.UTF-8
OLD_FILES+=usr/share/nls/fr_CH.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_FR.ISO8859-1
OLD_FILES+=usr/share/nls/fr_FR.ISO8859-1/ee.cat
OLD_FILES+=usr/share/nls/fr_FR.ISO8859-1/libc.cat
OLD_FILES+=usr/share/nls/fr_FR.ISO8859-1/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_FR.ISO8859-15
OLD_FILES+=usr/share/nls/fr_FR.ISO8859-15/ee.cat
OLD_FILES+=usr/share/nls/fr_FR.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/fr_FR.UTF-8
OLD_FILES+=usr/share/nls/fr_FR.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/gl_ES.ISO8859-1
OLD_FILES+=usr/share/nls/gl_ES.ISO8859-1/grep.cat
OLD_FILES+=usr/share/nls/gl_ES.ISO8859-1/libc.cat
OLD_DIRS+=usr/share/nls/he_IL.UTF-8
OLD_DIRS+=usr/share/nls/hi_IN.ISCII-DEV
OLD_DIRS+=usr/share/nls/hr_HR.ISO8859-2
OLD_DIRS+=usr/share/nls/hu_HU.ISO8859-2
OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/ee.cat
OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/grep.cat
OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/libc.cat
OLD_FILES+=usr/share/nls/hu_HU.ISO8859-2/sort.cat
OLD_DIRS+=usr/share/nls/hr_HR.UTF-8
OLD_DIRS+=usr/share/nls/hu_HU.UTF-8
OLD_DIRS+=usr/share/nls/hy_AM.ARMSCII-8
OLD_DIRS+=usr/share/nls/hy_AM.UTF-8
OLD_DIRS+=usr/share/nls/is_IS.ISO8859-1
OLD_DIRS+=usr/share/nls/is_IS.ISO8859-15
OLD_DIRS+=usr/share/nls/is_IS.UTF-8
OLD_DIRS+=usr/share/nls/it_CH.ISO8859-1
OLD_FILES+=usr/share/nls/it_CH.ISO8859-1/tcsh.cat
OLD_DIRS+=usr/share/nls/it_CH.ISO8859-15
OLD_FILES+=usr/share/nls/it_CH.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/it_CH.UTF-8
OLD_FILES+=usr/share/nls/it_CH.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/it_IT.ISO8859-1
OLD_FILES+=usr/share/nls/it_IT.ISO8859-1/tcsh.cat
OLD_DIRS+=usr/share/nls/it_IT.ISO8859-15
OLD_FILES+=usr/share/nls/it_IT.ISO8859-15/libc.cat
OLD_FILES+=usr/share/nls/it_IT.ISO8859-15/tcsh.cat
OLD_DIRS+=usr/share/nls/it_IT.UTF-8
OLD_FILES+=usr/share/nls/it_IT.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/ja_JP.SJIS
OLD_FILES+=usr/share/nls/ja_JP.SJIS/grep.cat
OLD_FILES+=usr/share/nls/ja_JP.SJIS/tcsh.cat
OLD_DIRS+=usr/share/nls/ja_JP.UTF-8
OLD_FILES+=usr/share/nls/ja_JP.UTF-8/grep.cat
OLD_FILES+=usr/share/nls/ja_JP.UTF-8/libc.cat
OLD_FILES+=usr/share/nls/ja_JP.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/ja_JP.eucJP
OLD_FILES+=usr/share/nls/ja_JP.eucJP/grep.cat
OLD_FILES+=usr/share/nls/ja_JP.eucJP/libc.cat
OLD_FILES+=usr/share/nls/ja_JP.eucJP/tcsh.cat
OLD_DIRS+=usr/share/nls/kk_KZ.PT154
OLD_DIRS+=usr/share/nls/kk_KZ.UTF-8
OLD_DIRS+=usr/share/nls/ko_KR.CP949
OLD_DIRS+=usr/share/nls/ko_KR.UTF-8
OLD_FILES+=usr/share/nls/ko_KR.UTF-8/libc.cat
OLD_DIRS+=usr/share/nls/ko_KR.eucKR
OLD_FILES+=usr/share/nls/ko_KR.eucKR/libc.cat
OLD_DIRS+=usr/share/nls/lv_LV.UTF-8
OLD_DIRS+=usr/share/nls/lt_LT.ISO8859-13
OLD_DIRS+=usr/share/nls/lt_LT.UTF-8
OLD_DIRS+=usr/share/nls/lv_LV.ISO8859-13
OLD_DIRS+=usr/share/nls/mn_MN.UTF-8
OLD_FILES+=usr/share/nls/mn_MN.UTF-8/libc.cat
OLD_DIRS+=usr/share/nls/nl_BE.ISO8859-1
OLD_DIRS+=usr/share/nls/nl_BE.ISO8859-15
OLD_DIRS+=usr/share/nls/nl_BE.UTF-8
OLD_DIRS+=usr/share/nls/no_NO.ISO8859-1
OLD_FILES+=usr/share/nls/nl_NL.ISO8859-1/libc.cat
OLD_DIRS+=usr/share/nls/nl_NL.ISO8859-15
OLD_DIRS+=usr/share/nls/nl_NL.ISO8859-1
OLD_FILES+=usr/share/nls/no_NO.ISO8859-1/libc.cat
OLD_DIRS+=usr/share/nls/no_NO.ISO8859-15
OLD_DIRS+=usr/share/nls/nl_NL.UTF-8
OLD_DIRS+=usr/share/nls/no_NO.UTF-8
OLD_DIRS+=usr/share/nls/pl_PL.ISO8859-2
OLD_FILES+=usr/share/nls/pl_PL.ISO8859-2/ee.cat
OLD_FILES+=usr/share/nls/pl_PL.ISO8859-2/libc.cat
OLD_DIRS+=usr/share/nls/pl_PL.UTF-8
OLD_DIRS+=usr/share/nls/pt_BR.ISO8859-1
OLD_DIRS+=usr/share/nls/pt_BR.UTF-8
OLD_DIRS+=usr/share/nls/pt_PT.ISO8859-1
OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/ee.cat
OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/grep.cat
OLD_FILES+=usr/share/nls/pt_BR.ISO8859-1/libc.cat
OLD_FILES+=usr/share/nls/pt_PT.ISO8859-1/ee.cat
OLD_DIRS+=usr/share/nls/pt_PT.ISO8859-15
OLD_DIRS+=usr/share/nls/pt_PT.UTF-8
OLD_DIRS+=usr/share/nls/ro_RO.ISO8859-2
OLD_DIRS+=usr/share/nls/ro_RO.UTF-8
OLD_DIRS+=usr/share/nls/ru_RU.CP1251
OLD_FILES+=usr/share/nls/ru_RU.CP1251/tcsh.cat
OLD_DIRS+=usr/share/nls/ru_RU.CP866
OLD_FILES+=usr/share/nls/ru_RU.CP866/tcsh.cat
OLD_DIRS+=usr/share/nls/ru_RU.ISO8859-5
OLD_FILES+=usr/share/nls/ru_RU.ISO8859-5/tcsh.cat
OLD_DIRS+=usr/share/nls/ru_RU.KOI8-R
OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/ee.cat
OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/grep.cat
OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/libc.cat
OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/tcsh.cat
OLD_DIRS+=usr/share/nls/ru_RU.UTF-8
OLD_FILES+=usr/share/nls/ru_RU.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/sk_SK.ISO8859-2
OLD_FILES+=usr/share/nls/sk_SK.ISO8859-2/libc.cat
OLD_DIRS+=usr/share/nls/sk_SK.UTF-8
OLD_DIRS+=usr/share/nls/sl_SI.ISO8859-2
OLD_DIRS+=usr/share/nls/sl_SI.UTF-8
OLD_DIRS+=usr/share/nls/sr_YU.ISO8859-2
OLD_DIRS+=usr/share/nls/sr_YU.ISO8859-5
OLD_DIRS+=usr/share/nls/sr_YU.UTF-8
OLD_DIRS+=usr/share/nls/sv_SE.ISO8859-1
OLD_FILES+=usr/share/nls/sv_SE.ISO8859-1/libc.cat
OLD_DIRS+=usr/share/nls/sv_SE.ISO8859-15
OLD_DIRS+=usr/share/nls/sv_SE.UTF-8
OLD_DIRS+=usr/share/nls/tr_TR.ISO8859-9
OLD_DIRS+=usr/share/nls/tr_TR.UTF-8
OLD_DIRS+=usr/share/nls/uk_UA.ISO8859-5
OLD_FILES+=usr/share/nls/uk_UA.ISO8859-5/tcsh.cat
OLD_DIRS+=usr/share/nls/uk_UA.KOI8-U
OLD_FILES+=usr/share/nls/uk_UA.KOI8-U/ee.cat
OLD_FILES+=usr/share/nls/uk_UA.KOI8-U/tcsh.cat
OLD_DIRS+=usr/share/nls/uk_UA.UTF-8
OLD_FILES+=usr/share/nls/uk_UA.UTF-8/grep.cat
OLD_FILES+=usr/share/nls/uk_UA.UTF-8/libc.cat
OLD_FILES+=usr/share/nls/uk_UA.UTF-8/tcsh.cat
OLD_DIRS+=usr/share/nls/zh_CN.GB18030
OLD_FILES+=usr/share/nls/zh_CN.GB18030/libc.cat
OLD_DIRS+=usr/share/nls/zh_CN.GBK
OLD_DIRS+=usr/share/nls/zh_CN.GB2312
OLD_FILES+=usr/share/nls/zh_CN.GB2312/libc.cat
OLD_DIRS+=usr/share/nls/zh_CN.UTF-8
OLD_FILES+=usr/share/nls/zh_CN.UTF-8/grep.cat
OLD_FILES+=usr/share/nls/zh_CN.UTF-8/libc.cat
OLD_DIRS+=usr/share/nls/zh_CN.eucCN
OLD_DIRS+=usr/share/nls/zh_HK.UTF-8
OLD_DIRS+=usr/share/nls/zh_TW.UTF-8
OLD_FILES+=usr/tests/bin/sh/builtins/locale1.0
.endif
.if ${MK_NLS_CATALOGS} == no
OLD_FILES+=usr/share/nls/de_AT.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/de_CH.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/de_DE.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/el_GR.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/es_ES.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/et_EE.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/fi_FI.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/fr_BE.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/fr_CA.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/fr_CH.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/fr_FR.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/it_CH.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/it_IT.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/ja_JP.SJIS/tcsh.cat
OLD_FILES+=usr/share/nls/ja_JP.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/ru_RU.CP1251/tcsh.cat
OLD_FILES+=usr/share/nls/ru_RU.CP866/tcsh.cat
OLD_FILES+=usr/share/nls/ru_RU.ISO8859-5/tcsh.cat
OLD_FILES+=usr/share/nls/ru_RU.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/uk_UA.ISO8859-5/tcsh.cat
OLD_FILES+=usr/share/nls/uk_UA.UTF-8/tcsh.cat
.endif
.if ${MK_NS_CACHING} == no
OLD_FILES+=etc/nscd.conf
OLD_FILES+=etc/rc.d/nscd
OLD_FILES+=usr/sbin/nscd
OLD_FILES+=usr/share/examples/etc/nscd.conf
OLD_FILES+=usr/share/man/man5/nscd.conf.5.gz
OLD_FILES+=usr/share/man/man8/nscd.8.gz
.endif
.if ${MK_NTP} == no
OLD_FILES+=etc/ntp/leap-seconds
OLD_DIRS+=etc/ntp
OLD_FILES+=etc/ntp.conf
OLD_FILES+=etc/periodic/daily/480.status-ntpd
OLD_FILES+=etc/periodic/daily/480.leapfile-ntpd
OLD_FILES+=etc/rc.d/ntpd
OLD_FILES+=usr/bin/ntpq
OLD_FILES+=usr/sbin/ntp-keygen
OLD_FILES+=usr/sbin/ntpd
OLD_FILES+=usr/sbin/ntpdate
OLD_FILES+=usr/sbin/ntpdc
OLD_FILES+=usr/sbin/ntptime
OLD_FILES+=usr/sbin/sntp
OLD_FILES+=usr/share/doc/ntp/access.html
OLD_FILES+=usr/share/doc/ntp/accopt.html
OLD_FILES+=usr/share/doc/ntp/assoc.html
OLD_FILES+=usr/share/doc/ntp/audio.html
OLD_FILES+=usr/share/doc/ntp/authentic.html
OLD_FILES+=usr/share/doc/ntp/authopt.html
OLD_FILES+=usr/share/doc/ntp/autokey.html
OLD_FILES+=usr/share/doc/ntp/bugs.html
OLD_FILES+=usr/share/doc/ntp/build.html
OLD_FILES+=usr/share/doc/ntp/clock.html
OLD_FILES+=usr/share/doc/ntp/clockopt.html
OLD_FILES+=usr/share/doc/ntp/cluster.html
OLD_FILES+=usr/share/doc/ntp/comdex.html
OLD_FILES+=usr/share/doc/ntp/config.html
OLD_FILES+=usr/share/doc/ntp/confopt.html
OLD_FILES+=usr/share/doc/ntp/copyright.html
OLD_FILES+=usr/share/doc/ntp/debug.html
OLD_FILES+=usr/share/doc/ntp/decode.html
OLD_FILES+=usr/share/doc/ntp/discipline.html
OLD_FILES+=usr/share/doc/ntp/discover.html
OLD_FILES+=usr/share/doc/ntp/driver1.html
OLD_FILES+=usr/share/doc/ntp/driver10.html
OLD_FILES+=usr/share/doc/ntp/driver11.html
OLD_FILES+=usr/share/doc/ntp/driver12.html
OLD_FILES+=usr/share/doc/ntp/driver16.html
OLD_FILES+=usr/share/doc/ntp/driver18.html
OLD_FILES+=usr/share/doc/ntp/driver19.html
OLD_FILES+=usr/share/doc/ntp/driver2.html
OLD_FILES+=usr/share/doc/ntp/driver20.html
OLD_FILES+=usr/share/doc/ntp/driver22.html
OLD_FILES+=usr/share/doc/ntp/driver26.html
OLD_FILES+=usr/share/doc/ntp/driver27.html
OLD_FILES+=usr/share/doc/ntp/driver28.html
OLD_FILES+=usr/share/doc/ntp/driver29.html
OLD_FILES+=usr/share/doc/ntp/driver3.html
OLD_FILES+=usr/share/doc/ntp/driver30.html
OLD_FILES+=usr/share/doc/ntp/driver32.html
OLD_FILES+=usr/share/doc/ntp/driver33.html
OLD_FILES+=usr/share/doc/ntp/driver34.html
OLD_FILES+=usr/share/doc/ntp/driver35.html
OLD_FILES+=usr/share/doc/ntp/driver36.html
OLD_FILES+=usr/share/doc/ntp/driver37.html
OLD_FILES+=usr/share/doc/ntp/driver4.html
OLD_FILES+=usr/share/doc/ntp/driver5.html
OLD_FILES+=usr/share/doc/ntp/driver6.html
OLD_FILES+=usr/share/doc/ntp/driver7.html
OLD_FILES+=usr/share/doc/ntp/driver8.html
OLD_FILES+=usr/share/doc/ntp/driver9.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver1.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver10.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver11.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver12.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver16.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver18.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver19.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver20.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver22.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver26.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver27.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver28.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver29.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver3.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver30.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver31.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver32.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver33.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver34.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver35.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver36.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver37.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver38.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver39.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver4.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver40.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver42.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver43.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver44.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver45.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver46.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver5.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver6.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver7.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver8.html
OLD_FILES+=usr/share/doc/ntp/drivers/driver9.html
OLD_FILES+=usr/share/doc/ntp/drivers/icons/home.gif
OLD_FILES+=usr/share/doc/ntp/drivers/icons/mail2.gif
OLD_FILES+=usr/share/doc/ntp/drivers/mx4200data.html
OLD_FILES+=usr/share/doc/ntp/drivers/oncore-shmem.html
OLD_FILES+=usr/share/doc/ntp/drivers/scripts/footer.txt
OLD_FILES+=usr/share/doc/ntp/drivers/scripts/style.css
OLD_FILES+=usr/share/doc/ntp/drivers/tf582_4.html
OLD_FILES+=usr/share/doc/ntp/extern.html
OLD_FILES+=usr/share/doc/ntp/filter.html
OLD_FILES+=usr/share/doc/ntp/hints.html
OLD_FILES+=usr/share/doc/ntp/hints/a-ux
OLD_FILES+=usr/share/doc/ntp/hints/aix
OLD_FILES+=usr/share/doc/ntp/hints/bsdi
OLD_FILES+=usr/share/doc/ntp/hints/changes
OLD_FILES+=usr/share/doc/ntp/hints/decosf1
OLD_FILES+=usr/share/doc/ntp/hints/decosf2
OLD_FILES+=usr/share/doc/ntp/hints/freebsd
OLD_FILES+=usr/share/doc/ntp/hints/hpux
OLD_FILES+=usr/share/doc/ntp/hints/linux
OLD_FILES+=usr/share/doc/ntp/hints/mpeix
OLD_FILES+=usr/share/doc/ntp/hints/notes-xntp-v3
OLD_FILES+=usr/share/doc/ntp/hints/parse
OLD_FILES+=usr/share/doc/ntp/hints/refclocks
OLD_FILES+=usr/share/doc/ntp/hints/rs6000
OLD_FILES+=usr/share/doc/ntp/hints/sco.html
OLD_FILES+=usr/share/doc/ntp/hints/sgi
OLD_FILES+=usr/share/doc/ntp/hints/solaris-dosynctodr.html
OLD_FILES+=usr/share/doc/ntp/hints/solaris.html
OLD_FILES+=usr/share/doc/ntp/hints/solaris.xtra.4023118
OLD_FILES+=usr/share/doc/ntp/hints/solaris.xtra.4095849
OLD_FILES+=usr/share/doc/ntp/hints/solaris.xtra.S99ntpd
OLD_FILES+=usr/share/doc/ntp/hints/solaris.xtra.patchfreq
OLD_FILES+=usr/share/doc/ntp/hints/sun4
OLD_FILES+=usr/share/doc/ntp/hints/svr4-dell
OLD_FILES+=usr/share/doc/ntp/hints/svr4_package
OLD_FILES+=usr/share/doc/ntp/hints/todo
OLD_FILES+=usr/share/doc/ntp/hints/vxworks.html
OLD_FILES+=usr/share/doc/ntp/hints/winnt.html
OLD_FILES+=usr/share/doc/ntp/history.html
OLD_FILES+=usr/share/doc/ntp/howto.html
OLD_FILES+=usr/share/doc/ntp/huffpuff.html
OLD_FILES+=usr/share/doc/ntp/icons/home.gif
OLD_FILES+=usr/share/doc/ntp/icons/mail2.gif
OLD_FILES+=usr/share/doc/ntp/icons/sitemap.png
OLD_FILES+=usr/share/doc/ntp/index.html
OLD_FILES+=usr/share/doc/ntp/kern.html
OLD_FILES+=usr/share/doc/ntp/kernpps.html
OLD_FILES+=usr/share/doc/ntp/keygen.html
OLD_FILES+=usr/share/doc/ntp/ldisc.html
OLD_FILES+=usr/share/doc/ntp/leap.html
OLD_FILES+=usr/share/doc/ntp/measure.html
OLD_FILES+=usr/share/doc/ntp/miscopt.html
OLD_FILES+=usr/share/doc/ntp/monopt.html
OLD_FILES+=usr/share/doc/ntp/msyslog.html
OLD_FILES+=usr/share/doc/ntp/mx4200data.html
OLD_FILES+=usr/share/doc/ntp/notes.html
OLD_FILES+=usr/share/doc/ntp/ntp-keygen.html
OLD_FILES+=usr/share/doc/ntp/ntp-wait.html
OLD_FILES+=usr/share/doc/ntp/ntp.conf.html
OLD_FILES+=usr/share/doc/ntp/ntp.keys.html
OLD_FILES+=usr/share/doc/ntp/ntp_conf.html
OLD_FILES+=usr/share/doc/ntp/ntpd.html
OLD_FILES+=usr/share/doc/ntp/ntpdate.html
OLD_FILES+=usr/share/doc/ntp/ntpdc.html
OLD_FILES+=usr/share/doc/ntp/ntpdsim.html
OLD_FILES+=usr/share/doc/ntp/ntpdsim_new.html
OLD_FILES+=usr/share/doc/ntp/ntpq.html
OLD_FILES+=usr/share/doc/ntp/ntpsnmpd.html
OLD_FILES+=usr/share/doc/ntp/ntptime.html
OLD_FILES+=usr/share/doc/ntp/ntptrace.html
OLD_FILES+=usr/share/doc/ntp/orphan.html
OLD_FILES+=usr/share/doc/ntp/parsedata.html
OLD_FILES+=usr/share/doc/ntp/parsenew.html
OLD_FILES+=usr/share/doc/ntp/patches.html
OLD_FILES+=usr/share/doc/ntp/pic/9400n.jpg
OLD_FILES+=usr/share/doc/ntp/pic/alice11.gif
OLD_FILES+=usr/share/doc/ntp/pic/alice13.gif
OLD_FILES+=usr/share/doc/ntp/pic/alice15.gif
OLD_FILES+=usr/share/doc/ntp/pic/alice23.gif
OLD_FILES+=usr/share/doc/ntp/pic/alice31.gif
OLD_FILES+=usr/share/doc/ntp/pic/alice32.gif
OLD_FILES+=usr/share/doc/ntp/pic/alice35.gif
OLD_FILES+=usr/share/doc/ntp/pic/alice38.gif
OLD_FILES+=usr/share/doc/ntp/pic/alice44.gif
OLD_FILES+=usr/share/doc/ntp/pic/alice47.gif
OLD_FILES+=usr/share/doc/ntp/pic/alice51.gif
OLD_FILES+=usr/share/doc/ntp/pic/alice61.gif
OLD_FILES+=usr/share/doc/ntp/pic/barnstable.gif
OLD_FILES+=usr/share/doc/ntp/pic/beaver.gif
OLD_FILES+=usr/share/doc/ntp/pic/boom3.gif
OLD_FILES+=usr/share/doc/ntp/pic/boom3a.gif
OLD_FILES+=usr/share/doc/ntp/pic/boom4.gif
OLD_FILES+=usr/share/doc/ntp/pic/broad.gif
OLD_FILES+=usr/share/doc/ntp/pic/bustardfly.gif
OLD_FILES+=usr/share/doc/ntp/pic/c51.jpg
OLD_FILES+=usr/share/doc/ntp/pic/description.jpg
OLD_FILES+=usr/share/doc/ntp/pic/discipline.gif
OLD_FILES+=usr/share/doc/ntp/pic/dogsnake.gif
OLD_FILES+=usr/share/doc/ntp/pic/driver29.gif
OLD_FILES+=usr/share/doc/ntp/pic/driver43_1.gif
OLD_FILES+=usr/share/doc/ntp/pic/driver43_2.jpg
OLD_FILES+=usr/share/doc/ntp/pic/fg6021.gif
OLD_FILES+=usr/share/doc/ntp/pic/fg6039.jpg
OLD_FILES+=usr/share/doc/ntp/pic/fig_3_1.gif
OLD_FILES+=usr/share/doc/ntp/pic/flatheads.gif
OLD_FILES+=usr/share/doc/ntp/pic/flt1.gif
OLD_FILES+=usr/share/doc/ntp/pic/flt2.gif
OLD_FILES+=usr/share/doc/ntp/pic/flt3.gif
OLD_FILES+=usr/share/doc/ntp/pic/flt4.gif
OLD_FILES+=usr/share/doc/ntp/pic/flt5.gif
OLD_FILES+=usr/share/doc/ntp/pic/flt6.gif
OLD_FILES+=usr/share/doc/ntp/pic/flt7.gif
OLD_FILES+=usr/share/doc/ntp/pic/flt8.gif
OLD_FILES+=usr/share/doc/ntp/pic/flt9.gif
OLD_FILES+=usr/share/doc/ntp/pic/freq1211.gif
OLD_FILES+=usr/share/doc/ntp/pic/gadget.jpg
OLD_FILES+=usr/share/doc/ntp/pic/gps167.jpg
OLD_FILES+=usr/share/doc/ntp/pic/group.gif
OLD_FILES+=usr/share/doc/ntp/pic/hornraba.gif
OLD_FILES+=usr/share/doc/ntp/pic/igclock.gif
OLD_FILES+=usr/share/doc/ntp/pic/neoclock4x.gif
OLD_FILES+=usr/share/doc/ntp/pic/offset1211.gif
OLD_FILES+=usr/share/doc/ntp/pic/oncore_evalbig.gif
OLD_FILES+=usr/share/doc/ntp/pic/oncore_remoteant.jpg
OLD_FILES+=usr/share/doc/ntp/pic/oncore_utplusbig.gif
OLD_FILES+=usr/share/doc/ntp/pic/oz2.gif
OLD_FILES+=usr/share/doc/ntp/pic/panda.gif
OLD_FILES+=usr/share/doc/ntp/pic/pd_om006.gif
OLD_FILES+=usr/share/doc/ntp/pic/pd_om011.gif
OLD_FILES+=usr/share/doc/ntp/pic/peer.gif
OLD_FILES+=usr/share/doc/ntp/pic/pogo.gif
OLD_FILES+=usr/share/doc/ntp/pic/pogo1a.gif
OLD_FILES+=usr/share/doc/ntp/pic/pogo3a.gif
OLD_FILES+=usr/share/doc/ntp/pic/pogo4.gif
OLD_FILES+=usr/share/doc/ntp/pic/pogo5.gif
OLD_FILES+=usr/share/doc/ntp/pic/pogo6.gif
OLD_FILES+=usr/share/doc/ntp/pic/pogo7.gif
OLD_FILES+=usr/share/doc/ntp/pic/pogo8.gif
OLD_FILES+=usr/share/doc/ntp/pic/pzf509.jpg
OLD_FILES+=usr/share/doc/ntp/pic/pzf511.jpg
OLD_FILES+=usr/share/doc/ntp/pic/rabbit.gif
OLD_FILES+=usr/share/doc/ntp/pic/radio2.jpg
OLD_FILES+=usr/share/doc/ntp/pic/sheepb.jpg
OLD_FILES+=usr/share/doc/ntp/pic/stack1a.jpg
OLD_FILES+=usr/share/doc/ntp/pic/stats.gif
OLD_FILES+=usr/share/doc/ntp/pic/sx5.gif
OLD_FILES+=usr/share/doc/ntp/pic/thunderbolt.jpg
OLD_FILES+=usr/share/doc/ntp/pic/time1.gif
OLD_FILES+=usr/share/doc/ntp/pic/tonea.gif
OLD_FILES+=usr/share/doc/ntp/pic/tribeb.gif
OLD_FILES+=usr/share/doc/ntp/pic/wingdorothy.gif
OLD_FILES+=usr/share/doc/ntp/poll.html
OLD_FILES+=usr/share/doc/ntp/porting.html
OLD_FILES+=usr/share/doc/ntp/pps.html
OLD_FILES+=usr/share/doc/ntp/prefer.html
OLD_FILES+=usr/share/doc/ntp/quick.html
OLD_FILES+=usr/share/doc/ntp/rate.html
OLD_FILES+=usr/share/doc/ntp/rdebug.html
OLD_FILES+=usr/share/doc/ntp/refclock.html
OLD_FILES+=usr/share/doc/ntp/release.html
OLD_FILES+=usr/share/doc/ntp/scripts/accopt.txt
OLD_FILES+=usr/share/doc/ntp/scripts/audio.txt
OLD_FILES+=usr/share/doc/ntp/scripts/authopt.txt
OLD_FILES+=usr/share/doc/ntp/scripts/clockopt.txt
OLD_FILES+=usr/share/doc/ntp/scripts/command.txt
OLD_FILES+=usr/share/doc/ntp/scripts/config.txt
OLD_FILES+=usr/share/doc/ntp/scripts/confopt.txt
OLD_FILES+=usr/share/doc/ntp/scripts/external.txt
OLD_FILES+=usr/share/doc/ntp/scripts/footer.txt
OLD_FILES+=usr/share/doc/ntp/scripts/hand.txt
OLD_FILES+=usr/share/doc/ntp/scripts/install.txt
OLD_FILES+=usr/share/doc/ntp/scripts/manual.txt
OLD_FILES+=usr/share/doc/ntp/scripts/misc.txt
OLD_FILES+=usr/share/doc/ntp/scripts/miscopt.txt
OLD_FILES+=usr/share/doc/ntp/scripts/monopt.txt
OLD_FILES+=usr/share/doc/ntp/scripts/refclock.txt
OLD_FILES+=usr/share/doc/ntp/scripts/special.txt
OLD_FILES+=usr/share/doc/ntp/scripts/style.css
OLD_FILES+=usr/share/doc/ntp/select.html
OLD_FILES+=usr/share/doc/ntp/sitemap.html
OLD_FILES+=usr/share/doc/ntp/sntp.html
OLD_FILES+=usr/share/doc/ntp/stats.html
OLD_FILES+=usr/share/doc/ntp/tickadj.html
OLD_FILES+=usr/share/doc/ntp/warp.html
OLD_FILES+=usr/share/doc/ntp/xleave.html
OLD_DIRS+=usr/share/doc/ntp/drivers
OLD_DIRS+=usr/share/doc/ntp/drivers/scripts
OLD_DIRS+=usr/share/doc/ntp/drivers/icons
OLD_DIRS+=usr/share/doc/ntp/hints
OLD_DIRS+=usr/share/doc/ntp/icons
OLD_DIRS+=usr/share/doc/ntp/pic
OLD_DIRS+=usr/share/doc/ntp/scripts
OLD_DIRS+=usr/share/doc/ntp
OLD_FILES+=usr/share/examples/etc/ntp.conf
OLD_FILES+=usr/share/man/man1/sntp.1.gz
OLD_FILES+=usr/share/man/man5/ntp.conf.5.gz
OLD_FILES+=usr/share/man/man5/ntp.keys.5.gz
OLD_FILES+=usr/share/man/man8/ntp-keygen.8.gz
OLD_FILES+=usr/share/man/man8/ntpd.8.gz
OLD_FILES+=usr/share/man/man8/ntpdate.8.gz
OLD_FILES+=usr/share/man/man8/ntpdc.8.gz
OLD_FILES+=usr/share/man/man8/ntpq.8.gz
OLD_FILES+=usr/share/man/man8/ntptime.8.gz
.endif
.if ${MK_OFED} == no
OLD_FILES+=etc/newsyslog.conf.d/opensm.conf
OLD_FILES+=etc/rc.d/opensm
OLD_FILES+=usr/bin/ibstat
OLD_FILES+=usr/bin/ibv_asyncwatch
OLD_FILES+=usr/bin/ibv_devices
OLD_FILES+=usr/bin/ibv_devinfo
OLD_FILES+=usr/bin/ibv_rc_pingpong
OLD_FILES+=usr/bin/ibv_srq_pingpong
OLD_FILES+=usr/bin/ibv_uc_pingpong
OLD_FILES+=usr/bin/ibv_ud_pingpong
OLD_FILES+=usr/bin/mckey
OLD_FILES+=usr/bin/rping
OLD_FILES+=usr/bin/ucmatose
OLD_FILES+=usr/bin/udaddy
OLD_FILES+=usr/include/infiniband/marshall.h
OLD_FILES+=usr/include/infiniband/kern-abi.h
OLD_FILES+=usr/include/infiniband/umad_sm.h
OLD_FILES+=usr/include/infiniband/umad.h
OLD_FILES+=usr/include/infiniband/arch.h
OLD_FILES+=usr/include/infiniband/verbs.h
OLD_FILES+=usr/include/infiniband/ib.h
OLD_FILES+=usr/include/infiniband/cm.h
OLD_FILES+=usr/include/infiniband/opcode.h
OLD_FILES+=usr/include/infiniband/ibnetdisc.h
OLD_FILES+=usr/include/infiniband/driver.h
OLD_FILES+=usr/include/infiniband/mad_osd.h
OLD_FILES+=usr/include/infiniband/umad_types.h
OLD_FILES+=usr/include/infiniband/umad_cm.h
OLD_FILES+=usr/include/infiniband/cm_abi.h
OLD_FILES+=usr/include/infiniband/sa-kern-abi.h
OLD_FILES+=usr/include/infiniband/ibnetdisc_osd.h
OLD_FILES+=usr/include/infiniband/opensm/osm_event_plugin.h
OLD_FILES+=usr/include/infiniband/opensm/osm_console_io.h
OLD_FILES+=usr/include/infiniband/opensm/osm_ucast_cache.h
OLD_FILES+=usr/include/infiniband/opensm/osm_port.h
OLD_FILES+=usr/include/infiniband/opensm/osm_path.h
OLD_FILES+=usr/include/infiniband/opensm/osm_mtree.h
OLD_FILES+=usr/include/infiniband/opensm/osm_log.h
OLD_FILES+=usr/include/infiniband/opensm/osm_mcm_port.h
OLD_FILES+=usr/include/infiniband/opensm/osm_subnet.h
OLD_FILES+=usr/include/infiniband/opensm/osm_pkey.h
OLD_FILES+=usr/include/infiniband/opensm/osm_remote_sm.h
OLD_FILES+=usr/include/infiniband/opensm/osm_qos_policy.h
OLD_FILES+=usr/include/infiniband/opensm/osm_sm.h
OLD_FILES+=usr/include/infiniband/opensm/osm_node.h
OLD_FILES+=usr/include/infiniband/opensm/osm_mcast_mgr.h
OLD_FILES+=usr/include/infiniband/opensm/osm_madw.h
OLD_FILES+=usr/include/infiniband/opensm/osm_lid_mgr.h
OLD_FILES+=usr/include/infiniband/opensm/osm_congestion_control.h
OLD_FILES+=usr/include/infiniband/opensm/osm_port_profile.h
OLD_FILES+=usr/include/infiniband/opensm/osm_perfmgr.h
OLD_FILES+=usr/include/infiniband/opensm/osm_service.h
OLD_FILES+=usr/include/infiniband/opensm/osm_base.h
OLD_FILES+=usr/include/infiniband/opensm/osm_vl15intf.h
OLD_FILES+=usr/include/infiniband/opensm/st.h
OLD_FILES+=usr/include/infiniband/opensm/osm_attrib_req.h
OLD_FILES+=usr/include/infiniband/opensm/osm_ucast_mgr.h
OLD_FILES+=usr/include/infiniband/opensm/osm_db.h
OLD_FILES+=usr/include/infiniband/opensm/osm_sa_mad_ctrl.h
OLD_FILES+=usr/include/infiniband/opensm/osm_db_pack.h
OLD_FILES+=usr/include/infiniband/opensm/osm_opensm.h
OLD_FILES+=usr/include/infiniband/opensm/osm_mesh.h
OLD_FILES+=usr/include/infiniband/opensm/osm_mcast_tbl.h
OLD_FILES+=usr/include/infiniband/opensm/osm_sm_mad_ctrl.h
OLD_FILES+=usr/include/infiniband/opensm/osm_stats.h
OLD_FILES+=usr/include/infiniband/opensm/osm_mad_pool.h
OLD_FILES+=usr/include/infiniband/opensm/osm_switch.h
OLD_FILES+=usr/include/infiniband/opensm/osm_ucast_lash.h
OLD_FILES+=usr/include/infiniband/opensm/osm_errors.h
OLD_FILES+=usr/include/infiniband/opensm/osm_partition.h
OLD_FILES+=usr/include/infiniband/opensm/osm_prefix_route.h
OLD_FILES+=usr/include/infiniband/opensm/osm_helper.h
OLD_FILES+=usr/include/infiniband/opensm/osm_version.h
OLD_FILES+=usr/include/infiniband/opensm/osm_sa.h
OLD_FILES+=usr/include/infiniband/opensm/osm_config.h
OLD_FILES+=usr/include/infiniband/opensm/osm_multicast.h
OLD_FILES+=usr/include/infiniband/opensm/osm_file_ids.h
OLD_FILES+=usr/include/infiniband/opensm/osm_perfmgr_db.h
OLD_FILES+=usr/include/infiniband/opensm/osm_console.h
OLD_FILES+=usr/include/infiniband/opensm/osm_msgdef.h
OLD_FILES+=usr/include/infiniband/opensm/osm_router.h
OLD_FILES+=usr/include/infiniband/opensm/osm_guid.h
OLD_FILES+=usr/include/infiniband/opensm/osm_inform.h
OLD_DIRS+=usr/include/infiniband/opensm
OLD_FILES+=usr/include/infiniband/iba/ib_types.h
OLD_FILES+=usr/include/infiniband/iba/ib_cm_types.h
OLD_DIRS+=usr/include/infiniband/iba
OLD_FILES+=usr/include/infiniband/umad_str.h
OLD_FILES+=usr/include/infiniband/udma_barrier.h
OLD_FILES+=usr/include/infiniband/umad_sa.h
OLD_FILES+=usr/include/infiniband/mad.h
OLD_FILES+=usr/include/infiniband/sa.h
OLD_FILES+=usr/include/infiniband/byteorder.h
OLD_FILES+=usr/include/infiniband/types.h
OLD_FILES+=usr/include/infiniband/byteswap.h
OLD_FILES+=usr/include/infiniband/vendor/osm_pkt_randomizer.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mlx_rmpp_ctx.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mtl_hca_guid.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mlx_txn.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mlx.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mlx_svc.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_test.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mlx_inout.h
OLD_FILES+=usr/include/infiniband/vendor/osm_mtl_bind.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mlx_hca.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_sa_api.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mlx_sender.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor.h
OLD_FILES+=usr/include/infiniband/vendor/osm_umadt.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mtl_transaction_mgr.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mlx_defs.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mlx_dispatcher.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_api.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mtl.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mlx_transport.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_al.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mlx_sar.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_umadt.h
OLD_FILES+=usr/include/infiniband/vendor/osm_ts_useraccess.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_ts.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_mlx_transport_anafa.h
OLD_FILES+=usr/include/infiniband/vendor/osm_vendor_ibumad.h
OLD_DIRS+=usr/include/infiniband/vendor
OLD_FILES+=usr/include/infiniband/endian.h
OLD_FILES+=usr/include/infiniband/complib/cl_byteswap.h
OLD_FILES+=usr/include/infiniband/complib/cl_types.h
OLD_FILES+=usr/include/infiniband/complib/cl_map.h
OLD_FILES+=usr/include/infiniband/complib/cl_packon.h
OLD_FILES+=usr/include/infiniband/complib/cl_timer.h
OLD_FILES+=usr/include/infiniband/complib/cl_thread_osd.h
OLD_FILES+=usr/include/infiniband/complib/cl_thread.h
OLD_FILES+=usr/include/infiniband/complib/cl_event.h
OLD_FILES+=usr/include/infiniband/complib/cl_byteswap_osd.h
OLD_FILES+=usr/include/infiniband/complib/cl_passivelock.h
OLD_FILES+=usr/include/infiniband/complib/cl_vector.h
OLD_FILES+=usr/include/infiniband/complib/cl_nodenamemap.h
OLD_FILES+=usr/include/infiniband/complib/cl_event_wheel.h
OLD_FILES+=usr/include/infiniband/complib/cl_log.h
OLD_FILES+=usr/include/infiniband/complib/cl_fleximap.h
OLD_FILES+=usr/include/infiniband/complib/cl_qlist.h
OLD_FILES+=usr/include/infiniband/complib/cl_timer_osd.h
OLD_FILES+=usr/include/infiniband/complib/cl_pool.h
OLD_FILES+=usr/include/infiniband/complib/cl_debug.h
OLD_FILES+=usr/include/infiniband/complib/cl_types_osd.h
OLD_FILES+=usr/include/infiniband/complib/cl_dispatcher.h
OLD_FILES+=usr/include/infiniband/complib/cl_ptr_vector.h
OLD_FILES+=usr/include/infiniband/complib/cl_atomic_osd.h
OLD_FILES+=usr/include/infiniband/complib/cl_qmap.h
OLD_FILES+=usr/include/infiniband/complib/cl_spinlock_osd.h
OLD_FILES+=usr/include/infiniband/complib/cl_qcomppool.h
OLD_FILES+=usr/include/infiniband/complib/cl_threadpool.h
OLD_FILES+=usr/include/infiniband/complib/cl_list.h
OLD_FILES+=usr/include/infiniband/complib/cl_debug_osd.h
OLD_FILES+=usr/include/infiniband/complib/cl_packoff.h
OLD_FILES+=usr/include/infiniband/complib/cl_qpool.h
OLD_FILES+=usr/include/infiniband/complib/cl_spinlock.h
OLD_FILES+=usr/include/infiniband/complib/cl_event_osd.h
OLD_FILES+=usr/include/infiniband/complib/cl_atomic.h
OLD_FILES+=usr/include/infiniband/complib/cl_math.h
OLD_FILES+=usr/include/infiniband/complib/cl_comppool.h
OLD_DIRS+=usr/include/infiniband/complib
OLD_DIRS+=usr/include/infiniband
OLD_FILES+=usr/lib/libcxgb4.a
OLD_FILES+=usr/lib/libcxgb4.so
OLD_LIBS+=usr/lib/libcxgb4.so.1
OLD_FILES+=usr/lib/libibcm.a
OLD_FILES+=usr/lib/libibcm.so
OLD_LIBS+=usr/lib/libibcm.so.1
OLD_FILES+=usr/lib/libibmad.a
OLD_FILES+=usr/lib/libibmad.so
OLD_LIBS+=usr/lib/libibmad.so.5
OLD_FILES+=usr/lib/libibnetdisc.a
OLD_FILES+=usr/lib/libibnetdisc.so
OLD_LIBS+=usr/lib/libibnetdisc.so.5
OLD_FILES+=usr/lib/libibumad.a
OLD_FILES+=usr/lib/libibumad.so
OLD_LIBS+=usr/lib/libibumad.so.1
OLD_FILES+=usr/lib/libibverbs.a
OLD_FILES+=usr/lib/libibverbs.so
OLD_LIBS+=lib/libibverbs.so.1
OLD_FILES+=usr/lib/libmlx4.a
OLD_FILES+=usr/lib/libmlx4.so
OLD_LIBS+=usr/lib/libmlx4.so.1
OLD_FILES+=usr/lib/libmlx5.a
OLD_FILES+=usr/lib/libmlx5.so
OLD_LIBS+=lib/libmlx5.so.1
OLD_FILES+=usr/lib/libopensm.a
OLD_FILES+=usr/lib/libopensm.so
OLD_LIBS+=usr/lib/libopensm.so.5
OLD_FILES+=usr/lib/libosmcomp.a
OLD_FILES+=usr/lib/libosmcomp.so
OLD_LIBS+=usr/lib/libosmcomp.so.3
OLD_FILES+=usr/lib/libosmvendor.a
OLD_FILES+=usr/lib/libosmvendor.so
OLD_LIBS+=usr/lib/libosmvendor.so.4
OLD_FILES+=usr/lib/librdmacm.a
OLD_FILES+=usr/lib/librdmacm.so
OLD_LIBS+=usr/lib/librdmacm.so.1
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/libcxgb4.a
OLD_FILES+=usr/lib32/libcxgb4.so
OLD_LIBS+=usr/lib32/libcxgb4.so.1
OLD_FILES+=usr/lib32/libibcm.a
OLD_FILES+=usr/lib32/libibcm.so
OLD_LIBS+=usr/lib32/libibcm.so.1
OLD_FILES+=usr/lib32/libibmad.a
OLD_FILES+=usr/lib32/libibmad.so
OLD_LIBS+=usr/lib32/libibmad.so.5
OLD_FILES+=usr/lib32/libibnetdisc.a
OLD_FILES+=usr/lib32/libibnetdisc.so
OLD_LIBS+=usr/lib32/libibnetdisc.so.5
OLD_FILES+=usr/lib32/libibumad.a
OLD_FILES+=usr/lib32/libibumad.so
OLD_LIBS+=usr/lib32/libibumad.so.1
OLD_FILES+=usr/lib32/libibverbs.a
OLD_FILES+=usr/lib32/libibverbs.so
OLD_LIBS+=usr/lib32/libibverbs.so.1
OLD_FILES+=usr/lib32/libmlx4.a
OLD_FILES+=usr/lib32/libmlx4.so
OLD_LIBS+=usr/lib32/libmlx4.so.1
OLD_FILES+=usr/lib32/libmlx5.a
OLD_FILES+=usr/lib32/libmlx5.so
OLD_LIBS+=usr/lib32/libmlx5.so.1
OLD_FILES+=usr/lib32/libopensm.a
OLD_FILES+=usr/lib32/libopensm.so
OLD_LIBS+=usr/lib32/libopensm.so.5
OLD_FILES+=usr/lib32/libosmcomp.a
OLD_FILES+=usr/lib32/libosmcomp.so
OLD_LIBS+=usr/lib32/libosmcomp.so.3
OLD_FILES+=usr/lib32/libosmvendor.a
OLD_FILES+=usr/lib32/libosmvendor.so
OLD_LIBS+=usr/lib32/libosmvendor.so.4
OLD_FILES+=usr/lib32/librdmacm.a
OLD_FILES+=usr/lib32/librdmacm.so
OLD_LIBS+=usr/lib32/librdmacm.so.1
.endif
OLD_FILES+=usr/share/man/man1/ibv_asyncwatch.1.gz
OLD_FILES+=usr/share/man/man1/ibv_devices.1.gz
OLD_FILES+=usr/share/man/man1/ibv_devinfo.1.gz
OLD_FILES+=usr/share/man/man1/ibv_rc_pingpong.1.gz
OLD_FILES+=usr/share/man/man1/ibv_srq_pingpong.1.gz
OLD_FILES+=usr/share/man/man1/ibv_uc_pingpong.1.gz
OLD_FILES+=usr/share/man/man1/ibv_ud_pingpong.1.gz
OLD_FILES+=usr/share/man/man1/mckey.1.gz
OLD_FILES+=usr/share/man/man1/rping.1.gz
OLD_FILES+=usr/share/man/man1/ucmatose.1.gz
OLD_FILES+=usr/share/man/man1/udaddy.1.gz
OLD_FILES+=usr/share/man/man3/ibnd_debug.3.gz
OLD_FILES+=usr/share/man/man3/ibnd_destroy_fabric.3.gz
OLD_FILES+=usr/share/man/man3/ibnd_discover_fabric.3.gz
OLD_FILES+=usr/share/man/man3/ibnd_find_node_dr.3.gz
OLD_FILES+=usr/share/man/man3/ibnd_find_node_guid.3.gz
OLD_FILES+=usr/share/man/man3/ibnd_iter_nodes.3.gz
OLD_FILES+=usr/share/man/man3/ibnd_iter_nodes_type.3.gz
OLD_FILES+=usr/share/man/man3/ibnd_show_progress.3.gz
OLD_FILES+=usr/share/man/man3/ibv_alloc_mw.3.gz
OLD_FILES+=usr/share/man/man3/ibv_alloc_pd.3.gz
OLD_FILES+=usr/share/man/man3/ibv_attach_mcast.3.gz
OLD_FILES+=usr/share/man/man3/ibv_bind_mw.3.gz
OLD_FILES+=usr/share/man/man3/ibv_create_ah.3.gz
OLD_FILES+=usr/share/man/man3/ibv_create_ah_from_wc.3.gz
OLD_FILES+=usr/share/man/man3/ibv_create_comp_channel.3.gz
OLD_FILES+=usr/share/man/man3/ibv_create_cq.3.gz
OLD_FILES+=usr/share/man/man3/ibv_create_cq_ex.3.gz
OLD_FILES+=usr/share/man/man3/ibv_create_flow.3.gz
OLD_FILES+=usr/share/man/man3/ibv_create_qp.3.gz
OLD_FILES+=usr/share/man/man3/ibv_create_qp_ex.3.gz
OLD_FILES+=usr/share/man/man3/ibv_create_rwq_ind_table.3.gz
OLD_FILES+=usr/share/man/man3/ibv_create_srq.3.gz
OLD_FILES+=usr/share/man/man3/ibv_create_srq_ex.3.gz
OLD_FILES+=usr/share/man/man3/ibv_create_wq.3.gz
OLD_FILES+=usr/share/man/man3/ibv_event_type_str.3.gz
OLD_FILES+=usr/share/man/man3/ibv_fork_init.3.gz
OLD_FILES+=usr/share/man/man3/ibv_get_async_event.3.gz
OLD_FILES+=usr/share/man/man3/ibv_get_cq_event.3.gz
OLD_FILES+=usr/share/man/man3/ibv_get_device_guid.3.gz
OLD_FILES+=usr/share/man/man3/ibv_get_device_list.3.gz
OLD_FILES+=usr/share/man/man3/ibv_get_device_name.3.gz
OLD_FILES+=usr/share/man/man3/ibv_get_srq_num.3.gz
OLD_FILES+=usr/share/man/man3/ibv_inc_rkey.3.gz
OLD_FILES+=usr/share/man/man3/ibv_modify_qp.3.gz
OLD_FILES+=usr/share/man/man3/ibv_modify_srq.3.gz
OLD_FILES+=usr/share/man/man3/ibv_modify_wq.3.gz
OLD_FILES+=usr/share/man/man3/ibv_open_device.3.gz
OLD_FILES+=usr/share/man/man3/ibv_open_qp.3.gz
OLD_FILES+=usr/share/man/man3/ibv_open_xrcd.3.gz
OLD_FILES+=usr/share/man/man3/ibv_poll_cq.3.gz
OLD_FILES+=usr/share/man/man3/ibv_post_recv.3.gz
OLD_FILES+=usr/share/man/man3/ibv_post_send.3.gz
OLD_FILES+=usr/share/man/man3/ibv_post_srq_recv.3.gz
OLD_FILES+=usr/share/man/man3/ibv_query_device.3.gz
OLD_FILES+=usr/share/man/man3/ibv_query_device_ex.3.gz
OLD_FILES+=usr/share/man/man3/ibv_query_gid.3.gz
OLD_FILES+=usr/share/man/man3/ibv_query_pkey.3.gz
OLD_FILES+=usr/share/man/man3/ibv_query_port.3.gz
OLD_FILES+=usr/share/man/man3/ibv_query_qp.3.gz
OLD_FILES+=usr/share/man/man3/ibv_query_rt_values_ex.3.gz
OLD_FILES+=usr/share/man/man3/ibv_query_srq.3.gz
OLD_FILES+=usr/share/man/man3/ibv_rate_to_mbps.3.gz
OLD_FILES+=usr/share/man/man3/ibv_rate_to_mult.3.gz
OLD_FILES+=usr/share/man/man3/ibv_reg_mr.3.gz
OLD_FILES+=usr/share/man/man3/ibv_req_notify_cq.3.gz
OLD_FILES+=usr/share/man/man3/ibv_rereg_mr.3.gz
OLD_FILES+=usr/share/man/man3/ibv_resize_cq.3.gz
OLD_FILES+=usr/share/man/man3/rdma_accept.3.gz
OLD_FILES+=usr/share/man/man3/rdma_ack_cm_event.3.gz
OLD_FILES+=usr/share/man/man3/rdma_bind_addr.3.gz
OLD_FILES+=usr/share/man/man3/rdma_connect.3.gz
OLD_FILES+=usr/share/man/man3/rdma_create_ep.3.gz
OLD_FILES+=usr/share/man/man3/rdma_create_event_channel.3.gz
OLD_FILES+=usr/share/man/man3/rdma_create_id.3.gz
OLD_FILES+=usr/share/man/man3/rdma_create_qp.3.gz
OLD_FILES+=usr/share/man/man3/rdma_create_srq.3.gz
OLD_FILES+=usr/share/man/man3/rdma_dereg_mr.3.gz
OLD_FILES+=usr/share/man/man3/rdma_destroy_ep.3.gz
OLD_FILES+=usr/share/man/man3/rdma_destroy_event_channel.3.gz
OLD_FILES+=usr/share/man/man3/rdma_destroy_id.3.gz
OLD_FILES+=usr/share/man/man3/rdma_destroy_qp.3.gz
OLD_FILES+=usr/share/man/man3/rdma_destroy_srq.3.gz
OLD_FILES+=usr/share/man/man3/rdma_disconnect.3.gz
OLD_FILES+=usr/share/man/man3/rdma_event_str.3.gz
OLD_FILES+=usr/share/man/man3/rdma_free_devices.3.gz
OLD_FILES+=usr/share/man/man3/rdma_get_cm_event.3.gz
OLD_FILES+=usr/share/man/man3/rdma_get_devices.3.gz
OLD_FILES+=usr/share/man/man3/rdma_get_dst_port.3.gz
OLD_FILES+=usr/share/man/man3/rdma_get_local_addr.3.gz
OLD_FILES+=usr/share/man/man3/rdma_get_peer_addr.3.gz
OLD_FILES+=usr/share/man/man3/rdma_get_recv_comp.3.gz
OLD_FILES+=usr/share/man/man3/rdma_get_request.3.gz
OLD_FILES+=usr/share/man/man3/rdma_get_send_comp.3.gz
OLD_FILES+=usr/share/man/man3/rdma_get_src_port.3.gz
OLD_FILES+=usr/share/man/man3/rdma_getaddrinfo.3.gz
OLD_FILES+=usr/share/man/man3/rdma_join_multicast.3.gz
OLD_FILES+=usr/share/man/man3/rdma_leave_multicast.3.gz
OLD_FILES+=usr/share/man/man3/rdma_listen.3.gz
OLD_FILES+=usr/share/man/man3/rdma_migrate_id.3.gz
OLD_FILES+=usr/share/man/man3/rdma_notify.3.gz
OLD_FILES+=usr/share/man/man3/rdma_post_read.3.gz
OLD_FILES+=usr/share/man/man3/rdma_post_readv.3.gz
OLD_FILES+=usr/share/man/man3/rdma_post_recv.3.gz
OLD_FILES+=usr/share/man/man3/rdma_post_recvv.3.gz
OLD_FILES+=usr/share/man/man3/rdma_post_send.3.gz
OLD_FILES+=usr/share/man/man3/rdma_post_sendv.3.gz
OLD_FILES+=usr/share/man/man3/rdma_post_ud_send.3.gz
OLD_FILES+=usr/share/man/man3/rdma_post_write.3.gz
OLD_FILES+=usr/share/man/man3/rdma_post_writev.3.gz
OLD_FILES+=usr/share/man/man3/rdma_reg_msgs.3.gz
OLD_FILES+=usr/share/man/man3/rdma_reg_read.3.gz
OLD_FILES+=usr/share/man/man3/rdma_reg_write.3.gz
OLD_FILES+=usr/share/man/man3/rdma_reject.3.gz
OLD_FILES+=usr/share/man/man3/rdma_resolve_addr.3.gz
OLD_FILES+=usr/share/man/man3/rdma_resolve_route.3.gz
OLD_FILES+=usr/share/man/man3/rdma_set_option.3.gz
OLD_FILES+=usr/share/man/man4/mlx4ib.4.gz
OLD_FILES+=usr/share/man/man4/mlx5ib.4.gz
OLD_FILES+=usr/share/man/man8/ibstat.8.gz
.endif
.if ${MK_OFED_EXTRA} == no
OLD_FILES+=usr/bin/dump_fts
OLD_FILES+=usr/bin/ibaddr
OLD_FILES+=usr/bin/ibcacheedit
OLD_FILES+=usr/bin/ibccconfig
OLD_FILES+=usr/bin/ibccquery
OLD_FILES+=usr/bin/iblinkinfo
OLD_FILES+=usr/bin/ibmirror
OLD_FILES+=usr/bin/ibnetdiscover
OLD_FILES+=usr/bin/ibping
OLD_FILES+=usr/bin/ibportstate
OLD_FILES+=usr/bin/ibqueryerrors
OLD_FILES+=usr/bin/ibroute
OLD_FILES+=usr/bin/ibsysstat
OLD_FILES+=usr/bin/ibtracert
OLD_FILES+=usr/bin/opensm
OLD_FILES+=usr/bin/perfquery
OLD_FILES+=usr/bin/saquery
OLD_FILES+=usr/bin/sminfo
OLD_FILES+=usr/bin/smpdump
OLD_FILES+=usr/bin/smpquery
OLD_FILES+=usr/bin/vendstat
OLD_FILES+=usr/share/man/man8/dump_fts.8.gz
OLD_FILES+=usr/share/man/man8/ibaddr.8.gz
OLD_FILES+=usr/share/man/man8/ibcacheedit.8.gz
OLD_FILES+=usr/share/man/man8/ibccconfig.8.gz
OLD_FILES+=usr/share/man/man8/ibccquery.8.gz
OLD_FILES+=usr/share/man/man8/iblinkinfo.8.gz
OLD_FILES+=usr/share/man/man8/ibnetdiscover.8.gz
OLD_FILES+=usr/share/man/man8/ibping.8.gz
OLD_FILES+=usr/share/man/man8/ibportstate.8.gz
OLD_FILES+=usr/share/man/man8/ibqueryerrors.8.gz
OLD_FILES+=usr/share/man/man8/ibroute.8.gz
OLD_FILES+=usr/share/man/man8/ibsysstat.8.gz
OLD_FILES+=usr/share/man/man8/ibtracert.8.gz
OLD_FILES+=usr/share/man/man8/opensm.8.gz
OLD_FILES+=usr/share/man/man8/perfquery.8.gz
OLD_FILES+=usr/share/man/man8/saquery.8.gz
OLD_FILES+=usr/share/man/man8/sminfo.8.gz
OLD_FILES+=usr/share/man/man8/smpdump.8.gz
OLD_FILES+=usr/share/man/man8/smpquery.8.gz
OLD_FILES+=usr/share/man/man8/vendstat.8.gz
.endif
.if ${MK_OPENMP} == no
OLD_FILES+=usr/include/omp.h
OLD_LIBS+=usr/lib/libgomp.so
OLD_LIBS+=usr/lib32/libgomp.so
OLD_LIBS+=usr/lib/libomp.so
OLD_LIBS+=usr/lib32/libomp.so
.endif
.if ${MK_OPENSSH} == no
OLD_FILES+=etc/rc.d/sshd
OLD_FILES+=etc/ssh/moduli
OLD_FILES+=etc/ssh/ssh_config
OLD_FILES+=etc/ssh/sshd_config
OLD_DIRS+=etc/ssh
OLD_FILES+=usr/bin/scp
OLD_FILES+=usr/bin/sftp
OLD_FILES+=usr/bin/slogin
OLD_FILES+=usr/bin/ssh
OLD_FILES+=usr/bin/ssh-add
OLD_FILES+=usr/bin/ssh-agent
OLD_FILES+=usr/bin/ssh-copy-id
OLD_FILES+=usr/bin/ssh-keygen
OLD_FILES+=usr/bin/ssh-keyscan
OLD_FILES+=usr/lib/pam_ssh.so
OLD_LIBS+=usr/lib/pam_ssh.so.6
OLD_FILES+=usr/lib/private/libssh.a
OLD_FILES+=usr/lib/private/libssh.so
OLD_LIBS+=usr/lib/private/libssh.so.5
OLD_FILES+=usr/lib/private/libssh_p.a
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/pam_ssh.so
OLD_LIBS+=usr/lib32/pam_ssh.so.6
OLD_FILES+=usr/lib32/private/libssh.a
OLD_FILES+=usr/lib32/private/libssh.so
OLD_LIBS+=usr/lib32/private/libssh.so.5
OLD_FILES+=usr/lib32/private/libssh_p.a
.endif
OLD_FILES+=usr/libexec/sftp-server
OLD_FILES+=usr/libexec/ssh-keysign
OLD_FILES+=usr/libexec/ssh-pkcs11-helper
OLD_FILES+=usr/sbin/sshd
OLD_FILES+=usr/share/man/man1/scp.1.gz
OLD_FILES+=usr/share/man/man1/sftp.1.gz
OLD_FILES+=usr/share/man/man1/slogin.1.gz
OLD_FILES+=usr/share/man/man1/ssh-add.1.gz
OLD_FILES+=usr/share/man/man1/ssh-agent.1.gz
OLD_FILES+=usr/share/man/man1/ssh-copy-id.1.gz
OLD_FILES+=usr/share/man/man1/ssh-keygen.1.gz
OLD_FILES+=usr/share/man/man1/ssh-keyscan.1.gz
OLD_FILES+=usr/share/man/man1/ssh.1.gz
OLD_FILES+=usr/share/man/man5/ssh_config.5.gz
OLD_FILES+=usr/share/man/man5/sshd_config.5.gz
OLD_FILES+=usr/share/man/man8/pam_ssh.8.gz
OLD_FILES+=usr/share/man/man8/sftp-server.8.gz
OLD_FILES+=usr/share/man/man8/ssh-keysign.8.gz
OLD_FILES+=usr/share/man/man8/ssh-pkcs11-helper.8.gz
OLD_FILES+=usr/share/man/man8/sshd.8.gz
.endif
.if ${MK_OPENSSL} == no
OLD_FILES+=etc/rc.d/keyserv
.endif
.if ${MK_PF} == no
OLD_FILES+=etc/newsyslog.conf.d/pf.conf
OLD_FILES+=etc/periodic/security/520.pfdenied
OLD_FILES+=etc/pf.os
OLD_FILES+=etc/rc.d/ftp-proxy
OLD_FILES+=sbin/pfctl
OLD_FILES+=sbin/pflogd
OLD_FILES+=usr/include/netpfil/pf/pf.h
OLD_FILES+=usr/include/netpfil/pf/pf_altq.h
OLD_FILES+=usr/include/netpfil/pf/pf_mtag.h
OLD_FILES+=usr/lib/snmp_pf.so
OLD_LIBS+=usr/lib/snmp_pf.so.6
OLD_FILES+=usr/libexec/tftp-proxy
OLD_FILES+=usr/sbin/ftp-proxy
OLD_FILES+=usr/share/examples/etc/pf.os
OLD_FILES+=usr/share/examples/pf/ackpri
OLD_FILES+=usr/share/examples/pf/faq-example1
OLD_FILES+=usr/share/examples/pf/faq-example2
OLD_FILES+=usr/share/examples/pf/faq-example3
OLD_FILES+=usr/share/examples/pf/pf.conf
OLD_FILES+=usr/share/examples/pf/queue1
OLD_FILES+=usr/share/examples/pf/queue2
OLD_FILES+=usr/share/examples/pf/queue3
OLD_FILES+=usr/share/examples/pf/queue4
OLD_FILES+=usr/share/examples/pf/spamd
OLD_DIRS+=usr/share/examples/pf
OLD_FILES+=usr/share/man/man4/pf.4.gz
OLD_FILES+=usr/share/man/man4/pflog.4.gz
OLD_FILES+=usr/share/man/man4/pfsync.4.gz
OLD_FILES+=usr/share/man/man5/pf.conf.5.gz
OLD_FILES+=usr/share/man/man5/pf.os.5.gz
OLD_FILES+=usr/share/man/man8/ftp-proxy.8.gz
OLD_FILES+=usr/share/man/man8/pfctl.8.gz
OLD_FILES+=usr/share/man/man8/pflogd.8.gz
OLD_FILES+=usr/share/man/man8/tftp-proxy.8.gz
OLD_FILES+=usr/share/snmp/defs/pf_tree.def
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-PF-MIB.txt
.endif
.if ${MK_PKGBOOTSTRAP} == no
OLD_FILES+=usr/sbin/pkg
OLD_FILES+=usr/share/man/man7/pkg.7.gz
.endif
.if ${MK_PMC} == no
OLD_FILES+=usr/bin/pmcstudy
.if ${TARGET_ARCH} == "amd64"
OLD_FILES+=usr/include/libipt/pt_last_ip.h
OLD_FILES+=usr/include/libipt/intel-pt.h
OLD_FILES+=usr/include/libipt/pt_time.h
OLD_FILES+=usr/include/libipt/pt_cpu.h
OLD_FILES+=usr/include/libipt/pt_compiler.h
OLD_DIRS+=usr/include/libipt
.endif
.if ${TARGET_ARCH} == "aarch64"
OLD_FILES+=usr/include/opencsd/c_api/opencsd_c_api.h
OLD_FILES+=usr/include/opencsd/c_api/ocsd_c_api_cust_impl.h
OLD_FILES+=usr/include/opencsd/c_api/ocsd_c_api_types.h
OLD_FILES+=usr/include/opencsd/c_api/ocsd_c_api_cust_fact.h
OLD_FILES+=usr/include/opencsd/c_api/ocsd_c_api_custom.h
OLD_DIRS+=usr/include/opencsd/c_api
OLD_FILES+=usr/include/opencsd/ocsd_if_types.h
OLD_FILES+=usr/include/opencsd/ptm/trc_dcd_mngr_ptm.h
OLD_FILES+=usr/include/opencsd/ptm/trc_pkt_proc_ptm.h
OLD_FILES+=usr/include/opencsd/ptm/trc_cmp_cfg_ptm.h
OLD_FILES+=usr/include/opencsd/ptm/ptm_decoder.h
OLD_FILES+=usr/include/opencsd/ptm/trc_pkt_elem_ptm.h
OLD_FILES+=usr/include/opencsd/ptm/trc_pkt_decode_ptm.h
OLD_FILES+=usr/include/opencsd/ptm/trc_pkt_types_ptm.h
OLD_DIRS+=usr/include/opencsd/ptm
OLD_FILES+=usr/include/opencsd/trc_gen_elem_types.h
OLD_FILES+=usr/include/opencsd/etmv4/trc_pkt_proc_etmv4.h
OLD_FILES+=usr/include/opencsd/etmv4/trc_etmv4_stack_elem.h
OLD_FILES+=usr/include/opencsd/etmv4/etmv4_decoder.h
OLD_FILES+=usr/include/opencsd/etmv4/trc_pkt_elem_etmv4i.h
OLD_FILES+=usr/include/opencsd/etmv4/trc_dcd_mngr_etmv4i.h
OLD_FILES+=usr/include/opencsd/etmv4/trc_pkt_types_etmv4.h
OLD_FILES+=usr/include/opencsd/etmv4/trc_pkt_elem_etmv4d.h
OLD_FILES+=usr/include/opencsd/etmv4/trc_pkt_decode_etmv4i.h
OLD_FILES+=usr/include/opencsd/etmv4/trc_cmp_cfg_etmv4.h
OLD_DIRS+=usr/include/opencsd/etmv4
OLD_FILES+=usr/include/opencsd/etmv3/trc_pkt_decode_etmv3.h
OLD_FILES+=usr/include/opencsd/etmv3/trc_cmp_cfg_etmv3.h
OLD_FILES+=usr/include/opencsd/etmv3/etmv3_decoder.h
OLD_FILES+=usr/include/opencsd/etmv3/trc_pkt_proc_etmv3.h
OLD_FILES+=usr/include/opencsd/etmv3/trc_pkt_elem_etmv3.h
OLD_FILES+=usr/include/opencsd/etmv3/trc_pkt_types_etmv3.h
OLD_FILES+=usr/include/opencsd/etmv3/trc_dcd_mngr_etmv3.h
OLD_DIRS+=usr/include/opencsd/etmv3
OLD_FILES+=usr/include/opencsd/trc_pkt_types.h
OLD_FILES+=usr/include/opencsd/stm/trc_pkt_proc_stm.h
OLD_FILES+=usr/include/opencsd/stm/trc_pkt_types_stm.h
OLD_FILES+=usr/include/opencsd/stm/stm_decoder.h
OLD_FILES+=usr/include/opencsd/stm/trc_dcd_mngr_stm.h
OLD_FILES+=usr/include/opencsd/stm/trc_cmp_cfg_stm.h
OLD_FILES+=usr/include/opencsd/stm/trc_pkt_elem_stm.h
OLD_FILES+=usr/include/opencsd/stm/trc_pkt_decode_stm.h
OLD_DIRS+=usr/include/opencsd/stm
OLD_DIRS+=usr/include/opencsd
.endif
OLD_FILES+=usr/include/pmc.h
OLD_FILES+=usr/include/pmclog.h
OLD_FILES+=usr/include/pmcformat.h
OLD_FILES+=usr/include/libpmcstat.h
.if ${TARGET_ARCH} == "amd64"
OLD_FILES+=usr/lib/libipt.a
OLD_FILES+=usr/lib/libipt.so
OLD_LIBS+=lib/libipt.so.0
OLD_FILES+=usr/lib/libipt_p.a
.endif
.if ${TARGET_ARCH} == "aarch64"
OLD_FILES+=usr/lib/libopencsd.a
OLD_FILES+=usr/lib/libopencsd.so
OLD_LIBS+=lib/libopencsd.so.0
OLD_FILES+=usr/lib/libopencsd_p.a
.endif
OLD_FILES+=usr/lib/libpmc.a
OLD_FILES+=usr/lib/libpmc.so
OLD_LIBS+=usr/lib/libpmc.so.5
OLD_FILES+=usr/lib/libpmc_p.a
OLD_FILES+=usr/lib32/libpmc.a
OLD_FILES+=usr/lib32/libpmc.so
OLD_LIBS+=usr/lib32/libpmc.so.5
OLD_FILES+=usr/lib32/libpmc_p.a
OLD_FILES+=usr/sbin/pmc
OLD_FILES+=usr/sbin/pmcannotate
OLD_FILES+=usr/sbin/pmccontrol
OLD_FILES+=usr/sbin/pmcstat
OLD_FILES+=usr/share/man/man3/pmc.3.gz
OLD_FILES+=usr/share/man/man3/pmc.atom.3.gz
OLD_FILES+=usr/share/man/man3/pmc.atomsilvermont.3.gz
OLD_FILES+=usr/share/man/man3/pmc.core.3.gz
OLD_FILES+=usr/share/man/man3/pmc.core2.3.gz
OLD_FILES+=usr/share/man/man3/pmc.corei7.3.gz
OLD_FILES+=usr/share/man/man3/pmc.corei7uc.3.gz
OLD_FILES+=usr/share/man/man3/pmc.haswell.3.gz
OLD_FILES+=usr/share/man/man3/pmc.haswelluc.3.gz
OLD_FILES+=usr/share/man/man3/pmc.haswellxeon.3.gz
OLD_FILES+=usr/share/man/man3/pmc.iaf.3.gz
OLD_FILES+=usr/share/man/man3/pmc.ivybridge.3.gz
OLD_FILES+=usr/share/man/man3/pmc.ivybridgexeon.3.gz
OLD_FILES+=usr/share/man/man3/pmc.k7.3.gz
OLD_FILES+=usr/share/man/man3/pmc.k8.3.gz
OLD_FILES+=usr/share/man/man3/pmc.mips24k.3.gz
OLD_FILES+=usr/share/man/man3/pmc.octeon.3.gz
OLD_FILES+=usr/share/man/man3/pmc.p4.3.gz
OLD_FILES+=usr/share/man/man3/pmc.p5.3.gz
OLD_FILES+=usr/share/man/man3/pmc.p6.3.gz
OLD_FILES+=usr/share/man/man3/pmc.sandybridge.3.gz
OLD_FILES+=usr/share/man/man3/pmc.sandybridgeuc.3.gz
OLD_FILES+=usr/share/man/man3/pmc.sandybridgexeon.3.gz
OLD_FILES+=usr/share/man/man3/pmc.soft.3.gz
OLD_FILES+=usr/share/man/man3/pmc.tsc.3.gz
OLD_FILES+=usr/share/man/man3/pmc.ucf.3.gz
OLD_FILES+=usr/share/man/man3/pmc.westmere.3.gz
OLD_FILES+=usr/share/man/man3/pmc.westmereuc.3.gz
OLD_FILES+=usr/share/man/man3/pmc.xscale.3.gz
OLD_FILES+=usr/share/man/man3/pmc_allocate.3.gz
OLD_FILES+=usr/share/man/man3/pmc_attach.3.gz
OLD_FILES+=usr/share/man/man3/pmc_capabilities.3.gz
OLD_FILES+=usr/share/man/man3/pmc_configure_logfile.3.gz
OLD_FILES+=usr/share/man/man3/pmc_cpuinfo.3.gz
OLD_FILES+=usr/share/man/man3/pmc_detach.3.gz
OLD_FILES+=usr/share/man/man3/pmc_disable.3.gz
OLD_FILES+=usr/share/man/man3/pmc_enable.3.gz
OLD_FILES+=usr/share/man/man3/pmc_event_names_of_class.3.gz
OLD_FILES+=usr/share/man/man3/pmc_flush_logfile.3.gz
OLD_FILES+=usr/share/man/man3/pmc_get_driver_stats.3.gz
OLD_FILES+=usr/share/man/man3/pmc_get_msr.3.gz
OLD_FILES+=usr/share/man/man3/pmc_init.3.gz
OLD_FILES+=usr/share/man/man3/pmc_name_of_capability.3.gz
OLD_FILES+=usr/share/man/man3/pmc_name_of_class.3.gz
OLD_FILES+=usr/share/man/man3/pmc_name_of_cputype.3.gz
OLD_FILES+=usr/share/man/man3/pmc_name_of_disposition.3.gz
OLD_FILES+=usr/share/man/man3/pmc_name_of_event.3.gz
OLD_FILES+=usr/share/man/man3/pmc_name_of_mode.3.gz
OLD_FILES+=usr/share/man/man3/pmc_name_of_state.3.gz
OLD_FILES+=usr/share/man/man3/pmc_ncpu.3.gz
OLD_FILES+=usr/share/man/man3/pmc_npmc.3.gz
OLD_FILES+=usr/share/man/man3/pmc_pmcinfo.3.gz
OLD_FILES+=usr/share/man/man3/pmc_read.3.gz
OLD_FILES+=usr/share/man/man3/pmc_release.3.gz
OLD_FILES+=usr/share/man/man3/pmc_rw.3.gz
OLD_FILES+=usr/share/man/man3/pmc_set.3.gz
OLD_FILES+=usr/share/man/man3/pmc_start.3.gz
OLD_FILES+=usr/share/man/man3/pmc_stop.3.gz
OLD_FILES+=usr/share/man/man3/pmc_width.3.gz
OLD_FILES+=usr/share/man/man3/pmc_write.3.gz
OLD_FILES+=usr/share/man/man3/pmc_writelog.3.gz
OLD_FILES+=usr/share/man/man3/pmclog.3.gz
OLD_FILES+=usr/share/man/man3/pmclog_close.3.gz
OLD_FILES+=usr/share/man/man3/pmclog_feed.3.gz
OLD_FILES+=usr/share/man/man3/pmclog_open.3.gz
OLD_FILES+=usr/share/man/man3/pmclog_read.3.gz
OLD_FILES+=usr/share/man/man8/pmcannotate.8.gz
OLD_FILES+=usr/share/man/man8/pmccontrol.8.gz
OLD_FILES+=usr/share/man/man8/pmcstat.8.gz
OLD_FILES+=usr/share/man/man8/pmcstudy.8.gz
.endif
.if ${MK_PORTSNAP} == no
OLD_FILES+=etc/portsnap.conf
OLD_FILES+=usr/libexec/make_index
OLD_FILES+=usr/libexec/phttpget
OLD_FILES+=usr/sbin/portsnap
OLD_FILES+=usr/share/examples/etc/portsnap.conf
OLD_FILES+=usr/share/man/man8/phttpget.8.gz
OLD_FILES+=usr/share/man/man8/portsnap.8.gz
.endif
.if ${MK_PPP} == no
OLD_FILES+=etc/newsyslog.conf.d/ppp.conf
OLD_FILES+=etc/ppp/ppp.conf
OLD_FILES+=etc/syslog.d/ppp.conf
OLD_DIRS+=etc/ppp
OLD_FILES+=usr/sbin/ppp
OLD_FILES+=usr/sbin/pppctl
OLD_FILES+=usr/share/man/man8/ppp.8.gz
OLD_FILES+=usr/share/man/man8/pppctl.8.gz
.endif
.if ${MK_PROFILE} == no
OLD_FILES+=usr/lib/lib80211_p.a
OLD_FILES+=usr/lib/libBlocksRuntime_p.a
OLD_FILES+=usr/lib/libalias_cuseeme_p.a
OLD_FILES+=usr/lib/libalias_dummy_p.a
OLD_FILES+=usr/lib/libalias_ftp_p.a
OLD_FILES+=usr/lib/libalias_irc_p.a
OLD_FILES+=usr/lib/libalias_nbt_p.a
OLD_FILES+=usr/lib/libalias_p.a
OLD_FILES+=usr/lib/libalias_pptp_p.a
OLD_FILES+=usr/lib/libalias_skinny_p.a
OLD_FILES+=usr/lib/libalias_smedia_p.a
OLD_FILES+=usr/lib/libarchive_p.a
OLD_FILES+=usr/lib/libasn1_p.a
OLD_FILES+=usr/lib/libauditd_p.a
OLD_FILES+=usr/lib/libavl_p.a
OLD_FILES+=usr/lib/libbe_p.a
OLD_FILES+=usr/lib/libbegemot_p.a
OLD_FILES+=usr/lib/libblacklist_p.a
OLD_FILES+=usr/lib/libbluetooth_p.a
OLD_FILES+=usr/lib/libbsdxml_p.a
OLD_FILES+=usr/lib/libbsm_p.a
OLD_FILES+=usr/lib/libbsnmp_p.a
OLD_FILES+=usr/lib/libbz2_p.a
OLD_FILES+=usr/lib/libc++_p.a
OLD_FILES+=usr/lib/libc_p.a
OLD_FILES+=usr/lib/libcalendar_p.a
OLD_FILES+=usr/lib/libcam_p.a
OLD_FILES+=usr/lib/libcom_err_p.a
OLD_FILES+=usr/lib/libcompat_p.a
OLD_FILES+=usr/lib/libcompiler_rt_p.a
OLD_FILES+=usr/lib/libcrypt_p.a
OLD_FILES+=usr/lib/libcrypto_p.a
OLD_FILES+=usr/lib/libctf_p.a
OLD_FILES+=usr/lib/libcurses_p.a
OLD_FILES+=usr/lib/libcursesw_p.a
OLD_FILES+=usr/lib/libcuse_p.a
OLD_FILES+=usr/lib/libcxxrt_p.a
OLD_FILES+=usr/lib/libdevctl_p.a
OLD_FILES+=usr/lib/libdevinfo_p.a
OLD_FILES+=usr/lib/libdevstat_p.a
OLD_FILES+=usr/lib/libdialog_p.a
OLD_FILES+=usr/lib/libdl_p.a
OLD_FILES+=usr/lib/libdpv_p.a
OLD_FILES+=usr/lib/libdtrace_p.a
OLD_FILES+=usr/lib/libdwarf_p.a
OLD_FILES+=usr/lib/libedit_p.a
OLD_FILES+=usr/lib/libefivar_p.a
OLD_FILES+=usr/lib/libelf_p.a
OLD_FILES+=usr/lib/libexecinfo_p.a
OLD_FILES+=usr/lib/libfetch_p.a
OLD_FILES+=usr/lib/libfigpar_p.a
OLD_FILES+=usr/lib/libfl_p.a
OLD_FILES+=usr/lib/libform_p.a
OLD_FILES+=usr/lib/libformw_p.a
OLD_FILES+=usr/lib/libgcc_eh_p.a
OLD_FILES+=usr/lib/libgcc_p.a
OLD_FILES+=usr/lib/libgeom_p.a
OLD_FILES+=usr/lib/libgnuregex_p.a
OLD_FILES+=usr/lib/libgpio_p.a
OLD_FILES+=usr/lib/libgssapi_krb5_p.a
OLD_FILES+=usr/lib/libgssapi_ntlm_p.a
OLD_FILES+=usr/lib/libgssapi_p.a
OLD_FILES+=usr/lib/libgssapi_spnego_p.a
OLD_FILES+=usr/lib/libhdb_p.a
OLD_FILES+=usr/lib/libheimbase_p.a
OLD_FILES+=usr/lib/libheimntlm_p.a
OLD_FILES+=usr/lib/libheimsqlite_p.a
OLD_FILES+=usr/lib/libhistory_p.a
OLD_FILES+=usr/lib/libhx509_p.a
OLD_FILES+=usr/lib/libipsec_p.a
OLD_FILES+=usr/lib/libipt_p.a
OLD_FILES+=usr/lib/libjail_p.a
OLD_FILES+=usr/lib/libkadm5clnt_p.a
OLD_FILES+=usr/lib/libkadm5srv_p.a
OLD_FILES+=usr/lib/libkafs5_p.a
OLD_FILES+=usr/lib/libkdc_p.a
OLD_FILES+=usr/lib/libkiconv_p.a
OLD_FILES+=usr/lib/libkrb5_p.a
OLD_FILES+=usr/lib/libkvm_p.a
OLD_FILES+=usr/lib/libl_p.a
OLD_FILES+=usr/lib/libln_p.a
OLD_FILES+=usr/lib/liblzma_p.a
OLD_FILES+=usr/lib/libm_p.a
OLD_FILES+=usr/lib/libmagic_p.a
OLD_FILES+=usr/lib/libmd_p.a
OLD_FILES+=usr/lib/libmemstat_p.a
OLD_FILES+=usr/lib/libmenu_p.a
OLD_FILES+=usr/lib/libmenuw_p.a
OLD_FILES+=usr/lib/libmilter_p.a
OLD_FILES+=usr/lib/libmp_p.a
OLD_FILES+=usr/lib/libmt_p.a
OLD_FILES+=usr/lib/libncurses_p.a
OLD_FILES+=usr/lib/libncursesw_p.a
OLD_FILES+=usr/lib/libnetgraph_p.a
OLD_FILES+=usr/lib/libngatm_p.a
OLD_FILES+=usr/lib/libnv_p.a
OLD_FILES+=usr/lib/libnvpair_p.a
OLD_FILES+=usr/lib/libopencsd_p.a
OLD_FILES+=usr/lib/libopie_p.a
OLD_FILES+=usr/lib/libpanel_p.a
OLD_FILES+=usr/lib/libpanelw_p.a
OLD_FILES+=usr/lib/libpathconv_p.a
OLD_FILES+=usr/lib/libpcap_p.a
OLD_FILES+=usr/lib/libpjdlog_p.a
OLD_FILES+=usr/lib/libpmc_p.a
OLD_FILES+=usr/lib/libprivatebsdstat_p.a
OLD_FILES+=usr/lib/libprivatedevdctl_p.a
OLD_FILES+=usr/lib/libprivateevent_p.a
OLD_FILES+=usr/lib/libprivateheimipcc_p.a
OLD_FILES+=usr/lib/libprivateheimipcs_p.a
OLD_FILES+=usr/lib/libprivateifconfig_p.a
OLD_FILES+=usr/lib/libprivateldns_p.a
OLD_FILES+=usr/lib/libprivatesqlite3_p.a
OLD_FILES+=usr/lib/libprivatessh_p.a
OLD_FILES+=usr/lib/libprivateucl_p.a
OLD_FILES+=usr/lib/libprivateunbound_p.a
OLD_FILES+=usr/lib/libprivatezstd_p.a
OLD_FILES+=usr/lib/libproc_p.a
OLD_FILES+=usr/lib/libprocstat_p.a
OLD_FILES+=usr/lib/libpthread_p.a
OLD_FILES+=usr/lib/libradius_p.a
OLD_FILES+=usr/lib/libregex_p.a
OLD_FILES+=usr/lib/libroken_p.a
OLD_FILES+=usr/lib/librpcsvc_p.a
OLD_FILES+=usr/lib/librss_p.a
OLD_FILES+=usr/lib/librt_p.a
OLD_FILES+=usr/lib/librtld_db_p.a
OLD_FILES+=usr/lib/libsbuf_p.a
OLD_FILES+=usr/lib/libsdp_p.a
OLD_FILES+=usr/lib/libsmb_p.a
OLD_FILES+=usr/lib/libssl_p.a
OLD_FILES+=usr/lib/libstdbuf_p.a
OLD_FILES+=usr/lib/libstdc++_p.a
OLD_FILES+=usr/lib/libstdthreads_p.a
OLD_FILES+=usr/lib/libsupc++_p.a
OLD_FILES+=usr/lib/libsysdecode_p.a
OLD_FILES+=usr/lib/libtacplus_p.a
OLD_FILES+=usr/lib/libtermcap_p.a
OLD_FILES+=usr/lib/libtermcapw_p.a
OLD_FILES+=usr/lib/libtermlib_p.a
OLD_FILES+=usr/lib/libtermlibw_p.a
OLD_FILES+=usr/lib/libthr_p.a
OLD_FILES+=usr/lib/libthread_db_p.a
OLD_FILES+=usr/lib/libtinfo_p.a
OLD_FILES+=usr/lib/libtinfow_p.a
OLD_FILES+=usr/lib/libufs_p.a
OLD_FILES+=usr/lib/libugidfw_p.a
OLD_FILES+=usr/lib/libulog_p.a
OLD_FILES+=usr/lib/libumem_p.a
OLD_FILES+=usr/lib/libusb_p.a
OLD_FILES+=usr/lib/libusbhid_p.a
OLD_FILES+=usr/lib/libutempter_p.a
OLD_FILES+=usr/lib/libutil_p.a
OLD_FILES+=usr/lib/libuutil_p.a
OLD_FILES+=usr/lib/libvgl_p.a
OLD_FILES+=usr/lib/libvmmapi_p.a
OLD_FILES+=usr/lib/libwind_p.a
OLD_FILES+=usr/lib/libwrap_p.a
OLD_FILES+=usr/lib/libxo_p.a
OLD_FILES+=usr/lib/liby_p.a
OLD_FILES+=usr/lib/libypclnt_p.a
OLD_FILES+=usr/lib/libz_p.a
OLD_FILES+=usr/lib/libzfs_core_p.a
OLD_FILES+=usr/lib/libzfs_p.a
OLD_FILES+=usr/lib/private/libldns_p.a
OLD_FILES+=usr/lib/private/libssh_p.a
.endif
.if ${MK_QUOTAS} == no
OLD_FILES+=sbin/quotacheck
OLD_FILES+=usr/bin/quota
OLD_FILES+=usr/sbin/edquota
OLD_FILES+=usr/sbin/quotaoff
OLD_FILES+=usr/sbin/quotaon
OLD_FILES+=usr/sbin/repquota
OLD_FILES+=usr/share/man/man1/quota.1.gz
OLD_FILES+=usr/share/man/man8/edquota.8.gz
OLD_FILES+=usr/share/man/man8/quotacheck.8.gz
OLD_FILES+=usr/share/man/man8/quotaoff.8.gz
OLD_FILES+=usr/share/man/man8/quotaon.8.gz
OLD_FILES+=usr/share/man/man8/repquota.8.gz
.endif
.if ${MK_RADIUS_SUPPORT} == no
OLD_FILES+=usr/lib/libradius.a
OLD_FILES+=usr/lib/libradius.so
OLD_LIBS+=usr/lib/libradius.so.4
OLD_FILES+=usr/lib/libradius_p.a
OLD_FILES+=usr/lib/pam_radius.so
OLD_LIBS+=usr/lib/pam_radius.so.6
OLD_FILES+=usr/lib32/libradius.a
OLD_FILES+=usr/lib32/libradius.so
OLD_LIBS+=usr/lib32/libradius.so.4
OLD_FILES+=usr/lib32/libradius_p.a
OLD_FILES+=usr/lib32/pam_radius.so
OLD_LIBS+=usr/lib32/pam_radius.so.6
OLD_FILES+=usr/include/radlib.h
OLD_FILES+=usr/include/radlib_vs.h
OLD_FILES+=usr/share/man/man3/libradius.3.gz
OLD_FILES+=usr/share/man/man3/rad_acct_open.3.gz
OLD_FILES+=usr/share/man/man3/rad_add_server.3.gz
OLD_FILES+=usr/share/man/man3/rad_add_server_ex.3.gz
OLD_FILES+=usr/share/man/man3/rad_auth_open.3.gz
OLD_FILES+=usr/share/man/man3/rad_bind_to.3.gz
OLD_FILES+=usr/share/man/man3/rad_close.3.gz
OLD_FILES+=usr/share/man/man3/rad_config.3.gz
OLD_FILES+=usr/share/man/man3/rad_continue_send_request.3.gz
OLD_FILES+=usr/share/man/man3/rad_create_request.3.gz
OLD_FILES+=usr/share/man/man3/rad_create_response.3.gz
OLD_FILES+=usr/share/man/man3/rad_cvt_addr.3.gz
OLD_FILES+=usr/share/man/man3/rad_cvt_int.3.gz
OLD_FILES+=usr/share/man/man3/rad_cvt_string.3.gz
OLD_FILES+=usr/share/man/man3/rad_demangle.3.gz
OLD_FILES+=usr/share/man/man3/rad_demangle_mppe_key.3.gz
OLD_FILES+=usr/share/man/man3/rad_get_attr.3.gz
OLD_FILES+=usr/share/man/man3/rad_get_vendor_attr.3.gz
OLD_FILES+=usr/share/man/man3/rad_init_send_request.3.gz
OLD_FILES+=usr/share/man/man3/rad_put_addr.3.gz
OLD_FILES+=usr/share/man/man3/rad_put_attr.3.gz
OLD_FILES+=usr/share/man/man3/rad_put_int.3.gz
OLD_FILES+=usr/share/man/man3/rad_put_message_authentic.3.gz
OLD_FILES+=usr/share/man/man3/rad_put_string.3.gz
OLD_FILES+=usr/share/man/man3/rad_put_vendor_addr.3.gz
OLD_FILES+=usr/share/man/man3/rad_put_vendor_attr.3.gz
OLD_FILES+=usr/share/man/man3/rad_put_vendor_int.3.gz
OLD_FILES+=usr/share/man/man3/rad_put_vendor_string.3.gz
OLD_FILES+=usr/share/man/man3/rad_receive_request.3.gz
OLD_FILES+=usr/share/man/man3/rad_request_authenticator.3.gz
OLD_FILES+=usr/share/man/man3/rad_send_request.3.gz
OLD_FILES+=usr/share/man/man3/rad_send_response.3.gz
OLD_FILES+=usr/share/man/man3/rad_server_open.3.gz
OLD_FILES+=usr/share/man/man3/rad_server_secret.3.gz
OLD_FILES+=usr/share/man/man3/rad_strerror.3.gz
OLD_FILES+=usr/share/man/man5/radius.conf.5.gz
OLD_FILES+=usr/share/man/man8/pam_radius.8.gz
.endif
.if ${MK_RBOOTD} == no
OLD_FILES+=usr/libexec/rbootd
OLD_FILES+=usr/share/man/man8/rbootd.8.gz
.endif
.if ${MK_RESCUE} == no
. if exists(${DESTDIR}${TESTSBASE})
RESCUE_DIRS!=find ${DESTDIR}/rescue -type d 2>/dev/null | sed -e 's,^${DESTDIR}/,,'; echo
OLD_DIRS+=${RESCUE_DIRS}
RESCUE_FILES!=find ${DESTDIR}/rescue \! -type d 2>/dev/null | sed -e 's,^${DESTDIR}/,,'; echo
OLD_FILES+=${RESCUE_FILES}
. endif
.endif
.if ${MK_ROUTED} == no
OLD_FILES+=etc/rc.d/routed
OLD_FILES+=rescue/routed
OLD_FILES+=rescue/rtquery
OLD_FILES+=sbin/routed
OLD_FILES+=sbin/rtquery
OLD_FILES+=usr/share/man/man8/routed.8.gz
OLD_FILES+=usr/share/man/man8/rtquery.8.gz
.endif
.if ${MK_SENDMAIL} == no
OLD_FILES+=etc/mtree/BSD.sendmail.dist
OLD_FILES+=etc/newsyslog.conf.d/sendmail.conf
OLD_FILES+=etc/periodic/daily/150.clean-hoststat
OLD_FILES+=etc/periodic/daily/440.status-mailq
OLD_FILES+=etc/periodic/daily/460.status-mail-rejects
OLD_FILES+=etc/periodic/daily/500.queuerun
OLD_FILES+=etc/rc.d/sendmail
OLD_FILES+=bin/rmail
OLD_FILES+=usr/bin/vacation
OLD_FILES+=usr/include/libmilter/mfapi.h
OLD_FILES+=usr/include/libmilter/mfdef.h
OLD_DIRS+=usr/include/libmilter
OLD_FILES+=usr/lib/libmilter.a
OLD_FILES+=usr/lib/libmilter.so
OLD_LIBS+=usr/lib/libmilter.so.5
OLD_FILES+=usr/lib/libmilter_p.a
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/libmilter.a
OLD_FILES+=usr/lib32/libmilter.so
OLD_LIBS+=usr/lib32/libmilter.so.5
OLD_FILES+=usr/lib32/libmilter_p.a
.endif
OLD_FILES+=usr/libexec/mail.local
OLD_FILES+=usr/libexec/sendmail/sendmail
OLD_FILES+=usr/libexec/smrsh
OLD_FILES+=usr/sbin/editmap
OLD_FILES+=usr/sbin/mailstats
OLD_FILES+=usr/sbin/makemap
OLD_FILES+=usr/sbin/praliases
OLD_FILES+=usr/share/doc/smm/08.sendmailop/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/08.sendmailop
OLD_FILES+=usr/share/man/man1/mailq.1.gz
OLD_FILES+=usr/share/man/man1/newaliases.1.gz
OLD_FILES+=usr/share/man/man1/vacation.1.gz
OLD_FILES+=usr/share/man/man5/aliases.5.gz
OLD_FILES+=usr/share/man/man8/editmap.8.gz
OLD_FILES+=usr/share/man/man8/hoststat.8.gz
OLD_FILES+=usr/share/man/man8/mail.local.8.gz
OLD_FILES+=usr/share/man/man8/mailstats.8.gz
OLD_FILES+=usr/share/man/man8/makemap.8.gz
OLD_FILES+=usr/share/man/man8/praliases.8.gz
OLD_FILES+=usr/share/man/man8/purgestat.8.gz
OLD_FILES+=usr/share/man/man8/rmail.8.gz
OLD_FILES+=usr/share/man/man8/sendmail.8.gz
OLD_FILES+=usr/share/man/man8/smrsh.8.gz
OLD_FILES+=usr/share/sendmail/cf/README
OLD_FILES+=usr/share/sendmail/cf/cf/Makefile
OLD_FILES+=usr/share/sendmail/cf/cf/README
OLD_FILES+=usr/share/sendmail/cf/cf/chez.cs.mc
OLD_FILES+=usr/share/sendmail/cf/cf/clientproto.mc
OLD_FILES+=usr/share/sendmail/cf/cf/cs-hpux10.mc
OLD_FILES+=usr/share/sendmail/cf/cf/cs-hpux9.mc
OLD_FILES+=usr/share/sendmail/cf/cf/cs-osf1.mc
OLD_FILES+=usr/share/sendmail/cf/cf/cs-solaris2.mc
OLD_FILES+=usr/share/sendmail/cf/cf/cs-sunos4.1.mc
OLD_FILES+=usr/share/sendmail/cf/cf/cs-ultrix4.mc
OLD_FILES+=usr/share/sendmail/cf/cf/cyrusproto.mc
OLD_FILES+=usr/share/sendmail/cf/cf/generic-bsd4.4.mc
OLD_FILES+=usr/share/sendmail/cf/cf/generic-hpux10.mc
OLD_FILES+=usr/share/sendmail/cf/cf/generic-hpux9.mc
OLD_FILES+=usr/share/sendmail/cf/cf/generic-linux.mc
OLD_FILES+=usr/share/sendmail/cf/cf/generic-mpeix.mc
OLD_FILES+=usr/share/sendmail/cf/cf/generic-nextstep3.3.mc
OLD_FILES+=usr/share/sendmail/cf/cf/generic-osf1.mc
OLD_FILES+=usr/share/sendmail/cf/cf/generic-solaris.mc
OLD_FILES+=usr/share/sendmail/cf/cf/generic-sunos4.1.mc
OLD_FILES+=usr/share/sendmail/cf/cf/generic-ultrix4.mc
OLD_FILES+=usr/share/sendmail/cf/cf/huginn.cs.mc
OLD_FILES+=usr/share/sendmail/cf/cf/knecht.mc
OLD_FILES+=usr/share/sendmail/cf/cf/mail.cs.mc
OLD_FILES+=usr/share/sendmail/cf/cf/mail.eecs.mc
OLD_FILES+=usr/share/sendmail/cf/cf/mailspool.cs.mc
OLD_FILES+=usr/share/sendmail/cf/cf/python.cs.mc
OLD_FILES+=usr/share/sendmail/cf/cf/s2k-osf1.mc
OLD_FILES+=usr/share/sendmail/cf/cf/s2k-ultrix4.mc
OLD_FILES+=usr/share/sendmail/cf/cf/submit.cf
OLD_FILES+=usr/share/sendmail/cf/cf/submit.mc
OLD_FILES+=usr/share/sendmail/cf/cf/tcpproto.mc
OLD_FILES+=usr/share/sendmail/cf/cf/ucbarpa.mc
OLD_FILES+=usr/share/sendmail/cf/cf/ucbvax.mc
OLD_FILES+=usr/share/sendmail/cf/cf/uucpproto.mc
OLD_FILES+=usr/share/sendmail/cf/cf/vangogh.cs.mc
OLD_DIRS+=usr/share/sendmail/cf/cf
OLD_FILES+=usr/share/sendmail/cf/domain/Berkeley.EDU.m4
OLD_FILES+=usr/share/sendmail/cf/domain/CS.Berkeley.EDU.m4
OLD_FILES+=usr/share/sendmail/cf/domain/EECS.Berkeley.EDU.m4
OLD_FILES+=usr/share/sendmail/cf/domain/S2K.Berkeley.EDU.m4
OLD_FILES+=usr/share/sendmail/cf/domain/berkeley-only.m4
OLD_FILES+=usr/share/sendmail/cf/domain/generic.m4
OLD_DIRS+=usr/share/sendmail/cf/domain
OLD_FILES+=usr/share/sendmail/cf/feature/accept_unqualified_senders.m4
OLD_FILES+=usr/share/sendmail/cf/feature/accept_unresolvable_domains.m4
OLD_FILES+=usr/share/sendmail/cf/feature/access_db.m4
OLD_FILES+=usr/share/sendmail/cf/feature/allmasquerade.m4
OLD_FILES+=usr/share/sendmail/cf/feature/always_add_domain.m4
OLD_FILES+=usr/share/sendmail/cf/feature/authinfo.m4
OLD_FILES+=usr/share/sendmail/cf/feature/badmx.m4
OLD_FILES+=usr/share/sendmail/cf/feature/bcc.m4
OLD_FILES+=usr/share/sendmail/cf/feature/bestmx_is_local.m4
OLD_FILES+=usr/share/sendmail/cf/feature/bitdomain.m4
OLD_FILES+=usr/share/sendmail/cf/feature/blacklist_recipients.m4
OLD_FILES+=usr/share/sendmail/cf/feature/block_bad_helo.m4
OLD_FILES+=usr/share/sendmail/cf/feature/compat_check.m4
OLD_FILES+=usr/share/sendmail/cf/feature/conncontrol.m4
OLD_FILES+=usr/share/sendmail/cf/feature/delay_checks.m4
OLD_FILES+=usr/share/sendmail/cf/feature/dnsbl.m4
OLD_FILES+=usr/share/sendmail/cf/feature/domaintable.m4
OLD_FILES+=usr/share/sendmail/cf/feature/enhdnsbl.m4
OLD_FILES+=usr/share/sendmail/cf/feature/generics_entire_domain.m4
OLD_FILES+=usr/share/sendmail/cf/feature/genericstable.m4
OLD_FILES+=usr/share/sendmail/cf/feature/greet_pause.m4
OLD_FILES+=usr/share/sendmail/cf/feature/ldap_routing.m4
OLD_FILES+=usr/share/sendmail/cf/feature/limited_masquerade.m4
OLD_FILES+=usr/share/sendmail/cf/feature/local_lmtp.m4
OLD_FILES+=usr/share/sendmail/cf/feature/local_no_masquerade.m4
OLD_FILES+=usr/share/sendmail/cf/feature/local_procmail.m4
OLD_FILES+=usr/share/sendmail/cf/feature/lookupdotdomain.m4
OLD_FILES+=usr/share/sendmail/cf/feature/loose_relay_check.m4
OLD_FILES+=usr/share/sendmail/cf/feature/mailertable.m4
OLD_FILES+=usr/share/sendmail/cf/feature/masquerade_entire_domain.m4
OLD_FILES+=usr/share/sendmail/cf/feature/masquerade_envelope.m4
OLD_FILES+=usr/share/sendmail/cf/feature/msp.m4
OLD_FILES+=usr/share/sendmail/cf/feature/mtamark.m4
OLD_FILES+=usr/share/sendmail/cf/feature/no_default_msa.m4
OLD_FILES+=usr/share/sendmail/cf/feature/nocanonify.m4
OLD_FILES+=usr/share/sendmail/cf/feature/nopercenthack.m4
OLD_FILES+=usr/share/sendmail/cf/feature/notsticky.m4
OLD_FILES+=usr/share/sendmail/cf/feature/nouucp.m4
OLD_FILES+=usr/share/sendmail/cf/feature/nullclient.m4
OLD_FILES+=usr/share/sendmail/cf/feature/prefixmod.m4
OLD_FILES+=usr/share/sendmail/cf/feature/preserve_local_plus_detail.m4
OLD_FILES+=usr/share/sendmail/cf/feature/preserve_luser_host.m4
OLD_FILES+=usr/share/sendmail/cf/feature/promiscuous_relay.m4
OLD_FILES+=usr/share/sendmail/cf/feature/queuegroup.m4
OLD_FILES+=usr/share/sendmail/cf/feature/ratecontrol.m4
OLD_FILES+=usr/share/sendmail/cf/feature/redirect.m4
OLD_FILES+=usr/share/sendmail/cf/feature/relay_based_on_MX.m4
OLD_FILES+=usr/share/sendmail/cf/feature/relay_entire_domain.m4
OLD_FILES+=usr/share/sendmail/cf/feature/relay_hosts_only.m4
OLD_FILES+=usr/share/sendmail/cf/feature/relay_local_from.m4
OLD_FILES+=usr/share/sendmail/cf/feature/relay_mail_from.m4
OLD_FILES+=usr/share/sendmail/cf/feature/require_rdns.m4
OLD_FILES+=usr/share/sendmail/cf/feature/smrsh.m4
OLD_FILES+=usr/share/sendmail/cf/feature/stickyhost.m4
OLD_FILES+=usr/share/sendmail/cf/feature/tls_session_features.m4
OLD_FILES+=usr/share/sendmail/cf/feature/use_client_ptr.m4
OLD_FILES+=usr/share/sendmail/cf/feature/use_ct_file.m4
OLD_FILES+=usr/share/sendmail/cf/feature/use_cw_file.m4
OLD_FILES+=usr/share/sendmail/cf/feature/uucpdomain.m4
OLD_FILES+=usr/share/sendmail/cf/feature/virtuser_entire_domain.m4
OLD_FILES+=usr/share/sendmail/cf/feature/virtusertable.m4
OLD_DIRS+=usr/share/sendmail/cf/feature
OLD_FILES+=usr/share/sendmail/cf/hack/cssubdomain.m4
OLD_FILES+=usr/share/sendmail/cf/hack/xconnect.m4
OLD_DIRS+=usr/share/sendmail/cf/hack
OLD_FILES+=usr/share/sendmail/cf/m4/cf.m4
OLD_FILES+=usr/share/sendmail/cf/m4/cfhead.m4
OLD_FILES+=usr/share/sendmail/cf/m4/proto.m4
OLD_FILES+=usr/share/sendmail/cf/m4/version.m4
OLD_DIRS+=usr/share/sendmail/cf/m4
OLD_FILES+=usr/share/sendmail/cf/mailer/cyrus.m4
OLD_FILES+=usr/share/sendmail/cf/mailer/cyrusv2.m4
OLD_FILES+=usr/share/sendmail/cf/mailer/fax.m4
OLD_FILES+=usr/share/sendmail/cf/mailer/local.m4
OLD_FILES+=usr/share/sendmail/cf/mailer/mail11.m4
OLD_FILES+=usr/share/sendmail/cf/mailer/phquery.m4
OLD_FILES+=usr/share/sendmail/cf/mailer/pop.m4
OLD_FILES+=usr/share/sendmail/cf/mailer/procmail.m4
OLD_FILES+=usr/share/sendmail/cf/mailer/qpage.m4
OLD_FILES+=usr/share/sendmail/cf/mailer/smtp.m4
OLD_FILES+=usr/share/sendmail/cf/mailer/usenet.m4
OLD_FILES+=usr/share/sendmail/cf/mailer/uucp.m4
OLD_DIRS+=usr/share/sendmail/cf/mailer
OLD_FILES+=usr/share/sendmail/cf/ostype/a-ux.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/aix3.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/aix4.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/aix5.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/altos.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/amdahl-uts.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/bsd4.3.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/bsd4.4.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/bsdi.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/bsdi1.0.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/bsdi2.0.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/darwin.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/dgux.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/domainos.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/dragonfly.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/dynix3.2.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/freebsd4.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/freebsd5.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/freebsd6.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/gnu.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/hpux10.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/hpux11.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/hpux9.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/irix4.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/irix5.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/irix6.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/isc4.1.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/linux.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/maxion.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/mklinux.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/mpeix.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/nextstep.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/openbsd.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/osf1.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/powerux.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/ptx2.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/qnx.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/riscos4.5.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/sco-uw-2.1.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/sco3.2.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/sinix.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/solaris11.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/solaris2.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/solaris2.ml.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/solaris2.pre5.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/solaris8.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/sunos3.5.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/sunos4.1.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/svr4.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/ultrix4.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/unicos.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/unicosmk.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/unicosmp.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/unixware7.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/unknown.m4
OLD_FILES+=usr/share/sendmail/cf/ostype/uxpds.m4
OLD_DIRS+=usr/share/sendmail/cf/ostype
OLD_FILES+=usr/share/sendmail/cf/sendmail.schema
OLD_FILES+=usr/share/sendmail/cf/sh/makeinfo.sh
OLD_DIRS+=usr/share/sendmail/cf/sh
OLD_FILES+=usr/share/sendmail/cf/siteconfig/uucp.cogsci.m4
OLD_FILES+=usr/share/sendmail/cf/siteconfig/uucp.old.arpa.m4
OLD_FILES+=usr/share/sendmail/cf/siteconfig/uucp.ucbarpa.m4
OLD_FILES+=usr/share/sendmail/cf/siteconfig/uucp.ucbvax.m4
OLD_DIRS+=usr/share/sendmail/cf/siteconfig
OLD_DIRS+=usr/share/sendmail/cf
OLD_DIRS+=usr/share/sendmail
OLD_DIRS+=var/spool/clientmqueue
.endif
.if ${MK_SERVICESDB} == no
OLD_FILES+=var/db/services.db
.endif
.if ${MK_SHAREDOCS} == no
OLD_FILES+=usr/share/doc/pjdfstest/README
OLD_DIRS+=usr/share/doc/pjdfstest
.endif
.if ${MK_SYSCONS} == no
OLD_FILES+=usr/share/syscons/fonts/INDEX.fonts
OLD_FILES+=usr/share/syscons/fonts/armscii8-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/armscii8-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/armscii8-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/cp1251-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/cp1251-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/cp1251-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/cp437-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/cp437-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/cp437-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/cp437-thin-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/cp437-thin-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/cp850-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/cp850-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/cp850-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/cp850-thin-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/cp850-thin-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/cp865-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/cp865-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/cp865-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/cp865-thin-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/cp865-thin-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/cp866-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/cp866-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/cp866-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/cp866b-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/cp866c-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/cp866u-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/cp866u-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/cp866u-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/haik8-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/haik8-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/haik8-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/iso-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/iso-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/iso-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/iso-thin-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/iso02-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/iso02-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/iso02-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/iso04-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/iso04-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/iso04-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/iso04-vga9-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/iso04-vga9-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/iso04-vga9-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/iso04-vga9-wide-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/iso04-wide-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/iso05-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/iso05-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/iso05-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/iso07-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/iso07-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/iso07-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/iso08-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/iso08-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/iso08-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/iso09-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/iso15-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/iso15-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/iso15-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/iso15-thin-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/koi8-r-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/koi8-r-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/koi8-r-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/koi8-rb-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/koi8-rc-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/koi8-u-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/koi8-u-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/koi8-u-8x8.fnt
OLD_FILES+=usr/share/syscons/fonts/swiss-1131-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/swiss-1251-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/swiss-8x14.fnt
OLD_FILES+=usr/share/syscons/fonts/swiss-8x16.fnt
OLD_FILES+=usr/share/syscons/fonts/swiss-8x8.fnt
OLD_FILES+=usr/share/syscons/keymaps/INDEX.keymaps
OLD_FILES+=usr/share/syscons/keymaps/be.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/be.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/bg.bds.ctrlcaps.kbd
OLD_FILES+=usr/share/syscons/keymaps/bg.phonetic.ctrlcaps.kbd
OLD_FILES+=usr/share/syscons/keymaps/br275.cp850.kbd
OLD_FILES+=usr/share/syscons/keymaps/br275.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/br275.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/by.cp1131.kbd
OLD_FILES+=usr/share/syscons/keymaps/by.cp1251.kbd
OLD_FILES+=usr/share/syscons/keymaps/by.iso5.kbd
OLD_FILES+=usr/share/syscons/keymaps/ce.iso2.kbd
OLD_FILES+=usr/share/syscons/keymaps/colemak.iso15.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/cs.latin2.qwertz.kbd
OLD_FILES+=usr/share/syscons/keymaps/cz.iso2.kbd
OLD_FILES+=usr/share/syscons/keymaps/danish.cp865.kbd
OLD_FILES+=usr/share/syscons/keymaps/danish.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/danish.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/danish.iso.macbook.kbd
OLD_FILES+=usr/share/syscons/keymaps/dutch.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/eee_nordic.kbd
OLD_FILES+=usr/share/syscons/keymaps/el.iso07.kbd
OLD_FILES+=usr/share/syscons/keymaps/estonian.cp850.kbd
OLD_FILES+=usr/share/syscons/keymaps/estonian.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/estonian.iso15.kbd
OLD_FILES+=usr/share/syscons/keymaps/finnish.cp850.kbd
OLD_FILES+=usr/share/syscons/keymaps/finnish.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/fr.dvorak.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/fr.dvorak.kbd
OLD_FILES+=usr/share/syscons/keymaps/fr.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/fr.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/fr.macbook.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/fr_CA.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/german.cp850.kbd
OLD_FILES+=usr/share/syscons/keymaps/german.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/german.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/gr.elot.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/gr.us101.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/hr.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/hu.iso2.101keys.kbd
OLD_FILES+=usr/share/syscons/keymaps/hu.iso2.102keys.kbd
OLD_FILES+=usr/share/syscons/keymaps/hy.armscii-8.kbd
OLD_FILES+=usr/share/syscons/keymaps/icelandic.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/icelandic.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/it.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/iw.iso8.kbd
OLD_FILES+=usr/share/syscons/keymaps/jp.106.kbd
OLD_FILES+=usr/share/syscons/keymaps/jp.106x.kbd
OLD_FILES+=usr/share/syscons/keymaps/kk.pt154.io.kbd
OLD_FILES+=usr/share/syscons/keymaps/kk.pt154.kst.kbd
OLD_FILES+=usr/share/syscons/keymaps/latinamerican.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/latinamerican.kbd
OLD_FILES+=usr/share/syscons/keymaps/lt.iso4.kbd
OLD_FILES+=usr/share/syscons/keymaps/norwegian.dvorak.kbd
OLD_FILES+=usr/share/syscons/keymaps/norwegian.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/pl_PL.ISO8859-2.kbd
OLD_FILES+=usr/share/syscons/keymaps/pl_PL.dvorak.kbd
OLD_FILES+=usr/share/syscons/keymaps/pt.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/pt.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/ru.cp866.kbd
OLD_FILES+=usr/share/syscons/keymaps/ru.iso5.kbd
OLD_FILES+=usr/share/syscons/keymaps/ru.koi8-r.kbd
OLD_FILES+=usr/share/syscons/keymaps/ru.koi8-r.shift.kbd
OLD_FILES+=usr/share/syscons/keymaps/ru.koi8-r.win.kbd
OLD_FILES+=usr/share/syscons/keymaps/si.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/sk.iso2.kbd
OLD_FILES+=usr/share/syscons/keymaps/spanish.dvorak.kbd
OLD_FILES+=usr/share/syscons/keymaps/spanish.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/spanish.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/spanish.iso15.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/swedish.cp850.kbd
OLD_FILES+=usr/share/syscons/keymaps/swedish.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/swissfrench.cp850.kbd
OLD_FILES+=usr/share/syscons/keymaps/swissfrench.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/swissfrench.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/swissgerman.cp850.kbd
OLD_FILES+=usr/share/syscons/keymaps/swissgerman.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/swissgerman.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/swissgerman.macbook.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/tr.iso9.q.kbd
OLD_FILES+=usr/share/syscons/keymaps/ua.iso5.kbd
OLD_FILES+=usr/share/syscons/keymaps/ua.koi8-u.kbd
OLD_FILES+=usr/share/syscons/keymaps/ua.koi8-u.shift.alt.kbd
OLD_FILES+=usr/share/syscons/keymaps/uk.cp850-ctrl.kbd
OLD_FILES+=usr/share/syscons/keymaps/uk.cp850.kbd
OLD_FILES+=usr/share/syscons/keymaps/uk.dvorak.kbd
OLD_FILES+=usr/share/syscons/keymaps/uk.iso-ctrl.kbd
OLD_FILES+=usr/share/syscons/keymaps/uk.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.dvorak.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.dvorakl.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.dvorakp.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.dvorakr.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.dvorakx.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.emacs.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.iso.acc.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.iso.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.pc-ctrl.kbd
OLD_FILES+=usr/share/syscons/keymaps/us.unix.kbd
OLD_FILES+=usr/share/syscons/scrnmaps/armscii8-2haik8.scm
OLD_FILES+=usr/share/syscons/scrnmaps/iso-8859-1_to_cp437.scm
OLD_FILES+=usr/share/syscons/scrnmaps/iso-8859-4_for_vga9.scm
OLD_FILES+=usr/share/syscons/scrnmaps/iso-8859-7_to_cp437.scm
OLD_FILES+=usr/share/syscons/scrnmaps/koi8-r2cp866.scm
OLD_FILES+=usr/share/syscons/scrnmaps/koi8-u2cp866u.scm
OLD_FILES+=usr/share/syscons/scrnmaps/us-ascii_to_cp437.scm
OLD_DIRS+=usr/share/syscons/fonts
OLD_DIRS+=usr/share/syscons/scrnmaps
OLD_DIRS+=usr/share/syscons/keymaps
OLD_DIRS+=usr/share/syscons
.endif
.if ${MK_TALK} == no
OLD_FILES+=usr/bin/talk
OLD_FILES+=usr/libexec/ntalkd
OLD_FILES+=usr/share/man/man1/talk.1.gz
OLD_FILES+=usr/share/man/man8/talkd.8.gz
.endif
.if ${MK_TCSH} == no
OLD_FILES+=.cshrc
OLD_FILES+=etc/csh.cshrc
OLD_FILES+=etc/csh.login
OLD_FILES+=etc/csh.logout
OLD_FILES+=bin/csh
OLD_FILES+=bin/tcsh
OLD_FILES+=rescue/csh
OLD_FILES+=rescue/tcsh
OLD_FILES+=root/.cshrc
OLD_FILES+=root/.login
OLD_FILES+=usr/share/examples/etc/csh.cshrc
OLD_FILES+=usr/share/examples/etc/csh.login
OLD_FILES+=usr/share/examples/etc/csh.logout
OLD_FILES+=usr/share/examples/tcsh/complete.tcsh
OLD_FILES+=usr/share/examples/tcsh/csh-mode.el
OLD_DIRS+=usr/share/examples/tcsh
OLD_FILES+=usr/share/man/man1/csh.1.gz
OLD_FILES+=usr/share/man/man1/tcsh.1.gz
OLD_FILES+=usr/share/nls/de_AT.ISO8859-1/tcsh.cat
OLD_FILES+=usr/share/nls/de_AT.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/de_AT.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/de_CH.ISO8859-1/tcsh.cat
OLD_FILES+=usr/share/nls/de_CH.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/de_CH.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/de_DE.ISO8859-1/tcsh.cat
OLD_FILES+=usr/share/nls/de_DE.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/de_DE.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/el_GR.ISO8859-7/tcsh.cat
OLD_FILES+=usr/share/nls/el_GR.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/es_ES.ISO8859-1/tcsh.cat
OLD_FILES+=usr/share/nls/es_ES.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/es_ES.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/et_EE.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/et_EE.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/fi_FI.ISO8859-1/tcsh.cat
OLD_FILES+=usr/share/nls/fi_FI.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/fi_FI.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/fr_BE.ISO8859-1/tcsh.cat
OLD_FILES+=usr/share/nls/fr_BE.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/fr_BE.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/fr_CA.ISO8859-1/tcsh.cat
OLD_FILES+=usr/share/nls/fr_CA.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/fr_CA.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/fr_CH.ISO8859-1/tcsh.cat
OLD_FILES+=usr/share/nls/fr_CH.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/fr_CH.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/fr_FR.ISO8859-1/tcsh.cat
OLD_FILES+=usr/share/nls/fr_FR.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/fr_FR.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/it_CH.ISO8859-1/tcsh.cat
OLD_FILES+=usr/share/nls/it_CH.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/it_CH.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/it_IT.ISO8859-1/tcsh.cat
OLD_FILES+=usr/share/nls/it_IT.ISO8859-15/tcsh.cat
OLD_FILES+=usr/share/nls/it_IT.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/ja_JP.SJIS/tcsh.cat
OLD_FILES+=usr/share/nls/ja_JP.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/ja_JP.eucJP/tcsh.cat
OLD_FILES+=usr/share/nls/ru_RU.CP1251/tcsh.cat
OLD_FILES+=usr/share/nls/ru_RU.CP866/tcsh.cat
OLD_FILES+=usr/share/nls/ru_RU.ISO8859-5/tcsh.cat
OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/tcsh.cat
OLD_FILES+=usr/share/nls/ru_RU.UTF-8/tcsh.cat
OLD_FILES+=usr/share/nls/uk_UA.ISO8859-5/tcsh.cat
OLD_FILES+=usr/share/nls/uk_UA.KOI8-U/tcsh.cat
OLD_FILES+=usr/share/nls/uk_UA.UTF-8/tcsh.cat
.endif
.if ${MK_TELNET} == no
OLD_FILES+=etc/pam.d/telnetd
OLD_FILES+=usr/bin/telnet
OLD_FILES+=usr/libexec/telnetd
OLD_FILES+=usr/share/man/man1/telnet.1.gz
OLD_FILES+=usr/share/man/man8/telnetd.8.gz
.endif
.if ${MK_TESTS} == yes
OLD_FILES+=usr/bin/atf-sh
OLD_FILES+=usr/include/atf-c++/config.hpp
OLD_FILES+=usr/include/atf-c/config.h
OLD_LIBS+=usr/lib/libatf-c++.a
OLD_LIBS+=usr/lib/libatf-c++.so
OLD_LIBS+=usr/lib/libatf-c++.so.1
OLD_LIBS+=usr/lib/libatf-c++.so.2
OLD_LIBS+=usr/lib/libatf-c++_p.a
OLD_LIBS+=usr/lib/libatf-c.a
OLD_LIBS+=usr/lib/libatf-c.so
OLD_LIBS+=usr/lib/libatf-c.so.1
OLD_LIBS+=usr/lib/libatf-c_p.a
OLD_LIBS+=usr/lib/private/libatf-c.so.0
OLD_LIBS+=usr/lib/private/libatf-c++.so.1
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_LIBS+=usr/lib32/libatf-c++.a
OLD_LIBS+=usr/lib32/libatf-c++.so
OLD_LIBS+=usr/lib32/libatf-c++.so.1
OLD_LIBS+=usr/lib32/libatf-c++.so.2
OLD_LIBS+=usr/lib32/libatf-c++_p.a
OLD_LIBS+=usr/lib32/libatf-c.a
OLD_LIBS+=usr/lib32/libatf-c.so
OLD_LIBS+=usr/lib32/libatf-c.so.1
OLD_LIBS+=usr/lib32/libatf-c_p.a
OLD_LIBS+=usr/lib32/private/libatf-c.so.0
OLD_LIBS+=usr/lib32/private/libatf-c++.so.1
.endif
OLD_FILES+=usr/libdata/pkgconfig/atf-c++.pc
OLD_FILES+=usr/libdata/pkgconfig/atf-c.pc
OLD_FILES+=usr/libdata/pkgconfig/atf-sh.pc
OLD_FILES+=usr/share/aclocal/atf-c++.m4
OLD_FILES+=usr/share/aclocal/atf-c.m4
OLD_FILES+=usr/share/aclocal/atf-common.m4
OLD_FILES+=usr/share/aclocal/atf-sh.m4
OLD_DIRS+=usr/share/aclocal
OLD_DIRS+=usr/tests/bin/chown
OLD_FILES+=usr/tests/bin/chown/Kyuafile
OLD_FILES+=usr/tests/bin/chown/chown-f_test
OLD_FILES+=usr/tests/bin/chown/units_basics
OLD_FILES+=usr/tests/bin/date/legacy_test
OLD_FILES+=usr/tests/bin/sh/legacy_test
OLD_FILES+=usr/tests/usr.bin/atf/Kyuafile
OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/Kyuafile
OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/atf_check_test
OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/config_test
OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/integration_test
OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/misc_helpers
OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/normalize_test
OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/tc_test
OLD_FILES+=usr/tests/usr.bin/atf/atf-sh/tp_test
OLD_DIRS+=usr/tests/usr.bin/atf/atf-sh
OLD_DIRS+=usr/tests/usr.bin/atf
OLD_FILES+=usr/tests/lib/atf/libatf-c/test_helpers_test
OLD_FILES+=usr/tests/lib/atf/test-programs/fork_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/application_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/config_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/expand_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/parser_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/sanity_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/ui_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/env_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/exceptions_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/expand_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/fs_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/parser_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/process_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/sanity_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/pkg_config_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/text_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/ui_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/config_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/dynstr_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/env_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/fs_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/list_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/map_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/pkg_config_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/process_helpers
OLD_FILES+=usr/tests/lib/atf/libatf-c/process_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/sanity_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/text_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/user_test
.if ${MK_MAKE} == yes
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.3
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.4
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.5
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.6
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.status.7
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.3
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.4
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.5
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.6
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stderr.7
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.3
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.4
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.5
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.6
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/expected.stdout.7
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd/libtest.a
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.3
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.4
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.5
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.6
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.status.7
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.3
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.4
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.5
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.6
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.7
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.3
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.4
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.5
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.6
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.7
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod/libtest.a
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.3
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.4
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.5
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.6
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.status.7
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.3
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.4
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.5
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.6
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stderr.7
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.3
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.4
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.5
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.6
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/expected.stdout.7
OLD_FILES+=usr/tests/usr.bin/make/archives/fmt_oldbsd/libtest.a
OLD_FILES+=usr/tests/usr.bin/make/archives/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/basic/t0/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/basic/t0/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/basic/t0/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/basic/t0/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/basic/t0/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/basic/t1/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/basic/t1/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/basic/t1/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/basic/t1/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/basic/t1/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/basic/t1/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/basic/t2/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/basic/t2/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/basic/t2/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/basic/t2/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/basic/t2/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/basic/t2/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/basic/t3/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/basic/t3/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/basic/t3/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/basic/t3/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/basic/t3/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/basic/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/execution/ellipsis/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/execution/ellipsis/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/execution/ellipsis/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/execution/ellipsis/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/execution/ellipsis/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/execution/ellipsis/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/execution/empty/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/execution/empty/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/execution/empty/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/execution/empty/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/execution/empty/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/execution/empty/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/execution/joberr/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/execution/joberr/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/execution/joberr/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/execution/joberr/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/execution/joberr/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/execution/joberr/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/execution/plus/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/execution/plus/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/execution/plus/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/execution/plus/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/execution/plus/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/execution/plus/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/execution/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/shell/builtin/sh
OLD_FILES+=usr/tests/usr.bin/make/shell/meta/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/shell/meta/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/shell/meta/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/shell/meta/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/shell/meta/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/shell/meta/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/shell/meta/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/shell/meta/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/shell/meta/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/shell/meta/sh
OLD_FILES+=usr/tests/usr.bin/make/shell/path/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/shell/path/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/shell/path/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/shell/path/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/shell/path/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/shell/path/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/shell/path/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/shell/path/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/shell/path/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/shell/path/sh
OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/shell/path_select/shell
OLD_FILES+=usr/tests/usr.bin/make/shell/replace/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/shell/replace/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/shell/replace/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/shell/replace/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/shell/replace/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/shell/replace/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/shell/replace/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/shell/replace/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/shell/replace/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/shell/replace/shell
OLD_FILES+=usr/tests/usr.bin/make/shell/select/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/shell/select/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/shell/select/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/shell/select/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/shell/select/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/shell/select/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/shell/select/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/shell/select/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/shell/select/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/shell/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/TEST1.a
OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/suffixes/basic/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/TEST1.a
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/TEST2.a
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild1/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/TEST1.a
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/TEST2.a
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/suffixes/src_wild2/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/suffixes/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/syntax/directive-t0/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/syntax/directive-t0/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/syntax/directive-t0/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/syntax/directive-t0/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/syntax/directive-t0/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/syntax/directive-t0/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.status.3
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.status.4
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.status.5
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stderr.3
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stderr.4
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stderr.5
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stdout.3
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stdout.4
OLD_FILES+=usr/tests/usr.bin/make/syntax/enl/expected.stdout.5
OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/syntax/funny-targets/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/syntax/semi/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/syntax/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/1/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/1/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/1/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/1/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/1/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/1/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/2/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/mk/sys.mk
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/mk/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t0/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/1/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/1/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/1/cleanup
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/1/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/1/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/1/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/2/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/mk/sys.mk
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/mk/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t1/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/1/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/1/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/1/cleanup
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/1/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/1/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/1/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/2/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/mk/sys.mk
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/mk/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/t2/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/sysmk/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_M/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_M/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_M/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_M/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_M/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_M/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.status.3
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.stderr.3
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/variables/modifier_t/expected.stdout.3
OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/expected.status.2
OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/expected.stderr.2
OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/variables/opt_V/expected.stdout.2
OLD_FILES+=usr/tests/usr.bin/make/variables/t0/legacy_test
OLD_FILES+=usr/tests/usr.bin/make/variables/t0/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/variables/t0/Makefile.test
OLD_FILES+=usr/tests/usr.bin/make/variables/t0/expected.status.1
OLD_FILES+=usr/tests/usr.bin/make/variables/t0/expected.stderr.1
OLD_FILES+=usr/tests/usr.bin/make/variables/t0/expected.stdout.1
OLD_FILES+=usr/tests/usr.bin/make/variables/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/Kyuafile
OLD_FILES+=usr/tests/usr.bin/make/common.sh
OLD_FILES+=usr/tests/usr.bin/make/test-new.mk
OLD_DIRS+=usr/tests/usr.bin/make/variables/t0
OLD_DIRS+=usr/tests/usr.bin/make/variables/opt_V
OLD_DIRS+=usr/tests/usr.bin/make/variables/modifier_t
OLD_DIRS+=usr/tests/usr.bin/make/variables/modifier_M
OLD_DIRS+=usr/tests/usr.bin/make/variables
OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t2/mk
OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t2/2/1
OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t2/2
OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t2
OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t1/mk
OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t1/2/1
OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t1/2
OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t1
OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t0/mk
OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t0/2/1
OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t0/2
OLD_DIRS+=usr/tests/usr.bin/make/sysmk/t0
OLD_DIRS+=usr/tests/usr.bin/make/sysmk
OLD_DIRS+=usr/tests/usr.bin/make/syntax/semi
OLD_DIRS+=usr/tests/usr.bin/make/syntax/funny-targets
OLD_DIRS+=usr/tests/usr.bin/make/syntax/enl
OLD_DIRS+=usr/tests/usr.bin/make/syntax/directive-t0
OLD_DIRS+=usr/tests/usr.bin/make/syntax
OLD_DIRS+=usr/tests/usr.bin/make/suffixes/src_wild2
OLD_DIRS+=usr/tests/usr.bin/make/suffixes/src_wild1
OLD_DIRS+=usr/tests/usr.bin/make/suffixes/basic
OLD_DIRS+=usr/tests/usr.bin/make/suffixes
OLD_DIRS+=usr/tests/usr.bin/make/shell/select
OLD_DIRS+=usr/tests/usr.bin/make/shell/replace
OLD_DIRS+=usr/tests/usr.bin/make/shell/path_select
OLD_DIRS+=usr/tests/usr.bin/make/shell/path
OLD_DIRS+=usr/tests/usr.bin/make/shell/meta
OLD_DIRS+=usr/tests/usr.bin/make/shell/builtin
OLD_DIRS+=usr/tests/usr.bin/make/shell
OLD_DIRS+=usr/tests/usr.bin/make/execution/plus
OLD_DIRS+=usr/tests/usr.bin/make/execution/joberr
OLD_DIRS+=usr/tests/usr.bin/make/execution/empty
OLD_DIRS+=usr/tests/usr.bin/make/execution/ellipsis
OLD_DIRS+=usr/tests/usr.bin/make/execution
OLD_DIRS+=usr/tests/usr.bin/make/basic/t3
OLD_DIRS+=usr/tests/usr.bin/make/basic/t2
OLD_DIRS+=usr/tests/usr.bin/make/basic/t1
OLD_DIRS+=usr/tests/usr.bin/make/basic/t0
OLD_DIRS+=usr/tests/usr.bin/make/basic
OLD_DIRS+=usr/tests/usr.bin/make/archives/fmt_oldbsd
OLD_DIRS+=usr/tests/usr.bin/make/archives/fmt_44bsd_mod
OLD_DIRS+=usr/tests/usr.bin/make/archives/fmt_44bsd
OLD_DIRS+=usr/tests/usr.bin/make/archives
OLD_DIRS+=usr/tests/usr.bin/make
OLD_FILES+=usr/tests/usr.bin/yacc/legacy_test
OLD_FILES+=usr/tests/usr.bin/yacc/regress.00.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.01.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.02.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.03.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.04.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.05.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.06.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.07.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.08.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.09.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.10.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.11.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.12.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.13.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.14.out
OLD_FILES+=usr/tests/usr.bin/yacc/regress.sh
OLD_FILES+=usr/tests/usr.bin/yacc/undefined.y
.endif
.else
# ATF libraries.
OLD_FILES+=etc/mtree/BSD.tests.dist
OLD_FILES+=usr/bin/atf-sh
OLD_DIRS+=usr/include/atf-c
OLD_FILES+=usr/include/atf-c/build.h
OLD_FILES+=usr/include/atf-c/check.h
OLD_FILES+=usr/include/atf-c/config.h
OLD_FILES+=usr/include/atf-c/defs.h
OLD_FILES+=usr/include/atf-c/error.h
OLD_FILES+=usr/include/atf-c/error_fwd.h
OLD_FILES+=usr/include/atf-c/macros.h
OLD_FILES+=usr/include/atf-c/tc.h
OLD_FILES+=usr/include/atf-c/tp.h
OLD_FILES+=usr/include/atf-c/utils.h
OLD_FILES+=usr/include/atf-c.h
OLD_DIRS+=usr/include/atf-c++
OLD_FILES+=usr/include/atf-c++/build.hpp
OLD_FILES+=usr/include/atf-c++/check.hpp
OLD_FILES+=usr/include/atf-c++/config.hpp
OLD_FILES+=usr/include/atf-c++/macros.hpp
OLD_FILES+=usr/include/atf-c++/tests.hpp
OLD_FILES+=usr/include/atf-c++/utils.hpp
OLD_FILES+=usr/include/atf-c++.hpp
OLD_FILES+=usr/lib/libatf-c_p.a
OLD_FILES+=usr/lib/libatf-c.so.1
OLD_FILES+=usr/lib/libatf-c.so
OLD_FILES+=usr/lib/libatf-c++.a
OLD_FILES+=usr/lib/libatf-c++_p.a
OLD_FILES+=usr/lib/libatf-c++.so.1
OLD_FILES+=usr/lib/libatf-c++.so
OLD_FILES+=usr/lib/libatf-c.a
OLD_FILES+=usr/libexec/atf-check
OLD_FILES+=usr/libexec/atf-sh
OLD_DIRS+=usr/share/atf
OLD_FILES+=usr/share/atf/libatf-sh.subr
OLD_DIRS+=usr/share/doc/atf
OLD_FILES+=usr/share/doc/atf/AUTHORS
OLD_FILES+=usr/share/doc/atf/COPYING
OLD_FILES+=usr/share/doc/atf/NEWS
OLD_FILES+=usr/share/doc/atf/README
OLD_FILES+=usr/share/doc/pjdfstest/README
OLD_FILES+=usr/share/man/man1/atf-check.1.gz
OLD_FILES+=usr/share/man/man1/atf-sh.1.gz
OLD_FILES+=usr/share/man/man1/atf-test-program.1.gz
OLD_FILES+=usr/share/man/man3/atf-c-api.3.gz
OLD_FILES+=usr/share/man/man3/atf-c++-api.3.gz
OLD_FILES+=usr/share/man/man3/atf-sh-api.3.gz
OLD_FILES+=usr/share/man/man3/atf-sh.3.gz
OLD_FILES+=usr/share/man/man4/atf-test-case.4.gz
OLD_FILES+=usr/share/man/man7/atf.7.gz
OLD_FILES+=usr/share/mk/atf.test.mk
OLD_FILES+=usr/share/mk/plain.test.mk
OLD_FILES+=usr/share/mk/suite.test.mk
OLD_FILES+=usr/share/mk/tap.test.mk
# Test suite.
. if exists(${DESTDIR}${TESTSBASE})
TESTS_DIRS!=find ${DESTDIR}${TESTSBASE} -type d | sed -e 's,^${DESTDIR}/,,'; echo
OLD_DIRS+=${TESTS_DIRS}
TESTS_FILES!=find ${DESTDIR}${TESTSBASE} \! -type d | sed -e 's,^${DESTDIR}/,,'; echo
OLD_FILES+=${TESTS_FILES}
. endif
.endif # Test suite.
.if ${MK_TESTS_SUPPORT} == no
OLD_FILES+=usr/include/atf-c++.hpp
OLD_FILES+=usr/include/atf-c++/build.hpp
OLD_FILES+=usr/include/atf-c++/check.hpp
OLD_FILES+=usr/include/atf-c++/macros.hpp
OLD_FILES+=usr/include/atf-c++/tests.hpp
OLD_FILES+=usr/include/atf-c++/utils.hpp
OLD_FILES+=usr/include/atf-c.h
OLD_FILES+=usr/include/atf-c/build.h
OLD_FILES+=usr/include/atf-c/check.h
OLD_FILES+=usr/include/atf-c/defs.h
OLD_FILES+=usr/include/atf-c/error.h
OLD_FILES+=usr/include/atf-c/error_fwd.h
OLD_FILES+=usr/include/atf-c/macros.h
OLD_FILES+=usr/include/atf-c/tc.h
OLD_FILES+=usr/include/atf-c/tp.h
OLD_FILES+=usr/include/atf-c/utils.h
OLD_LIBS+=usr/lib/private/libatf-c++.so.2
OLD_LIBS+=usr/lib/private/libatf-c.so.1
OLD_FILES+=usr/share/man/man3/atf-c++.3.gz
OLD_FILES+=usr/share/man/man3/atf-c-api++.3.gz
OLD_FILES+=usr/share/man/man3/atf-c-api.3.gz
OLD_FILES+=usr/share/man/man3/atf-c.3.gz
OLD_FILES+=usr/tests/lib/atf/Kyuafile
OLD_FILES+=usr/tests/lib/atf/libatf-c++/Kyuafile
OLD_FILES+=usr/tests/lib/atf/libatf-c++/atf_c++_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/build_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/check_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/Kyuafile
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/application_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/env_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/exceptions_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/fs_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/process_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/text_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/detail/version_helper
OLD_FILES+=usr/tests/lib/atf/libatf-c++/macros_hpp_test.cpp
OLD_FILES+=usr/tests/lib/atf/libatf-c++/macros_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/tests_test
OLD_FILES+=usr/tests/lib/atf/libatf-c++/unused_test.cpp
OLD_FILES+=usr/tests/lib/atf/libatf-c++/utils_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/Kyuafile
OLD_FILES+=usr/tests/lib/atf/libatf-c/atf_c_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/build_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/check_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/Kyuafile
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/dynstr_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/env_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/fs_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/list_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/map_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/process_helpers
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/process_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/sanity_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/text_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/user_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/detail/version_helper
OLD_FILES+=usr/tests/lib/atf/libatf-c/error_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/macros_h_test.c
OLD_FILES+=usr/tests/lib/atf/libatf-c/macros_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/tc_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/tp_test
OLD_FILES+=usr/tests/lib/atf/libatf-c/unused_test.c
OLD_FILES+=usr/tests/lib/atf/libatf-c/utils_test
OLD_FILES+=usr/tests/lib/atf/test-programs/Kyuafile
OLD_FILES+=usr/tests/lib/atf/test-programs/c_helpers
OLD_FILES+=usr/tests/lib/atf/test-programs/config_test
OLD_FILES+=usr/tests/lib/atf/test-programs/cpp_helpers
OLD_FILES+=usr/tests/lib/atf/test-programs/expect_test
OLD_FILES+=usr/tests/lib/atf/test-programs/meta_data_test
OLD_FILES+=usr/tests/lib/atf/test-programs/result_test
OLD_FILES+=usr/tests/lib/atf/test-programs/sh_helpers
OLD_FILES+=usr/tests/lib/atf/test-programs/srcdir_test
.endif
.if ${MK_TEXTPROC} == no
OLD_FILES+=usr/bin/checknr
OLD_FILES+=usr/bin/colcrt
OLD_FILES+=usr/bin/ul
OLD_FILES+=usr/share/man/man1/checknr.1.gz
OLD_FILES+=usr/share/man/man1/colcrt.1.gz
OLD_FILES+=usr/share/man/man1/ul.1.gz
.endif
.if ${MK_TFTP} == no
OLD_FILES+=usr/bin/tftp
OLD_FILES+=usr/libexec/tftpd
OLD_FILES+=usr/share/man/man1/tftp.1.gz
OLD_FILES+=usr/share/man/man8/tftpd.8.gz
.endif
.if ${MK_TOOLCHAIN} == no
OLD_FILES+=usr/bin/addr2line
OLD_FILES+=usr/bin/as
OLD_FILES+=usr/bin/byacc
OLD_FILES+=usr/bin/cc
OLD_FILES+=usr/bin/c88
OLD_FILES+=usr/bin/c++
OLD_FILES+=usr/bin/c++filt
OLD_FILES+=usr/bin/ld
OLD_FILES+=usr/bin/ld.bfd
OLD_FILES+=usr/bin/nm
OLD_FILES+=usr/bin/objcopy
OLD_FILES+=usr/bin/readelf
OLD_FILES+=usr/bin/size
OLD_FILES+=usr/bin/strip
OLD_FILES+=usr/bin/yacc
OLD_FILES+=usr/share/man/man1/addr2line.1.gz
OLD_FILES+=usr/share/man/man1/c++filt.1.gz
OLD_FILES+=usr/share/man/man1/nm.1.gz
OLD_FILES+=usr/share/man/man1/readelf.1.gz
OLD_FILES+=usr/share/man/man1/size.1.gz
OLD_FILES+=usr/share/man/man1/strip.1.gz
OLD_FILES+=usr/share/man/man1/objcopy.1.gz
# lib/libelf
OLD_FILES+=usr/share/man/man3/elf.3.gz
OLD_FILES+=usr/share/man/man3/elf_begin.3.gz
OLD_FILES+=usr/share/man/man3/elf_cntl.3.gz
OLD_FILES+=usr/share/man/man3/elf_end.3.gz
OLD_FILES+=usr/share/man/man3/elf_errmsg.3.gz
OLD_FILES+=usr/share/man/man3/elf_fill.3.gz
OLD_FILES+=usr/share/man/man3/elf_flagdata.3.gz
OLD_FILES+=usr/share/man/man3/elf_getarhdr.3.gz
OLD_FILES+=usr/share/man/man3/elf_getarsym.3.gz
OLD_FILES+=usr/share/man/man3/elf_getbase.3.gz
OLD_FILES+=usr/share/man/man3/elf_getdata.3.gz
OLD_FILES+=usr/share/man/man3/elf_getident.3.gz
OLD_FILES+=usr/share/man/man3/elf_getscn.3.gz
OLD_FILES+=usr/share/man/man3/elf_getphdrnum.3.gz
OLD_FILES+=usr/share/man/man3/elf_getphnum.3.gz
OLD_FILES+=usr/share/man/man3/elf_getshdrnum.3.gz
OLD_FILES+=usr/share/man/man3/elf_getshnum.3.gz
OLD_FILES+=usr/share/man/man3/elf_getshdrstrndx.3.gz
OLD_FILES+=usr/share/man/man3/elf_getshstrndx.3.gz
OLD_FILES+=usr/share/man/man3/elf_hash.3.gz
OLD_FILES+=usr/share/man/man3/elf_kind.3.gz
OLD_FILES+=usr/share/man/man3/elf_memory.3.gz
OLD_FILES+=usr/share/man/man3/elf_next.3.gz
OLD_FILES+=usr/share/man/man3/elf_open.3.gz
OLD_FILES+=usr/share/man/man3/elf_rawfile.3.gz
OLD_FILES+=usr/share/man/man3/elf_rand.3.gz
OLD_FILES+=usr/share/man/man3/elf_strptr.3.gz
OLD_FILES+=usr/share/man/man3/elf_update.3.gz
OLD_FILES+=usr/share/man/man3/elf_version.3.gz
OLD_FILES+=usr/share/man/man3/gelf.3.gz
OLD_FILES+=usr/share/man/man3/gelf_checksum.3.gz
OLD_FILES+=usr/share/man/man3/gelf_fsize.3.gz
OLD_FILES+=usr/share/man/man3/gelf_getcap.3.gz
OLD_FILES+=usr/share/man/man3/gelf_getclass.3.gz
OLD_FILES+=usr/share/man/man3/gelf_getdyn.3.gz
OLD_FILES+=usr/share/man/man3/gelf_getehdr.3.gz
OLD_FILES+=usr/share/man/man3/gelf_getmove.3.gz
OLD_FILES+=usr/share/man/man3/gelf_getphdr.3.gz
OLD_FILES+=usr/share/man/man3/gelf_getrel.3.gz
OLD_FILES+=usr/share/man/man3/gelf_getrela.3.gz
OLD_FILES+=usr/share/man/man3/gelf_getshdr.3.gz
OLD_FILES+=usr/share/man/man3/gelf_getsym.3.gz
OLD_FILES+=usr/share/man/man3/gelf_getsyminfo.3.gz
OLD_FILES+=usr/share/man/man3/gelf_getsymshndx.3.gz
OLD_FILES+=usr/share/man/man3/gelf_newehdr.3.gz
OLD_FILES+=usr/share/man/man3/gelf_newphdr.3.gz
OLD_FILES+=usr/share/man/man3/gelf_update_ehdr.3.gz
OLD_FILES+=usr/share/man/man3/gelf_xlatetof.3.gz
# lib/libelftc
OLD_FILES+=usr/share/man/man3/elftc.3.gz
OLD_FILES+=usr/share/man/man3/elftc_bfd_find_target.3.gz
OLD_FILES+=usr/share/man/man3/elftc_copyfile.3.gz
OLD_FILES+=usr/share/man/man3/elftc_demangle.3.gz
OLD_FILES+=usr/share/man/man3/elftc_reloc_type_str.3.gz
OLD_FILES+=usr/share/man/man3/elftc_set_timestamps.3.gz
OLD_FILES+=usr/share/man/man3/elftc_timestamp.3.gz
OLD_FILES+=usr/share/man/man3/elftc_string_table_create.3.gz
OLD_FILES+=usr/share/man/man3/elftc_version.3.gz
OLD_FILES+=usr/tests/usr.bin/yacc/Kyuafile
OLD_FILES+=usr/tests/usr.bin/yacc/btyacc_calc1.y
OLD_FILES+=usr/tests/usr.bin/yacc/btyacc_demo.y
OLD_FILES+=usr/tests/usr.bin/yacc/calc.y
OLD_FILES+=usr/tests/usr.bin/yacc/calc1.y
OLD_FILES+=usr/tests/usr.bin/yacc/calc2.y
OLD_FILES+=usr/tests/usr.bin/yacc/calc3.y
OLD_FILES+=usr/tests/usr.bin/yacc/code_calc.y
OLD_FILES+=usr/tests/usr.bin/yacc/code_debug.y
OLD_FILES+=usr/tests/usr.bin/yacc/code_error.y
OLD_FILES+=usr/tests/usr.bin/yacc/empty.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_inherit1.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_inherit2.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_inherit3.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_inherit4.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_inherit5.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax1.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax10.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax11.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax12.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax13.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax14.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax15.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax16.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax17.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax18.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax19.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax2.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax20.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax21.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax22.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax23.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax24.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax25.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax26.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax27.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax3.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax4.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax5.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax6.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax7.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax7a.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax7b.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax8.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax8a.y
OLD_FILES+=usr/tests/usr.bin/yacc/err_syntax9.y
OLD_FILES+=usr/tests/usr.bin/yacc/error.y
OLD_FILES+=usr/tests/usr.bin/yacc/grammar.y
OLD_FILES+=usr/tests/usr.bin/yacc/inherit0.y
OLD_FILES+=usr/tests/usr.bin/yacc/inherit1.y
OLD_FILES+=usr/tests/usr.bin/yacc/inherit2.y
OLD_FILES+=usr/tests/usr.bin/yacc/ok_syntax1.y
OLD_FILES+=usr/tests/usr.bin/yacc/pure_calc.y
OLD_FILES+=usr/tests/usr.bin/yacc/pure_error.y
OLD_FILES+=usr/tests/usr.bin/yacc/quote_calc.y
OLD_FILES+=usr/tests/usr.bin/yacc/quote_calc2.y
OLD_FILES+=usr/tests/usr.bin/yacc/quote_calc3.y
OLD_FILES+=usr/tests/usr.bin/yacc/quote_calc4.y
OLD_FILES+=usr/tests/usr.bin/yacc/run_test
OLD_FILES+=usr/tests/usr.bin/yacc/varsyntax_calc1.y
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/big_b.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/big_b.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/big_l.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/big_l.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc1.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc1.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc1.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc1.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc2.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc2.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc2.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc2.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc3.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc3.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc3.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/calc3.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_calc.code.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_calc.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_calc.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_calc.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_calc.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_error.code.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_error.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_error.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_error.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/code_error.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/empty.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/empty.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/empty.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/empty.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax1.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax1.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax1.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax1.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax10.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax10.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax10.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax10.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax11.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax11.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax11.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax11.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax12.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax12.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax12.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax12.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax13.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax13.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax13.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax13.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax14.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax14.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax14.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax14.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax15.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax15.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax15.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax15.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax16.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax16.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax16.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax16.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax17.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax17.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax17.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax17.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax18.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax18.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax18.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax18.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax19.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax19.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax19.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax19.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax2.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax2.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax2.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax2.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax20.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax20.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax20.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax20.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax21.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax21.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax21.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax21.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax22.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax22.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax22.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax22.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax23.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax23.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax23.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax23.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax24.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax24.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax24.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax24.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax25.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax25.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax25.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax25.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax26.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax26.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax26.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax26.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax27.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax27.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax27.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax27.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax3.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax3.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax3.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax3.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax4.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax4.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax4.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax4.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax5.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax5.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax5.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax5.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax6.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax6.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax6.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax6.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7a.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7a.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7a.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7a.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7b.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7b.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7b.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax7b.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8a.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8a.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8a.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax8a.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax9.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax9.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax9.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/err_syntax9.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/error.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/error.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/error.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/error.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/grammar.dot
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/grammar.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/grammar.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/grammar.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/grammar.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/help.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/help.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_b_opt.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_b_opt.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_b_opt1.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_b_opt1.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_code_c.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_code_c.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_defines.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_defines.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_graph.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_graph.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_include.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_include.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_opts.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_opts.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_output.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_output.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_output1.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_output1.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_output2.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_output2.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_p_opt.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_p_opt.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_p_opt1.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_p_opt1.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_verbose.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/no_verbose.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/nostdin.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/nostdin.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/ok_syntax1.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/ok_syntax1.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/ok_syntax1.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/ok_syntax1.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_calc.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_calc.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_calc.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_calc.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_error.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_error.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_error.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/pure_error.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc-s.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc-s.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc-s.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc-s.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2-s.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2-s.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2-s.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2-s.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc2.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3-s.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3-s.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3-s.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3-s.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc3.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4-s.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4-s.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4-s.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4-s.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/quote_calc4.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/rename_debug.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/rename_debug.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/rename_debug.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/rename_debug.i
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/rename_debug.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/varsyntax_calc1.error
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/varsyntax_calc1.output
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/varsyntax_calc1.tab.c
OLD_FILES+=usr/tests/usr.bin/yacc/yacc/varsyntax_calc1.tab.h
OLD_FILES+=usr/tests/usr.bin/yacc/yacc_tests
OLD_DIRS+=usr/tests/usr.bin/yacc
.endif
.if ${MK_UNBOUND} == no
OLD_FILES+=etc/rc.d/local_unbound
OLD_FILES+=etc/unbound
OLD_FILES+=usr/lib/private/libunbound.a
OLD_FILES+=usr/lib/private/libunbound.so
OLD_LIBS+=usr/lib/private/libunbound.so.5
OLD_FILES+=usr/lib/private/libunbound_p.a
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
OLD_FILES+=usr/lib32/private/libunbound.a
OLD_FILES+=usr/lib32/private/libunbound.so
OLD_LIBS+=usr/lib32/private/libunbound.so.5
OLD_FILES+=usr/lib32/private/libunbound_p.a
OLD_FILES+=usr/share/man/man5/local-unbound.conf.5.gz
OLD_FILES+=usr/share/man/man8/local-unbound-anchor.8.gz
OLD_FILES+=usr/share/man/man8/local-unbound-checkconf.8.gz
OLD_FILES+=usr/share/man/man8/local-unbound-control.8.gz
OLD_FILES+=usr/share/man/man8/local-unbound.8.gz
.endif
OLD_FILES+=usr/sbin/local-unbound-setup
OLD_FILES+=usr/sbin/local-unbound
OLD_FILES+=usr/sbin/local-unbound-anchor
OLD_FILES+=usr/sbin/local-unbound-checkconf
OLD_FILES+=usr/sbin/local-unbound-control
.endif
.if ${MK_USB} == no
OLD_FILES+=etc/devd/uath.conf
OLD_FILES+=etc/devd/uauth.conf
OLD_FILES+=etc/devd/ulpt.conf
OLD_FILES+=etc/devd/usb.conf
OLD_FILES+=usr/bin/usbhidaction
OLD_FILES+=usr/bin/usbhidctl
OLD_FILES+=usr/include/libusb.h
OLD_FILES+=usr/include/libusb20.h
OLD_FILES+=usr/include/libusb20_desc.h
OLD_FILES+=usr/include/usb.h
OLD_FILES+=usr/include/usbhid.h
OLD_FILES+=usr/lib/libusb.a
OLD_FILES+=usr/lib/libusb.so
OLD_LIBS+=usr/lib/libusb.so.3
OLD_FILES+=usr/lib/libusb_p.a
OLD_FILES+=usr/lib/libusbhid.a
OLD_FILES+=usr/lib/libusbhid.so
OLD_LIBS+=usr/lib/libusbhid.so.4
OLD_FILES+=usr/lib/libusbhid_p.a
OLD_FILES+=usr/lib32/libusb.a
OLD_FILES+=usr/lib32/libusb.so
OLD_LIBS+=usr/lib32/libusb.so.3
OLD_FILES+=usr/lib32/libusb_p.a
OLD_FILES+=usr/lib32/libusbhid.a
OLD_FILES+=usr/lib32/libusbhid.so
OLD_LIBS+=usr/lib32/libusbhid.so.4
OLD_FILES+=usr/lib32/libusbhid_p.a
OLD_FILES+=usr/libdata/pkgconfig/libusb-0.1.pc
OLD_FILES+=usr/libdata/pkgconfig/libusb-1.0.pc
OLD_FILES+=usr/libdata/pkgconfig/libusb-2.0.pc
OLD_FILES+=usr/sbin/uathload
OLD_FILES+=usr/sbin/uhsoctl
OLD_FILES+=usr/sbin/usbconfig
OLD_FILES+=usr/sbin/usbdump
OLD_FILES+=usr/share/examples/libusb20/Makefile
OLD_FILES+=usr/share/examples/libusb20/README
OLD_FILES+=usr/share/examples/libusb20/bulk.c
OLD_FILES+=usr/share/examples/libusb20/control.c
OLD_FILES+=usr/share/examples/libusb20/util.c
OLD_FILES+=usr/share/examples/libusb20/util.h
OLD_DIRS+=usr/share/examples/libusb20
OLD_FILES+=usr/share/firmware/ar5523.bin
OLD_FILES+=usr/share/man/man1/uhsoctl.1.gz
OLD_FILES+=usr/share/man/man1/usbhidaction.1.gz
OLD_FILES+=usr/share/man/man1/usbhidctl.1.gz
OLD_FILES+=usr/share/man/man3/hid_dispose_report_desc.3.gz
OLD_FILES+=usr/share/man/man3/hid_end_parse.3.gz
OLD_FILES+=usr/share/man/man3/hid_get_data.3.gz
OLD_FILES+=usr/share/man/man3/hid_get_item.3.gz
OLD_FILES+=usr/share/man/man3/hid_get_report_desc.3.gz
OLD_FILES+=usr/share/man/man3/hid_init.3.gz
OLD_FILES+=usr/share/man/man3/hid_locate.3.gz
OLD_FILES+=usr/share/man/man3/hid_report_size.3.gz
OLD_FILES+=usr/share/man/man3/hid_set_data.3.gz
OLD_FILES+=usr/share/man/man3/hid_start_parse.3.gz
OLD_FILES+=usr/share/man/man3/hid_usage_in_page.3.gz
OLD_FILES+=usr/share/man/man3/hid_usage_page.3.gz
OLD_FILES+=usr/share/man/man3/libusb.3.gz
OLD_FILES+=usr/share/man/man3/libusb20.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_be_add_dev_quirk.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_be_alloc_default.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_be_dequeue_device.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_be_device_foreach.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_be_enqueue_device.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_be_free.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_be_get_dev_quirk.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_be_get_quirk_name.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_be_get_template.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_be_remove_dev_quirk.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_be_set_template.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_desc_foreach.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_alloc.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_alloc_config.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_check_connected.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_close.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_detach_kernel_driver.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_free.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_address.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_backend_name.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_bus_number.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_config_index.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_debug.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_desc.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_device_desc.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_fd.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_iface_desc.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_info.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_mode.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_parent_address.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_parent_port.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_port_path.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_power_mode.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_power_usage.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_get_speed.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_kernel_driver_active.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_open.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_process.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_req_string_simple_sync.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_req_string_sync.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_request_sync.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_reset.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_set_alt_index.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_set_config_index.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_set_debug.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_set_power_mode.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_dev_wait_process.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_error_name.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_me_decode.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_me_encode.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_me_get_1.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_me_get_2.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_strerror.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_bulk_intr_sync.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_callback_wrapper.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_clear_stall_sync.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_close.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_drain.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_get_actual_frames.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_get_actual_length.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_get_length.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_get_max_frames.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_get_max_packet_length.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_get_max_total_length.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_get_pointer.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_get_priv_sc0.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_get_priv_sc1.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_get_status.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_get_time_complete.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_open.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_pending.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_set_buffer.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_set_callback.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_set_flags.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_set_length.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_set_priv_sc0.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_set_priv_sc1.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_set_timeout.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_set_total_frames.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_setup_bulk.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_setup_control.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_setup_intr.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_setup_isoc.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_start.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_stop.3.gz
OLD_FILES+=usr/share/man/man3/libusb20_tr_submit.3.gz
OLD_FILES+=usr/share/man/man3/libusb_alloc_transfer.3.gz
OLD_FILES+=usr/share/man/man3/libusb_attach_kernel_driver.3.gz
OLD_FILES+=usr/share/man/man3/libusb_bulk_transfer.3.gz
OLD_FILES+=usr/share/man/man3/libusb_cancel_transfer.3.gz
OLD_FILES+=usr/share/man/man3/libusb_check_connected.3.gz
OLD_FILES+=usr/share/man/man3/libusb_claim_interface.3.gz
OLD_FILES+=usr/share/man/man3/libusb_clear_halt.3.gz
OLD_FILES+=usr/share/man/man3/libusb_close.3.gz
OLD_FILES+=usr/share/man/man3/libusb_control_transfer.3.gz
OLD_FILES+=usr/share/man/man3/libusb_detach_kernel_driver.3.gz
OLD_FILES+=usr/share/man/man3/libusb_detach_kernel_driver_np.3.gz
OLD_FILES+=usr/share/man/man3/libusb_error_name.3.gz
OLD_FILES+=usr/share/man/man3/libusb_event_handler_active.3.gz
OLD_FILES+=usr/share/man/man3/libusb_event_handling_ok.3.gz
OLD_FILES+=usr/share/man/man3/libusb_exit.3.gz
OLD_FILES+=usr/share/man/man3/libusb_free_bos_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/libusb_free_config_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/libusb_free_device_list.3.gz
OLD_FILES+=usr/share/man/man3/libusb_free_ss_endpoint_comp.3.gz
OLD_FILES+=usr/share/man/man3/libusb_free_transfer.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_active_config_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_bus_number.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_config_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_config_descriptor_by_value.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_configuration.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_device.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_device_address.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_device_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_device_list.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_device_speed.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_driver.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_driver_np.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_max_iso_packet_size.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_max_packet_size.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_next_timeout.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_pollfds.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_string_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/libusb_get_string_descriptor_ascii.3.gz
OLD_FILES+=usr/share/man/man3/libusb_handle_events.3.gz
OLD_FILES+=usr/share/man/man3/libusb_handle_events_completed.3.gz
OLD_FILES+=usr/share/man/man3/libusb_handle_events_locked.3.gz
OLD_FILES+=usr/share/man/man3/libusb_handle_events_timeout.3.gz
OLD_FILES+=usr/share/man/man3/libusb_handle_events_timeout_completed.3.gz
OLD_FILES+=usr/share/man/man3/libusb_init.3.gz
OLD_FILES+=usr/share/man/man3/libusb_interrupt_transfer.3.gz
OLD_FILES+=usr/share/man/man3/libusb_kernel_driver_active.3.gz
OLD_FILES+=usr/share/man/man3/libusb_lock_event_waiters.3.gz
OLD_FILES+=usr/share/man/man3/libusb_lock_events.3.gz
OLD_FILES+=usr/share/man/man3/libusb_open.3.gz
OLD_FILES+=usr/share/man/man3/libusb_open_device_with_vid_pid.3.gz
OLD_FILES+=usr/share/man/man3/libusb_parse_bos_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/libusb_parse_ss_endpoint_comp.3.gz
OLD_FILES+=usr/share/man/man3/libusb_ref_device.3.gz
OLD_FILES+=usr/share/man/man3/libusb_release_interface.3.gz
OLD_FILES+=usr/share/man/man3/libusb_reset_device.3.gz
OLD_FILES+=usr/share/man/man3/libusb_set_configuration.3.gz
OLD_FILES+=usr/share/man/man3/libusb_set_debug.3.gz
OLD_FILES+=usr/share/man/man3/libusb_set_interface_alt_setting.3.gz
OLD_FILES+=usr/share/man/man3/libusb_set_pollfd_notifiers.3.gz
OLD_FILES+=usr/share/man/man3/libusb_strerror.3.gz
OLD_FILES+=usr/share/man/man3/libusb_submit_transfer.3.gz
OLD_FILES+=usr/share/man/man3/libusb_try_lock_events.3.gz
OLD_FILES+=usr/share/man/man3/libusb_unlock_event_waiters.3.gz
OLD_FILES+=usr/share/man/man3/libusb_unlock_events.3.gz
OLD_FILES+=usr/share/man/man3/libusb_unref_device.3.gz
OLD_FILES+=usr/share/man/man3/libusb_wait_for_event.3.gz
OLD_FILES+=usr/share/man/man3/libusbhid.3.gz
OLD_FILES+=usr/share/man/man3/usb.3.gz
OLD_FILES+=usr/share/man/man3/usb_bulk_read.3.gz
OLD_FILES+=usr/share/man/man3/usb_bulk_write.3.gz
OLD_FILES+=usr/share/man/man3/usb_check_connected.3.gz
OLD_FILES+=usr/share/man/man3/usb_claim_interface.3.gz
OLD_FILES+=usr/share/man/man3/usb_clear_halt.3.gz
OLD_FILES+=usr/share/man/man3/usb_close.3.gz
OLD_FILES+=usr/share/man/man3/usb_control_msg.3.gz
OLD_FILES+=usr/share/man/man3/usb_destroy_configuration.3.gz
OLD_FILES+=usr/share/man/man3/usb_device.3.gz
OLD_FILES+=usr/share/man/man3/usb_fetch_and_parse_descriptors.3.gz
OLD_FILES+=usr/share/man/man3/usb_find_busses.3.gz
OLD_FILES+=usr/share/man/man3/usb_find_devices.3.gz
OLD_FILES+=usr/share/man/man3/usb_get_busses.3.gz
OLD_FILES+=usr/share/man/man3/usb_get_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/usb_get_descriptor_by_endpoint.3.gz
OLD_FILES+=usr/share/man/man3/usb_get_string.3.gz
OLD_FILES+=usr/share/man/man3/usb_get_string_simple.3.gz
OLD_FILES+=usr/share/man/man3/usb_init.3.gz
OLD_FILES+=usr/share/man/man3/usb_interrupt_read.3.gz
OLD_FILES+=usr/share/man/man3/usb_interrupt_write.3.gz
OLD_FILES+=usr/share/man/man3/usb_open.3.gz
OLD_FILES+=usr/share/man/man3/usb_parse_configuration.3.gz
OLD_FILES+=usr/share/man/man3/usb_parse_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/usb_release_interface.3.gz
OLD_FILES+=usr/share/man/man3/usb_reset.3.gz
OLD_FILES+=usr/share/man/man3/usb_resetep.3.gz
OLD_FILES+=usr/share/man/man3/usb_set_altinterface.3.gz
OLD_FILES+=usr/share/man/man3/usb_set_configuration.3.gz
OLD_FILES+=usr/share/man/man3/usb_set_debug.3.gz
OLD_FILES+=usr/share/man/man3/usb_strerror.3.gz
OLD_FILES+=usr/share/man/man3/usbhid.3.gz
OLD_FILES+=usr/share/man/man4/if_otus.4.gz
OLD_FILES+=usr/share/man/man4/if_rsu.4.gz
OLD_FILES+=usr/share/man/man4/if_rtwn_usb.4.gz
OLD_FILES+=usr/share/man/man4/if_rum.4.gz
OLD_FILES+=usr/share/man/man4/if_run.4.gz
OLD_FILES+=usr/share/man/man4/if_zyd.4.gz
OLD_FILES+=usr/share/man/man4/otus.4.gz
OLD_FILES+=usr/share/man/man4/otusfw.4.gz
OLD_FILES+=usr/share/man/man4/rsu.4.gz
OLD_FILES+=usr/share/man/man4/rsufw.4.gz
OLD_FILES+=usr/share/man/man4/rtwn_usb.4.gz
OLD_FILES+=usr/share/man/man4/rum.4.gz
OLD_FILES+=usr/share/man/man4/run.4.gz
OLD_FILES+=usr/share/man/man4/runfw.4.gz
OLD_FILES+=usr/share/man/man4/u3g.4.gz
OLD_FILES+=usr/share/man/man4/u3gstub.4.gz
OLD_FILES+=usr/share/man/man4/uark.4.gz
OLD_FILES+=usr/share/man/man4/uart.4.gz
OLD_FILES+=usr/share/man/man4/uath.4.gz
OLD_FILES+=usr/share/man/man4/ubsa.4.gz
OLD_FILES+=usr/share/man/man4/ubsec.4.gz
OLD_FILES+=usr/share/man/man4/ubser.4.gz
OLD_FILES+=usr/share/man/man4/ubtbcmfw.4.gz
OLD_FILES+=usr/share/man/man4/uchcom.4.gz
OLD_FILES+=usr/share/man/man4/ucom.4.gz
OLD_FILES+=usr/share/man/man4/ucycom.4.gz
OLD_FILES+=usr/share/man/man4/udav.4.gz
OLD_FILES+=usr/share/man/man4/udbp.4.gz
OLD_FILES+=usr/share/man/man4/uep.4.gz
OLD_FILES+=usr/share/man/man4/ufm.4.gz
OLD_FILES+=usr/share/man/man4/ufoma.4.gz
OLD_FILES+=usr/share/man/man4/uftdi.4.gz
OLD_FILES+=usr/share/man/man4/ugen.4.gz
OLD_FILES+=usr/share/man/man4/uhci.4.gz
OLD_FILES+=usr/share/man/man4/uhid.4.gz
OLD_FILES+=usr/share/man/man4/uhso.4.gz
OLD_FILES+=usr/share/man/man4/uipaq.4.gz
OLD_FILES+=usr/share/man/man4/ukbd.4.gz
OLD_FILES+=usr/share/man/man4/uled.4.gz
OLD_FILES+=usr/share/man/man4/ulpt.4.gz
OLD_FILES+=usr/share/man/man4/umass.4.gz
OLD_FILES+=usr/share/man/man4/umcs.4.gz
OLD_FILES+=usr/share/man/man4/umct.4.gz
OLD_FILES+=usr/share/man/man4/umodem.4.gz
OLD_FILES+=usr/share/man/man4/umoscom.4.gz
OLD_FILES+=usr/share/man/man4/ums.4.gz
OLD_FILES+=usr/share/man/man4/unix.4.gz
OLD_FILES+=usr/share/man/man4/upgt.4.gz
OLD_FILES+=usr/share/man/man4/uplcom.4.gz
OLD_FILES+=usr/share/man/man4/ural.4.gz
OLD_FILES+=usr/share/man/man4/urio.4.gz
OLD_FILES+=usr/share/man/man4/urndis.4.gz
OLD_FILES+=usr/share/man/man4/urtw.4.gz
OLD_FILES+=usr/share/man/man4/usb.4.gz
OLD_FILES+=usr/share/man/man4/usb_quirk.4.gz
OLD_FILES+=usr/share/man/man4/usb_template.4.gz
OLD_FILES+=usr/share/man/man4/usfs.4.gz
OLD_FILES+=usr/share/man/man4/uslcom.4.gz
OLD_FILES+=usr/share/man/man4/uvisor.4.gz
OLD_FILES+=usr/share/man/man4/uvscom.4.gz
OLD_FILES+=usr/share/man/man4/zyd.4.gz
OLD_FILES+=usr/share/man/man8/uathload.8.gz
OLD_FILES+=usr/share/man/man8/usbconfig.8.gz
OLD_FILES+=usr/share/man/man8/usbdump.8.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_alloc_buffer.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_attach.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_detach.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_free_buffer.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_get_data.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_get_data_buffer.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_get_data_error.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_get_data_linear.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_put_bytes_max.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_put_data.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_put_data_buffer.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_put_data_error.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_put_data_linear.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_reset.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_softc.9.gz
OLD_FILES+=usr/share/man/man9/usb_fifo_wakeup.9.gz
OLD_FILES+=usr/share/man/man9/usbd_do_request.9.gz
OLD_FILES+=usr/share/man/man9/usbd_do_request_flags.9.gz
OLD_FILES+=usr/share/man/man9/usbd_errstr.9.gz
OLD_FILES+=usr/share/man/man9/usbd_lookup_id_by_info.9.gz
OLD_FILES+=usr/share/man/man9/usbd_lookup_id_by_uaa.9.gz
OLD_FILES+=usr/share/man/man9/usbd_transfer_clear_stall.9.gz
OLD_FILES+=usr/share/man/man9/usbd_transfer_drain.9.gz
OLD_FILES+=usr/share/man/man9/usbd_transfer_pending.9.gz
OLD_FILES+=usr/share/man/man9/usbd_transfer_poll.9.gz
OLD_FILES+=usr/share/man/man9/usbd_transfer_setup.9.gz
OLD_FILES+=usr/share/man/man9/usbd_transfer_start.9.gz
OLD_FILES+=usr/share/man/man9/usbd_transfer_stop.9.gz
OLD_FILES+=usr/share/man/man9/usbd_transfer_submit.9.gz
OLD_FILES+=usr/share/man/man9/usbd_transfer_unsetup.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_clr_flag.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_frame_data.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_frame_len.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_get_frame.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_get_priv.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_is_stalled.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_max_framelen.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_max_frames.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_max_len.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_set_flag.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_set_frame_data.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_set_frame_len.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_set_frame_offset.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_set_frames.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_set_interval.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_set_priv.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_set_stall.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_set_timeout.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_softc.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_state.9.gz
OLD_FILES+=usr/share/man/man9/usbd_xfer_status.9.gz
OLD_FILES+=usr/share/man/man9/usbdi.9.gz
OLD_FILES+=usr/share/misc/usb_hid_usages
OLD_FILES+=usr/share/misc/usbdevs
.endif
.if ${MK_UTMPX} == no
OLD_FILES+=etc/periodic/monthly/200.accounting
OLD_FILES+=etc/rc.d/utx
OLD_FILES+=usr/bin/last
OLD_FILES+=usr/bin/users
OLD_FILES+=usr/bin/who
OLD_FILES+=usr/sbin/ac
OLD_FILES+=usr/sbin/lastlogin
OLD_FILES+=usr/sbin/utx
OLD_FILES+=usr/share/man/man1/last.1.gz
OLD_FILES+=usr/share/man/man1/users.1.gz
OLD_FILES+=usr/share/man/man1/who.1.gz
OLD_FILES+=usr/share/man/man8/ac.8.gz
OLD_FILES+=usr/share/man/man8/lastlogin.8.gz
OLD_FILES+=usr/share/man/man8/utx.8.gz
.endif
.if ${MK_VI} == no
OLD_FILES+=etc/rc.d/virecover
OLD_FILES+=rescue/ex
OLD_FILES+=rescue/vi
OLD_FILES+=usr/bin/ex
OLD_FILES+=usr/bin/nex
OLD_FILES+=usr/bin/nvi
OLD_FILES+=usr/bin/nview
OLD_FILES+=usr/bin/vi
OLD_FILES+=usr/bin/view
OLD_FILES+=usr/share/man/man1/ex.1.gz
OLD_FILES+=usr/share/man/man1/nex.1.gz
OLD_FILES+=usr/share/man/man1/nvi.1.gz
OLD_FILES+=usr/share/man/man1/nview.1.gz
OLD_FILES+=usr/share/man/man1/vi.1.gz
OLD_FILES+=usr/share/man/man1/view.1.gz
. if exists(${DESTDIR}/usr/share/vi)
VI_DIRS!=find ${DESTDIR}/usr/share/vi -type d \
| sed -e 's,^${DESTDIR}/,,'; echo
VI_FILES!=find ${DESTDIR}/usr/share/vi \! -type d \
| sed -e 's,^${DESTDIR}/,,'; echo
OLD_DIRS+=${VI_DIRS}
OLD_FILES+=${VI_FILES}
. endif
.endif
.if ${MK_WIRELESS} == no
OLD_FILES+=etc/regdomain.xml
OLD_FILES+=etc/rc.d/hostapd
OLD_FILES+=etc/rc.d/wpa_supplicant
OLD_FILES+=usr/sbin/ancontrol
OLD_FILES+=usr/sbin/hostapd
OLD_FILES+=usr/sbin/hostapd_cli
OLD_FILES+=usr/sbin/ndis_events
OLD_FILES+=usr/sbin/wlandebug
OLD_FILES+=usr/sbin/wpa_cli
OLD_FILES+=usr/sbin/wpa_passphrase
OLD_FILES+=usr/sbin/wpa_supplicant
OLD_FILES+=usr/share/examples/etc/regdomain.xml
OLD_FILES+=usr/share/examples/etc/wpa_supplicant.conf
OLD_FILES+=usr/share/examples/hostapd/hostapd.conf
OLD_FILES+=usr/share/examples/hostapd/hostapd.eap_user
OLD_FILES+=usr/share/examples/hostapd/hostapd.wpa_psk
OLD_DIRS+=usr/share/examples/hostapd
OLD_FILES+=usr/share/man/man5/hostapd.conf.5.gz
OLD_FILES+=usr/share/man/man5/wpa_supplicant.conf.5.gz
OLD_FILES+=usr/share/man/man8/ancontrol.8.gz
OLD_FILES+=usr/share/man/man8/hostapd.8.gz
OLD_FILES+=usr/share/man/man8/hostapd_cli.8.gz
OLD_FILES+=usr/share/man/man8/ndis_events.8.gz
OLD_FILES+=usr/share/man/man8/wlandebug.8.gz
OLD_FILES+=usr/share/man/man8/wpa_cli.8.gz
OLD_FILES+=usr/share/man/man8/wpa_passphrase.8.gz
OLD_FILES+=usr/share/man/man8/wpa_supplicant.8.gz
OLD_FILES+=usr/lib/snmp_wlan.so
OLD_LIBS+=usr/lib/snmp_wlan.so.6
# bsnmp module
OLD_FILES+=usr/share/man/man3/snmp_wlan.3.gz
OLD_FILES+=usr/share/snmp/defs/wlan_tree.def
OLD_FILES+=usr/share/snmp/mibs/BEGEMOT-WIRELESS-MIB.txt
.endif
.if ${MK_SVNLITE} == no || ${MK_SVN} == yes
OLD_FILES+=usr/bin/svnlite
OLD_FILES+=usr/bin/svnliteadmin
OLD_FILES+=usr/bin/svnlitebench
OLD_FILES+=usr/bin/svnlitedumpfilter
OLD_FILES+=usr/bin/svnlitefsfs
OLD_FILES+=usr/bin/svnlitelook
OLD_FILES+=usr/bin/svnlitemucc
OLD_FILES+=usr/bin/svnliterdump
OLD_FILES+=usr/bin/svnliteserve
OLD_FILES+=usr/bin/svnlitesync
OLD_FILES+=usr/bin/svnliteversion
OLD_FILES+=usr/share/man/man1/svnlite.1.gz
.endif
.if ${MK_SVN} == no
OLD_FILES+=usr/bin/svn
OLD_FILES+=usr/bin/svnadmin
OLD_FILES+=usr/bin/svnbench
OLD_FILES+=usr/bin/svndumpfilter
OLD_FILES+=usr/bin/svnfsfs
OLD_FILES+=usr/bin/svnlook
OLD_FILES+=usr/bin/svnmucc
OLD_FILES+=usr/bin/svnrdump
OLD_FILES+=usr/bin/svnserve
OLD_FILES+=usr/bin/svnsync
OLD_FILES+=usr/bin/svnversion
.endif
.if ${MK_HYPERV} == no
OLD_FILES+=etc/devd/hyperv.conf
OLD_FILES+=usr/libexec/hyperv/hv_set_ifconfig
OLD_FILES+=usr/libexec/hyperv/hv_get_dns_info
OLD_FILES+=usr/libexec/hyperv/hv_get_dhcp_info
OLD_FILES+=usr/sbin/hv_kvp_daemon
OLD_FILES+=usr/sbin/hv_vss_daemon
OLD_FILES+=usr/share/man/man8/hv_kvp_daemon.8.gz
.endif
.if ${MK_ZONEINFO} == no
OLD_FILES+=usr/share/zoneinfo/Africa/Abidjan
OLD_FILES+=usr/share/zoneinfo/Africa/Accra
OLD_FILES+=usr/share/zoneinfo/Africa/Addis_Ababa
OLD_FILES+=usr/share/zoneinfo/Africa/Algiers
OLD_FILES+=usr/share/zoneinfo/Africa/Asmara
OLD_FILES+=usr/share/zoneinfo/Africa/Bamako
OLD_FILES+=usr/share/zoneinfo/Africa/Bangui
OLD_FILES+=usr/share/zoneinfo/Africa/Banjul
OLD_FILES+=usr/share/zoneinfo/Africa/Bissau
OLD_FILES+=usr/share/zoneinfo/Africa/Blantyre
OLD_FILES+=usr/share/zoneinfo/Africa/Brazzaville
OLD_FILES+=usr/share/zoneinfo/Africa/Bujumbura
OLD_FILES+=usr/share/zoneinfo/Africa/Cairo
OLD_FILES+=usr/share/zoneinfo/Africa/Casablanca
OLD_FILES+=usr/share/zoneinfo/Africa/Ceuta
OLD_FILES+=usr/share/zoneinfo/Africa/Conakry
OLD_FILES+=usr/share/zoneinfo/Africa/Dakar
OLD_FILES+=usr/share/zoneinfo/Africa/Dar_es_Salaam
OLD_FILES+=usr/share/zoneinfo/Africa/Djibouti
OLD_FILES+=usr/share/zoneinfo/Africa/Douala
OLD_FILES+=usr/share/zoneinfo/Africa/El_Aaiun
OLD_FILES+=usr/share/zoneinfo/Africa/Freetown
OLD_FILES+=usr/share/zoneinfo/Africa/Gaborone
OLD_FILES+=usr/share/zoneinfo/Africa/Harare
OLD_FILES+=usr/share/zoneinfo/Africa/Johannesburg
OLD_FILES+=usr/share/zoneinfo/Africa/Juba
OLD_FILES+=usr/share/zoneinfo/Africa/Kampala
OLD_FILES+=usr/share/zoneinfo/Africa/Khartoum
OLD_FILES+=usr/share/zoneinfo/Africa/Kigali
OLD_FILES+=usr/share/zoneinfo/Africa/Kinshasa
OLD_FILES+=usr/share/zoneinfo/Africa/Lagos
OLD_FILES+=usr/share/zoneinfo/Africa/Libreville
OLD_FILES+=usr/share/zoneinfo/Africa/Lome
OLD_FILES+=usr/share/zoneinfo/Africa/Luanda
OLD_FILES+=usr/share/zoneinfo/Africa/Lubumbashi
OLD_FILES+=usr/share/zoneinfo/Africa/Lusaka
OLD_FILES+=usr/share/zoneinfo/Africa/Malabo
OLD_FILES+=usr/share/zoneinfo/Africa/Maputo
OLD_FILES+=usr/share/zoneinfo/Africa/Maseru
OLD_FILES+=usr/share/zoneinfo/Africa/Mbabane
OLD_FILES+=usr/share/zoneinfo/Africa/Mogadishu
OLD_FILES+=usr/share/zoneinfo/Africa/Monrovia
OLD_FILES+=usr/share/zoneinfo/Africa/Nairobi
OLD_FILES+=usr/share/zoneinfo/Africa/Ndjamena
OLD_FILES+=usr/share/zoneinfo/Africa/Niamey
OLD_FILES+=usr/share/zoneinfo/Africa/Nouakchott
OLD_FILES+=usr/share/zoneinfo/Africa/Ouagadougou
OLD_FILES+=usr/share/zoneinfo/Africa/Porto-Novo
OLD_FILES+=usr/share/zoneinfo/Africa/Sao_Tome
OLD_FILES+=usr/share/zoneinfo/Africa/Tripoli
OLD_FILES+=usr/share/zoneinfo/Africa/Tunis
OLD_FILES+=usr/share/zoneinfo/Africa/Windhoek
OLD_FILES+=usr/share/zoneinfo/America/Adak
OLD_FILES+=usr/share/zoneinfo/America/Anchorage
OLD_FILES+=usr/share/zoneinfo/America/Anguilla
OLD_FILES+=usr/share/zoneinfo/America/Antigua
OLD_FILES+=usr/share/zoneinfo/America/Araguaina
OLD_FILES+=usr/share/zoneinfo/America/Argentina/Buenos_Aires
OLD_FILES+=usr/share/zoneinfo/America/Argentina/Catamarca
OLD_FILES+=usr/share/zoneinfo/America/Argentina/Cordoba
OLD_FILES+=usr/share/zoneinfo/America/Argentina/Jujuy
OLD_FILES+=usr/share/zoneinfo/America/Argentina/La_Rioja
OLD_FILES+=usr/share/zoneinfo/America/Argentina/Mendoza
OLD_FILES+=usr/share/zoneinfo/America/Argentina/Rio_Gallegos
OLD_FILES+=usr/share/zoneinfo/America/Argentina/Salta
OLD_FILES+=usr/share/zoneinfo/America/Argentina/San_Juan
OLD_FILES+=usr/share/zoneinfo/America/Argentina/San_Luis
OLD_FILES+=usr/share/zoneinfo/America/Argentina/Tucuman
OLD_FILES+=usr/share/zoneinfo/America/Argentina/Ushuaia
OLD_FILES+=usr/share/zoneinfo/America/Aruba
OLD_FILES+=usr/share/zoneinfo/America/Asuncion
OLD_FILES+=usr/share/zoneinfo/America/Atikokan
OLD_FILES+=usr/share/zoneinfo/America/Bahia
OLD_FILES+=usr/share/zoneinfo/America/Bahia_Banderas
OLD_FILES+=usr/share/zoneinfo/America/Barbados
OLD_FILES+=usr/share/zoneinfo/America/Belem
OLD_FILES+=usr/share/zoneinfo/America/Belize
OLD_FILES+=usr/share/zoneinfo/America/Blanc-Sablon
OLD_FILES+=usr/share/zoneinfo/America/Boa_Vista
OLD_FILES+=usr/share/zoneinfo/America/Bogota
OLD_FILES+=usr/share/zoneinfo/America/Boise
OLD_FILES+=usr/share/zoneinfo/America/Cambridge_Bay
OLD_FILES+=usr/share/zoneinfo/America/Campo_Grande
OLD_FILES+=usr/share/zoneinfo/America/Cancun
OLD_FILES+=usr/share/zoneinfo/America/Caracas
OLD_FILES+=usr/share/zoneinfo/America/Cayenne
OLD_FILES+=usr/share/zoneinfo/America/Cayman
OLD_FILES+=usr/share/zoneinfo/America/Chicago
OLD_FILES+=usr/share/zoneinfo/America/Chihuahua
OLD_FILES+=usr/share/zoneinfo/America/Costa_Rica
OLD_FILES+=usr/share/zoneinfo/America/Creston
OLD_FILES+=usr/share/zoneinfo/America/Cuiaba
OLD_FILES+=usr/share/zoneinfo/America/Curacao
OLD_FILES+=usr/share/zoneinfo/America/Danmarkshavn
OLD_FILES+=usr/share/zoneinfo/America/Dawson
OLD_FILES+=usr/share/zoneinfo/America/Dawson_Creek
OLD_FILES+=usr/share/zoneinfo/America/Denver
OLD_FILES+=usr/share/zoneinfo/America/Detroit
OLD_FILES+=usr/share/zoneinfo/America/Dominica
OLD_FILES+=usr/share/zoneinfo/America/Edmonton
OLD_FILES+=usr/share/zoneinfo/America/Eirunepe
OLD_FILES+=usr/share/zoneinfo/America/El_Salvador
OLD_FILES+=usr/share/zoneinfo/America/Fortaleza
OLD_FILES+=usr/share/zoneinfo/America/Glace_Bay
OLD_FILES+=usr/share/zoneinfo/America/Godthab
OLD_FILES+=usr/share/zoneinfo/America/Goose_Bay
OLD_FILES+=usr/share/zoneinfo/America/Grand_Turk
OLD_FILES+=usr/share/zoneinfo/America/Grenada
OLD_FILES+=usr/share/zoneinfo/America/Guadeloupe
OLD_FILES+=usr/share/zoneinfo/America/Guatemala
OLD_FILES+=usr/share/zoneinfo/America/Guayaquil
OLD_FILES+=usr/share/zoneinfo/America/Guyana
OLD_FILES+=usr/share/zoneinfo/America/Halifax
OLD_FILES+=usr/share/zoneinfo/America/Havana
OLD_FILES+=usr/share/zoneinfo/America/Hermosillo
OLD_FILES+=usr/share/zoneinfo/America/Indiana/Indianapolis
OLD_FILES+=usr/share/zoneinfo/America/Indiana/Knox
OLD_FILES+=usr/share/zoneinfo/America/Indiana/Marengo
OLD_FILES+=usr/share/zoneinfo/America/Indiana/Petersburg
OLD_FILES+=usr/share/zoneinfo/America/Indiana/Tell_City
OLD_FILES+=usr/share/zoneinfo/America/Indiana/Vevay
OLD_FILES+=usr/share/zoneinfo/America/Indiana/Vincennes
OLD_FILES+=usr/share/zoneinfo/America/Indiana/Winamac
OLD_FILES+=usr/share/zoneinfo/America/Inuvik
OLD_FILES+=usr/share/zoneinfo/America/Iqaluit
OLD_FILES+=usr/share/zoneinfo/America/Jamaica
OLD_FILES+=usr/share/zoneinfo/America/Juneau
OLD_FILES+=usr/share/zoneinfo/America/Kentucky/Louisville
OLD_FILES+=usr/share/zoneinfo/America/Kentucky/Monticello
OLD_FILES+=usr/share/zoneinfo/America/Kralendijk
OLD_FILES+=usr/share/zoneinfo/America/La_Paz
OLD_FILES+=usr/share/zoneinfo/America/Lima
OLD_FILES+=usr/share/zoneinfo/America/Los_Angeles
OLD_FILES+=usr/share/zoneinfo/America/Lower_Princes
OLD_FILES+=usr/share/zoneinfo/America/Maceio
OLD_FILES+=usr/share/zoneinfo/America/Managua
OLD_FILES+=usr/share/zoneinfo/America/Manaus
OLD_FILES+=usr/share/zoneinfo/America/Marigot
OLD_FILES+=usr/share/zoneinfo/America/Martinique
OLD_FILES+=usr/share/zoneinfo/America/Matamoros
OLD_FILES+=usr/share/zoneinfo/America/Mazatlan
OLD_FILES+=usr/share/zoneinfo/America/Menominee
OLD_FILES+=usr/share/zoneinfo/America/Merida
OLD_FILES+=usr/share/zoneinfo/America/Metlakatla
OLD_FILES+=usr/share/zoneinfo/America/Mexico_City
OLD_FILES+=usr/share/zoneinfo/America/Miquelon
OLD_FILES+=usr/share/zoneinfo/America/Moncton
OLD_FILES+=usr/share/zoneinfo/America/Monterrey
OLD_FILES+=usr/share/zoneinfo/America/Montevideo
OLD_FILES+=usr/share/zoneinfo/America/Montreal
OLD_FILES+=usr/share/zoneinfo/America/Montserrat
OLD_FILES+=usr/share/zoneinfo/America/Nassau
OLD_FILES+=usr/share/zoneinfo/America/New_York
OLD_FILES+=usr/share/zoneinfo/America/Nipigon
OLD_FILES+=usr/share/zoneinfo/America/Nome
OLD_FILES+=usr/share/zoneinfo/America/Noronha
OLD_FILES+=usr/share/zoneinfo/America/North_Dakota/Beulah
OLD_FILES+=usr/share/zoneinfo/America/North_Dakota/Center
OLD_FILES+=usr/share/zoneinfo/America/North_Dakota/New_Salem
OLD_FILES+=usr/share/zoneinfo/America/Ojinaga
OLD_FILES+=usr/share/zoneinfo/America/Panama
OLD_FILES+=usr/share/zoneinfo/America/Pangnirtung
OLD_FILES+=usr/share/zoneinfo/America/Paramaribo
OLD_FILES+=usr/share/zoneinfo/America/Phoenix
OLD_FILES+=usr/share/zoneinfo/America/Port-au-Prince
OLD_FILES+=usr/share/zoneinfo/America/Port_of_Spain
OLD_FILES+=usr/share/zoneinfo/America/Porto_Velho
OLD_FILES+=usr/share/zoneinfo/America/Puerto_Rico
OLD_FILES+=usr/share/zoneinfo/America/Rainy_River
OLD_FILES+=usr/share/zoneinfo/America/Rankin_Inlet
OLD_FILES+=usr/share/zoneinfo/America/Recife
OLD_FILES+=usr/share/zoneinfo/America/Regina
OLD_FILES+=usr/share/zoneinfo/America/Resolute
OLD_FILES+=usr/share/zoneinfo/America/Rio_Branco
OLD_FILES+=usr/share/zoneinfo/America/Santa_Isabel
OLD_FILES+=usr/share/zoneinfo/America/Santarem
OLD_FILES+=usr/share/zoneinfo/America/Santiago
OLD_FILES+=usr/share/zoneinfo/America/Santo_Domingo
OLD_FILES+=usr/share/zoneinfo/America/Sao_Paulo
OLD_FILES+=usr/share/zoneinfo/America/Scoresbysund
OLD_FILES+=usr/share/zoneinfo/America/Sitka
OLD_FILES+=usr/share/zoneinfo/America/St_Barthelemy
OLD_FILES+=usr/share/zoneinfo/America/St_Johns
OLD_FILES+=usr/share/zoneinfo/America/St_Kitts
OLD_FILES+=usr/share/zoneinfo/America/St_Lucia
OLD_FILES+=usr/share/zoneinfo/America/St_Thomas
OLD_FILES+=usr/share/zoneinfo/America/St_Vincent
OLD_FILES+=usr/share/zoneinfo/America/Swift_Current
OLD_FILES+=usr/share/zoneinfo/America/Tegucigalpa
OLD_FILES+=usr/share/zoneinfo/America/Thule
OLD_FILES+=usr/share/zoneinfo/America/Thunder_Bay
OLD_FILES+=usr/share/zoneinfo/America/Tijuana
OLD_FILES+=usr/share/zoneinfo/America/Toronto
OLD_FILES+=usr/share/zoneinfo/America/Tortola
OLD_FILES+=usr/share/zoneinfo/America/Vancouver
OLD_FILES+=usr/share/zoneinfo/America/Whitehorse
OLD_FILES+=usr/share/zoneinfo/America/Winnipeg
OLD_FILES+=usr/share/zoneinfo/America/Yakutat
OLD_FILES+=usr/share/zoneinfo/America/Yellowknife
OLD_FILES+=usr/share/zoneinfo/Antarctica/Casey
OLD_FILES+=usr/share/zoneinfo/Antarctica/Davis
OLD_FILES+=usr/share/zoneinfo/Antarctica/DumontDUrville
OLD_FILES+=usr/share/zoneinfo/Antarctica/Macquarie
OLD_FILES+=usr/share/zoneinfo/Antarctica/Mawson
OLD_FILES+=usr/share/zoneinfo/Antarctica/McMurdo
OLD_FILES+=usr/share/zoneinfo/Antarctica/Palmer
OLD_FILES+=usr/share/zoneinfo/Antarctica/Rothera
OLD_FILES+=usr/share/zoneinfo/Antarctica/Syowa
OLD_FILES+=usr/share/zoneinfo/Antarctica/Troll
OLD_FILES+=usr/share/zoneinfo/Antarctica/Vostok
OLD_FILES+=usr/share/zoneinfo/Arctic/Longyearbyen
OLD_FILES+=usr/share/zoneinfo/Asia/Aden
OLD_FILES+=usr/share/zoneinfo/Asia/Almaty
OLD_FILES+=usr/share/zoneinfo/Asia/Amman
OLD_FILES+=usr/share/zoneinfo/Asia/Anadyr
OLD_FILES+=usr/share/zoneinfo/Asia/Aqtau
OLD_FILES+=usr/share/zoneinfo/Asia/Aqtobe
OLD_FILES+=usr/share/zoneinfo/Asia/Ashgabat
OLD_FILES+=usr/share/zoneinfo/Asia/Baghdad
OLD_FILES+=usr/share/zoneinfo/Asia/Bahrain
OLD_FILES+=usr/share/zoneinfo/Asia/Baku
OLD_FILES+=usr/share/zoneinfo/Asia/Bangkok
OLD_FILES+=usr/share/zoneinfo/Asia/Beirut
OLD_FILES+=usr/share/zoneinfo/Asia/Bishkek
OLD_FILES+=usr/share/zoneinfo/Asia/Brunei
OLD_FILES+=usr/share/zoneinfo/Asia/Chita
OLD_FILES+=usr/share/zoneinfo/Asia/Choibalsan
OLD_FILES+=usr/share/zoneinfo/Asia/Colombo
OLD_FILES+=usr/share/zoneinfo/Asia/Damascus
OLD_FILES+=usr/share/zoneinfo/Asia/Dhaka
OLD_FILES+=usr/share/zoneinfo/Asia/Dili
OLD_FILES+=usr/share/zoneinfo/Asia/Dubai
OLD_FILES+=usr/share/zoneinfo/Asia/Dushanbe
OLD_FILES+=usr/share/zoneinfo/Asia/Gaza
OLD_FILES+=usr/share/zoneinfo/Asia/Hebron
OLD_FILES+=usr/share/zoneinfo/Asia/Ho_Chi_Minh
OLD_FILES+=usr/share/zoneinfo/Asia/Hong_Kong
OLD_FILES+=usr/share/zoneinfo/Asia/Hovd
OLD_FILES+=usr/share/zoneinfo/Asia/Irkutsk
OLD_FILES+=usr/share/zoneinfo/Asia/Istanbul
OLD_FILES+=usr/share/zoneinfo/Asia/Jakarta
OLD_FILES+=usr/share/zoneinfo/Asia/Jayapura
OLD_FILES+=usr/share/zoneinfo/Asia/Jerusalem
OLD_FILES+=usr/share/zoneinfo/Asia/Kabul
OLD_FILES+=usr/share/zoneinfo/Asia/Kamchatka
OLD_FILES+=usr/share/zoneinfo/Asia/Karachi
OLD_FILES+=usr/share/zoneinfo/Asia/Kathmandu
OLD_FILES+=usr/share/zoneinfo/Asia/Khandyga
OLD_FILES+=usr/share/zoneinfo/Asia/Kolkata
OLD_FILES+=usr/share/zoneinfo/Asia/Krasnoyarsk
OLD_FILES+=usr/share/zoneinfo/Asia/Kuala_Lumpur
OLD_FILES+=usr/share/zoneinfo/Asia/Kuching
OLD_FILES+=usr/share/zoneinfo/Asia/Kuwait
OLD_FILES+=usr/share/zoneinfo/Asia/Macau
OLD_FILES+=usr/share/zoneinfo/Asia/Magadan
OLD_FILES+=usr/share/zoneinfo/Asia/Makassar
OLD_FILES+=usr/share/zoneinfo/Asia/Manila
OLD_FILES+=usr/share/zoneinfo/Asia/Muscat
OLD_FILES+=usr/share/zoneinfo/Asia/Nicosia
OLD_FILES+=usr/share/zoneinfo/Asia/Novokuznetsk
OLD_FILES+=usr/share/zoneinfo/Asia/Novosibirsk
OLD_FILES+=usr/share/zoneinfo/Asia/Omsk
OLD_FILES+=usr/share/zoneinfo/Asia/Oral
OLD_FILES+=usr/share/zoneinfo/Asia/Phnom_Penh
OLD_FILES+=usr/share/zoneinfo/Asia/Pontianak
OLD_FILES+=usr/share/zoneinfo/Asia/Pyongyang
OLD_FILES+=usr/share/zoneinfo/Asia/Qatar
OLD_FILES+=usr/share/zoneinfo/Asia/Qyzylorda
OLD_FILES+=usr/share/zoneinfo/Asia/Rangoon
OLD_FILES+=usr/share/zoneinfo/Asia/Riyadh
OLD_FILES+=usr/share/zoneinfo/Asia/Sakhalin
OLD_FILES+=usr/share/zoneinfo/Asia/Samarkand
OLD_FILES+=usr/share/zoneinfo/Asia/Seoul
OLD_FILES+=usr/share/zoneinfo/Asia/Shanghai
OLD_FILES+=usr/share/zoneinfo/Asia/Singapore
OLD_FILES+=usr/share/zoneinfo/Asia/Srednekolymsk
OLD_FILES+=usr/share/zoneinfo/Asia/Taipei
OLD_FILES+=usr/share/zoneinfo/Asia/Tashkent
OLD_FILES+=usr/share/zoneinfo/Asia/Tbilisi
OLD_FILES+=usr/share/zoneinfo/Asia/Tehran
OLD_FILES+=usr/share/zoneinfo/Asia/Thimphu
OLD_FILES+=usr/share/zoneinfo/Asia/Tokyo
OLD_FILES+=usr/share/zoneinfo/Asia/Ulaanbaatar
OLD_FILES+=usr/share/zoneinfo/Asia/Urumqi
OLD_FILES+=usr/share/zoneinfo/Asia/Ust-Nera
OLD_FILES+=usr/share/zoneinfo/Asia/Vientiane
OLD_FILES+=usr/share/zoneinfo/Asia/Vladivostok
OLD_FILES+=usr/share/zoneinfo/Asia/Yakutsk
OLD_FILES+=usr/share/zoneinfo/Asia/Yekaterinburg
OLD_FILES+=usr/share/zoneinfo/Asia/Yerevan
OLD_FILES+=usr/share/zoneinfo/Atlantic/Azores
OLD_FILES+=usr/share/zoneinfo/Atlantic/Bermuda
OLD_FILES+=usr/share/zoneinfo/Atlantic/Canary
OLD_FILES+=usr/share/zoneinfo/Atlantic/Cape_Verde
OLD_FILES+=usr/share/zoneinfo/Atlantic/Faroe
OLD_FILES+=usr/share/zoneinfo/Atlantic/Madeira
OLD_FILES+=usr/share/zoneinfo/Atlantic/Reykjavik
OLD_FILES+=usr/share/zoneinfo/Atlantic/South_Georgia
OLD_FILES+=usr/share/zoneinfo/Atlantic/St_Helena
OLD_FILES+=usr/share/zoneinfo/Atlantic/Stanley
OLD_FILES+=usr/share/zoneinfo/Australia/Adelaide
OLD_FILES+=usr/share/zoneinfo/Australia/Brisbane
OLD_FILES+=usr/share/zoneinfo/Australia/Broken_Hill
OLD_FILES+=usr/share/zoneinfo/Australia/Currie
OLD_FILES+=usr/share/zoneinfo/Australia/Darwin
OLD_FILES+=usr/share/zoneinfo/Australia/Eucla
OLD_FILES+=usr/share/zoneinfo/Australia/Hobart
OLD_FILES+=usr/share/zoneinfo/Australia/Lindeman
OLD_FILES+=usr/share/zoneinfo/Australia/Lord_Howe
OLD_FILES+=usr/share/zoneinfo/Australia/Melbourne
OLD_FILES+=usr/share/zoneinfo/Australia/Perth
OLD_FILES+=usr/share/zoneinfo/Australia/Sydney
OLD_FILES+=usr/share/zoneinfo/CET
OLD_FILES+=usr/share/zoneinfo/CST6CDT
OLD_FILES+=usr/share/zoneinfo/EET
OLD_FILES+=usr/share/zoneinfo/EST
OLD_FILES+=usr/share/zoneinfo/EST5EDT
OLD_FILES+=usr/share/zoneinfo/Etc/GMT
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+0
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+1
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+10
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+11
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+12
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+2
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+3
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+4
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+5
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+6
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+7
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+8
OLD_FILES+=usr/share/zoneinfo/Etc/GMT+9
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-0
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-1
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-10
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-11
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-12
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-13
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-14
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-2
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-3
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-4
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-5
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-6
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-7
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-8
OLD_FILES+=usr/share/zoneinfo/Etc/GMT-9
OLD_FILES+=usr/share/zoneinfo/Etc/GMT0
OLD_FILES+=usr/share/zoneinfo/Etc/Greenwich
OLD_FILES+=usr/share/zoneinfo/Etc/UCT
OLD_FILES+=usr/share/zoneinfo/Etc/UTC
OLD_FILES+=usr/share/zoneinfo/Etc/Universal
OLD_FILES+=usr/share/zoneinfo/Etc/Zulu
OLD_FILES+=usr/share/zoneinfo/Europe/Amsterdam
OLD_FILES+=usr/share/zoneinfo/Europe/Andorra
OLD_FILES+=usr/share/zoneinfo/Europe/Athens
OLD_FILES+=usr/share/zoneinfo/Europe/Belgrade
OLD_FILES+=usr/share/zoneinfo/Europe/Berlin
OLD_FILES+=usr/share/zoneinfo/Europe/Bratislava
OLD_FILES+=usr/share/zoneinfo/Europe/Brussels
OLD_FILES+=usr/share/zoneinfo/Europe/Bucharest
OLD_FILES+=usr/share/zoneinfo/Europe/Budapest
OLD_FILES+=usr/share/zoneinfo/Europe/Busingen
OLD_FILES+=usr/share/zoneinfo/Europe/Chisinau
OLD_FILES+=usr/share/zoneinfo/Europe/Copenhagen
OLD_FILES+=usr/share/zoneinfo/Europe/Dublin
OLD_FILES+=usr/share/zoneinfo/Europe/Gibraltar
OLD_FILES+=usr/share/zoneinfo/Europe/Guernsey
OLD_FILES+=usr/share/zoneinfo/Europe/Helsinki
OLD_FILES+=usr/share/zoneinfo/Europe/Isle_of_Man
OLD_FILES+=usr/share/zoneinfo/Europe/Istanbul
OLD_FILES+=usr/share/zoneinfo/Europe/Jersey
OLD_FILES+=usr/share/zoneinfo/Europe/Kaliningrad
OLD_FILES+=usr/share/zoneinfo/Europe/Kiev
OLD_FILES+=usr/share/zoneinfo/Europe/Lisbon
OLD_FILES+=usr/share/zoneinfo/Europe/Ljubljana
OLD_FILES+=usr/share/zoneinfo/Europe/London
OLD_FILES+=usr/share/zoneinfo/Europe/Luxembourg
OLD_FILES+=usr/share/zoneinfo/Europe/Madrid
OLD_FILES+=usr/share/zoneinfo/Europe/Malta
OLD_FILES+=usr/share/zoneinfo/Europe/Mariehamn
OLD_FILES+=usr/share/zoneinfo/Europe/Minsk
OLD_FILES+=usr/share/zoneinfo/Europe/Monaco
OLD_FILES+=usr/share/zoneinfo/Europe/Moscow
OLD_FILES+=usr/share/zoneinfo/Europe/Nicosia
OLD_FILES+=usr/share/zoneinfo/Europe/Oslo
OLD_FILES+=usr/share/zoneinfo/Europe/Paris
OLD_FILES+=usr/share/zoneinfo/Europe/Podgorica
OLD_FILES+=usr/share/zoneinfo/Europe/Prague
OLD_FILES+=usr/share/zoneinfo/Europe/Riga
OLD_FILES+=usr/share/zoneinfo/Europe/Rome
OLD_FILES+=usr/share/zoneinfo/Europe/Samara
OLD_FILES+=usr/share/zoneinfo/Europe/San_Marino
OLD_FILES+=usr/share/zoneinfo/Europe/Sarajevo
OLD_FILES+=usr/share/zoneinfo/Europe/Simferopol
OLD_FILES+=usr/share/zoneinfo/Europe/Skopje
OLD_FILES+=usr/share/zoneinfo/Europe/Sofia
OLD_FILES+=usr/share/zoneinfo/Europe/Stockholm
OLD_FILES+=usr/share/zoneinfo/Europe/Tallinn
OLD_FILES+=usr/share/zoneinfo/Europe/Tirane
OLD_FILES+=usr/share/zoneinfo/Europe/Uzhgorod
OLD_FILES+=usr/share/zoneinfo/Europe/Vaduz
OLD_FILES+=usr/share/zoneinfo/Europe/Vatican
OLD_FILES+=usr/share/zoneinfo/Europe/Vienna
OLD_FILES+=usr/share/zoneinfo/Europe/Vilnius
OLD_FILES+=usr/share/zoneinfo/Europe/Volgograd
OLD_FILES+=usr/share/zoneinfo/Europe/Warsaw
OLD_FILES+=usr/share/zoneinfo/Europe/Zagreb
OLD_FILES+=usr/share/zoneinfo/Europe/Zaporozhye
OLD_FILES+=usr/share/zoneinfo/Europe/Zurich
OLD_FILES+=usr/share/zoneinfo/Factory
OLD_FILES+=usr/share/zoneinfo/HST
OLD_FILES+=usr/share/zoneinfo/Indian/Antananarivo
OLD_FILES+=usr/share/zoneinfo/Indian/Chagos
OLD_FILES+=usr/share/zoneinfo/Indian/Christmas
OLD_FILES+=usr/share/zoneinfo/Indian/Cocos
OLD_FILES+=usr/share/zoneinfo/Indian/Comoro
OLD_FILES+=usr/share/zoneinfo/Indian/Kerguelen
OLD_FILES+=usr/share/zoneinfo/Indian/Mahe
OLD_FILES+=usr/share/zoneinfo/Indian/Maldives
OLD_FILES+=usr/share/zoneinfo/Indian/Mauritius
OLD_FILES+=usr/share/zoneinfo/Indian/Mayotte
OLD_FILES+=usr/share/zoneinfo/Indian/Reunion
OLD_FILES+=usr/share/zoneinfo/MET
OLD_FILES+=usr/share/zoneinfo/MST
OLD_FILES+=usr/share/zoneinfo/MST7MDT
OLD_FILES+=usr/share/zoneinfo/PST8PDT
OLD_FILES+=usr/share/zoneinfo/Pacific/Apia
OLD_FILES+=usr/share/zoneinfo/Pacific/Auckland
OLD_FILES+=usr/share/zoneinfo/Pacific/Bougainville
OLD_FILES+=usr/share/zoneinfo/Pacific/Chatham
OLD_FILES+=usr/share/zoneinfo/Pacific/Chuuk
OLD_FILES+=usr/share/zoneinfo/Pacific/Easter
OLD_FILES+=usr/share/zoneinfo/Pacific/Efate
OLD_FILES+=usr/share/zoneinfo/Pacific/Enderbury
OLD_FILES+=usr/share/zoneinfo/Pacific/Fakaofo
OLD_FILES+=usr/share/zoneinfo/Pacific/Fiji
OLD_FILES+=usr/share/zoneinfo/Pacific/Funafuti
OLD_FILES+=usr/share/zoneinfo/Pacific/Galapagos
OLD_FILES+=usr/share/zoneinfo/Pacific/Gambier
OLD_FILES+=usr/share/zoneinfo/Pacific/Guadalcanal
OLD_FILES+=usr/share/zoneinfo/Pacific/Guam
OLD_FILES+=usr/share/zoneinfo/Pacific/Honolulu
OLD_FILES+=usr/share/zoneinfo/Pacific/Johnston
OLD_FILES+=usr/share/zoneinfo/Pacific/Kiritimati
OLD_FILES+=usr/share/zoneinfo/Pacific/Kosrae
OLD_FILES+=usr/share/zoneinfo/Pacific/Kwajalein
OLD_FILES+=usr/share/zoneinfo/Pacific/Majuro
OLD_FILES+=usr/share/zoneinfo/Pacific/Marquesas
OLD_FILES+=usr/share/zoneinfo/Pacific/Midway
OLD_FILES+=usr/share/zoneinfo/Pacific/Nauru
OLD_FILES+=usr/share/zoneinfo/Pacific/Niue
OLD_FILES+=usr/share/zoneinfo/Pacific/Norfolk
OLD_FILES+=usr/share/zoneinfo/Pacific/Noumea
OLD_FILES+=usr/share/zoneinfo/Pacific/Pago_Pago
OLD_FILES+=usr/share/zoneinfo/Pacific/Palau
OLD_FILES+=usr/share/zoneinfo/Pacific/Pitcairn
OLD_FILES+=usr/share/zoneinfo/Pacific/Pohnpei
OLD_FILES+=usr/share/zoneinfo/Pacific/Port_Moresby
OLD_FILES+=usr/share/zoneinfo/Pacific/Rarotonga
OLD_FILES+=usr/share/zoneinfo/Pacific/Saipan
OLD_FILES+=usr/share/zoneinfo/Pacific/Tahiti
OLD_FILES+=usr/share/zoneinfo/Pacific/Tarawa
OLD_FILES+=usr/share/zoneinfo/Pacific/Tongatapu
OLD_FILES+=usr/share/zoneinfo/Pacific/Wake
OLD_FILES+=usr/share/zoneinfo/Pacific/Wallis
OLD_FILES+=usr/share/zoneinfo/UTC
OLD_FILES+=usr/share/zoneinfo/WET
OLD_FILES+=usr/share/zoneinfo/posixrules
OLD_FILES+=usr/share/zoneinfo/zone.tab
.endif
diff --git a/tools/build/options/WITHOUT_AMD b/tools/build/options/WITHOUT_AMD
deleted file mode 100644
index 473d03e890a0..000000000000
--- a/tools/build/options/WITHOUT_AMD
+++ /dev/null
@@ -1,4 +0,0 @@
-.\" $FreeBSD$
-Set to not build
-.Xr amd 8 ,
-and related programs.
diff --git a/tools/build/options/WITH_AMD b/tools/build/options/WITH_AMD
deleted file mode 100644
index 7fc0d960bf7b..000000000000
--- a/tools/build/options/WITH_AMD
+++ /dev/null
@@ -1,7 +0,0 @@
-.\" $FreeBSD$
-Set to build the legacy
-.Xr amd 8
-automount daemon and related programs.
-Note that
-.Xr autofs 5
-is the preferred automount technique.
diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile
index 6b13bf416edf..bd2f0cbe0797 100644
--- a/usr.sbin/Makefile
+++ b/usr.sbin/Makefile
@@ -1,226 +1,225 @@
# From: @(#)Makefile 5.20 (Berkeley) 6/12/93
# $FreeBSD$
.include <src.opts.mk>
SUBDIR= adduser \
arp \
binmiscctl \
camdd \
cdcontrol \
chkgrp \
chown \
chroot \
ckdist \
clear_locks \
crashinfo \
cron \
ctladm \
ctld \
daemon \
dconschat \
devctl \
devinfo \
diskinfo \
dumpcis \
etcupdate \
extattr \
extattrctl \
fifolog \
fstyp \
fwcontrol \
getfmac \
getpmac \
gstat \
i2c \
ifmcstat \
iostat \
iovctl \
kldxref \
mailwrapper \
makefs \
memcontrol \
mergemaster \
mfiutil \
mixer \
mlxcontrol \
mountd \
mount_smbfs \
mpsutil \
mptutil \
mtest \
newsyslog \
nfscbd \
nfsd \
nfsdumpstate \
nfsrevoke \
nfsuserd \
nmtree \
nologin \
pciconf \
periodic \
pnfsdscopymr \
pnfsdsfile \
pnfsdskill \
powerd \
prometheus_sysctl_exporter \
pstat \
pw \
pwd_mkdb \
pwm \
quot \
rarpd \
rmt \
rpcbind \
rpc.lockd \
rpc.statd \
rpc.umntall \
rtprio \
rwhod \
service \
services_mkdb \
sesutil \
setfib \
setfmac \
setpmac \
smbmsg \
snapinfo \
spi \
spray \
syslogd \
sysrc \
tcpdrop \
tcpdump \
traceroute \
trim \
trpt \
tzsetup \
ugidfw \
valectl \
vigr \
vipw \
wake \
watch \
watchdogd \
zic \
zonectl
# NB: keep these sorted by MK_* knobs
SUBDIR.${MK_ACCT}+= accton
SUBDIR.${MK_ACCT}+= sa
-SUBDIR.${MK_AMD}+= amd
SUBDIR.${MK_AUDIT}+= audit
SUBDIR.${MK_AUDIT}+= auditd
.if ${MK_OPENSSL} != "no"
SUBDIR.${MK_AUDIT}+= auditdistd
.endif
SUBDIR.${MK_AUDIT}+= auditreduce
SUBDIR.${MK_AUDIT}+= praudit
SUBDIR.${MK_AUTHPF}+= authpf
SUBDIR.${MK_AUTOFS}+= autofs
SUBDIR.${MK_BLACKLIST}+= blacklistctl
SUBDIR.${MK_BLACKLIST}+= blacklistd
SUBDIR.${MK_BLUETOOTH}+= bluetooth
SUBDIR.${MK_BOOTPARAMD}+= bootparamd
SUBDIR.${MK_BSDINSTALL}+= bsdinstall
SUBDIR.${MK_BSNMP}+= bsnmpd
.if ${MK_CAROOT} != "no"
SUBDIR.${MK_OPENSSL}+= certctl
.endif
SUBDIR.${MK_CXGBETOOL}+= cxgbetool
SUBDIR.${MK_DIALOG}+= bsdconfig
SUBDIR.${MK_EFI}+= efivar efidp efibootmgr
.if ${MK_OPENSSL} != "no"
SUBDIR.${MK_EFI}+= uefisign
.endif
SUBDIR.${MK_FLOPPY}+= fdcontrol
SUBDIR.${MK_FLOPPY}+= fdformat
SUBDIR.${MK_FLOPPY}+= fdread
SUBDIR.${MK_FLOPPY}+= fdwrite
SUBDIR.${MK_FMTREE}+= fmtree
SUBDIR.${MK_FREEBSD_UPDATE}+= freebsd-update
SUBDIR.${MK_GSSAPI}+= gssd
SUBDIR.${MK_GPIO}+= gpioctl
SUBDIR.${MK_INET6}+= ip6addrctl
SUBDIR.${MK_INET6}+= mld6query
SUBDIR.${MK_INET6}+= ndp
SUBDIR.${MK_INET6}+= rip6query
SUBDIR.${MK_INET6}+= route6d
SUBDIR.${MK_INET6}+= rrenumd
SUBDIR.${MK_INET6}+= rtadvctl
SUBDIR.${MK_INET6}+= rtadvd
SUBDIR.${MK_INET6}+= rtsold
SUBDIR.${MK_INET6}+= traceroute6
SUBDIR.${MK_INETD}+= inetd
SUBDIR.${MK_IPFW}+= ipfwpcap
SUBDIR.${MK_ISCSI}+= iscsid
SUBDIR.${MK_JAIL}+= jail
SUBDIR.${MK_JAIL}+= jexec
SUBDIR.${MK_JAIL}+= jls
# XXX MK_SYSCONS
SUBDIR.${MK_LEGACY_CONSOLE}+= kbdcontrol
SUBDIR.${MK_LEGACY_CONSOLE}+= kbdmap
SUBDIR.${MK_LEGACY_CONSOLE}+= moused
SUBDIR.${MK_LEGACY_CONSOLE}+= vidcontrol
.if ${MK_LIBTHR} != "no" || ${MK_LIBPTHREAD} != "no"
SUBDIR.${MK_PPP}+= pppctl
SUBDIR.${MK_NS_CACHING}+= nscd
.endif
SUBDIR.${MK_LPR}+= lpr
SUBDIR.${MK_MAN_UTILS}+= manctl
SUBDIR.${MK_MLX5TOOL}+= mlx5tool
SUBDIR.${MK_NETGRAPH}+= flowctl
SUBDIR.${MK_NETGRAPH}+= ngctl
SUBDIR.${MK_NETGRAPH}+= nghook
SUBDIR.${MK_NIS}+= rpc.yppasswdd
SUBDIR.${MK_NIS}+= rpc.ypupdated
SUBDIR.${MK_NIS}+= rpc.ypxfrd
SUBDIR.${MK_NIS}+= ypbind
SUBDIR.${MK_NIS}+= ypldap
SUBDIR.${MK_NIS}+= yp_mkdb
SUBDIR.${MK_NIS}+= yppoll
SUBDIR.${MK_NIS}+= yppush
SUBDIR.${MK_NIS}+= ypserv
SUBDIR.${MK_NIS}+= ypset
SUBDIR.${MK_NTP}+= ntp
SUBDIR.${MK_OPENSSL}+= keyserv
SUBDIR.${MK_PF}+= ftp-proxy
SUBDIR.${MK_PKGBOOTSTRAP}+= pkg
.if ${COMPILER_FEATURES:Mc++11}
SUBDIR.${MK_PMC}+= pmc
.endif
SUBDIR.${MK_PMC}+= pmcannotate pmccontrol pmcstat pmcstudy
SUBDIR.${MK_PORTSNAP}+= portsnap
SUBDIR.${MK_PPP}+= ppp
SUBDIR.${MK_QUOTAS}+= edquota
SUBDIR.${MK_QUOTAS}+= quotaon
SUBDIR.${MK_QUOTAS}+= repquota
SUBDIR.${MK_SENDMAIL}+= editmap
SUBDIR.${MK_SENDMAIL}+= mailstats
SUBDIR.${MK_SENDMAIL}+= makemap
SUBDIR.${MK_SENDMAIL}+= praliases
SUBDIR.${MK_SENDMAIL}+= sendmail
SUBDIR.${MK_TCP_WRAPPERS}+= tcpdchk
SUBDIR.${MK_TCP_WRAPPERS}+= tcpdmatch
SUBDIR.${MK_TOOLCHAIN}+= config
SUBDIR.${MK_TOOLCHAIN}+= crunch
SUBDIR.${MK_UNBOUND}+= unbound
SUBDIR.${MK_USB}+= uathload
SUBDIR.${MK_USB}+= uhsoctl
SUBDIR.${MK_USB}+= usbconfig
SUBDIR.${MK_USB}+= usbdump
SUBDIR.${MK_UTMPX}+= ac
SUBDIR.${MK_UTMPX}+= lastlogin
SUBDIR.${MK_UTMPX}+= utx
SUBDIR.${MK_WIRELESS}+= ancontrol
SUBDIR.${MK_WIRELESS}+= wlandebug
SUBDIR.${MK_WIRELESS}+= wpa
SUBDIR.${MK_TESTS}+= tests
.include <bsd.arch.inc.mk>
SUBDIR_PARALLEL=
.include <bsd.subdir.mk>
diff --git a/usr.sbin/amd/Makefile b/usr.sbin/amd/Makefile
deleted file mode 100644
index 77c5a4cb5967..000000000000
--- a/usr.sbin/amd/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# ex:ts=8
-#
-# Makefile for amd
-# This file is under a "BSD" copyright (c) by David O'Brien 1998
-#
-# $FreeBSD$
-
-SUBDIR= include libamu .WAIT \
- amd amq fixmount fsinfo hlfsd mk-amd-map pawd \
- scripts wire-test
-SUBDIR_PARALLEL=
-
-.include <bsd.subdir.mk>
diff --git a/usr.sbin/amd/Makefile.inc b/usr.sbin/amd/Makefile.inc
deleted file mode 100644
index 16c11cc2783f..000000000000
--- a/usr.sbin/amd/Makefile.inc
+++ /dev/null
@@ -1,42 +0,0 @@
-# ex:ts=8
-#
-# $FreeBSD$
-#
-# Makefile for amd
-# This file is under a "BSD" copyright (c) by David O'Brien 1998.
-# Portions derived from
-# $NetBSD: Makefile.inc,v 1.10 1998/08/08 22:33:27 christos Exp $
-# Portions derived from amd/libamu/Makefile
-# $NetBSD: Makefile,v 1.8 1998/08/08 22:33:37 christos Exp $
-
-.include <src.opts.mk>
-
-PACKAGE= amd
-
-CFLAGS+= -I. -I${.CURDIR}
-CFLAGS+= -I${.CURDIR:H}/include
-.if exists(${.OBJDIR:H}/include)
-CFLAGS+= -I${.OBJDIR:H}/include
-.endif
-CFLAGS+= -I${SRCTOP}/contrib/amd/include
-CFLAGS+= -I${SRCTOP}/contrib/amd
-CFLAGS+= -DHAVE_CONFIG_H
-.if ${MK_NIS} == "no"
-CFLAGS+= -DHAVE_LOCALCONFIG_H
-.endif
-
-.if ${MK_HESIOD} != "no"
-CFLAGS+= -DYES_HESIOD
-.endif
-
-CFLAGS+= -DHOST_CPU=\"${MACHINE_CPUARCH}\" -DHOST_ARCH=\"${MACHINE_ARCH}\"
-
-RPCCOM= RPCGEN_CPP=${CPP:Q} rpcgen
-MOUNT_X= ${SRCTOP}/include/rpcsvc/mount.x
-NFS_PROT_X= ${SRCTOP}/include/rpcsvc/nfs_prot.x
-
-WARNS?= 1
-
-.if exists(${.CURDIR:H:H}/Makefile.inc)
-.include "${.CURDIR:H:H}/Makefile.inc"
-.endif
diff --git a/usr.sbin/amd/NOTES b/usr.sbin/amd/NOTES
deleted file mode 100644
index b04244bfb668..000000000000
--- a/usr.sbin/amd/NOTES
+++ /dev/null
@@ -1,3 +0,0 @@
-amd/amd supports HESIOD, LDAP, and NIS+ which we don't presently.
-If they are added to FreeBSD, add info_hesiod.c, info_ldap.c, info_nisplus.c
-to amd/amd's Makefile.
diff --git a/usr.sbin/amd/amd/Makefile b/usr.sbin/amd/amd/Makefile
deleted file mode 100644
index 9e95e6f72a0b..000000000000
--- a/usr.sbin/amd/amd/Makefile
+++ /dev/null
@@ -1,82 +0,0 @@
-# ex:ts=8
-#
-# Makefile for amd
-# This file is under a "BSD" copyright (c) by David O'Brien 1998
-#
-# $FreeBSD$
-#
-
-.include <bsd.init.mk>
-
-.PATH: ${SRCTOP}/contrib/amd/amd
-
-CONFS= amd.map
-PROG= amd
-MAN= amd.8
-SRCS= am_ops.c amd.c amfs_auto.c amfs_direct.c amfs_error.c amfs_generic.c
-SRCS+= amfs_host.c amfs_link.c amfs_linkx.c amfs_nfsl.c
-SRCS+= amfs_nfsx.c amfs_program.c amfs_root.c amfs_toplvl.c
-SRCS+= amfs_union.c amq_subr.c amq_svc.c autil.c clock.c conf.c
-SRCS+= get_args.c info_exec.c info_file.c info_ndbm.c info_passwd.c
-SRCS+= info_sun.c
-SRCS+= info_union.c map.c mapc.c mntfs.c nfs_prot_svc.c nfs_start.c
-SRCS+= nfs_subr.c ops_cdfs.c ops_lustre.c ops_mfs.c ops_nfs.c
-SRCS+= ops_nfs3.c ops_nfs4.c
-SRCS+= ops_nullfs.c ops_pcfs.c ops_tfs.c ops_tmpfs.c ops_udf.c ops_ufs.c
-SRCS+= ops_umapfs.c
-SRCS+= ops_unionfs.c opts.c readdir.c restart.c rpc_fwd.c sched.c
-SRCS+= srvr_amfs_auto.c srvr_nfs.c sun_map.c
-
-CFLAGS+= -I${SRCTOP}/contrib/amd/amd \
- -I${SRCTOP}/contrib/amd/include \
- -I${OBJTOP}/include/rpcsvc
-
-LIBADD= amu
-
-SRCS+= conf_parse.c conf_parse.h conf_tok.c
-SRCS+= sun_map_parse.c sun_map_parse.h sun_map_tok.c
-CLEANFILES+= conf_parse.c conf_parse.h conf_tok.c
-CLEANFILES+= sun_map_parse.c sun_map_parse.h sun_map_tok.c
-
-conf_tok.c: conf_tok.l
- ${LEX} ${LFLAGS} -Pconf_ -o${.TARGET} ${.ALLSRC}
-
-.ORDER: conf_parse.c conf_parse.h
-conf_parse.h: .NOMETA
-conf_parse.c conf_parse.h: conf_parse.y
- ${YACC} ${YFLAGS} -pconf_ -oconf_parse.c ${.ALLSRC}
-
-sun_map_tok.c: sun_map_tok.l
- ${LEX} ${LFLAGS} -Psun_map_ -o${.TARGET} ${.ALLSRC}
-
-.ORDER: sun_map_parse.c sun_map_parse.h
-sun_map_parse.h: .NOMETA
-sun_map_parse.c sun_map_parse.h: sun_map_parse.y
- ${YACC} ${YFLAGS} -psun_map_ -osun_map_parse.c ${.ALLSRC}
-
-conf_tok.o: conf_parse.h
-
-sun_map_tok.o: sun_map_parse.h
-
-# These are generated at compile time
-SRCS+= mount_xdr.c
-CLEANFILES+= mount_xdr.c
-
-mount_xdr.c: ${MOUNT_X}
- ${RPCCOM} -c -DWANT_NFS3 ${.ALLSRC} -o ${.TARGET}
-
-.if ${MK_HESIOD} != "no"
-SRCS+= info_hesiod.c
-CFLAGS+= -DHAVE_MAP_HESIOD
-.endif
-
-.if ${MK_NIS} != "no"
-SRCS+= info_nis.c
-.endif
-
-.if ${MK_TCP_WRAPPERS} != "no"
-CFLAGS+= -DHAVE_LIBWRAP -DHAVE_TCPD_H
-LIBADD+= wrap
-.endif
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/amd/amd/Makefile.depend b/usr.sbin/amd/amd/Makefile.depend
deleted file mode 100644
index faa6bc6a6b59..000000000000
--- a/usr.sbin/amd/amd/Makefile.depend
+++ /dev/null
@@ -1,22 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- include \
- include/arpa \
- include/rpc \
- include/rpcsvc \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
- usr.bin/yacc.host \
- usr.sbin/amd/include \
- usr.sbin/amd/libamu \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/amd/amd/Makefile.depend.options b/usr.sbin/amd/amd/Makefile.depend.options
deleted file mode 100644
index a62a5692d70a..000000000000
--- a/usr.sbin/amd/amd/Makefile.depend.options
+++ /dev/null
@@ -1,6 +0,0 @@
-# $FreeBSD$
-# This file is not autogenerated - take care!
-
-DIRDEPS_OPTIONS= TCP_WRAPPERS
-
-.include <dirdeps-options.mk>
diff --git a/usr.sbin/amd/amd/amd.map b/usr.sbin/amd/amd/amd.map
deleted file mode 100644
index 375ef34a6272..000000000000
--- a/usr.sbin/amd/amd/amd.map
+++ /dev/null
@@ -1,4 +0,0 @@
-# $FreeBSD$
-#
-/defaults type:=host;fs:=${autodir}/${rhost}/host;rhost:=${key}
-* opts:=rw,grpid,resvport,vers=3,proto=tcp,nosuid,nodev
diff --git a/usr.sbin/amd/amq/Makefile b/usr.sbin/amd/amq/Makefile
deleted file mode 100644
index a2069705478b..000000000000
--- a/usr.sbin/amd/amq/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-# ex:ts=8
-#
-# Makefile for amd
-# This file is under a "BSD" copyright (c) by David O'Brien 1998
-#
-# $FreeBSD$
-#
-
-.PATH: ${SRCTOP}/contrib/amd/amq
-
-PROG= amq
-MAN= amq.8
-SRCS= amq.c amq_clnt.c amq_xdr.c
-
-CFLAGS+= -I${SRCTOP}/contrib/amd/amq
-
-LIBADD= amu
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/amd/amq/Makefile.depend b/usr.sbin/amd/amq/Makefile.depend
deleted file mode 100644
index eec6cd4d599b..000000000000
--- a/usr.sbin/amd/amq/Makefile.depend
+++ /dev/null
@@ -1,22 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- gnu/lib/csu \
- include \
- include/arpa \
- include/rpc \
- include/rpcsvc \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
- usr.sbin/amd/include \
- usr.sbin/amd/libamu \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/amd/fixmount/Makefile b/usr.sbin/amd/fixmount/Makefile
deleted file mode 100644
index 12deb22ae1dc..000000000000
--- a/usr.sbin/amd/fixmount/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# ex:ts=8
-#
-# Makefile for amd
-# This file is under a "BSD" copyright (c) by David O'Brien 1998
-#
-# $FreeBSD$
-
-.PATH: ${SRCTOP}/contrib/amd/fixmount \
- ${SRCTOP}/contrib/amd/conf/checkmount
-
-PROG= fixmount
-MAN= fixmount.8
-SRCS= fixmount.c
-
-# These would be links created by the GNU-style configure
-SRCS+= checkmount_bsd44.c
-
-LIBADD+= amu rpcsvc
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/amd/fixmount/Makefile.depend b/usr.sbin/amd/fixmount/Makefile.depend
deleted file mode 100644
index 659d244d0cd6..000000000000
--- a/usr.sbin/amd/fixmount/Makefile.depend
+++ /dev/null
@@ -1,23 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- gnu/lib/csu \
- include \
- include/arpa \
- include/rpc \
- include/rpcsvc \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
- lib/librpcsvc \
- usr.sbin/amd/include \
- usr.sbin/amd/libamu \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/amd/fsinfo/Makefile b/usr.sbin/amd/fsinfo/Makefile
deleted file mode 100644
index 4890f5c09c2d..000000000000
--- a/usr.sbin/amd/fsinfo/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-# ex:ts=8
-#
-# Makefile for amd
-# This file is under a "BSD" copyright (c) by David O'Brien 1998
-#
-# $FreeBSD$
-
-.PATH: ${SRCTOP}/contrib/amd/fsinfo
-
-PROG= fsinfo
-MAN= fsinfo.8
-SRCS= fsi_analyze.c fsi_dict.c fsi_util.c fsinfo.c
-SRCS+= wr_atab.c wr_bparam.c wr_dumpset.c wr_exportfs.c wr_fstab.c
-
-CFLAGS+= -I${SRCTOP}/contrib/amd/fsinfo \
- -I${SRCTOP}/contrib/amd/inculde
-
-LIBADD= amu
-
-SRCS+= fsi_gram.c fsi_gram.h fsi_lex.c
-SRCS+= null_gram.c null_gram.h null_lex.c
-CLEANFILES+= fsi_gram.c fsi_gram.h fsi_lex.c
-CLEANFILES+= null_gram.c null_gram.h null_lex.c
-
-fsi_lex.c: fsi_lex.l
- ${LEX} ${LFLAGS} -Pfsi_ -o${.TARGET} ${.ALLSRC}
-
-.ORDER: fsi_gram.c fsi_gram.h
-fsi_gram.h: .NOMETA
-fsi_gram.c fsi_gram.h: fsi_gram.y
- ${YACC} ${YFLAGS} -pfsi_ -ofsi_gram.c ${.ALLSRC}
-
-null_lex.c: null_lex.l
- ${LEX} ${LFLAGS} -Pnull_ -o${.TARGET} ${.ALLSRC}
-
-.ORDER: null_gram.c null_gram.h
-null_gram.h: .NOMETA
-null_gram.c null_gram.h: null_gram.y
- ${YACC} ${YFLAGS} -pnull_ -onull_gram.c ${.ALLSRC}
-
-fsi_lex.o: fsi_gram.h
-
-null_gram.o: null_gram.h
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/amd/fsinfo/Makefile.depend b/usr.sbin/amd/fsinfo/Makefile.depend
deleted file mode 100644
index 9563855e5f3a..000000000000
--- a/usr.sbin/amd/fsinfo/Makefile.depend
+++ /dev/null
@@ -1,23 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- gnu/lib/csu \
- include \
- include/arpa \
- include/rpc \
- include/rpcsvc \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
- usr.bin/yacc.host \
- usr.sbin/amd/include \
- usr.sbin/amd/libamu \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/amd/hlfsd/Makefile b/usr.sbin/amd/hlfsd/Makefile
deleted file mode 100644
index 7e82cc148f2d..000000000000
--- a/usr.sbin/amd/hlfsd/Makefile
+++ /dev/null
@@ -1,18 +0,0 @@
-# ex:ts=8
-#
-# Makefile for amd
-# This file is under a "BSD" copyright (c) by David O'Brien 1998
-#
-# $FreeBSD$
-
-.PATH: ${SRCTOP}/contrib/amd/hlfsd
-
-PROG= hlfsd
-MAN= hlfsd.8
-SRCS= hlfsd.c homedir.c nfs_prot_svc.c stubs.c
-
-CFLAGS+= -I${SRCTOP}/contrib/amd/hlfsd
-
-LIBADD= amu
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/amd/hlfsd/Makefile.depend b/usr.sbin/amd/hlfsd/Makefile.depend
deleted file mode 100644
index eec6cd4d599b..000000000000
--- a/usr.sbin/amd/hlfsd/Makefile.depend
+++ /dev/null
@@ -1,22 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- gnu/lib/csu \
- include \
- include/arpa \
- include/rpc \
- include/rpcsvc \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
- usr.sbin/amd/include \
- usr.sbin/amd/libamu \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/amd/include/Makefile b/usr.sbin/amd/include/Makefile
deleted file mode 100644
index 8afc1971f8bb..000000000000
--- a/usr.sbin/amd/include/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-# ex:ts=8
-#
-# $FreeBSD$
-#
-# Makefile for amd
-# This file is under a "BSD" copyright (c) by David O'Brien 1998.
-# Portions derived from amd/libamu/Makefile
-# $NetBSD: Makefile,v 1.8 1998/08/08 22:33:37 christos Exp $
-
-.include <src.opts.mk>
-
-SRCS= config_local.h
-.if ${MK_NIS} == "no"
-SRCS+= localconfig.h
-.endif
-CLEANFILES= ${SRCS}
-
-all depend: ${SRCS}
-
-config_local.h: newvers.sh ${SRCTOP}/sys/conf/newvers.sh
- @rm -f ${.TARGET}
- sh ${.ALLSRC} > ${.TARGET}
-
-localconfig.h:
- @rm -f ${.TARGET}
- @echo "/* NIS disabled by WITHOUT_NIS src.conf option */" >> ${.TARGET}
- @echo "#undef HAVE_MAP_NIS" >> ${.TARGET}
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/amd/include/Makefile.depend b/usr.sbin/amd/include/Makefile.depend
deleted file mode 100644
index f80275d86ab1..000000000000
--- a/usr.sbin/amd/include/Makefile.depend
+++ /dev/null
@@ -1,11 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/amd/include/amu_autofs_prot.h b/usr.sbin/amd/include/amu_autofs_prot.h
deleted file mode 100644
index 12f5b95b7bee..000000000000
--- a/usr.sbin/amd/include/amu_autofs_prot.h
+++ /dev/null
@@ -1,8 +0,0 @@
-// $FreeBSD$
-
-/* Adjust once we have some form of Autofs support. */
-
-#if 0
-#include "conf/autofs/autofs_default.h"
-#endif
-
diff --git a/usr.sbin/amd/include/amu_nfs_prot.h b/usr.sbin/amd/include/amu_nfs_prot.h
deleted file mode 100644
index 8e8856ff5c0a..000000000000
--- a/usr.sbin/amd/include/amu_nfs_prot.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "conf/nfs_prot/nfs_prot_freebsd3.h"
diff --git a/usr.sbin/amd/include/aux_conf.h b/usr.sbin/amd/include/aux_conf.h
deleted file mode 100644
index 1529ba34b9e5..000000000000
--- a/usr.sbin/amd/include/aux_conf.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* $FreeBSD$ */
-
-/*
- * aux_conf.h:
- * This file gets "filled in" for each architecture.
- * aux_conf.h. Generated from aux_conf.h.in by configure.
- */
-
-#ifndef _AUX_CONF_H
-#define _AUX_CONF_H
-
-/*
- * The next line is a literal inclusion of a file which includes a
- * definition for the MOUNT_TRAP macro for a particular architecture.
- * If it defines the wrong entry, check the AC_CHECK_MOUNT_TRAP m4 macro
- * in $srcdir/m4/macros.
- */
-
-/* $srcdir/conf/trap/trap_default.h */
-#define MOUNT_TRAP(type, mnt, flags, mnt_data) mount(type, mnt->mnt_dir, flags, mnt_data)
-/* End of included MOUNT_TRAP macro definition file */
-
-/*
- * The next line is a literal replacement of a variable which defines the
- * the UNMOUNT_TRAP macro for a particular architecture.
- * If it defines the wrong entry, check the AC_CHECK_UNMOUNT_CALL m4 macro
- * in $srcdir/aclocal.m4. If the arguments are being defined wrong, check
- * the macro AC_CHECK_UNMOUNT_ARGS in $srcdir/m4/macros.
- */
-#define UNMOUNT_TRAP(mnt) unmount(mnt->mnt_dir)
-/* End of replaced UNMOUNT_TRAP macro definition */
-/* umount(8) executable path, for type:=program */
-#define UNMOUNT_PROGRAM "/sbin/umount"
-
-/*
- * The next line is a literal inclusion of a file which includes a
- * definition for the NFS_FH_DREF macro for a particular architecture.
- * If it defines the wrong entry, check the AC_CHECK_NFS_FH_DREF m4 macro
- * in $srcdir/m4/macros.
- */
-
-/* $srcdir/conf/fh_dref/fh_dref_freebsd22.h */
-#define NFS_FH_DREF(dst, src) (dst) = (u_char *) (src)
-/* End of included NFS_FH_DREF macro definition file */
-
-/*
- * The next line is a literal inclusion of a file which includes a
- * definition for the NFS_SA_DREF macro for a particular architecture.
- * If it defines the wrong entry, check the AC_CHECK_NFS_SA_DREF m4 macro
- * in $srcdir/m4/macros.
- */
-
-/* $srcdir/conf/sa_dref/sa_dref_bsd44.h */
-#define NFS_SA_DREF(dst, src) { \
- (dst)->addr = (struct sockaddr *) (src); \
- (dst)->addrlen = sizeof(*src); \
- }
-#define NFS_ARGS_T_ADDR_IS_POINTER 1
-/* End of included NFS_SA_DREF macro definition file */
-
-/*
- * The next line is a literal inclusion of a file which includes a
- * definition for the NFS_HN_DREF macro for a particular architecture.
- * If it defines the wrong entry, check the AC_CHECK_NFS_HN_DREF m4 macro
- * in $srcdir/m4/macros.
- */
-
-/* $srcdir/conf/hn_dref/hn_dref_default.h */
-#define NFS_HN_DREF(dst, src) (dst) = (src)
-/* End of included NFS_HN_DREF macro definition file */
-
-#endif /* not _AUX_CONF_H */
diff --git a/usr.sbin/amd/include/build_version.h b/usr.sbin/amd/include/build_version.h
deleted file mode 100644
index 09eb1fc91220..000000000000
--- a/usr.sbin/amd/include/build_version.h
+++ /dev/null
@@ -1,8 +0,0 @@
-/* $FreeBSD$ */
-
-#include <sys/param.h>
-/*#define AMU_BUILD_VERSION 1 */
-#define AMU_BUILD_VERSION __FreeBSD_version
-#define USER_NAME "David O'Brien <obrien"
-#define HOST_NAME "FreeBSD.org>"
-#define CONFIG_DATE "4-December-2007 PST"
diff --git a/usr.sbin/amd/include/config.h b/usr.sbin/amd/include/config.h
deleted file mode 100644
index 3d22033e18ef..000000000000
--- a/usr.sbin/amd/include/config.h
+++ /dev/null
@@ -1,2443 +0,0 @@
-/*
- * $FreeBSD$
- *
- * portions derived from
- * $NetBSD: config.h,v 1.11 1998/08/08 22:33:37 christos Exp $
- *
- * Additional portions derived from ports/sysutils/am-utils r416941
- * make configure config.h output.
- */
-
-#ifndef _CONFIG_H
-#define _CONFIG_H
-
-/* We [FREEBSD-NATIVE] pick some parameters from our local config file */
-#include "config_local.h"
-
-/* Define if building universal (internal helper macro) */
-/* #undef AC_APPLE_UNIVERSAL_BUILD */
-
-/* define name of am-utils' NFS protocol header */
-#define AMU_NFS_PROTOCOL_HEADER "./conf/nfs_prot/nfs_prot_freebsd3.h"
-
-/* Type of the 5rd argument to authunix_create() */
-#define AUTH_CREATE_GIDLIST_TYPE gid_t
-
-/* Define configuration date */
-/* #define CONFIG_DATE "Mon Oct 3 21:58:39 PDT 2016" */
-
-/* Turn off general debugging by default */
-/* #undef DEBUG */
-
-/* Turn off memory debugging by default */
-/* #undef DEBUG_MEM */
-
-/* Define name of host OS's distribution name (eg. debian, redhat, suse, etc.)
- */
-#define DISTRO_NAME "The FreeBSD Project"
-
-/* Define to the type of elements in the array set by `getgroups'. Usually
- this is either `int' or `gid_t'. */
-#define GETGROUPS_T gid_t
-
-/* Define to 1 if the `getpgrp' function requires zero arguments. */
-#define GETPGRP_VOID 1
-
-/* Define if have automount filesystem */
-#define HAVE_AMU_FS_AUTO 1
-
-/* Define if have direct automount filesystem */
-#define HAVE_AMU_FS_DIRECT 1
-
-/* Define if have error filesystem */
-#define HAVE_AMU_FS_ERROR 1
-
-/* Define if have NFS host-tree filesystem */
-#define HAVE_AMU_FS_HOST 1
-
-/* Define if have symbolic-link filesystem */
-#define HAVE_AMU_FS_LINK 1
-
-/* Define if have symlink with existence check filesystem */
-#define HAVE_AMU_FS_LINKX 1
-
-/* Define if have nfsl (NFS with local link check) filesystem */
-#define HAVE_AMU_FS_NFSL 1
-
-/* Define if have multi-NFS filesystem */
-#define HAVE_AMU_FS_NFSX 1
-
-/* Define if have program filesystem */
-#define HAVE_AMU_FS_PROGRAM 1
-
-/* Define if have "top-level" filesystem */
-#define HAVE_AMU_FS_TOPLVL 1
-
-/* Define if have union filesystem */
-#define HAVE_AMU_FS_UNION 1
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#define HAVE_ARPA_INET_H 1
-
-/* Define to 1 if you have the <arpa/nameser.h> header file. */
-#define HAVE_ARPA_NAMESER_H 1
-
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if `addr' is member of `autofs_args_t'. */
-/* #undef HAVE_AUTOFS_ARGS_T_ADDR */
-
-/* define if have a bad version of hasmntopt() */
-/* #undef HAVE_BAD_HASMNTOPT */
-
-/* define if have a bad version of memcmp() */
-/* #undef HAVE_BAD_MEMCMP */
-
-/* define if have a bad version of yp_all() */
-/* #undef HAVE_BAD_YP_ALL */
-
-/* Define to 1 if you have the `bcmp' function. */
-#define HAVE_BCMP 1
-
-/* Define to 1 if you have the `bcopy' function. */
-#define HAVE_BCOPY 1
-
-/* Define to 1 if you have the <bsd/rpc/rpc.h> header file. */
-/* #undef HAVE_BSD_RPC_RPC_H */
-
-/* Define to 1 if you have the `bzero' function. */
-#define HAVE_BZERO 1
-
-/* System supports C99-style variable-length argument macros */
-#define HAVE_C99_VARARGS_MACROS 1
-
-/* Define to 1 if `flags' is member of `cdfs_args_t'. */
-#define HAVE_CDFS_ARGS_T_FLAGS 1
-
-/* Define to 1 if `fspec' is member of `cdfs_args_t'. */
-#define HAVE_CDFS_ARGS_T_FSPEC 1
-
-/* Define to 1 if `iso_flags' is member of `cdfs_args_t'. */
-/* #undef HAVE_CDFS_ARGS_T_ISO_FLAGS */
-
-/* Define to 1 if `iso_pgthresh' is member of `cdfs_args_t'. */
-/* #undef HAVE_CDFS_ARGS_T_ISO_PGTHRESH */
-
-/* Define to 1 if `norrip' is member of `cdfs_args_t'. */
-/* #undef HAVE_CDFS_ARGS_T_NORRIP */
-
-/* Define to 1 if `ssector' is member of `cdfs_args_t'. */
-#define HAVE_CDFS_ARGS_T_SSECTOR 1
-
-/* Define to 1 if you have the <cdfs/cdfsmount.h> header file. */
-/* #undef HAVE_CDFS_CDFSMOUNT_H */
-
-/* Define to 1 if you have the <cdfs/cdfs_mount.h> header file. */
-/* #undef HAVE_CDFS_CDFS_MOUNT_H */
-
-/* Define to 1 if you have the `clnt_create' function. */
-#define HAVE_CLNT_CREATE 1
-
-/* Define to 1 if you have the `clnt_create_vers' function. */
-#define HAVE_CLNT_CREATE_VERS 1
-
-/* Define to 1 if you have the `clnt_create_vers_timed' function. */
-#define HAVE_CLNT_CREATE_VERS_TIMED 1
-
-/* Define to 1 if you have the `clnt_spcreateerror' function. */
-#define HAVE_CLNT_SPCREATEERROR 1
-
-/* Define to 1 if you have the `clnt_sperrno' function. */
-#define HAVE_CLNT_SPERRNO 1
-
-/* Define to 1 if you have the `clock_gettime' function. */
-#define HAVE_CLOCK_GETTIME 1
-
-/* Define to 1 if you have the <cluster.h> header file. */
-/* #undef HAVE_CLUSTER_H */
-
-/* Define to 1 if you have the `cnodeid' function. */
-/* #undef HAVE_CNODEID */
-
-/* Define to 1 if you have the <ctype.h> header file. */
-#define HAVE_CTYPE_H 1
-
-/* Define to 1 if you have the <db1/ndbm.h> header file. */
-/* #undef HAVE_DB1_NDBM_H */
-
-/* Define to 1 if you have the `dbm_open' function. */
-#define HAVE_DBM_OPEN 1
-
-/* Define to 1 if you have the `dg_mount' function. */
-/* #undef HAVE_DG_MOUNT */
-
-/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
- */
-#define HAVE_DIRENT_H 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if `flags' is member of `efs_args_t'. */
-/* #undef HAVE_EFS_ARGS_T_FLAGS */
-
-/* Define to 1 if `version' is member of `efs_args_t'. */
-/* #undef HAVE_EFS_ARGS_T_VERSION */
-
-/* Define to 1 if `fspec' is member of `efs_args_t'. */
-/* #undef HAVE_EFS_ARGS_T_FSPEC */
-
-/* Define to 1 if `version' is member of `efs_args_t'. */
-/* #undef HAVE_EFS_ARGS_T_VERSION */
-
-/* Define to 1 if you have the <errno.h> header file. */
-#define HAVE_ERRNO_H 1
-
-/* does extern definition for clnt_spcreateerror() exist? */
-#define HAVE_EXTERN_CLNT_SPCREATEERROR 1
-
-/* does extern definition for clnt_sperrno() exist? */
-#define HAVE_EXTERN_CLNT_SPERRNO 1
-
-/* does extern definition for free() exist? */
-#define HAVE_EXTERN_FREE 1
-
-/* does extern definition for getccent() (hpux) exist? */
-/* #undef HAVE_EXTERN_GETCCENT */
-
-/* does extern definition for getdomainname() exist? */
-#define HAVE_EXTERN_GETDOMAINNAME 1
-
-/* does extern definition for getdtablesize() exist? */
-#define HAVE_EXTERN_GETDTABLESIZE 1
-
-/* does extern definition for gethostname() exist? */
-#define HAVE_EXTERN_GETHOSTNAME 1
-
-/* does extern definition for getlogin() exist? */
-#define HAVE_EXTERN_GETLOGIN 1
-
-/* does extern definition for getpagesize() exist? */
-#define HAVE_EXTERN_GETPAGESIZE 1
-
-/* does extern definition for gettablesize() exist? */
-/* #undef HAVE_EXTERN_GETTABLESIZE */
-
-/* does extern definition for getwd() exist? */
-#define HAVE_EXTERN_GETWD 1
-
-/* does extern definition for get_myaddress() exist? */
-#define HAVE_EXTERN_GET_MYADDRESS 1
-
-/* does extern definition for hosts_ctl() exist? */
-/* #undef HAVE_EXTERN_HOSTS_CTL */
-
-/* does extern definition for innetgr() exist? */
-#define HAVE_EXTERN_INNETGR 1
-
-/* does extern definition for ldap_enable_cache() exist? */
-/* #undef HAVE_EXTERN_LDAP_ENABLE_CACHE */
-
-/* does extern definition for mkstemp() exist? */
-#define HAVE_EXTERN_MKSTEMP 1
-
-/* does extern definition for mntctl() exist? */
-/* #undef HAVE_EXTERN_MNTCTL */
-
-/* does extern definition for optarg exist? */
-#define HAVE_EXTERN_OPTARG 1
-
-/* does extern definition for sbrk() exist? */
-#define HAVE_EXTERN_SBRK 1
-
-/* does extern definition for seteuid() exist? */
-#define HAVE_EXTERN_SETEUID 1
-
-/* does extern definition for setitimer() exist? */
-#define HAVE_EXTERN_SETITIMER 1
-
-/* does extern definition for sleep() exist? */
-#define HAVE_EXTERN_SLEEP 1
-
-/* does extern definition for strcasecmp() exist? */
-#define HAVE_EXTERN_STRCASECMP 1
-
-/* does extern definition for strdup() exist? */
-#define HAVE_EXTERN_STRDUP 1
-
-/* does extern definition for strlcat() exist? */
-#define HAVE_EXTERN_STRLCAT 1
-
-/* does extern definition for strlcpy() exist? */
-#define HAVE_EXTERN_STRLCPY 1
-
-/* does extern definition for strstr() exist? */
-#define HAVE_EXTERN_STRSTR 1
-
-/* does extern definition for sys_errlist[] exist? */
-#define HAVE_EXTERN_SYS_ERRLIST 1
-
-/* does extern definition for ualarm() exist? */
-#define HAVE_EXTERN_UALARM 1
-
-/* does extern definition for usleep() exist? */
-#define HAVE_EXTERN_USLEEP 1
-
-/* does extern definition for vsnprintf() exist? */
-#define HAVE_EXTERN_VSNPRINTF 1
-
-/* does extern definition for wait3() exist? */
-#define HAVE_EXTERN_WAIT3 1
-
-/* does extern definition for xdr_callmsg() exist? */
-#define HAVE_EXTERN_XDR_CALLMSG 1
-
-/* does extern definition for xdr_opaque_auth() exist? */
-#define HAVE_EXTERN_XDR_OPAQUE_AUTH 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if `fds_bits' is member of `fd_set'. */
-#define HAVE_FD_SET_FDS_BITS 1
-
-/* Define to 1 if you have the `fgets' function. */
-#define HAVE_FGETS 1
-
-/* Define if plain fhandle type exists */
-#define HAVE_FHANDLE 1
-
-/* Define to 1 if you have the `flock' function. */
-#define HAVE_FLOCK 1
-
-/* Define to 1 if you have the `fork' function. */
-#define HAVE_FORK 1
-
-/* Define to 1 if you have the `fsmount' function. */
-/* #undef HAVE_FSMOUNT */
-
-/* Define if have AUTOFS filesystem */
-/* #undef HAVE_FS_AUTOFS */
-
-/* Define if have CACHEFS filesystem */
-/* #undef HAVE_FS_CACHEFS */
-
-/* Define if have CDFS filesystem */
-#define HAVE_FS_CDFS 1
-
-/* Define if have CFS (crypto) filesystem */
-/* #undef HAVE_FS_CFS */
-
-/* Define if have EFS filesystem (irix) */
-/* #undef HAVE_FS_EFS */
-
-/* Define to 1 if you have the <fs/efs/efs_mount.h> header file. */
-/* #undef HAVE_FS_EFS_EFS_MOUNT_H */
-
-/* Define if have EXT{2,3,4} filesystem (linux) */
-/* #undef HAVE_FS_EXT */
-
-/* Define if have FFS filesystem */
-/* #undef HAVE_FS_FFS */
-
-/* Define if have HSFS filesystem */
-/* #undef HAVE_FS_HSFS */
-
-/* Define if have LOFS filesystem */
-/* #undef HAVE_FS_LOFS */
-
-/* Define if have LUSTRE filesystem */
-/* #undef HAVE_FS_LUSTRE */
-
-/* Define if have MFS filesystem */
-#define HAVE_FS_MFS 1
-
-/* Define to 1 if you have the <fs/msdosfs/msdosfsmount.h> header file. */
-/* #undef HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H */
-
-/* Define if have NFS filesystem */
-#define HAVE_FS_NFS 1
-
-/* Define if have NFS3 filesystem */
-#define HAVE_FS_NFS3 1
-
-/* Define if have NFS4 filesystem */
-/* #undef HAVE_FS_NFS4 */
-
-/* Define if have NULLFS (loopback on bsd44) filesystem */
-#define HAVE_FS_NULLFS 1
-
-/* Define if have PCFS filesystem */
-#define HAVE_FS_PCFS 1
-
-/* Define if have TFS filesystem */
-/* #undef HAVE_FS_TFS */
-
-/* Define if have TMPFS filesystem */
-#define HAVE_FS_TMPFS 1
-
-/* Define to 1 if you have the <fs/tmpfs/tmpfs_args.h> header file. */
-/* #undef HAVE_FS_TMPFS_TMPFS_ARGS_H */
-
-/* Define if have UDF filesystem */
-#define HAVE_FS_UDF 1
-
-/* Define to 1 if you have the <fs/udf/udf_mount.h> header file. */
-#define HAVE_FS_UDF_UDF_MOUNT_H 1
-
-/* Define if have UFS filesystem */
-#define HAVE_FS_UFS 1
-
-/* Define if have UMAPFS (uid/gid mapping) filesystem */
-/* #undef HAVE_FS_UMAPFS */
-
-/* Define if have UNIONFS filesystem */
-#define HAVE_FS_UNIONFS 1
-
-/* Define if have XFS filesystem (irix) */
-/* #undef HAVE_FS_XFS */
-
-/* System supports GCC-style variable-length argument macros */
-/* #undef HAVE_GCC_VARARGS_MACROS */
-
-/* Define to 1 if you have the <gdbm-ndbm.h> header file. */
-/* #undef HAVE_GDBM_NDBM_H */
-
-/* Define to 1 if you have the `getccent' function. */
-/* #undef HAVE_GETCCENT */
-
-/* Define to 1 if you have the `getcwd' function. */
-#define HAVE_GETCWD 1
-
-/* Define to 1 if you have the `getdomainname' function. */
-#define HAVE_GETDOMAINNAME 1
-
-/* Define to 1 if you have the `getdtablesize' function. */
-#define HAVE_GETDTABLESIZE 1
-
-/* Define to 1 if you have the `gethostname' function. */
-#define HAVE_GETHOSTNAME 1
-
-/* Define to 1 if you have the `getifaddrs' function. */
-#define HAVE_GETIFADDRS 1
-
-/* Define to 1 if you have the `getmntinfo' function. */
-#define HAVE_GETMNTINFO 1
-
-/* Define to 1 if you have the `getmountent' function. */
-/* #undef HAVE_GETMOUNTENT */
-
-/* Define to 1 if you have the `getpagesize' function. */
-#define HAVE_GETPAGESIZE 1
-
-/* Define to 1 if you have the `getpwnam' function. */
-#define HAVE_GETPWNAM 1
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#define HAVE_GETTIMEOFDAY 1
-
-/* Define to 1 if you have the `get_myaddress' function. */
-#define HAVE_GET_MYADDRESS 1
-
-/* define if your system's getopt() is GNU getopt() (are you using glibc) */
-/* #undef HAVE_GNU_GETOPT */
-
-/* Define to 1 if you have the <grp.h> header file. */
-#define HAVE_GRP_H 1
-
-/* Define to 1 if you have the `hasmntopt' function. */
-/* #undef HAVE_HASMNTOPT */
-
-#ifdef YES_HESIOD
-/* Define to 1 if you have the <hesiod.h> header file. */
-#define HAVE_HESIOD_H 1
-
-/* Define to 1 if you have the `hesiod_init' function. */
-#define HAVE_HESIOD_INIT 1
-
-/* Define to 1 if you have the `hesiod_reload' function. */
-/* #undef HAVE_HESIOD_RELOAD */
-
-/* Define to 1 if you have the `hesiod_to_bind' function. */
-#define HAVE_HESIOD_TO_BIND 1
-
-/* Define to 1 if you have the `hes_init' function. */
-#define HAVE_HES_INIT 1
-#else
-#undef HAVE_HESIOD_H
-#undef HAVE_HESIOD_INIT
-#undef HAVE_HESIOD_RELOAD
-#undef HAVE_HESIOD_TO_BIND
-#undef HAVE_HES_INIT
-#endif
-
-/* Define to 1 if you have the <hsfs/hsfs.h> header file. */
-/* #undef HAVE_HSFS_HSFS_H */
-
-/* Define to 1 if you have the `hstrerror' function. */
-#define HAVE_HSTRERROR 1
-
-/* Define to 1 if you have the <ifaddrs.h> header file. */
-#define HAVE_IFADDRS_H 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the <irs.h> header file. */
-/* #undef HAVE_IRS_H */
-
-/* Define to 1 if you have the <isofs/cd9660/cd9660_mount.h> header file. */
-#define HAVE_ISOFS_CD9660_CD9660_MOUNT_H 1
-
-/* Define to 1 if you have the <lber.h> header file. */
-/* #undef HAVE_LBER_H */
-
-/* Define to 1 if you have the `ldap_enable_cache' function. */
-/* #undef HAVE_LDAP_ENABLE_CACHE */
-
-/* Define to 1 if you have the <ldap.h> header file. */
-/* #undef HAVE_LDAP_H */
-
-/* Define to 1 if you have the `ldap_open' function. */
-/* #undef HAVE_LDAP_OPEN */
-
-/* Define to 1 if you have the <libgen.h> header file. */
-#define HAVE_LIBGEN_H 1
-
-/* Define to 1 if you have the `malloc' library (-lmalloc). */
-/* #undef HAVE_LIBMALLOC */
-
-/* Define to 1 if you have the `mapmalloc' library (-lmapmalloc). */
-/* #undef HAVE_LIBMAPMALLOC */
-
-/* Define to 1 if you have the `nsl' library (-lnsl). */
-/* #undef HAVE_LIBNSL */
-
-/* Define to 1 if you have the `posix4' library (-lposix4). */
-/* #undef HAVE_LIBPOSIX4 */
-
-/* Define to 1 if you have the `resolv' library (-lresolv). */
-/* #undef HAVE_LIBRESOLV */
-
-/* Define to 1 if you have the `rpc' library (-lrpc). */
-/* #undef HAVE_LIBRPC */
-
-/* Define to 1 if you have the `rpcsvc' library (-lrpcsvc). */
-#define HAVE_LIBRPCSVC 1
-
-/* Define to 1 if you have the `rt' library (-lrt). */
-/* #undef HAVE_LIBRT */
-
-/* does libwrap exist? */
-/* #undef HAVE_LIBWRAP */
-
-/* Define to 1 if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define to 1 if you have the <linux/auto_fs4.h> header file. */
-/* #undef HAVE_LINUX_AUTO_FS4_H */
-
-/* Define to 1 if you have the <linux/auto_fs.h> header file. */
-/* #undef HAVE_LINUX_AUTO_FS_H */
-
-/* Define to 1 if you have the <linux/fs.h> header file. */
-/* #undef HAVE_LINUX_FS_H */
-
-/* Define to 1 if you have the <linux/kdev_t.h> header file. */
-/* #undef HAVE_LINUX_KDEV_T_H */
-
-/* Define to 1 if you have the <linux/list.h> header file. */
-/* #undef HAVE_LINUX_LIST_H */
-
-/* Define to 1 if you have the <linux/loop.h> header file. */
-/* #undef HAVE_LINUX_LOOP_H */
-
-/* Define to 1 if you have the <linux/nfs2.h> header file. */
-/* #undef HAVE_LINUX_NFS2_H */
-
-/* Define to 1 if you have the <linux/nfs4.h> header file. */
-/* #undef HAVE_LINUX_NFS4_H */
-
-/* Define to 1 if you have the <linux/nfs.h> header file. */
-/* #undef HAVE_LINUX_NFS_H */
-
-/* Define to 1 if you have the <linux/nfs_mount.h> header file. */
-/* #undef HAVE_LINUX_NFS_MOUNT_H */
-
-/* Define to 1 if you have the <linux/posix_types.h> header file. */
-/* #undef HAVE_LINUX_POSIX_TYPES_H */
-
-/* Define to 1 if you have the <linux/socket.h> header file. */
-/* #undef HAVE_LINUX_SOCKET_H */
-
-/* Define to 1 if you support file names longer than 14 characters. */
-#define HAVE_LONG_FILE_NAMES 1
-
-/* Define to 1 if you have the <machine/endian.h> header file. */
-#define HAVE_MACHINE_ENDIAN_H 1
-
-/* Define to 1 if you have the `madvise' function. */
-#define HAVE_MADVISE 1
-
-/* Define to 1 if you have the <malloc.h> header file. */
-/* #undef HAVE_MALLOC_H */
-
-/* Define if have DBM maps */
-/* #undef HAVE_MAP_DBM */
-
-/* Define if have executable maps */
-#define HAVE_MAP_EXEC 1
-
-/* Define if have file maps (everyone should have it!) */
-#define HAVE_MAP_FILE 1
-
-#ifdef YES_HESIOD
-/* Define if have HESIOD maps */
-#define HAVE_MAP_HESIOD 1
-#else
-#undef HAVE_MAP_HESIOD
-#endif
-
-/* Define if have LDAP maps */
-/* #undef HAVE_MAP_LDAP */
-
-/* Define if have NDBM maps */
-#define HAVE_MAP_NDBM 1
-
-/* Define if have NIS maps */
-#define HAVE_MAP_NIS 1
-
-/* Define if have NIS+ maps */
-/* #undef HAVE_MAP_NISPLUS */
-
-/* Define if have PASSWD maps */
-#define HAVE_MAP_PASSWD 1
-
-/* Define if have Sun-syntax maps */
-#define HAVE_MAP_SUN 1
-
-/* Define if have UNION maps */
-#define HAVE_MAP_UNION 1
-
-/* Define to 1 if you have the `memcmp' function. */
-#define HAVE_MEMCMP 1
-
-/* Define to 1 if you have the `memcpy' function. */
-#define HAVE_MEMCPY 1
-
-/* Define to 1 if you have the `memmove' function. */
-#define HAVE_MEMMOVE 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `memset' function. */
-#define HAVE_MEMSET 1
-
-/* Define to 1 if you have the `mkdir' function. */
-#define HAVE_MKDIR 1
-
-/* Define to 1 if you have the `mkstemp' function. */
-#define HAVE_MKSTEMP 1
-
-/* Define to 1 if you have the `mlockall' function. */
-#define HAVE_MLOCKALL 1
-
-/* Define to 1 if you have the `mntctl' function. */
-/* #undef HAVE_MNTCTL */
-
-/* Define to 1 if you have the <mntent.h> header file. */
-/* #undef HAVE_MNTENT_H */
-
-/* Define to 1 if `mnt_cnode' is member of `mntent_t'. */
-/* #undef HAVE_MNTENT_T_MNT_CNODE */
-
-/* Define to 1 if `mnt_ro' is member of `mntent_t'. */
-/* #undef HAVE_MNTENT_T_MNT_RO */
-
-/* Define to 1 if `mnt_time' is member of `mntent_t'. */
-/* #undef HAVE_MNTENT_T_MNT_TIME */
-
-/* does mntent_t have mnt_time field and is of type "char *" ? */
-/* #undef HAVE_MNTENT_T_MNT_TIME_STRING */
-
-/* Define to 1 if you have the <mnttab.h> header file. */
-/* #undef HAVE_MNTTAB_H */
-
-/* Define to 1 if you have the `mount' function. */
-#define HAVE_MOUNT 1
-
-/* Define to 1 if `optptr' is member of `mounta'. */
-/* #undef HAVE_MOUNTA_OPTPTR */
-
-/* Define to 1 if you have the `mountsyscall' function. */
-/* #undef HAVE_MOUNTSYSCALL */
-
-/* Define to 1 if you have the <mount.h> header file. */
-/* #undef HAVE_MOUNT_H */
-
-/* Define to 1 if you have the <msdosfs/msdosfsmount.h> header file. */
-/* #undef HAVE_MSDOSFS_MSDOSFSMOUNT_H */
-
-/* Define to 1 if you have the <fs/msdosfs/msdosfsmount.h> header file. */
-#define HAVE_FS_MSDOSFS_MSDOSFSMOUNT_H 1
-
-/* Define to 1 if you have the <ndbm.h> header file. */
-#define HAVE_NDBM_H 1
-
-/* Define to 1 if you have the <ndir.h> header file. */
-/* #undef HAVE_NDIR_H */
-
-/* Define to 1 if you have the <netconfig.h> header file. */
-#define HAVE_NETCONFIG_H 1
-
-/* Define to 1 if you have the <netdb.h> header file. */
-#define HAVE_NETDB_H 1
-
-/* Define to 1 if you have the <netdir.h> header file. */
-/* #undef HAVE_NETDIR_H */
-
-/* Define to 1 if you have the <netinet/if_ether.h> header file. */
-#define HAVE_NETINET_IF_ETHER_H 1
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#define HAVE_NETINET_IN_H 1
-
-/* Define to 1 if you have the <net/errno.h> header file. */
-/* #undef HAVE_NET_ERRNO_H */
-
-/* Define to 1 if you have the <net/if.h> header file. */
-#define HAVE_NET_IF_H 1
-
-/* Define to 1 if you have the <net/if_var.h> header file. */
-/* #undef HAVE_NET_IF_VAR_H */
-
-/* Define to 1 if you have the <net/route.h> header file. */
-#define HAVE_NET_ROUTE_H 1
-
-/* Define to 1 if you have the <nfsclient/nfsargs.h> header file. */
-#define HAVE_NFSCLIENT_NFSARGS_H 1
-
-/* Define to 1 if `acdirmax' is member of `nfs_args_t'. */
-#define HAVE_NFS_ARGS_T_ACDIRMAX 1
-
-/* Define to 1 if `acdirmin' is member of `nfs_args_t'. */
-#define HAVE_NFS_ARGS_T_ACDIRMIN 1
-
-/* Define to 1 if `acregmax' is member of `nfs_args_t'. */
-#define HAVE_NFS_ARGS_T_ACREGMAX 1
-
-/* Define to 1 if `acregmin' is member of `nfs_args_t'. */
-#define HAVE_NFS_ARGS_T_ACREGMIN 1
-
-/* Define to 1 if `addrlen' is member of `nfs_args_t'. */
-#define HAVE_NFS_ARGS_T_ADDRLEN 1
-
-/* Define to 1 if `bsize' is member of `nfs_args_t'. */
-/* #undef HAVE_NFS_ARGS_T_BSIZE */
-
-/* Define to 1 if `context' is member of `nfs_args_t'. */
-/* #undef HAVE_NFS_ARGS_T_CONTEXT */
-
-/* Define to 1 if `fhsize' is member of `nfs_args_t'. */
-#define HAVE_NFS_ARGS_T_FHSIZE 1
-
-/* Define to 1 if `fh_len' is member of `nfs_args_t'. */
-/* #undef HAVE_NFS_ARGS_T_FH_LEN */
-
-/* Define to 1 if `gfs_flags' is member of `nfs_args_t'. */
-/* #undef HAVE_NFS_ARGS_T_GFS_FLAGS */
-
-/* Define to 1 if `namlen' is member of `nfs_args_t'. */
-/* #undef HAVE_NFS_ARGS_T_NAMLEN */
-
-/* Define to 1 if `optstr' is member of `nfs_args_t'. */
-/* #undef HAVE_NFS_ARGS_T_OPTSTR */
-
-/* Define to 1 if `pathconf' is member of `nfs_args_t'. */
-/* #undef HAVE_NFS_ARGS_T_PATHCONF */
-
-/* Define to 1 if `proto' is member of `nfs_args_t'. */
-#define HAVE_NFS_ARGS_T_PROTO 1
-
-/* Define to 1 if `pseudoflavor' is member of `nfs_args_t'. */
-/* #undef HAVE_NFS_ARGS_T_PSEUDOFLAVOR */
-
-/* Define to 1 if `sotype' is member of `nfs_args_t'. */
-#define HAVE_NFS_ARGS_T_SOTYPE 1
-
-/* Define to 1 if `version' is member of `nfs_args_t'. */
-#define HAVE_NFS_ARGS_T_VERSION 1
-
-/* Define to 1 if you have the <nfs/export.h> header file. */
-/* #undef HAVE_NFS_EXPORT_H */
-
-/* Define to 1 if you have the <nfs/mount.h> header file. */
-/* #undef HAVE_NFS_MOUNT_H */
-
-/* Define to 1 if you have the <nfs/nfsmount.h> header file. */
-/* #undef HAVE_NFS_NFSMOUNT_H */
-
-/* Define to 1 if you have the <nfs/nfsproto.h> header file. */
-#define HAVE_NFS_NFSPROTO_H 1
-
-/* Define to 1 if you have the <nfs/nfsv2.h> header file. */
-/* #undef HAVE_NFS_NFSV2_H */
-
-/* Define to 1 if you have the <nfs/nfs_clnt.h> header file. */
-/* #undef HAVE_NFS_NFS_CLNT_H */
-
-/* Define to 1 if you have the <nfs/nfs_gfs.h> header file. */
-/* #undef HAVE_NFS_NFS_GFS_H */
-
-/* Define to 1 if you have the <nfs/nfs.h> header file. */
-/* #undef HAVE_NFS_NFS_H */
-
-/* Define to 1 if you have the <nfs/nfs_mount.h> header file. */
-/* #undef HAVE_NFS_NFS_MOUNT_H */
-
-/* Define to 1 if you have the <nfs/pathconf.h> header file. */
-/* #undef HAVE_NFS_PATHCONF_H */
-
-/* define if the host has NFS protocol headers in system headers */
-/* #undef HAVE_NFS_PROT_HEADERS */
-
-/* Define to 1 if you have the <nfs/rpcv2.h> header file. */
-/* #define HAVE_NFS_RPCV2_H 1 */
-
-/* Define to 1 if you have the `nis_domain_of' function. */
-/* #undef HAVE_NIS_DOMAIN_OF */
-
-/* Define to 1 if you have the <nsswitch.h> header file. */
-#define HAVE_NSSWITCH_H 1
-
-/* Define to 1 if you have the `opendir' function. */
-#define HAVE_OPENDIR 1
-
-/* Define to 1 if `dsttime' is member of `pcfs_args_t'. */
-/* #undef HAVE_PCFS_ARGS_T_DSTTIME */
-
-/* Define to 1 if `fspec' is member of `pcfs_args_t'. */
-#define HAVE_PCFS_ARGS_T_FSPEC 1
-
-/* Define to 1 if `gid' is member of `pcfs_args_t'. */
-#define HAVE_PCFS_ARGS_T_GID 1
-
-/* Define to 1 if `mask' is member of `pcfs_args_t'. */
-#define HAVE_PCFS_ARGS_T_MASK 1
-
-/* Define to 1 if `dirmask' is member of `pcfs_args_t'. */
-#define HAVE_PCFS_ARGS_T_DIRMASK 1
-
-/* Define to 1 if `secondswest' is member of `pcfs_args_t'. */
-/* #undef HAVE_PCFS_ARGS_T_SECONDSWEST */
-
-/* Define to 1 if `uid' is member of `pcfs_args_t'. */
-#define HAVE_PCFS_ARGS_T_UID 1
-
-/* Define to 1 if you have the `plock' function. */
-/* #undef HAVE_PLOCK */
-
-/* Define to 1 if you have the <pwd.h> header file. */
-#define HAVE_PWD_H 1
-
-/* Define to 1 if you have the `regcomp' function. */
-#define HAVE_REGCOMP 1
-
-/* Define to 1 if you have the `regexec' function. */
-#define HAVE_REGEXEC 1
-
-/* Define to 1 if you have the <regex.h> header file. */
-#define HAVE_REGEX_H 1
-
-/* Define to 1 if you have the <resolv.h> header file. */
-#define HAVE_RESOLV_H 1
-
-/* Define to 1 if system calls automatically restart after interruption by a
- signal. */
-#define HAVE_RESTARTABLE_SYSCALLS 1
-
-/* Define to 1 if you have the `rmdir' function. */
-#define HAVE_RMDIR 1
-
-/* Define to 1 if you have the <rpcsvc/autofs_prot.h> header file. */
-/* #undef HAVE_RPCSVC_AUTOFS_PROT_H */
-
-/* Define to 1 if you have the <rpcsvc/mountv3.h> header file. */
-/* #undef HAVE_RPCSVC_MOUNTV3_H */
-
-/* Define to 1 if you have the <rpcsvc/mount.h> header file. */
-#define HAVE_RPCSVC_MOUNT_H 1
-
-/* Define to 1 if you have the <rpcsvc/nfs_prot.h> header file. */
-#define HAVE_RPCSVC_NFS_PROT_H 1
-
-/* Define to 1 if you have the <rpcsvc/nis.h> header file. */
-#define HAVE_RPCSVC_NIS_H 1
-
-/* Define to 1 if you have the <rpcsvc/ypclnt.h> header file. */
-#define HAVE_RPCSVC_YPCLNT_H 1
-
-/* Define to 1 if you have the <rpcsvc/yp_prot.h> header file. */
-#define HAVE_RPCSVC_YP_PROT_H 1
-
-/* Define to 1 if you have the <rpc/auth_des.h> header file. */
-#define HAVE_RPC_AUTH_DES_H 1
-
-/* Define to 1 if you have the <rpc/auth.h> header file. */
-#define HAVE_RPC_AUTH_H 1
-
-/* Define to 1 if you have the <rpc/pmap_clnt.h> header file. */
-#define HAVE_RPC_PMAP_CLNT_H 1
-
-/* Define to 1 if you have the <rpc/pmap_prot.h> header file. */
-#define HAVE_RPC_PMAP_PROT_H 1
-
-/* Define to 1 if you have the <rpc/rpc.h> header file. */
-#define HAVE_RPC_RPC_H 1
-
-/* Define to 1 if you have the <rpc/types.h> header file. */
-#define HAVE_RPC_TYPES_H 1
-
-/* Define to 1 if you have the <rpc/xdr.h> header file. */
-#define HAVE_RPC_XDR_H 1
-
-/* Define to 1 if you have the `select' function. */
-#define HAVE_SELECT 1
-
-/* Define to 1 if you have the `seteuid' function. */
-#define HAVE_SETEUID 1
-
-/* Define to 1 if you have the `setitimer' function. */
-#define HAVE_SETITIMER 1
-
-/* Define to 1 if you have the <setjmp.h> header file. */
-#define HAVE_SETJMP_H 1
-
-/* Define to 1 if you have the `setresuid' function. */
-#define HAVE_SETRESUID 1
-
-/* Define to 1 if you have the `setsid' function. */
-#define HAVE_SETSID 1
-
-/* Define to 1 if you have the `sigaction' function. */
-#define HAVE_SIGACTION 1
-
-/* Define to 1 if you have the `signal' function. */
-#define HAVE_SIGNAL 1
-
-/* Define to 1 if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* Define to 1 if you have the `sigsuspend' function. */
-#define HAVE_SIGSUSPEND 1
-
-/* Define to 1 if you have the `socket' function. */
-#define HAVE_SOCKET 1
-
-/* Define to 1 if you have the <socketbits.h> header file. */
-/* #undef HAVE_SOCKETBITS_H */
-
-/* Define to 1 if you have the <statbuf.h> header file. */
-/* #undef HAVE_STATBUF_H */
-
-/* Define to 1 if you have the `statfs' function. */
-#define HAVE_STATFS 1
-
-/* Define to 1 if you have the `statvfs' function. */
-#define HAVE_STATVFS 1
-
-/* Define to 1 if you have the <stdarg.h> header file. */
-#define HAVE_STDARG_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdio.h> header file. */
-#define HAVE_STDIO_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#define HAVE_STRCASECMP 1
-
-/* Define to 1 if you have the `strchr' function. */
-#define HAVE_STRCHR 1
-
-/* Define to 1 if you have the `strcspn' function. */
-#define HAVE_STRCSPN 1
-
-/* Define to 1 if you have the `strdup' function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the `strerror' function. */
-#define HAVE_STRERROR 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strlcat' function. */
-#define HAVE_STRLCAT 1
-
-/* Define to 1 if you have the `strlcpy' function. */
-#define HAVE_STRLCPY 1
-
-/* Define to 1 if you have the `strspn' function. */
-#define HAVE_STRSPN 1
-
-/* Define to 1 if you have the `strstr' function. */
-#define HAVE_STRSTR 1
-
-/* Define to 1 if `fhs_fh' is member of `struct fhstatus'. */
-/* #undef HAVE_STRUCT_FHSTATUS_FHS_FH */
-
-/* Define to 1 if `ifa_next' is member of `struct ifaddrs'. */
-#define HAVE_STRUCT_IFADDRS_IFA_NEXT 1
-
-/* Define to 1 if `ifr_addr' is member of `struct ifreq'. */
-#define HAVE_STRUCT_IFREQ_IFR_ADDR 1
-
-/* Define if have struct mntent in one of the standard headers */
-/* #undef HAVE_STRUCT_MNTENT */
-
-/* Define if have struct mnttab in one of the standard headers */
-/* #undef HAVE_STRUCT_MNTTAB */
-
-/* Define if have struct nfs_args in one of the standard nfs headers */
-#define HAVE_STRUCT_NFS_ARGS 1
-
-/* Define if have struct nfs_gfs_mount in one of the standard nfs headers */
-/* #undef HAVE_STRUCT_NFS_GFS_MOUNT */
-
-/* Define to 1 if `sa_len' is member of `struct sockaddr'. */
-#define HAVE_STRUCT_SOCKADDR_SA_LEN 1
-
-/* Define to 1 if `f_fstypename' is member of `struct statfs'. */
-#define HAVE_STRUCT_STATFS_F_FSTYPENAME 1
-
-/* Define to 1 if `devid' is member of `struct umntrequest'. */
-/* #undef HAVE_STRUCT_UMNTREQUEST_DEVID */
-
-/* Define to 1 if you have the `svc_getreq' function. */
-#define HAVE_SVC_GETREQ 1
-
-/* Define to 1 if you have the `svc_getreqset' function. */
-#define HAVE_SVC_GETREQSET 1
-
-/* Define to 1 if you have the `sysfs' function. */
-/* #undef HAVE_SYSFS */
-
-/* Define to 1 if you have the `syslog' function. */
-#define HAVE_SYSLOG 1
-
-/* Define to 1 if you have the <syslog.h> header file. */
-#define HAVE_SYSLOG_H 1
-
-/* Define to 1 if you have the <sys/config.h> header file. */
-/* #undef HAVE_SYS_CONFIG_H */
-
-/* Define to 1 if you have the <sys/dg_mount.h> header file. */
-/* #undef HAVE_SYS_DG_MOUNT_H */
-
-/* Define to 1 if you have the <sys/dir.h> header file. */
-#define HAVE_SYS_DIR_H 1
-
-/* Define to 1 if you have the <sys/errno.h> header file. */
-#define HAVE_SYS_ERRNO_H 1
-
-/* Define to 1 if you have the <sys/file.h> header file. */
-#define HAVE_SYS_FILE_H 1
-
-/* Define to 1 if you have the <sys/fsid.h> header file. */
-/* #undef HAVE_SYS_FSID_H */
-
-/* Define to 1 if you have the <sys/fstyp.h> header file. */
-/* #undef HAVE_SYS_FSTYP_H */
-
-/* Define to 1 if you have the <sys/fs/autofs.h> header file. */
-/* #undef HAVE_SYS_FS_AUTOFS_H */
-
-/* Define to 1 if you have the <sys/fs/autofs_prot.h> header file. */
-/* #undef HAVE_SYS_FS_AUTOFS_PROT_H */
-
-/* Define to 1 if you have the <sys/fs/cachefs_fs.h> header file. */
-/* #undef HAVE_SYS_FS_CACHEFS_FS_H */
-
-/* Define to 1 if you have the <sys/fs/efs_clnt.h> header file. */
-/* #undef HAVE_SYS_FS_EFS_CLNT_H */
-
-/* Define to 1 if you have the <sys/fs/nfs_clnt.h> header file. */
-/* #undef HAVE_SYS_FS_NFS_CLNT_H */
-
-/* Define to 1 if you have the <sys/fs/nfs.h> header file. */
-/* #undef HAVE_SYS_FS_NFS_H */
-
-/* Define to 1 if you have the <sys/fs/nfs/mount.h> header file. */
-/* #undef HAVE_SYS_FS_NFS_MOUNT_H */
-
-/* Define to 1 if you have the <sys/fs/nfs/nfs_clnt.h> header file. */
-/* #undef HAVE_SYS_FS_NFS_NFS_CLNT_H */
-
-/* Define to 1 if you have the <sys/fs/pc_fs.h> header file. */
-/* #undef HAVE_SYS_FS_PC_FS_H */
-
-/* Define to 1 if you have the <sys/fs/tmp.h> header file. */
-/* #undef HAVE_SYS_FS_TMP_H */
-
-/* Define to 1 if you have the <sys/fs_types.h> header file. */
-/* #undef HAVE_SYS_FS_TYPES_H */
-
-/* Define to 1 if you have the <sys/fs/ufs_mount.h> header file. */
-/* #undef HAVE_SYS_FS_UFS_MOUNT_H */
-
-/* Define to 1 if you have the <sys/fs/xfs_clnt.h> header file. */
-/* #undef HAVE_SYS_FS_XFS_CLNT_H */
-
-/* Define to 1 if you have the <sys/immu.h> header file. */
-/* #undef HAVE_SYS_IMMU_H */
-
-/* Define to 1 if you have the <sys/ioctl.h> header file. */
-#define HAVE_SYS_IOCTL_H 1
-
-/* Define to 1 if you have the <sys/lock.h> header file. */
-#define HAVE_SYS_LOCK_H 1
-
-/* Define to 1 if you have the <sys/machine.h> header file. */
-/* #undef HAVE_SYS_MACHINE_H */
-
-/* Define to 1 if you have the <sys/mbuf.h> header file. */
-#define HAVE_SYS_MBUF_H 1
-
-/* Define to 1 if you have the <sys/mman.h> header file. */
-#define HAVE_SYS_MMAN_H 1
-
-/* Define to 1 if you have the <sys/mntctl.h> header file. */
-/* #undef HAVE_SYS_MNTCTL_H */
-
-/* Define to 1 if you have the <sys/mntent.h> header file. */
-/* #undef HAVE_SYS_MNTENT_H */
-
-/* Define to 1 if you have the <sys/mnttab.h> header file. */
-/* #undef HAVE_SYS_MNTTAB_H */
-
-/* Define to 1 if you have the <sys/mount.h> header file. */
-#define HAVE_SYS_MOUNT_H 1
-
-/* Define to 1 if you have the <sys/ndir.h> header file. */
-/* #undef HAVE_SYS_NDIR_H */
-
-/* Define to 1 if you have the <sys/netconfig.h> header file. */
-/* #undef HAVE_SYS_NETCONFIG_H */
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define to 1 if you have the <sys/pathconf.h> header file. */
-/* #undef HAVE_SYS_PATHCONF_H */
-
-/* Define to 1 if you have the <sys/proc.h> header file. */
-#define HAVE_SYS_PROC_H 1
-
-/* Define to 1 if you have the <sys/resource.h> header file. */
-#define HAVE_SYS_RESOURCE_H 1
-
-/* Define to 1 if you have the <sys/sema.h> header file. */
-#define HAVE_SYS_SEMA_H 1
-
-/* Define to 1 if you have the <sys/signal.h> header file. */
-#define HAVE_SYS_SIGNAL_H 1
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define to 1 if you have the <sys/sockio.h> header file. */
-#define HAVE_SYS_SOCKIO_H 1
-
-/* Define to 1 if you have the <sys/statfs.h> header file. */
-/* #undef HAVE_SYS_STATFS_H */
-
-/* Define to 1 if you have the <sys/statvfs.h> header file. */
-#define HAVE_SYS_STATVFS_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/syscall.h> header file. */
-#define HAVE_SYS_SYSCALL_H 1
-
-/* Define to 1 if you have the <sys/syslimits.h> header file. */
-#define HAVE_SYS_SYSLIMITS_H 1
-
-/* Define to 1 if you have the <sys/syslog.h> header file. */
-#define HAVE_SYS_SYSLOG_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/tiuser.h> header file. */
-/* #undef HAVE_SYS_TIUSER_H */
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <sys/ucred.h> header file. */
-#define HAVE_SYS_UCRED_H 1
-
-/* Define to 1 if you have the <sys/uio.h> header file. */
-#define HAVE_SYS_UIO_H 1
-
-/* Define to 1 if you have the <sys/utsname.h> header file. */
-#define HAVE_SYS_UTSNAME_H 1
-
-/* Define to 1 if you have the <sys/vfs.h> header file. */
-/* #undef HAVE_SYS_VFS_H */
-
-/* Define to 1 if you have the <sys/vmount.h> header file. */
-/* #undef HAVE_SYS_VMOUNT_H */
-
-/* Define to 1 if you have the <sys/vnode.h> header file. */
-#define HAVE_SYS_VNODE_H 1
-
-/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
-#define HAVE_SYS_WAIT_H 1
-
-/* Define to 1 if you have the <tcpd.h> header file. */
-/* #undef HAVE_TCPD_H */
-
-/* Define to 1 if you have the <time.h> header file. */
-#define HAVE_TIME_H 1
-
-/* Define to 1 if you have the <tiuser.h> header file. */
-/* #undef HAVE_TIUSER_H */
-
-/* Define to 1 if `ta_nodes_max' is member of `tmpfs_args_t'. */
-/* #undef HAVE_TMPFS_ARGS_T_TA_NODES_MAX */
-
-/* Define to 1 if `ta_root_gid' is member of `tmpfs_args_t'. */
-/* #undef HAVE_TMPFS_ARGS_T_TA_ROOT_GID */
-
-/* Define to 1 if `ta_root_mode' is member of `tmpfs_args_t'. */
-/* #undef HAVE_TMPFS_ARGS_T_TA_ROOT_MODE */
-
-/* Define to 1 if `ta_root_uid' is member of `tmpfs_args_t'. */
-/* #undef HAVE_TMPFS_ARGS_T_TA_ROOT_UID */
-
-/* Define to 1 if `ta_size_max' is member of `tmpfs_args_t'. */
-/* #undef HAVE_TMPFS_ARGS_T_TA_SIZE_MAX */
-
-/* Define to 1 if `ta_version' is member of `tmpfs_args_t'. */
-/* #undef HAVE_TMPFS_ARGS_T_TA_VERSION */
-
-/* Define to 1 if you have the <tmpfs/tmp.h> header file. */
-/* #undef HAVE_TMPFS_TMP_H */
-
-/* what type of network transport type is in use? TLI or sockets? */
-/* #undef HAVE_TRANSPORT_TYPE_TLI */
-
-/* Define to 1 if you have the `ualarm' function. */
-#define HAVE_UALARM 1
-
-/* Define to 1 if `anon_gid' is member of `udf_args_t'. */
-/* #undef HAVE_UDF_ARGS_T_ANON_GID */
-
-/* Define to 1 if `anon_uid' is member of `udf_args_t'. */
-/* #undef HAVE_UDF_ARGS_T_ANON_UID */
-
-/* Define to 1 if `fspec' is member of `udf_args_t'. */
-/* #undef HAVE_UDF_ARGS_T_FSPEC */
-
-/* Define to 1 if `gmtoff' is member of `udf_args_t'. */
-/* #undef HAVE_UDF_ARGS_T_GMTOFF */
-
-/* Define to 1 if `nobody_gid' is member of `udf_args_t'. */
-/* #undef HAVE_UDF_ARGS_T_NOBODY_GID */
-
-/* Define to 1 if `nobody_uid' is member of `udf_args_t'. */
-/* #undef HAVE_UDF_ARGS_T_NOBODY_UID */
-
-/* Define to 1 if `sector_size' is member of `udf_args_t'. */
-/* #undef HAVE_UDF_ARGS_T_SECTOR_SIZE */
-
-/* Define to 1 if `sessionnr' is member of `udf_args_t'. */
-/* #undef HAVE_UDF_ARGS_T_SESSIONNR */
-
-/* Define to 1 if `udfmflags' is member of `udf_args_t'. */
-/* #undef HAVE_UDF_ARGS_T_UDFMFLAGS */
-
-/* Define to 1 if `version' is member of `udf_args_t'. */
-/* #undef HAVE_UDF_ARGS_T_VERSION */
-
-/* Define to 1 if `flags' is member of `ufs_args_t'. */
-/* #undef HAVE_UFS_ARGS_T_FLAGS */
-
-/* Define to 1 if `fspec' is member of `ufs_args_t'. */
-#define HAVE_UFS_ARGS_T_FSPEC 1
-
-/* Define to 1 if `ufs_flags' is member of `ufs_args_t'. */
-/* #undef HAVE_UFS_ARGS_T_UFS_FLAGS */
-
-/* Define to 1 if `ufs_pgthresh' is member of `ufs_args_t'. */
-/* #undef HAVE_UFS_ARGS_T_UFS_PGTHRESH */
-
-/* Define to 1 if you have the <ufs/ufs/extattr.h> header file. */
-#define HAVE_UFS_UFS_EXTATTR_H 1
-
-/* Define to 1 if you have the <ufs/ufs_mount.h> header file. */
-/* #undef HAVE_UFS_UFS_MOUNT_H */
-
-/* Define to 1 if you have the <ufs/ufs/ufsmount.h> header file. */
-#define HAVE_UFS_UFS_UFSMOUNT_H 1
-
-/* Define to 1 if you have the `umount' function. */
-/* #undef HAVE_UMOUNT */
-
-/* Define to 1 if you have the `umount2' function. */
-/* #undef HAVE_UMOUNT2 */
-
-/* Define to 1 if you have the `uname' function. */
-#define HAVE_UNAME 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the `unmount' function. */
-#define HAVE_UNMOUNT 1
-
-/* Define to 1 if you have the `uvmount' function. */
-/* #undef HAVE_UVMOUNT */
-
-/* Define to 1 if you have the <varargs.h> header file. */
-/* #undef HAVE_VARARGS_H */
-
-/* Define to 1 if you have the `vfork' function. */
-#define HAVE_VFORK 1
-
-/* Define to 1 if you have the <vfork.h> header file. */
-/* #undef HAVE_VFORK_H */
-
-/* Define to 1 if you have the `vfsmount' function. */
-/* #undef HAVE_VFSMOUNT */
-
-/* Define to 1 if you have the `vmount' function. */
-/* #undef HAVE_VMOUNT */
-
-/* Define to 1 if you have the `vsnprintf' function. */
-#define HAVE_VSNPRINTF 1
-
-/* Define to 1 if you have the `wait3' function. */
-#define HAVE_WAIT3 1
-
-/* Define to 1 if you have the `waitpid' function. */
-#define HAVE_WAITPID 1
-
-/* Define to 1 if `fork' works. */
-#define HAVE_WORKING_FORK 1
-
-/* Define to 1 if `vfork' works. */
-#define HAVE_WORKING_VFORK 1
-
-/* Define to 1 if you have the `xdr_attrstat' function. */
-#define HAVE_XDR_ATTRSTAT 1
-
-/* Define to 1 if you have the `xdr_createargs' function. */
-#define HAVE_XDR_CREATEARGS 1
-
-/* Define to 1 if you have the `xdr_dirlist' function. */
-#define HAVE_XDR_DIRLIST 1
-
-/* Define to 1 if you have the `xdr_diropargs' function. */
-#define HAVE_XDR_DIROPARGS 1
-
-/* Define to 1 if you have the `xdr_diropokres' function. */
-#define HAVE_XDR_DIROPOKRES 1
-
-/* Define to 1 if you have the `xdr_diropres' function. */
-#define HAVE_XDR_DIROPRES 1
-
-/* Define to 1 if you have the `xdr_dirpath' function. */
-#define HAVE_XDR_DIRPATH 1
-
-/* Define to 1 if you have the `xdr_entry' function. */
-#define HAVE_XDR_ENTRY 1
-
-/* Define to 1 if you have the `xdr_exportnode' function. */
-#define HAVE_XDR_EXPORTNODE 1
-
-/* Define to 1 if you have the `xdr_exports' function. */
-#define HAVE_XDR_EXPORTS 1
-
-/* Define to 1 if you have the `xdr_fattr' function. */
-#define HAVE_XDR_FATTR 1
-
-/* Define to 1 if you have the `xdr_fhandle' function. */
-#define HAVE_XDR_FHANDLE 1
-
-/* Define to 1 if you have the `xdr_fhstatus' function. */
-#define HAVE_XDR_FHSTATUS 1
-
-/* Define to 1 if you have the `xdr_filename' function. */
-#define HAVE_XDR_FILENAME 1
-
-/* Define to 1 if you have the `xdr_ftype' function. */
-#define HAVE_XDR_FTYPE 1
-
-/* Define to 1 if you have the `xdr_groupnode' function. */
-#define HAVE_XDR_GROUPNODE 1
-
-/* Define to 1 if you have the `xdr_groups' function. */
-#define HAVE_XDR_GROUPS 1
-
-/* Define to 1 if you have the `xdr_linkargs' function. */
-#define HAVE_XDR_LINKARGS 1
-
-/* Define to 1 if you have the `xdr_mountbody' function. */
-#define HAVE_XDR_MOUNTBODY 1
-
-/* Define to 1 if you have the `xdr_mountlist' function. */
-#define HAVE_XDR_MOUNTLIST 1
-
-/* Define to 1 if you have the `xdr_name' function. */
-#define HAVE_XDR_NAME 1
-
-/* Define to 1 if you have the `xdr_nfscookie' function. */
-#define HAVE_XDR_NFSCOOKIE 1
-
-/* Define to 1 if you have the `xdr_nfspath' function. */
-#define HAVE_XDR_NFSPATH 1
-
-/* Define to 1 if you have the `xdr_nfsstat' function. */
-#define HAVE_XDR_NFSSTAT 1
-
-/* Define to 1 if you have the `xdr_nfstime' function. */
-#define HAVE_XDR_NFSTIME 1
-
-/* Define to 1 if you have the `xdr_nfs_fh' function. */
-#define HAVE_XDR_NFS_FH 1
-
-/* Define to 1 if you have the `xdr_pointer' function. */
-#define HAVE_XDR_POINTER 1
-
-/* Define to 1 if you have the `xdr_readargs' function. */
-#define HAVE_XDR_READARGS 1
-
-/* Define to 1 if you have the `xdr_readdirargs' function. */
-#define HAVE_XDR_READDIRARGS 1
-
-/* Define to 1 if you have the `xdr_readdirres' function. */
-#define HAVE_XDR_READDIRRES 1
-
-/* Define to 1 if you have the `xdr_readlinkres' function. */
-#define HAVE_XDR_READLINKRES 1
-
-/* Define to 1 if you have the `xdr_readokres' function. */
-#define HAVE_XDR_READOKRES 1
-
-/* Define to 1 if you have the `xdr_readres' function. */
-#define HAVE_XDR_READRES 1
-
-/* Define to 1 if you have the `xdr_renameargs' function. */
-#define HAVE_XDR_RENAMEARGS 1
-
-/* Define to 1 if you have the `xdr_sattr' function. */
-#define HAVE_XDR_SATTR 1
-
-/* Define to 1 if you have the `xdr_sattrargs' function. */
-#define HAVE_XDR_SATTRARGS 1
-
-/* Define to 1 if you have the `xdr_statfsokres' function. */
-#define HAVE_XDR_STATFSOKRES 1
-
-/* Define to 1 if you have the `xdr_statfsres' function. */
-#define HAVE_XDR_STATFSRES 1
-
-/* Define to 1 if you have the `xdr_symlinkargs' function. */
-#define HAVE_XDR_SYMLINKARGS 1
-
-/* Define to 1 if you have the `xdr_u_int64_t' function. */
-#define HAVE_XDR_U_INT64_T 1
-
-/* Define to 1 if you have the `xdr_writeargs' function. */
-#define HAVE_XDR_WRITEARGS 1
-
-/* Define to 1 if `flags' is member of `xfs_args_t'. */
-/* #undef HAVE_XFS_ARGS_T_FLAGS */
-
-/* Define to 1 if `fspec' is member of `xfs_args_t'. */
-/* #undef HAVE_XFS_ARGS_T_FSPEC */
-
-/* Define to 1 if you have the `yp_all' function. */
-/* #undef HAVE_YP_ALL */
-
-/* Define to 1 if you have the `yp_get_default_domain' function. */
-#define HAVE_YP_GET_DEFAULT_DOMAIN 1
-
-/* Define to 1 if you have the `_seterr_reply' function. */
-#define HAVE__SETERR_REPLY 1
-
-/* Define to 1 if you have the `__rpc_get_local_uid' function. */
-#define HAVE___RPC_GET_LOCAL_UID 1
-
-/* Define to 1 if you have the `__seterr_reply' function. */
-/* #undef HAVE___SETERR_REPLY */
-
-/* Name of mount type to hide amd mount from df(1) */
-#define HIDE_MOUNT_TYPE "nfs"
-
-/* Define name of host machine's architecture (eg. sun4) */
-/* #define HOST_ARCH "i386" */
-
-/* Define name of host machine's cpu (eg. sparc) */
-/* #define HOST_CPU "i386" */
-
-/* Define the header version of (linux) hosts (eg. 2.2.10) */
-// #undef define HOST_HEADER_VERSION */
-
-/* Define name of host */
-/* #define HOST_NAME "trang.nuxi.org" */
-
-/* Define name and version of host machine (eg. solaris2.5.1) */
-/* #define HOST_OS "freebsd12.0" */
-
-/* Define only name of host machine OS (eg. solaris2) */
-/* #define HOST_OS_NAME "freebsd12" */
-
-/* Define only version of host machine (eg. 2.5.1) */
-/* #define HOST_OS_VERSION "12.0" */
-
-/* Define name of host machine's vendor (eg. sun) */
-#define HOST_VENDOR "undermydesk"
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#define LT_OBJDIR ".libs/"
-
-/* Ignore permission bits */
-/* #undef MNT2_CDFS_OPT_DEFPERM */
-
-/* Enable external attributes */
-#define MNT2_CDFS_OPT_EXTATT 0x4
-
-/* Show file generations */
-#define MNT2_CDFS_OPT_GENS 0x2
-
-/* Disable filename case translation */
-/* #undef MNT2_CDFS_OPT_NOCASETRANS */
-
-/* Use on-disk permission bits */
-/* #undef MNT2_CDFS_OPT_NODEFPERM */
-
-/* Disable Joliet extensions */
-#define MNT2_CDFS_OPT_NOJOLIET 0x8
-
-/* Disable Rock Ridge Interchange Protocol (RRIP) extensions */
-#define MNT2_CDFS_OPT_NORRIP 0x1
-
-/* Strip off extension from version string */
-/* #undef MNT2_CDFS_OPT_NOVERSION */
-
-/* Enable Rock Ridge Interchange Protocol (RRIP) case insensitive filename
- extensions */
-/* #undef MNT2_CDFS_OPT_RRCASEINS */
-
-/* Use Rock Ridge Interchange Protocol (RRIP) extensions */
-/* #undef MNT2_CDFS_OPT_RRIP */
-
-/* asynchronous filesystem access */
-#define MNT2_GEN_OPT_ASYNC 0x40
-
-/* automounter filesystem (ignore) flag, used in bsdi-4.1 */
-/* #undef MNT2_GEN_OPT_AUTOMNTFS */
-
-/* automounter filesystem flag, used in Mac OS X / Darwin */
-/* #undef MNT2_GEN_OPT_AUTOMOUNTED */
-
-/* directory hardlink */
-/* #undef MNT2_GEN_OPT_BIND */
-
-/* cache (what?) */
-/* #undef MNT2_GEN_OPT_CACHE */
-
-/* 6-argument mount */
-/* #undef MNT2_GEN_OPT_DATA */
-
-/* Use a lazy unmount (detach) */
-/* #undef MNT2_GEN_OPT_DETACH */
-
-/* Use a forced unmount */
-#define MNT2_GEN_OPT_FORCE 0x80000
-
-/* old (4-argument) mount (compatibility) */
-/* #undef MNT2_GEN_OPT_FSS */
-
-/* old BSD group-id on create */
-/* #undef MNT2_GEN_OPT_GRPID */
-
-/* ignore mount entry in df output */
-#define MNT2_GEN_OPT_IGNORE 0x800000
-
-/* journaling filesystem (AIX's UFS/FFS) */
-/* #undef MNT2_GEN_OPT_JFS */
-
-/* honor mandatory locking requests */
-/* #undef MNT2_GEN_OPT_MANDLOCK */
-
-/* do multi-component lookup on files */
-/* #undef MNT2_GEN_OPT_MULTI */
-
-/* use type string instead of int */
-/* #undef MNT2_GEN_OPT_NEWTYPE */
-
-/* NFS mount */
-/* #undef MNT2_GEN_OPT_NFS */
-
-/* don't update access times */
-#define MNT2_GEN_OPT_NOATIME 0x10000000
-
-/* nocache (what?) */
-/* #undef MNT2_GEN_OPT_NOCACHE */
-
-/* do not interpret special device files */
-#define MNT2_GEN_OPT_NODEV 0x0
-
-/* don't update directory access times */
-/* #undef MNT2_GEN_OPT_NODIRATIME */
-
-/* no exec calls allowed */
-#define MNT2_GEN_OPT_NOEXEC 0x4
-
-/* do not interpret special device files */
-/* #undef MNT2_GEN_OPT_NONDEV */
-
-/* Disallow mounts beneath this mount */
-/* #undef MNT2_GEN_OPT_NOSUB */
-
-/* Setuid programs disallowed */
-#define MNT2_GEN_OPT_NOSUID 0x8
-
-/* Return ENAMETOOLONG for long filenames */
-/* #undef MNT2_GEN_OPT_NOTRUNC */
-
-/* Pass mount option string to kernel */
-/* #undef MNT2_GEN_OPT_OPTIONSTR */
-
-/* allow overlay mounts */
-/* #undef MNT2_GEN_OPT_OVERLAY */
-
-/* check quotas */
-#define MNT2_GEN_OPT_QUOTA 0x2000
-
-/* Read-only */
-#define MNT2_GEN_OPT_RDONLY 0x1
-
-/* change options on an existing mount */
-/* #undef MNT2_GEN_OPT_REMOUNT */
-
-/* read only */
-/* #undef MNT2_GEN_OPT_RONLY */
-
-/* synchronize data immediately to filesystem */
-/* #undef MNT2_GEN_OPT_SYNC */
-
-/* synchronous filesystem access (same as SYNC) */
-#define MNT2_GEN_OPT_SYNCHRONOUS 0x2
-
-/* Mount with Sys 5-specific semantics */
-/* #undef MNT2_GEN_OPT_SYS5 */
-
-/* Union mount */
-#define MNT2_GEN_OPT_UNION 0x20
-
-/* set max secs for dir attr cache */
-#define MNT2_NFS_OPT_ACDIRMAX 0x200000
-
-/* set min secs for dir attr cache */
-#define MNT2_NFS_OPT_ACDIRMIN 0x100000
-
-/* set max secs for file attr cache */
-#define MNT2_NFS_OPT_ACREGMAX 0x80000
-
-/* set min secs for file attr cache */
-#define MNT2_NFS_OPT_ACREGMIN 0x40000
-
-/* Authentication error */
-/* #undef MNT2_NFS_OPT_AUTHERR */
-
-/* hide mount type from df(1) */
-/* #undef MNT2_NFS_OPT_AUTO */
-
-/* Linux broken setuid */
-/* #undef MNT2_NFS_OPT_BROKEN_SUID */
-
-/* set dead server retry thresh */
-#define MNT2_NFS_OPT_DEADTHRESH 0x4000
-
-/* Dismount in progress */
-/* #undef MNT2_NFS_OPT_DISMINPROG */
-
-/* Dismounted */
-/* #undef MNT2_NFS_OPT_DISMNT */
-
-/* Don't estimate rtt dynamically */
-#define MNT2_NFS_OPT_DUMBTIMR 0x800
-
-/* provide name of server's fs to system */
-/* #undef MNT2_NFS_OPT_FSNAME */
-
-/* System V-style gid inheritance */
-/* #undef MNT2_NFS_OPT_GRPID */
-
-/* Has authenticator */
-/* #undef MNT2_NFS_OPT_HASAUTH */
-
-/* set hostname for error printf */
-/* #undef MNT2_NFS_OPT_HOSTNAME */
-
-/* ignore mount point */
-/* #undef MNT2_NFS_OPT_IGNORE */
-
-/* allow interrupts on hard mount */
-#define MNT2_NFS_OPT_INT 0x40
-
-/* Bits set internally */
-/* #undef MNT2_NFS_OPT_INTERNAL */
-
-/* allow interrupts on hard mount */
-/* #undef MNT2_NFS_OPT_INTR */
-
-/* Use Kerberos authentication */
-/* #undef MNT2_NFS_OPT_KERB */
-
-/* use kerberos credentials */
-/* #undef MNT2_NFS_OPT_KERBEROS */
-
-/* transport's knetconfig structure */
-/* #undef MNT2_NFS_OPT_KNCONF */
-
-/* set lease term (nqnfs) */
-/* #undef MNT2_NFS_OPT_LEASETERM */
-
-/* Local locking (no lock manager) */
-/* #undef MNT2_NFS_OPT_LLOCK */
-
-/* set maximum grouplist size */
-#define MNT2_NFS_OPT_MAXGRPS 0x20
-
-/* Mnt server for mnt point */
-/* #undef MNT2_NFS_OPT_MNTD */
-
-/* Assume writes were mine */
-/* #undef MNT2_NFS_OPT_MYWRITE */
-
-/* mount NFS Version 3 */
-#define MNT2_NFS_OPT_NFSV3 0x200
-
-/* don't cache attributes */
-/* #undef MNT2_NFS_OPT_NOAC */
-
-/* does not support Access Control Lists */
-/* #undef MNT2_NFS_OPT_NOACL */
-
-/* Don't Connect the socket */
-#define MNT2_NFS_OPT_NOCONN 0x80
-
-/* no close-to-open consistency */
-#define MNT2_NFS_OPT_NOCTO 0x20000000
-
-/* disallow interrupts on hard mounts */
-/* #undef MNT2_NFS_OPT_NOINT */
-
-/* Don't use locking */
-/* #undef MNT2_NFS_OPT_NONLM */
-
-/* does not support readdir+ */
-/* #undef MNT2_NFS_OPT_NORDIRPLUS */
-
-/* Get lease for lookup */
-/* #undef MNT2_NFS_OPT_NQLOOKLEASE */
-
-/* Use Nqnfs protocol */
-/* #undef MNT2_NFS_OPT_NQNFS */
-
-/* paging threshold */
-/* #undef MNT2_NFS_OPT_PGTHRESH */
-
-/* static pathconf kludge info */
-/* #undef MNT2_NFS_OPT_POSIX */
-
-/* Use local locking */
-/* #undef MNT2_NFS_OPT_PRIVATE */
-
-/* allow property list operations (ACLs over NFS) */
-/* #undef MNT2_NFS_OPT_PROPLIST */
-
-/* Rcv socket lock */
-/* #undef MNT2_NFS_OPT_RCVLOCK */
-
-/* Do lookup with readdir (nqnfs) */
-/* #undef MNT2_NFS_OPT_RDIRALOOK */
-
-/* Use Readdirplus for NFSv3 */
-#define MNT2_NFS_OPT_RDIRPLUS 0x10000
-
-/* set read ahead */
-#define MNT2_NFS_OPT_READAHEAD 0x2000
-
-/* Set readdir size */
-#define MNT2_NFS_OPT_READDIRSIZE 0x20000
-
-/* Allocate a reserved port */
-#define MNT2_NFS_OPT_RESVPORT 0x8000
-
-/* set number of request retries */
-#define MNT2_NFS_OPT_RETRANS 0x10
-
-/* read only */
-/* #undef MNT2_NFS_OPT_RONLY */
-
-/* use RPC to do secure NFS time sync */
-/* #undef MNT2_NFS_OPT_RPCTIMESYNC */
-
-/* set read size */
-#define MNT2_NFS_OPT_RSIZE 0x4
-
-/* secure mount */
-/* #undef MNT2_NFS_OPT_SECURE */
-
-/* Send socket lock */
-/* #undef MNT2_NFS_OPT_SNDLOCK */
-
-/* soft mount (hard is default) */
-#define MNT2_NFS_OPT_SOFT 0x1
-
-/* spongy mount */
-/* #undef MNT2_NFS_OPT_SPONGY */
-
-/* Reserved for nfsv4 */
-/* #undef MNT2_NFS_OPT_STRICTLOCK */
-
-/* set symlink cache time-to-live */
-/* #undef MNT2_NFS_OPT_SYMTTL */
-
-/* use TCP for mounts */
-/* #undef MNT2_NFS_OPT_TCP */
-
-/* set initial timeout */
-#define MNT2_NFS_OPT_TIMEO 0x8
-
-/* do not use shared cache for all mountpoints */
-/* #undef MNT2_NFS_OPT_UNSHARED */
-
-/* linux NFSv3 */
-/* #undef MNT2_NFS_OPT_VER3 */
-
-/* Wait for authentication */
-/* #undef MNT2_NFS_OPT_WAITAUTH */
-
-/* Wants an authenticator */
-/* #undef MNT2_NFS_OPT_WANTAUTH */
-
-/* Want receive socket lock */
-/* #undef MNT2_NFS_OPT_WANTRCV */
-
-/* Want send socket lock */
-/* #undef MNT2_NFS_OPT_WANTSND */
-
-/* set write size */
-#define MNT2_NFS_OPT_WSIZE 0x2
-
-/* 32<->64 dir cookie translation */
-/* #undef MNT2_NFS_OPT_XLATECOOKIE */
-
-/* Force Win95 long names */
-#define MNT2_PCFS_OPT_LONGNAME 0x2
-
-/* Completely ignore Win95 entries */
-#define MNT2_PCFS_OPT_NOWIN95 0x4
-
-/* Force old DOS short names only */
-#define MNT2_PCFS_OPT_SHORTNAME 0x1
-
-/* Name of mount table file name */
-/* #undef MNTTAB_FILE_NAME */
-
-/* Mount Table option string: Max attr cache timeout (dirs) */
-/* #undef MNTTAB_OPT_ACDIRMAX */
-
-/* Mount Table option string: Min attr cache timeout (dirs) */
-/* #undef MNTTAB_OPT_ACDIRMIN */
-
-/* Mount Table option string: Max attr cache timeout (files) */
-/* #undef MNTTAB_OPT_ACREGMAX */
-
-/* Mount Table option string: Min attr cache timeout (files) */
-/* #undef MNTTAB_OPT_ACREGMIN */
-
-/* Mount Table option string: Attr cache timeout (sec) */
-/* #undef MNTTAB_OPT_ACTIMEO */
-
-/* Mount Table option string: Do mount retries in background */
-/* #undef MNTTAB_OPT_BG */
-
-/* Mount Table option string: compress */
-/* #undef MNTTAB_OPT_COMPRESS */
-
-/* Mount Table option string: Device id of mounted fs */
-/* #undef MNTTAB_OPT_DEV */
-
-/* Mount Table option string: Automount direct map mount */
-/* #undef MNTTAB_OPT_DIRECT */
-
-/* Mount Table option string: Do mount retries in foreground */
-/* #undef MNTTAB_OPT_FG */
-
-/* Mount Table option string: Filesystem id of mounted fs */
-/* #undef MNTTAB_OPT_FSID */
-
-/* Mount Table option string: SysV-compatible gid on create */
-/* #undef MNTTAB_OPT_GRPID */
-
-/* Mount Table option string: Hard mount */
-/* #undef MNTTAB_OPT_HARD */
-
-/* Mount Table option string: Ignore this entry */
-/* #undef MNTTAB_OPT_IGNORE */
-
-/* Mount Table option string: Automount indirect map mount */
-/* #undef MNTTAB_OPT_INDIRECT */
-
-/* Mount Table option string: Allow NFS ops to be interrupted */
-/* #undef MNTTAB_OPT_INTR */
-
-/* Mount Table option string: Secure (AUTH_Kerb) mounting */
-/* #undef MNTTAB_OPT_KERB */
-
-/* Mount Table option string: Local locking (no lock manager) */
-/* #undef MNTTAB_OPT_LLOCK */
-
-/* Force Win95 long names */
-/* #undef MNTTAB_OPT_LONGNAME */
-
-/* Mount Table option string: Automount map */
-/* #undef MNTTAB_OPT_MAP */
-
-/* Mount Table option string: max groups */
-/* #undef MNTTAB_OPT_MAXGROUPS */
-
-/* Mount Table option string: Do multi-component lookup */
-/* #undef MNTTAB_OPT_MULTI */
-
-/* Mount Table option string: Don't cache attributes at all */
-/* #undef MNTTAB_OPT_NOAC */
-
-/* Access Control Lists are not supported */
-/* #undef MNTTAB_OPT_NOACL */
-
-/* Mount Table option string: No auto (what?) */
-/* #undef MNTTAB_OPT_NOAUTO */
-
-/* Mount Table option string: No connection */
-/* #undef MNTTAB_OPT_NOCONN */
-
-/* Mount Table option string: No close-to-open consistency */
-/* #undef MNTTAB_OPT_NOCTO */
-
-/* Mount Table option string: Don't allow interrupted ops */
-/* #undef MNTTAB_OPT_NOINTR */
-
-/* Mount Table option string: Don't check quotas */
-/* #undef MNTTAB_OPT_NOQUOTA */
-
-/* Mount Table option string: Do no allow setting sec attrs */
-/* #undef MNTTAB_OPT_NOSETSEC */
-
-/* Mount Table option string: Disallow mounts on subdirs */
-/* #undef MNTTAB_OPT_NOSUB */
-
-/* Mount Table option string: Set uid not allowed */
-/* #undef MNTTAB_OPT_NOSUID */
-
-/* Completely ignore Win95 entries */
-/* #undef MNTTAB_OPT_NOWIN95 */
-
-/* Mount Table option string: action to taken on error */
-/* #undef MNTTAB_OPT_ONERROR */
-
-/* Mount Table option string: paging threshold */
-/* #undef MNTTAB_OPT_PGTHRESH */
-
-/* Mount Table option string: NFS server IP port number */
-/* #undef MNTTAB_OPT_PORT */
-
-/* Mount Table option string: Get static pathconf for mount */
-/* #undef MNTTAB_OPT_POSIX */
-
-/* Mount Table option string: Use local locking */
-/* #undef MNTTAB_OPT_PRIVATE */
-
-/* Mount Table option string: support property lists (ACLs) */
-/* #undef MNTTAB_OPT_PROPLIST */
-
-/* Mount Table option string: protocol network_id indicator */
-/* #undef MNTTAB_OPT_PROTO */
-
-/* Mount Table option string: Check quotas */
-/* #undef MNTTAB_OPT_QUOTA */
-
-/* Mount Table option string: Change mount options */
-/* #undef MNTTAB_OPT_REMOUNT */
-
-/* Mount Table option string: Max retransmissions (soft mnts) */
-/* #undef MNTTAB_OPT_RETRANS */
-
-/* Mount Table option string: Number of mount retries */
-/* #undef MNTTAB_OPT_RETRY */
-
-/* Mount Table option string: Read only */
-/* #undef MNTTAB_OPT_RO */
-
-/* Mount Table option string: Read/write with quotas */
-/* #undef MNTTAB_OPT_RQ */
-
-/* Mount Table option string: Max NFS read size (bytes) */
-/* #undef MNTTAB_OPT_RSIZE */
-
-/* Mount Table option string: Read/write */
-/* #undef MNTTAB_OPT_RW */
-
-/* Mount Table option string: Secure (AUTH_DES) mounting */
-/* #undef MNTTAB_OPT_SECURE */
-
-/* Force old DOS short names only */
-/* #undef MNTTAB_OPT_SHORTNAME */
-
-/* Mount Table option string: Soft mount */
-/* #undef MNTTAB_OPT_SOFT */
-
-/* Mount Table option string: spongy mount */
-/* #undef MNTTAB_OPT_SPONGY */
-
-/* Mount Table option string: Set uid allowed */
-/* #undef MNTTAB_OPT_SUID */
-
-/* Mount Table option string: set symlink cache time-to-live */
-/* #undef MNTTAB_OPT_SYMTTL */
-
-/* Mount Table option string: Synchronous local directory ops */
-/* #undef MNTTAB_OPT_SYNCDIR */
-
-/* Mount Table option string: NFS timeout (1/10 sec) */
-/* #undef MNTTAB_OPT_TIMEO */
-
-/* Mount Table option string: min. time between inconsistencies */
-/* #undef MNTTAB_OPT_TOOSOON */
-
-/* Mount Table option string: protocol version number indicator */
-/* #undef MNTTAB_OPT_VERS */
-
-/* Mount Table option string: Max NFS write size (bytes) */
-/* #undef MNTTAB_OPT_WSIZE */
-
-/* Mount-table entry name for AUTOFS filesystem */
-/* #undef MNTTAB_TYPE_AUTOFS */
-
-/* Mount-table entry name for CACHEFS filesystem */
-/* #undef MNTTAB_TYPE_CACHEFS */
-
-/* Mount-table entry name for CDFS filesystem */
-#define MNTTAB_TYPE_CDFS "cd9660"
-
-/* Mount-table entry name for CFS (crypto) filesystem */
-/* #undef MNTTAB_TYPE_CFS */
-
-/* Mount-table entry name for EFS filesystem (irix) */
-/* #undef MNTTAB_TYPE_EFS */
-
-/* Mount-table entry name for EXT2 filesystem (linux) */
-/* #undef MNTTAB_TYPE_EXT2 */
-
-/* Mount-table entry name for EXT3 filesystem (linux) */
-/* #undef MNTTAB_TYPE_EXT3 */
-
-/* Mount-table entry name for EXT4 filesystem (linux) */
-/* #undef MNTTAB_TYPE_EXT4 */
-
-/* Mount-table entry name for FFS filesystem */
-/* #undef MNTTAB_TYPE_FFS */
-
-/* Mount-table entry name for LOFS filesystem */
-/* #undef MNTTAB_TYPE_LOFS */
-
-/* Mount-table entry name for LUSTRE filesystem */
-/* #undef MNTTAB_TYPE_LUSTRE */
-
-/* Mount-table entry name for MFS filesystem */
-#define MNTTAB_TYPE_MFS "mfs"
-
-/* Mount-table entry name for NFS filesystem */
-#define MNTTAB_TYPE_NFS "nfs"
-
-/* Mount-table entry name for NFS3 filesystem */
-#define MNTTAB_TYPE_NFS3 "nfs"
-
-/* Mount-table entry name for NFS4 filesystem */
-#define MNTTAB_TYPE_NFS4 "nfs"
-
-/* Mount-table entry name for NULLFS (loopback on bsd44) filesystem */
-#define MNTTAB_TYPE_NULLFS "nullfs"
-
-/* Mount-table entry name for PCFS filesystem */
-#define MNTTAB_TYPE_PCFS "msdosfs"
-
-/* Mount-table entry name for TFS filesystem */
-/* #undef MNTTAB_TYPE_TFS */
-
-/* Mount(2) type/name for TMPFS filesystem */
-#define MNTTAB_TYPE_TMPFS "tmpfs"
-
-/* Mount(2) type/name for UDF filesystem */
-#define MNTTAB_TYPE_UDF "udf"
-
-/* Mount-table entry name for UFS filesystem */
-#define MNTTAB_TYPE_UFS "ufs"
-
-/* Mount-table entry name for UMAPFS (uid/gid mapping) filesystem */
-/* #undef MNTTAB_TYPE_UMAPFS */
-
-/* Mount-table entry name for UNIONFS filesystem */
-#define MNTTAB_TYPE_UNIONFS "unionfs"
-
-/* Mount-table entry name for XFS filesystem (irix) */
-/* #undef MNTTAB_TYPE_XFS */
-
-/* Define if mount table is on file, undefine if in kernel */
-/* #undef MOUNT_TABLE_ON_FILE */
-
-/* Mount(2) type/name for AUTOFS filesystem */
-/* #undef MOUNT_TYPE_AUTOFS */
-
-/* Mount(2) type/name for CACHEFS filesystem */
-/* #undef MOUNT_TYPE_CACHEFS */
-
-/* Mount(2) type/name for CDFS filesystem */
-#define MOUNT_TYPE_CDFS "cd9660"
-
-/* Mount(2) type/name for CFS (crypto) filesystem */
-/* #undef MOUNT_TYPE_CFS */
-
-/* Mount(2) type/name for EFS filesystem (irix) */
-/* #undef MOUNT_TYPE_EFS */
-
-/* Mount(2) type/name for EXT2 filesystem (linux) */
-/* #undef MOUNT_TYPE_EXT2 */
-
-/* Mount(2) type/name for EXT3 filesystem (linux) */
-/* #undef MOUNT_TYPE_EXT3 */
-
-/* Mount(2) type/name for EXT4 filesystem (linux) */
-/* #undef MOUNT_TYPE_EXT4 */
-
-/* Mount(2) type/name for FFS filesystem */
-/* #undef MOUNT_TYPE_FFS */
-
-/* Mount(2) type/name for IGNORE filesystem (not real just ignore for df) */
-#define MOUNT_TYPE_IGNORE MNT_IGNORE
-
-/* Mount(2) type/name for LOFS filesystem */
-/* #undef MOUNT_TYPE_LOFS */
-
-/* Mount(2) type/name for MFS filesystem */
-#define MOUNT_TYPE_MFS "mfs"
-
-/* Mount(2) type/name for NFS filesystem */
-#define MOUNT_TYPE_NFS "nfs"
-
-/* Mount(2) type/name for NFS3 filesystem */
-#define MOUNT_TYPE_NFS3 MOUNT_NFS3
-
-/* Mount(2) type/name for NFS4 filesystem */
-/* #undef MOUNT_TYPE_NFS4 */
-
-/* Mount(2) type/name for NULLFS (loopback on bsd44) filesystem */
-#define MOUNT_TYPE_NULLFS "nullfs"
-
-/* Mount(2) type/name for PCFS filesystem. XXX: conf/trap/trap_hpux.h may
- override this definition for HPUX 9.0 */
-#define MOUNT_TYPE_PCFS "msdosfs"
-
-/* Mount(2) type/name for TFS filesystem */
-#define MOUNT_TYPE_TMPFS "tmpfs"
-
-/* Mount(2) type/name for UDF filesystem */
-#define MOUNT_TYPE_UDF "udf"
-
-/* Mount(2) type/name for TMPFS filesystem */
-/* #undef MOUNT_TYPE_TMPFS */
-
-/* Mount(2) type/name for UFS filesystem */
-#define MOUNT_TYPE_UFS "ufs"
-
-/* Mount(2) type/name for UMAPFS (uid/gid mapping) filesystem */
-/* #undef MOUNT_TYPE_UMAPFS */
-
-/* Mount(2) type/name for UNIONFS filesystem */
-#define MOUNT_TYPE_UNIONFS MNT_UNION
-
-/* Mount(2) type/name for XFS filesystem (irix) */
-/* #undef MOUNT_TYPE_XFS */
-
-/* The string used in printf to print the mount-type field of mount(2) */
-#define MTYPE_PRINTF_TYPE "%s"
-
-/* Type of the mount-type field in the mount() system call */
-#define MTYPE_TYPE char *
-
-/* does libwrap expect caller to define the variables allow_severity and
- deny_severity */
-/* #undef NEED_LIBWRAP_SEVERITY_VARIABLES */
-
-/* Defined to the header file containing ndbm-compatible definitions */
-#define NEW_DBM_H <ndbm.h>
-
-/* Define the field name for the filehandle within nfs_args_t */
-#define NFS_FH_FIELD fh
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-/* #undef NO_MINUS_C_MINUS_O */
-
-/* Name of package */
-#define PACKAGE "am-utils"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "https://bugzilla.am-utils.org/ or am-utils@am-utils.org"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "am-utils"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "am-utils 6.2"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "am-utils"
-
-/* Define to the home page for this package. */
-#define PACKAGE_URL ""
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "6.2"
-
-/* Type of the 6th argument to recvfrom() */
-#define RECVFROM_FROMLEN_TYPE socklen_t
-
-/* should signal handlers be reinstalled? */
-/* #undef REINSTALL_SIGNAL_HANDLER */
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#define RETSIGTYPE void
-
-/* Define to 1 if the `setpgrp' function takes no argument. */
-/* #undef SETPGRP_VOID */
-
-/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
-/* #undef STAT_MACROS_BROKEN */
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define the type of the 3rd argument ('in') to svc_getargs() */
-#define SVC_IN_ARG_TYPE caddr_t
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-/* #undef TM_IN_SYS_TIME */
-
-/* Define user name */
-/* #define USER_NAME "cy" */
-
-/* define if must NOT use NFS "noconn" option */
-#define USE_CONNECTED_NFS_SOCKETS 1
-
-/* Enable extensions on AIX 3, Interix. */
-#ifndef _ALL_SOURCE
-# define _ALL_SOURCE 1
-#endif
-/* Enable GNU extensions on systems that have them. */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE 1
-#endif
-/* Enable threading extensions on Solaris. */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# define _POSIX_PTHREAD_SEMANTICS 1
-#endif
-/* Enable extensions on HP NonStop. */
-#ifndef _TANDEM_SOURCE
-# define _TANDEM_SOURCE 1
-#endif
-/* Enable general extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# define __EXTENSIONS__ 1
-#endif
-
-/* define if must use NFS "noconn" option */
-/* #undef USE_UNCONNECTED_NFS_SOCKETS */
-
-/* Version number of package */
-#define VERSION "6.2"
-
-/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
- significant byte first (like Motorola and SPARC, unlike Intel). */
-#if defined AC_APPLE_UNIVERSAL_BUILD
-# if defined __BIG_ENDIAN__
-# define WORDS_BIGENDIAN 1
-# endif
-#else
-# ifndef WORDS_BIGENDIAN
-/* # undef WORDS_BIGENDIAN */
-# endif
-#endif
-
-/* Define to the type of xdr procedure type */
-#define XDRPROC_T_TYPE xdrproc_t
-
-/* Type of the 3rd argument to yp_order() */
-#define YP_ORDER_OUTORDER_TYPE int
-
-/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
- `char[]'. */
-#define YYTEXT_POINTER 1
-
-/* Enable large inode numbers on Mac OS X 10.5. */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-
-/* Define to 1 if on MINIX. */
-/* #undef _MINIX */
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
- this defined. */
-/* #undef _POSIX_1_SOURCE */
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-/* #undef _POSIX_SOURCE */
-
-/* Define a type/structure for an NFS V2 filehandle */
-#define am_nfs_fh nfs_fh
-
-/* Define a type/structure for an NFS V3 filehandle */
-#define am_nfs_fh3 nfs_fh3_freebsd3
-
-/* Define a type for the autofs_args structure */
-/* #undef autofs_args_t */
-
-/* Define a type for the cachefs_args structure */
-/* #undef cachefs_args_t */
-
-/* Define a type for the cdfs_args structure */
-#define cdfs_args_t struct iso_args
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Define a type for the efs_args structure */
-/* #undef efs_args_t */
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-/* #undef gid_t */
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-/* #undef inline */
-#endif
-
-/* Define a type for the lofs_args structure */
-/* #undef lofs_args_t */
-
-/* Define a type for the mfs_args structure */
-/* #undef mfs_args_t */
-
-/* Define to `int' if <sys/types.h> does not define. */
-/* #undef mode_t */
-
-/* Define a type for the nfs_args structure */
-#define nfs_args_t struct nfs_args
-
-/* Define a type for the pcfs_args structure */
-#define pcfs_args_t struct msdosfs_args
-
-/* Define to `int' if <sys/types.h> does not define. */
-/* #undef pid_t */
-
-/* Check if pte_t is defined in <sys/immu.h> */
-/* #undef pte_t */
-
-/* Define a type for the rfs_args structure */
-/* #undef rfs_args_t */
-
-/* Check if rpcvers_t is defined in <rpc/types.h> */
-/* #undef rpcvers_t */
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
-
-/* Define to `long' if <sys/types.h> does not define. */
-/* #undef time_t */
-
-/* Define a type for the tmpfs_args structure */
-/* #undef tmpfs_args_t */
-
-/* Define a type for the udf_args structure */
-/* #undef udf_args_t */
-
-/* Define a type for the ufs_args structure */
-#define ufs_args_t struct ufs_args
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-/* #undef uid_t */
-
-/* Define as `fork' if `vfork' does not work. */
-/* #undef vfork */
-
-/* Define to "void *" if compiler can handle, otherwise "char *" */
-#define voidp void *
-
-/* Define to empty if the keyword `volatile' does not work. Warning: valid
- code using `volatile' can become incorrect without. Disable with care. */
-/* #undef volatile */
-
-/* Define a type for the xfs_args structure */
-/* #undef xfs_args_t */
-
-
-/****************************************************************************/
-/*** INCLUDE localconfig.h if it exists, to allow users to make some ***/
-/*** compile time configuration changes. ***/
-/****************************************************************************/
-/* does a local configuration file exist? */
-/* #undef HAVE_LOCALCONFIG_H */
-#ifdef HAVE_LOCALCONFIG_H
-# include <localconfig.h>
-#endif /* HAVE_LOCALCONFIG_H */
-
-#endif /* not _CONFIG_H */
-
-/*
- * Local Variables:
- * mode: c
- * End:
- */
-
-/* End of am-utils-6.x config.h file */
diff --git a/usr.sbin/amd/include/newvers.sh b/usr.sbin/amd/include/newvers.sh
deleted file mode 100644
index 8c3921e270f8..000000000000
--- a/usr.sbin/amd/include/newvers.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-# $NetBSD: mkconf,v 1.1.1.1 1997/07/24 21:20:12 christos Exp $
-# $FreeBSD$
-# mkconf
-# Generate local configuration parameters for amd
-#
-
-if [ -e $1 ]; then
- eval $(sh $1 -v)
- OS=`echo ${TYPE} | LC_ALL=C tr 'A-Z' 'a-z'`
- echo '/* Define name and version of host machine (eg. solaris2.5.1) */'
- echo "#define HOST_OS \"${OS}${REVISION}\""
- echo '/* Define only name of host machine OS (eg. solaris2) */'
- echo "#define HOST_OS_NAME \"${OS}${REVISION}\"" \
- | sed -e 's/\.[-._0-9]*//'
- echo '/* Define only version of host machine (eg. 2.5.1) */'
- echo "#define HOST_OS_VERSION \"${REVISION}\""
-else
-cat << __NO_newvers_sh
-
-/* Define name and version of host machine (eg. solaris2.5.1) */
-#define HOST_OS "`uname -s | LC_ALL=C tr 'A-Z' 'a-z'``uname -r`"
-
-/* Define only name of host machine OS (eg. solaris2) */
-#define HOST_OS_NAME "`uname -s | LC_ALL=C tr 'A-Z' 'a-z'``uname -r | sed -e 's/\..*$//'`"
-
-/* Define only version of host machine (eg. 2.5.1) */
-#define HOST_OS_VERSION "`uname -r | sed -e 's/[-([:alpha:]].*//'`"
-
-__NO_newvers_sh
-fi
-
-cat << __EOF
-
-__EOF
diff --git a/usr.sbin/amd/libamu/Makefile b/usr.sbin/amd/libamu/Makefile
deleted file mode 100644
index 93607580a1f8..000000000000
--- a/usr.sbin/amd/libamu/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-# ex:ts=8
-#
-# Makefile for amd
-# This file is under a "BSD" copyright (c) by David O'Brien 1998
-#
-# $FreeBSD$
-
-.include <bsd.init.mk>
-
-.PATH: ${SRCTOP}/contrib/amd/libamu \
- ${SRCTOP}/contrib/amd/conf/transp \
- ${SRCTOP}/contrib/amd/conf/mtab \
- ${SRCTOP}/contrib/amd/conf/umount
-
-LIB= amu
-INTERNALLIB=
-SRCS= hasmntopt.c misc_rpc.c mount_fs.c mtab.c nfs_prot_xdr.c \
- strutil.c wire.c xutil.c
-
-# These would be links created by the GNU-style configure
-SRCS+= transp_sockets.c mtab_bsd.c umount_bsd44.c
-
-# Generated at compile time (replaces supplied xdr_func.c)
-SRCS+= nfs_prot_x.c xdr_func_%undef.c
-CLEANFILES+= nfs_prot_x.c xdr_func_%undef.c
-
-CFLAGS+= -I${SRCTOP}/contrib/amd/libamu \
- -I${OBJTOP}/include/rpcsvc
-
-nfs_prot_x.c: ${NFS_PROT_X}
- ${RPCCOM} -c -C -DWANT_NFS3 ${.ALLSRC} -o ${.TARGET}
-
-XDRDEFS!= grep 'ifndef.*HAVE_XDR' ${SRCTOP}/contrib/amd/libamu/xdr_func.c | awk '{print "-D"$$2}'
-
-xdr_func_%undef.c: xdr_func.c
- unifdef -x1 ${XDRDEFS} -o ${.TARGET} ${.ALLSRC}
-
-.include <bsd.lib.mk>
diff --git a/usr.sbin/amd/libamu/Makefile.depend b/usr.sbin/amd/libamu/Makefile.depend
deleted file mode 100644
index 3f45467826c9..000000000000
--- a/usr.sbin/amd/libamu/Makefile.depend
+++ /dev/null
@@ -1,17 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- include \
- include/arpa \
- include/rpc \
- include/rpcsvc \
- include/xlocale \
- usr.sbin/amd/include \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/amd/mk-amd-map/Makefile b/usr.sbin/amd/mk-amd-map/Makefile
deleted file mode 100644
index e7cd959782f2..000000000000
--- a/usr.sbin/amd/mk-amd-map/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# ex:ts=8
-#
-# Makefile for amd
-# This file is under a "BSD" copyright (c) by David O'Brien 1998
-#
-# $FreeBSD$
-
-.PATH: ${SRCTOP}/contrib/amd/mk-amd-map
-
-PROG= mk-amd-map
-MAN= mk-amd-map.8
-
-LIBADD= amu
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/amd/mk-amd-map/Makefile.depend b/usr.sbin/amd/mk-amd-map/Makefile.depend
deleted file mode 100644
index eec6cd4d599b..000000000000
--- a/usr.sbin/amd/mk-amd-map/Makefile.depend
+++ /dev/null
@@ -1,22 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- gnu/lib/csu \
- include \
- include/arpa \
- include/rpc \
- include/rpcsvc \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
- usr.sbin/amd/include \
- usr.sbin/amd/libamu \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/amd/pawd/Makefile b/usr.sbin/amd/pawd/Makefile
deleted file mode 100644
index 0d634be9742b..000000000000
--- a/usr.sbin/amd/pawd/Makefile
+++ /dev/null
@@ -1,19 +0,0 @@
-# ex:ts=8
-#
-# Makefile for amd
-# This file is under a "BSD" copyright (c) by David O'Brien 1998
-#
-# $FreeBSD$
-
-.PATH: ${SRCTOP}/contrib/amd/amq
-
-BINDIR= /usr/bin
-
-PROG= pawd
-SRCS= pawd.c amq_clnt.c amq_xdr.c
-
-CFLAGS+= -I${SRCTOP}/contrib/amd/amq
-
-LIBADD= amu
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/amd/pawd/Makefile.depend b/usr.sbin/amd/pawd/Makefile.depend
deleted file mode 100644
index eec6cd4d599b..000000000000
--- a/usr.sbin/amd/pawd/Makefile.depend
+++ /dev/null
@@ -1,22 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- gnu/lib/csu \
- include \
- include/arpa \
- include/rpc \
- include/rpcsvc \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
- usr.sbin/amd/include \
- usr.sbin/amd/libamu \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/amd/scripts/Makefile b/usr.sbin/amd/scripts/Makefile
deleted file mode 100644
index aaccb41aaba4..000000000000
--- a/usr.sbin/amd/scripts/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# $FreeBSD$
-
-.PATH: ${SRCTOP}/contrib/amd/scripts
-
-MAN= amd.conf.5
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/amd/scripts/Makefile.depend b/usr.sbin/amd/scripts/Makefile.depend
deleted file mode 100644
index f80275d86ab1..000000000000
--- a/usr.sbin/amd/scripts/Makefile.depend
+++ /dev/null
@@ -1,11 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/amd/wire-test/Makefile b/usr.sbin/amd/wire-test/Makefile
deleted file mode 100644
index 5382fd71b48c..000000000000
--- a/usr.sbin/amd/wire-test/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# ex:ts=8
-#
-# Makefile for amd
-# This file is under a "BSD" copyright (c) by David O'Brien 1998
-#
-# $FreeBSD$
-
-.PATH: ${SRCTOP}/contrib/amd/wire-test
-
-PROG= wire-test
-MAN= wire-test.8
-
-LIBADD= amu
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/amd/wire-test/Makefile.depend b/usr.sbin/amd/wire-test/Makefile.depend
deleted file mode 100644
index eec6cd4d599b..000000000000
--- a/usr.sbin/amd/wire-test/Makefile.depend
+++ /dev/null
@@ -1,22 +0,0 @@
-# $FreeBSD$
-# Autogenerated - do NOT edit!
-
-DIRDEPS = \
- gnu/lib/csu \
- include \
- include/arpa \
- include/rpc \
- include/rpcsvc \
- include/xlocale \
- lib/${CSU_DIR} \
- lib/libc \
- lib/libcompiler_rt \
- usr.sbin/amd/include \
- usr.sbin/amd/libamu \
-
-
-.include <dirdeps.mk>
-
-.if ${DEP_RELDIR} == ${_DEP_RELDIR}
-# local dependencies - needed for -jN in clean tree
-.endif
diff --git a/usr.sbin/newsyslog/newsyslog.conf.d/Makefile b/usr.sbin/newsyslog/newsyslog.conf.d/Makefile
index 24751a361a2b..3974581ff57f 100644
--- a/usr.sbin/newsyslog/newsyslog.conf.d/Makefile
+++ b/usr.sbin/newsyslog/newsyslog.conf.d/Makefile
@@ -1,37 +1,33 @@
# $FreeBSD$
.include <src.opts.mk>
CONFSDIR= /etc/newsyslog.conf.d
CONFS=
-.if ${MK_AMD} != "no"
-CONFS+= amd.conf
-.endif
-
.if ${MK_FTP} != "no"
CONFS+= ftp.conf
.endif
.if ${MK_LPR} != "no"
CONFS+= lpr.conf
.endif
.if ${MK_OFED} != "no"
CONFS+= opensm.conf
.endif
.if ${MK_PF} != "no"
CONFS+= pf.conf
.endif
.if ${MK_PPP} != "no"
CONFS+= ppp.conf
.endif
.if ${MK_SENDMAIL} != "no"
CONFS+= sendmail.conf
.endif
.include <bsd.prog.mk>

File Metadata

Mime Type
application/octet-stream
Expires
Thu, Apr 25, 6:01 PM (2 d)
Storage Engine
chunks
Storage Format
Chunks
Storage Handle
XV.aSOvAYdKn
Default Alt Text
(4 MB)

Event Timeline