mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-20 08:44:33 +00:00
Merge ^/head r321383 through r322397.
This commit is contained in:
commit
0275f9dbf7
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/projects/bsd_rdma_4_9/; revision=322398
32
Makefile
32
Makefile
|
@ -158,8 +158,18 @@ META_TGT_WHITELIST+= \
|
|||
toolchains universe world worlds xdev xdev-build
|
||||
|
||||
.ORDER: buildworld installworld
|
||||
.ORDER: buildworld distrib-dirs
|
||||
.ORDER: buildworld distribution
|
||||
.ORDER: buildworld distribute
|
||||
.ORDER: buildworld distributeworld
|
||||
.ORDER: buildworld buildkernel
|
||||
.ORDER: distrib-dirs distribute
|
||||
.ORDER: distrib-dirs distributeworld
|
||||
.ORDER: distrib-dirs installworld
|
||||
.ORDER: distribution distribute
|
||||
.ORDER: distributeworld distribute
|
||||
.ORDER: distributeworld distribution
|
||||
.ORDER: installworld distribute
|
||||
.ORDER: installworld distribution
|
||||
.ORDER: installworld installkernel
|
||||
.ORDER: buildkernel installkernel
|
||||
|
@ -431,14 +441,22 @@ TARGET_ARCHES_${target}?= ${target}
|
|||
|
||||
MAKE_PARAMS_riscv?= CROSS_TOOLCHAIN=riscv64-gcc
|
||||
|
||||
# XXX Remove riscv from universe if the required toolchain package is missing.
|
||||
.if !exists(/usr/local/share/toolchains/riscv64-gcc.mk) && ${TARGETS:Mriscv}
|
||||
_UNIVERSE_TARGETS:= ${_UNIVERSE_TARGETS:Nriscv}
|
||||
universe: universe_riscv_skip .PHONY
|
||||
universe_epilogue: universe_riscv_skip .PHONY
|
||||
universe_riscv_skip: universe_prologue .PHONY
|
||||
@echo ">> riscv skipped - install riscv64-xtoolchain-gcc port or package to build"
|
||||
# XXX Remove architectures only supported by external toolchain from universe
|
||||
# if required toolchain packages are missing.
|
||||
TOOLCHAINS_riscv= riscv64
|
||||
.for target in riscv
|
||||
.if ${_UNIVERSE_TARGETS:M${target}}
|
||||
.for toolchain in ${TOOLCHAINS_${target}}
|
||||
.if !exists(/usr/local/share/toolchains/${toolchain}-gcc.mk)
|
||||
_UNIVERSE_TARGETS:= ${_UNIVERSE_TARGETS:N${target}}
|
||||
universe: universe_${toolchain}_skip .PHONY
|
||||
universe_epilogue: universe_${toolchain}_skip .PHONY
|
||||
universe_${toolchain}_skip: universe_prologue .PHONY
|
||||
@echo ">> ${target} skipped - install ${toolchain}-xtoolchain-gcc port or package to build"
|
||||
.endif
|
||||
.endfor
|
||||
.endif
|
||||
.endfor
|
||||
|
||||
.if defined(UNIVERSE_TARGET)
|
||||
MAKE_JUST_WORLDS= YES
|
||||
|
|
|
@ -444,7 +444,7 @@ BUILD_ARCH!= uname -p
|
|||
.endif
|
||||
.endif
|
||||
WORLDTMP= ${OBJTREE}${.CURDIR}/tmp
|
||||
BPATH= ${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/bin
|
||||
BPATH= ${CCACHE_WRAPPER_PATH_PFX}${WORLDTMP}/legacy/usr/sbin:${WORLDTMP}/legacy/usr/bin:${WORLDTMP}/legacy/bin
|
||||
XPATH= ${WORLDTMP}/usr/sbin:${WORLDTMP}/usr/bin
|
||||
STRICTTMPPATH= ${BPATH}:${XPATH}
|
||||
TMPPATH= ${STRICTTMPPATH}:${PATH}
|
||||
|
@ -624,8 +624,7 @@ XCFLAGS+= -isystem ${WORLDTMP}/usr/include -L${WORLDTMP}/usr/lib
|
|||
# combined with --sysroot.
|
||||
XCFLAGS+= -B${WORLDTMP}/usr/lib
|
||||
# Force using libc++ for external GCC.
|
||||
# XXX: This should be checking MK_GNUCXX == no
|
||||
.if ${X_COMPILER_VERSION} >= 40800
|
||||
.if ${X_COMPILER_TYPE} == gcc && ${X_COMPILER_VERSION} >= 40800
|
||||
XCXXFLAGS+= -isystem ${WORLDTMP}/usr/include/c++/v1 -std=c++11 \
|
||||
-nostdinc++
|
||||
.endif
|
||||
|
@ -761,6 +760,16 @@ _worldtmp: .PHONY
|
|||
rm -rf ${LIBCOMPATTMP}
|
||||
.endif
|
||||
.else
|
||||
.if exists(${WORLDTMP})
|
||||
@echo ">>> Deleting stale files in build tree..."
|
||||
${_+_}cd ${.CURDIR}; ${WMAKE} -DBATCH_DELETE_OLD_FILES \
|
||||
delete-old delete-old-libs >/dev/null
|
||||
.endif
|
||||
.if defined(LIBCOMPAT) && exists(${LIBCOMPATTMP})
|
||||
${_+_}cd ${.CURDIR}; ${WMAKE} -DBATCH_DELETE_OLD_FILES \
|
||||
DESTDIR=${LIBCOMPATTMP} \
|
||||
delete-old delete-old-libs >/dev/null
|
||||
.endif
|
||||
rm -rf ${WORLDTMP}/legacy/usr/include
|
||||
.if ${USING_SYSTEM_COMPILER} == "yes"
|
||||
.for cc in cc c++
|
||||
|
@ -770,7 +779,6 @@ _worldtmp: .PHONY
|
|||
fi
|
||||
.endfor
|
||||
.endif # ${USING_SYSTEM_COMPILER} == "yes"
|
||||
.endif # !defined(NO_CLEAN)
|
||||
|
||||
# Our current approach to dependency tracking cannot cope with certain source
|
||||
# tree changes, particularly with respect to removing source files and
|
||||
|
@ -813,6 +821,9 @@ _worldtmp: .PHONY
|
|||
${OBJTREE}${.CURDIR}/world32/${.CURDIR}/lib/libc/.depend.${f}.*
|
||||
.endif
|
||||
.endfor
|
||||
|
||||
.endif # !defined(NO_CLEAN)
|
||||
|
||||
.for _dir in \
|
||||
lib lib/casper usr legacy/bin legacy/usr
|
||||
mkdir -p ${WORLDTMP}/${_dir}
|
||||
|
@ -1607,7 +1618,10 @@ create-world-package-${pkgname}: .PHONY
|
|||
@awk -F\" ' \
|
||||
/^name/ { printf("===> Creating %s-", $$2); next } \
|
||||
/^version/ { print $$2; next } \
|
||||
' ${WSTAGEDIR}/${pkgname}.ucl ; \
|
||||
' ${WSTAGEDIR}/${pkgname}.ucl ;
|
||||
@if [ "${pkgname}" == "runtime" ]; then \
|
||||
sed -i '' -e "s/%KERNCONF%/${INSTALLKERNEL:tl}/" ${WSTAGEDIR}/${pkgname}.ucl ; \
|
||||
fi
|
||||
${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \
|
||||
create -M ${WSTAGEDIR}/${pkgname}.ucl \
|
||||
-p ${WSTAGEDIR}/${pkgname}.plist \
|
||||
|
@ -1618,7 +1632,7 @@ create-world-package-${pkgname}: .PHONY
|
|||
create-kernel-packages: .PHONY
|
||||
_default_flavor= -default
|
||||
.if exists(${KSTAGEDIR}/kernel.meta)
|
||||
.for flavor in "" -debug
|
||||
. 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} ; \
|
||||
|
@ -1644,12 +1658,12 @@ create-kernel-packages-flavor${flavor:C,^""$,${_default_flavor},}: _pkgbootstrap
|
|||
-p ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.plist \
|
||||
-r ${KSTAGEDIR}/${DISTDIR} \
|
||||
-o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION}
|
||||
.endfor
|
||||
. endfor
|
||||
.endif
|
||||
.if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes"
|
||||
.for _kernel in ${BUILDKERNELS:[2..-1]}
|
||||
.if exists(${KSTAGEDIR}/kernel.${_kernel}.meta)
|
||||
.for flavor in "" -debug
|
||||
. for _kernel in ${BUILDKERNELS:[2..-1]}
|
||||
. if exists(${KSTAGEDIR}/kernel.${_kernel}.meta)
|
||||
. 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} ; \
|
||||
|
@ -1675,9 +1689,9 @@ create-kernel-packages-extra-flavor${flavor:C,^""$,${_default_flavor},}-${_kerne
|
|||
-p ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.plist \
|
||||
-r ${KSTAGEDIR}/kernel.${_kernel} \
|
||||
-o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION}
|
||||
.endfor
|
||||
.endif
|
||||
.endfor
|
||||
. endfor
|
||||
. endif
|
||||
. endfor
|
||||
.endif
|
||||
|
||||
sign-packages: _pkgbootstrap .PHONY
|
||||
|
@ -2327,11 +2341,12 @@ _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_core__L: cddl/lib/libnvpair__L
|
||||
.endif
|
||||
_cddl_lib_libctf= cddl/lib/libctf
|
||||
_cddl_lib= cddl/lib
|
||||
cddl/lib/libzfs_core__L: cddl/lib/libnvpair__L
|
||||
cddl/lib/libzfs__L: lib/libgeom__L
|
||||
cddl/lib/libctf__L: lib/libz__L
|
||||
.endif
|
||||
# cddl/lib/libdtrace requires lib/libproc and lib/librtld_db; it's only built
|
||||
|
@ -2730,8 +2745,7 @@ CD2CFLAGS+= -isystem ${XDDESTDIR}/usr/include -L${XDDESTDIR}/usr/lib
|
|||
# combined with --sysroot.
|
||||
CD2CFLAGS+= -B${XDDESTDIR}/usr/lib
|
||||
# Force using libc++ for external GCC.
|
||||
# XXX: This should be checking MK_GNUCXX == no
|
||||
.if ${X_COMPILER_VERSION} >= 40800
|
||||
.if ${X_COMPILER_TYPE} == gcc && ${X_COMPILER_VERSION} >= 40800
|
||||
CD2CXXFLAGS+= -isystem ${XDDESTDIR}/usr/include/c++/v1 -std=c++11 \
|
||||
-nostdinc++
|
||||
.endif
|
||||
|
@ -2749,9 +2763,6 @@ CD2MAKE=${CD2ENV} PATH=${CDTMP}/usr/bin:${XDDESTDIR}/usr/bin:${PATH} ${MAKE} ${N
|
|||
CD2MAKE+= BUILD_TOOLS_META=.NOMETA
|
||||
.endif
|
||||
XDDESTDIR=${DESTDIR}/${XDTP}
|
||||
.if !defined(OSREL)
|
||||
OSREL!= uname -r | sed -e 's/[-(].*//'
|
||||
.endif
|
||||
|
||||
.ORDER: xdev-build xdev-install xdev-links
|
||||
xdev: xdev-build xdev-install .PHONY
|
||||
|
@ -2845,7 +2856,7 @@ xdev-links: .PHONY
|
|||
ln -sf ../../${XDTP}/usr/bin/$$i \
|
||||
../../../../usr/bin/${XDDIR}-$$i; \
|
||||
ln -sf ../../${XDTP}/usr/bin/$$i \
|
||||
../../../../usr/bin/${XDDIR}${OSREL}-$$i; \
|
||||
../../../../usr/bin/${XDDIR}${_REVISION}-$$i; \
|
||||
done
|
||||
.else
|
||||
xdev xdev-build xdev-install xdev-links: .PHONY
|
||||
|
|
|
@ -99,8 +99,7 @@ LIBCOMPATCFLAGS+= -B${LIBCOMPATTMP}/usr/lib${libcompat}
|
|||
# sysroot path which --sysroot does not actually do for headers.
|
||||
LIBCOMPATCFLAGS+= -isystem ${LIBCOMPATTMP}/usr/include
|
||||
# Force using libc++ for external GCC.
|
||||
# XXX: This should be checking MK_GNUCXX == no
|
||||
.if ${X_COMPILER_VERSION} >= 40800 && \
|
||||
.if ${X_COMPILER_TYPE} == gcc && ${X_COMPILER_VERSION} >= 40800 && \
|
||||
(${MK_CLANG_BOOTSTRAP} == "no" && ${MK_GCC_BOOTSTRAP} == "no")
|
||||
LIBCOMPATCXXFLAGS+= -isystem ${LIBCOMPATTMP}/usr/include/c++/v1 -std=c++11 \
|
||||
-nostdinc++
|
||||
|
|
|
@ -38,6 +38,9 @@
|
|||
# xargs -n1 | sort | uniq -d;
|
||||
# done
|
||||
|
||||
# 20170802: ksyms(4) ioctl interface was removed
|
||||
OLD_FILES+=usr/include/sys/ksyms.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
|
||||
|
|
24
UPDATING
24
UPDATING
|
@ -51,14 +51,34 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW:
|
|||
|
||||
****************************** SPECIAL WARNING: ******************************
|
||||
|
||||
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
|
||||
forground 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 them to be
|
||||
built with the base system.
|
||||
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
|
||||
|
|
|
@ -6,8 +6,6 @@
|
|||
PACKAGE=runtime
|
||||
PROG= cat
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -51,12 +51,12 @@ __FBSDID("$FreeBSD$");
|
|||
#ifndef NO_UDOM_SUPPORT
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>
|
||||
#include <errno.h>
|
||||
#include <netdb.h>
|
||||
#endif
|
||||
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <locale.h>
|
||||
#include <stddef.h>
|
||||
|
|
|
@ -25,6 +25,13 @@
|
|||
#
|
||||
# $FreeBSD$
|
||||
|
||||
get_filesystem()
|
||||
{
|
||||
local mountpoint=$1
|
||||
|
||||
df -T $mountpoint | tail -n 1 | cut -wf 2
|
||||
}
|
||||
|
||||
atf_test_case RH_flag
|
||||
RH_flag_head()
|
||||
{
|
||||
|
@ -94,6 +101,11 @@ f_flag_body()
|
|||
{
|
||||
atf_check truncate -s 0 foo bar
|
||||
atf_check chmod 0750 foo bar
|
||||
case "$(get_filesystem .)" in
|
||||
zfs)
|
||||
atf_expect_fail "ZFS doesn't support UF_IMMUTABLE; returns EPERM - bug 221189"
|
||||
;;
|
||||
esac
|
||||
atf_check chflags uchg foo
|
||||
atf_check -e not-empty -s not-exit:0 chmod 0700 foo bar
|
||||
atf_check -o inline:'100750\n100700\n' stat -f '%p' foo bar
|
||||
|
@ -103,7 +115,7 @@ f_flag_body()
|
|||
|
||||
f_flag_cleanup()
|
||||
{
|
||||
atf_check chflags 0 foo
|
||||
chflags 0 foo || :
|
||||
}
|
||||
|
||||
atf_test_case h_flag
|
||||
|
@ -140,6 +152,11 @@ v_flag_body()
|
|||
atf_check truncate -s 0 foo bar
|
||||
atf_check chmod 0600 foo
|
||||
atf_check chmod 0750 bar
|
||||
case "$(get_filesystem .)" in
|
||||
zfs)
|
||||
atf_expect_fail "ZFS updates mode for foo unnecessarily - bug 221188"
|
||||
;;
|
||||
esac
|
||||
atf_check -o 'inline:bar\n' chmod -v 0600 foo bar
|
||||
atf_check chmod -v 0600 foo bar
|
||||
for f in foo bar; do
|
||||
|
|
|
@ -7,8 +7,6 @@ PACKAGE=runtime
|
|||
PROG= date
|
||||
SRCS= date.c netdate.c vary.c
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -38,8 +38,6 @@ test: ${PROG} gen
|
|||
|
||||
@rm -f gen 1M_zeroes* obs_zeroes
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
.\" @(#)df.1 8.3 (Berkeley) 5/8/95
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd December 1, 2015
|
||||
.Dd August 8, 2017
|
||||
.Dt DF 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
|
@ -97,7 +97,7 @@ output.
|
|||
Use unit suffixes: Byte, Kibibyte, Mebibyte, Gibibyte, Tebibyte and
|
||||
Pebibyte (based on powers of 1024) in order to reduce the number of
|
||||
digits to four or fewer.
|
||||
.It Fl H
|
||||
.It Fl H , Fl Fl si
|
||||
.Dq Human-readable
|
||||
output.
|
||||
Use unit suffixes: Byte, Kilobyte, Megabyte,
|
||||
|
|
10
bin/df/df.c
10
bin/df/df.c
|
@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$");
|
|||
#include <ufs/ufs/ufsmount.h>
|
||||
#endif
|
||||
#include <err.h>
|
||||
#include <getopt.h>
|
||||
#include <libutil.h>
|
||||
#include <locale.h>
|
||||
#ifdef MOUNT_CHAR_DEVS
|
||||
|
@ -107,6 +108,12 @@ static int thousands;
|
|||
static struct ufs_args mdev;
|
||||
#endif
|
||||
|
||||
static const struct option long_options[] =
|
||||
{
|
||||
{ "si", no_argument, NULL, 'H' },
|
||||
{ NULL, no_argument, NULL, 0 },
|
||||
};
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
|
@ -142,7 +149,8 @@ main(int argc, char *argv[])
|
|||
if (argc < 0)
|
||||
exit(1);
|
||||
|
||||
while ((ch = getopt(argc, argv, "abcgHhiklmnPt:T,")) != -1)
|
||||
while ((ch = getopt_long(argc, argv, "+abcgHhiklmnPt:T,", long_options,
|
||||
NULL)) != -1)
|
||||
switch (ch) {
|
||||
case 'a':
|
||||
aflag = 1;
|
||||
|
|
|
@ -6,8 +6,6 @@
|
|||
PACKAGE=runtime
|
||||
PROG= echo
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -12,8 +12,6 @@ CFLAGS+= -fwrapv
|
|||
|
||||
NO_WMISSING_VARIABLE_DECLARATIONS=
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -10,8 +10,6 @@ MAN= ln.1 symlink.7
|
|||
LINKS= ${BINDIR}/ln ${BINDIR}/link
|
||||
MLINKS= ln.1 link.1
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -14,8 +14,6 @@ CFLAGS+= -DCOLORLS
|
|||
LIBADD+= termcapw
|
||||
.endif
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -6,8 +6,6 @@
|
|||
PACKAGE=runtime
|
||||
PROG= mv
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -33,8 +33,6 @@ SRCS= ar_io.c ar_subs.c buf_subs.c cache.c cpio.c file_subs.c ftree.c \
|
|||
gen_subs.c getoldopt.c options.c pat_rep.c pax.c sel_subs.c \
|
||||
tables.c tar.c tty_subs.c
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -19,8 +19,6 @@ MLINKS= pkill.1 pgrep.1
|
|||
SYMLINKS= ../..${BINDIR}/pkill /usr/bin/pkill
|
||||
SYMLINKS+= ../..${BINDIR}/pgrep /usr/bin/pgrep
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$");
|
|||
#include <sys/user.h>
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
|
@ -656,10 +657,12 @@ killact(const struct kinfo_proc *kp)
|
|||
static int
|
||||
grepact(const struct kinfo_proc *kp)
|
||||
{
|
||||
static bool first = true;
|
||||
|
||||
show_process(kp);
|
||||
if (!quiet)
|
||||
if (!quiet && !first)
|
||||
printf("%s", delim);
|
||||
show_process(kp);
|
||||
first = false;
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
|
|
@ -64,8 +64,6 @@ syntax.c syntax.h: mksyntax
|
|||
token.h: mktokens
|
||||
sh ${.CURDIR}/mktokens
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -6,8 +6,6 @@
|
|||
PACKAGE=runtime
|
||||
PROG= sleep
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -8,8 +8,6 @@ PROG= test
|
|||
LINKS= ${BINDIR}/test ${BINDIR}/[
|
||||
MLINKS= test.1 [.1
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
|
|
@ -5,9 +5,7 @@
|
|||
SUBDIR= lib .WAIT \
|
||||
sbin usr.bin usr.sbin
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
SUBDIR+=tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
SUBDIR_PARALLEL=
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@ sub fail
|
|||
|
||||
open(README, ">$opt_d/failure.$n/README");
|
||||
print README "ERROR: " . $file . " " . $msg;
|
||||
|
||||
|
||||
if (scalar @parms > 1) {
|
||||
print README "; see $errfile\n";
|
||||
} else {
|
||||
|
@ -250,7 +250,7 @@ sub run_tests {
|
|||
$name = $1;
|
||||
$base = $2;
|
||||
$ext = $3;
|
||||
|
||||
|
||||
$dir = dirname($file);
|
||||
$isksh = 0;
|
||||
$tag = 0;
|
||||
|
@ -372,7 +372,7 @@ sub run_tests {
|
|||
"modunload -i 0");
|
||||
if (!system("modinfo | grep dtrace")) {
|
||||
warn "ERROR: couldn't unload dtrace\n";
|
||||
system("svcadm enable " .
|
||||
system("svcadm enable " .
|
||||
"-s svc:/network/nfs/mapid:default");
|
||||
exit(124);
|
||||
}
|
||||
|
@ -387,7 +387,7 @@ sub run_tests {
|
|||
"modunload -i 0");
|
||||
if (!system("modinfo | grep dtrace")) {
|
||||
warn "ERROR: couldn't unload dtrace\n";
|
||||
system("svcadm enable " .
|
||||
system("svcadm enable " .
|
||||
"-s svc:/network/nfs/mapid:default");
|
||||
exit(124);
|
||||
}
|
||||
|
@ -679,7 +679,7 @@ if ($opt_b) {
|
|||
#
|
||||
# Run all the tests specified on the command-line (the entire test suite
|
||||
# by default) once for each dtrace command tested, skipping any tests
|
||||
# not valid for that command.
|
||||
# not valid for that command.
|
||||
#
|
||||
foreach $dtrace_cmd (@dtrace_cmds) {
|
||||
run_tests($dtrace_cmd, $exception_lists{$dtrace_cmd});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/bin/ksh -p
|
||||
#!/usr/bin/env ksh -p
|
||||
|
||||
/*
|
||||
* CDDL HEADER START
|
||||
|
|
|
@ -38,6 +38,14 @@
|
|||
##
|
||||
|
||||
|
||||
reader()
|
||||
{
|
||||
while true
|
||||
do
|
||||
sleep 0.1
|
||||
cat /etc/motd > /dev/null
|
||||
done
|
||||
}
|
||||
|
||||
if [ $# != 1 ]; then
|
||||
echo expected one argument: '<'dtrace-path'>'
|
||||
|
@ -46,6 +54,9 @@ fi
|
|||
|
||||
dtrace=$1
|
||||
|
||||
reader &
|
||||
child=$!
|
||||
|
||||
$dtrace -qwf read'{chill(15); printf("Done chilling"); exit(0);}'
|
||||
status=$?
|
||||
|
||||
|
@ -53,4 +64,6 @@ if [ "$status" -ne 0 ]; then
|
|||
echo $tst: dtrace failed
|
||||
fi
|
||||
|
||||
kill $child
|
||||
|
||||
exit $status
|
||||
|
|
|
@ -39,6 +39,15 @@
|
|||
##
|
||||
|
||||
|
||||
reader()
|
||||
{
|
||||
while true
|
||||
do
|
||||
sleep 0.1
|
||||
cat /etc/motd > /dev/null
|
||||
done
|
||||
}
|
||||
|
||||
if [ $# != 1 ]; then
|
||||
echo expected one argument: '<'dtrace-path'>'
|
||||
exit 2
|
||||
|
@ -46,6 +55,9 @@ fi
|
|||
|
||||
dtrace=$1
|
||||
|
||||
reader &
|
||||
child=$!
|
||||
|
||||
$dtrace -qZf wassup'{printf("Iamkool");}' \
|
||||
-qf read'{printf("I am done"); exit(0);}'
|
||||
|
||||
|
@ -55,4 +67,6 @@ if [ "$status" -ne 0 ]; then
|
|||
echo $tst: dtrace failed
|
||||
fi
|
||||
|
||||
kill $child
|
||||
|
||||
exit $status
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#pragma ident "%Z%%M% %I% %E% SMI"
|
||||
|
||||
#pragma D option quiet
|
||||
#pragma D option dynvarsize=2m
|
||||
|
||||
/*
|
||||
* This test verifies that the basename() and dirname() functions are working
|
||||
|
@ -54,12 +55,16 @@ BEGIN
|
|||
dir[i++] = "f";
|
||||
dir[i++] = "f/";
|
||||
dir[i++] = "/////";
|
||||
/*
|
||||
* basename(3) and basename(1) return different results for the empty
|
||||
* string on FreeBSD, so we need special handling.
|
||||
dir[i++] = "";
|
||||
*/
|
||||
|
||||
end = i;
|
||||
i = 0;
|
||||
|
||||
printf("#!/usr/bin/ksh\n\n");
|
||||
printf("#!/usr/bin/env ksh\n\n");
|
||||
}
|
||||
|
||||
tick-1ms
|
||||
|
@ -83,5 +88,19 @@ tick-1ms
|
|||
tick-1ms
|
||||
/i == end/
|
||||
{
|
||||
dir[i] = "";
|
||||
printf("if [ \"`basename \"%s\"`\" != \"%s\" -a \".\" != \"%s\" ]; then\n",
|
||||
dir[i], basename(dir[i]), basename(dir[i]));
|
||||
printf(" echo \"basename(\\\"%s\\\") is \\\"%s\\\"; ",
|
||||
dir[i], basename(dir[i]));
|
||||
printf("expected \\\"`basename \"%s\"`\\\" or \\\".\\\"\"\n", dir[i]);
|
||||
printf("fi\n\n");
|
||||
printf("if [ `dirname \"%s\"` != \"%s\" ]; then\n",
|
||||
dir[i], dirname(dir[i]));
|
||||
printf(" echo \"dirname(\\\"%s\\\") is \\\"%s\\\"; ",
|
||||
dir[i], dirname(dir[i]));
|
||||
printf("expected \\\"`dirname \"%s\"`\"\\\"\n", dir[i]);
|
||||
printf("fi\n\n");
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/ksh
|
||||
#!/usr/bin/env ksh
|
||||
|
||||
if [ `basename "/foo/bar/baz"` != "baz" ]; then
|
||||
echo "basename(\"/foo/bar/baz\") is \"baz\"; expected \"`basename "/foo/bar/baz"`"\"
|
||||
|
@ -152,8 +152,8 @@ if [ `dirname "/////"` != "/" ]; then
|
|||
echo "dirname(\"/////\") is \"/\"; expected \"`dirname "/////"`"\"
|
||||
fi
|
||||
|
||||
if [ `basename ""` != "." ]; then
|
||||
echo "basename(\"\") is \".\"; expected \"`basename ""`"\"
|
||||
if [ "`basename ""`" != "." -a "." != "." ]; then
|
||||
echo "basename(\"\") is \".\"; expected \"`basename ""`\" or \".\""
|
||||
fi
|
||||
|
||||
if [ `dirname ""` != "." ]; then
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#pragma ident "%Z%%M% %I% %E% SMI"
|
||||
|
||||
#pragma D option quiet
|
||||
#pragma D option dynvarsize=2m
|
||||
|
||||
BEGIN
|
||||
{
|
||||
|
|
|
@ -31,11 +31,12 @@ fi
|
|||
|
||||
dtrace=$1
|
||||
|
||||
$dtrace -ln 'syscall::*$1:entry' read | awk '{print $(NF-1),$NF}' | sort
|
||||
$dtrace -ln 'syscall::$1*:entry' read | awk '{print $(NF-1),$NF}' | sort
|
||||
$dtrace -ln 'syscall::re$1*:entry' ad | awk '{print $(NF-1),$NF}' | sort
|
||||
$dtrace -ln 'syscall::$1l*:entry' read | awk '{print $(NF-1),$NF}' | sort
|
||||
$dtrace -ln 'syscall::p$1[0-9][0-9]:entry' read | awk '{print $(NF-1),$NF}' | \
|
||||
sort
|
||||
$dtrace -ln 'syscall:freebsd:*$1:entry' read | \
|
||||
awk '{print $(NF-1),$NF}' | grep -v -E 'compat.\.' | sort
|
||||
$dtrace -ln 'syscall:freebsd:$1*:entry' read | awk '{print $(NF-1),$NF}' | sort
|
||||
$dtrace -ln 'syscall:freebsd:re$1*:entry' ad | awk '{print $(NF-1),$NF}' | sort
|
||||
$dtrace -ln 'syscall:freebsd:$1l*:entry' read | awk '{print $(NF-1),$NF}' | sort
|
||||
$dtrace -ln 'syscall:freebsd:w$1[0-9]:entry' ait | \
|
||||
awk '{print $(NF-1),$NF}' | sort
|
||||
|
||||
exit $status
|
||||
|
|
|
@ -1,15 +1,22 @@
|
|||
FUNCTION NAME
|
||||
aio_read entry
|
||||
obs_vread entry
|
||||
pread entry
|
||||
read entry
|
||||
rtprio_thread entry
|
||||
FUNCTION NAME
|
||||
read entry
|
||||
readlink entry
|
||||
readlinkat entry
|
||||
readv entry
|
||||
FUNCTION NAME
|
||||
read entry
|
||||
readlink entry
|
||||
readlinkat entry
|
||||
readv entry
|
||||
FUNCTION NAME
|
||||
readlink entry
|
||||
readlinkat entry
|
||||
FUNCTION NAME
|
||||
pread64 entry
|
||||
wait4 entry
|
||||
wait6 entry
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* CDDL HEADER START
|
||||
*
|
||||
* The contents of this file are subject to the terms of the
|
||||
* Common Development and Distribution License (the "License").
|
||||
* You may not use this file except in compliance with the License.
|
||||
*
|
||||
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
||||
* or http://www.opensolaris.org/os/licensing.
|
||||
* See the License for the specific language governing permissions
|
||||
* and limitations under the License.
|
||||
*
|
||||
* When distributing Covered Code, include this CDDL HEADER in each
|
||||
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
||||
* If applicable, add the following below this CDDL HEADER, with the
|
||||
* fields enclosed by brackets "[]" replaced with your own identifying
|
||||
* information: Portions Copyright [yyyy] [name of copyright owner]
|
||||
*
|
||||
* CDDL HEADER END
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright 2017 Li-Wen Hsu <lwhsu@FreeBSD.org>
|
||||
*/
|
||||
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
|
||||
sigset_t set;
|
||||
siginfo_t info;
|
||||
struct timespec timeout;
|
||||
|
||||
(void)sigemptyset(&set);
|
||||
(void)sigaddset(&set, SIGHUP);
|
||||
timeout.tv_sec = 1;
|
||||
timeout.tv_nsec = 0;
|
||||
|
||||
for (;;)
|
||||
(void)sigtimedwait(&set, &info, &timeout);
|
||||
|
||||
return (0);
|
||||
}
|
|
@ -45,6 +45,7 @@ BEGIN
|
|||
}
|
||||
|
||||
syscall::*wait*:entry
|
||||
/pid == $1/
|
||||
{
|
||||
exit(0);
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
BEGIN
|
||||
{
|
||||
i = 0;
|
||||
notused = $1;
|
||||
}
|
||||
|
||||
syscall::open:entry
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
#!/usr/bin/env ksh
|
||||
#
|
||||
# CDDL HEADER START
|
||||
#
|
||||
# The contents of this file are subject to the terms of the
|
||||
# Common Development and Distribution License (the "License").
|
||||
# You may not use this file except in compliance with the License.
|
||||
#
|
||||
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
||||
# or http://www.opensolaris.org/os/licensing.
|
||||
# See the License for the specific language governing permissions
|
||||
# and limitations under the License.
|
||||
#
|
||||
# When distributing Covered Code, include this CDDL HEADER in each
|
||||
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
||||
# If applicable, add the following below this CDDL HEADER, with the
|
||||
# fields enclosed by brackets "[]" replaced with your own identifying
|
||||
# information: Portions Copyright [yyyy] [name of copyright owner]
|
||||
#
|
||||
# CDDL HEADER END
|
||||
#
|
||||
|
||||
#
|
||||
# Copyright 2017 Li-Wen Hsu <lwhsu@FreeBSD.org>
|
||||
|
||||
while true
|
||||
do
|
||||
sleep 0.1
|
||||
cat /etc/motd > /dev/null
|
||||
done
|
|
@ -48,7 +48,6 @@
|
|||
#include <kstat.h>
|
||||
#else
|
||||
#include <sys/elf.h>
|
||||
#include <sys/ksyms.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/module.h>
|
||||
#include <sys/linker.h>
|
||||
|
@ -175,10 +174,6 @@ symtab_init(void)
|
|||
int fd;
|
||||
int i;
|
||||
int strindex = -1;
|
||||
#ifndef illumos
|
||||
void *ksyms;
|
||||
size_t sz;
|
||||
#endif
|
||||
|
||||
#ifndef illumos
|
||||
if ((fd = open("/dev/ksyms", O_RDONLY)) == -1) {
|
||||
|
@ -194,33 +189,9 @@ symtab_init(void)
|
|||
return (-1);
|
||||
#endif
|
||||
|
||||
#ifdef illumos
|
||||
(void) elf_version(EV_CURRENT);
|
||||
|
||||
elf = elf_begin(fd, ELF_C_READ, NULL);
|
||||
#else
|
||||
/*
|
||||
* XXX - libelf needs to be fixed so it will work with
|
||||
* non 'ordinary' files like /dev/ksyms. The following
|
||||
* is a work around for now.
|
||||
*/
|
||||
if (elf_version(EV_CURRENT) == EV_NONE) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
if (ioctl(fd, KIOCGSIZE, &sz) < 0) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
if (ioctl(fd, KIOCGADDR, &ksyms) < 0) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
if ((elf = elf_memory(ksyms, sz)) == NULL) {
|
||||
close(fd);
|
||||
return (-1);
|
||||
}
|
||||
#endif
|
||||
|
||||
for (cnt = 1; (scn = elf_nextscn(elf, scn)) != NULL; cnt++) {
|
||||
Shdr *shdr = elf_getshdr(scn);
|
||||
|
|
|
@ -1838,7 +1838,6 @@ ztest_get_data(void *arg, lr_write_t *lr, char *buf, zio_t *zio)
|
|||
uint64_t object = lr->lr_foid;
|
||||
uint64_t offset = lr->lr_offset;
|
||||
uint64_t size = lr->lr_length;
|
||||
blkptr_t *bp = &lr->lr_blkptr;
|
||||
uint64_t txg = lr->lr_common.lrc_txg;
|
||||
uint64_t crtxg;
|
||||
dmu_object_info_t doi;
|
||||
|
@ -1892,11 +1891,7 @@ ztest_get_data(void *arg, lr_write_t *lr, char *buf, zio_t *zio)
|
|||
DMU_READ_NO_PREFETCH);
|
||||
|
||||
if (error == 0) {
|
||||
blkptr_t *obp = dmu_buf_get_blkptr(db);
|
||||
if (obp) {
|
||||
ASSERT(BP_IS_HOLE(bp));
|
||||
*bp = *obp;
|
||||
}
|
||||
blkptr_t *bp = &lr->lr_blkptr;
|
||||
|
||||
zgd->zgd_db = db;
|
||||
zgd->zgd_bp = bp;
|
||||
|
|
|
@ -250,7 +250,7 @@ printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__LINE__);
|
|||
dofr[j].dofr_offset + 4;
|
||||
rel->r_info = ELF32_R_INFO(count + dep->de_global,
|
||||
R_PPC_REL32);
|
||||
#elif defined(__riscv__)
|
||||
#elif defined(__riscv)
|
||||
/* XXX */
|
||||
printf("%s:%s(%d): DOODAD\n",__FUNCTION__,__FILE__,__LINE__);
|
||||
#else
|
||||
|
@ -430,7 +430,7 @@ prepare_elf64(dtrace_hdl_t *dtp, const dof_hdr_t *dof, dof_elf64_t *dep)
|
|||
dofr[j].dofr_offset;
|
||||
rel->r_info = ELF64_R_INFO(count + dep->de_global,
|
||||
R_PPC64_REL64);
|
||||
#elif defined(__riscv__)
|
||||
#elif defined(__riscv)
|
||||
/* XXX */
|
||||
#elif defined(__i386) || defined(__amd64)
|
||||
rel->r_offset = s->dofs_offset +
|
||||
|
@ -904,7 +904,7 @@ dt_modtext(dtrace_hdl_t *dtp, char *p, int isenabled, GElf_Rela *rela,
|
|||
|
||||
return (0);
|
||||
}
|
||||
#elif defined(__riscv__)
|
||||
#elif defined(__riscv)
|
||||
/* XXX */
|
||||
static int
|
||||
dt_modtext(dtrace_hdl_t *dtp, char *p, int isenabled, GElf_Rela *rela,
|
||||
|
|
|
@ -311,7 +311,7 @@ pfprint_fp(dtrace_hdl_t *dtp, FILE *fp, const char *format,
|
|||
return (dt_printf(dtp, fp, format,
|
||||
*((double *)addr) / n));
|
||||
#if !defined(__arm__) && !defined(__powerpc__) && \
|
||||
!defined(__mips__) && !defined(__riscv__)
|
||||
!defined(__mips__) && !defined(__riscv)
|
||||
case sizeof (long double):
|
||||
return (dt_printf(dtp, fp, format,
|
||||
*((long double *)addr) / ldn));
|
||||
|
|
|
@ -74,6 +74,9 @@ zcmd_ioctl(int fd, int request, zfs_cmd_t *zc)
|
|||
|
||||
if (zfs_ioctl_version >= ZFS_IOCVER_DEADMAN) {
|
||||
switch (zfs_ioctl_version) {
|
||||
case ZFS_IOCVER_INLANES:
|
||||
cflag = ZFS_CMD_COMPAT_INLANES;
|
||||
break;
|
||||
case ZFS_IOCVER_RESUME:
|
||||
cflag = ZFS_CMD_COMPAT_RESUME;
|
||||
break;
|
||||
|
|
|
@ -103,7 +103,6 @@ zfs_validate_name(libzfs_handle_t *hdl, const char *path, int type,
|
|||
namecheck_err_t why;
|
||||
char what;
|
||||
|
||||
(void) zfs_prop_get_table();
|
||||
if (entity_namecheck(path, &why, &what) != 0) {
|
||||
if (hdl != NULL) {
|
||||
switch (why) {
|
||||
|
@ -3958,14 +3957,19 @@ zfs_rollback(zfs_handle_t *zhp, zfs_handle_t *snap, boolean_t force)
|
|||
}
|
||||
|
||||
/*
|
||||
* We rely on zfs_iter_children() to verify that there are no
|
||||
* newer snapshots for the given dataset. Therefore, we can
|
||||
* simply pass the name on to the ioctl() call. There is still
|
||||
* an unlikely race condition where the user has taken a
|
||||
* snapshot since we verified that this was the most recent.
|
||||
* Pass both the filesystem and the wanted snapshot names,
|
||||
* we would get an error back if the snapshot is destroyed or
|
||||
* a new snapshot is created before this request is processed.
|
||||
*/
|
||||
err = lzc_rollback(zhp->zfs_name, NULL, 0);
|
||||
if (err != 0) {
|
||||
err = lzc_rollback_to(zhp->zfs_name, snap->zfs_name);
|
||||
if (err == EXDEV) {
|
||||
zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN,
|
||||
"'%s' is not the latest snapshot"), snap->zfs_name);
|
||||
(void) zfs_error_fmt(zhp->zfs_hdl, EZFS_BUSY,
|
||||
dgettext(TEXT_DOMAIN, "cannot rollback '%s'"),
|
||||
zhp->zfs_name);
|
||||
return (err);
|
||||
} else if (err != 0) {
|
||||
(void) zfs_standard_error_fmt(zhp->zfs_hdl, errno,
|
||||
dgettext(TEXT_DOMAIN, "cannot rollback '%s'"),
|
||||
zhp->zfs_name);
|
||||
|
|
|
@ -765,6 +765,9 @@ lzc_receive_with_header(const char *snapname, nvlist_t *props,
|
|||
* Roll back this filesystem or volume to its most recent snapshot.
|
||||
* If snapnamebuf is not NULL, it will be filled in with the name
|
||||
* of the most recent snapshot.
|
||||
* Note that the latest snapshot may change if a new one is concurrently
|
||||
* created or the current one is destroyed. lzc_rollback_to can be used
|
||||
* to roll back to a specific latest snapshot.
|
||||
*
|
||||
* Return 0 on success or an errno on failure.
|
||||
*/
|
||||
|
@ -787,6 +790,27 @@ lzc_rollback(const char *fsname, char *snapnamebuf, int snapnamelen)
|
|||
return (err);
|
||||
}
|
||||
|
||||
/*
|
||||
* Roll back this filesystem or volume to the specified snapshot,
|
||||
* if possible.
|
||||
*
|
||||
* Return 0 on success or an errno on failure.
|
||||
*/
|
||||
int
|
||||
lzc_rollback_to(const char *fsname, const char *snapname)
|
||||
{
|
||||
nvlist_t *args;
|
||||
nvlist_t *result;
|
||||
int err;
|
||||
|
||||
args = fnvlist_alloc();
|
||||
fnvlist_add_string(args, "target", snapname);
|
||||
err = lzc_ioctl(ZFS_IOC_ROLLBACK, fsname, args, &result);
|
||||
nvlist_free(args);
|
||||
nvlist_free(result);
|
||||
return (err);
|
||||
}
|
||||
|
||||
/*
|
||||
* Creates bookmarks.
|
||||
*
|
||||
|
|
|
@ -84,6 +84,7 @@ int lzc_receive_with_header(const char *, nvlist_t *, const char *, boolean_t,
|
|||
boolean_t lzc_exists(const char *);
|
||||
|
||||
int lzc_rollback(const char *, char *, int);
|
||||
int lzc_rollback_to(const char *, const char *);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -12,11 +12,8 @@ SUBDIR= ${_drti} \
|
|||
${_libzfs_core} \
|
||||
${_libzfs} \
|
||||
${_libzpool} \
|
||||
${_tests}
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
_tests= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.if ${MK_ZFS} != "no"
|
||||
_libzfs_core= libzfs_core
|
||||
|
|
|
@ -2,11 +2,9 @@
|
|||
|
||||
.include <src.opts.mk>
|
||||
|
||||
SUBDIR= ${_tests} ${_zfs} ${_zpool}
|
||||
SUBDIR= ${_zfs} ${_zpool}
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
_tests= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.if ${MK_ZFS} != "no"
|
||||
_zfs= zfs
|
||||
|
|
|
@ -6,15 +6,12 @@ SUBDIR= \
|
|||
ctfconvert \
|
||||
ctfdump \
|
||||
ctfmerge \
|
||||
${_tests} \
|
||||
${_zinject} \
|
||||
${_zlook} \
|
||||
${_zstreamdump} \
|
||||
${_ztest}
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
_tests= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.if ${MK_ZFS} != "no"
|
||||
_zinject= zinject
|
||||
|
|
|
@ -5,14 +5,11 @@
|
|||
SUBDIR= ${_dtrace} \
|
||||
${_lockstat} \
|
||||
${_plockstat} \
|
||||
${_tests} \
|
||||
${_zdb} \
|
||||
${_zfsd} \
|
||||
${_zhack}
|
||||
|
||||
.if ${MK_TESTS} != "no"
|
||||
_tests= tests
|
||||
.endif
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.if ${MK_ZFS} != "no"
|
||||
.if ${MK_LIBTHR} != "no"
|
||||
|
|
|
@ -32,6 +32,7 @@ TESTEXES= \
|
|||
|
||||
|
||||
CFILES= \
|
||||
tst.probestar.c \
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -68,6 +68,7 @@ ${PACKAGE}FILES= \
|
|||
tst.zerosize.d \
|
||||
|
||||
TESTEXES= \
|
||||
tst.NoSpecBuffer.exe \
|
||||
|
||||
|
||||
CFILES= \
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
# $FreeBSD$
|
||||
|
||||
usage()
|
||||
|
@ -84,6 +86,12 @@ runtest()
|
|||
;;
|
||||
esac
|
||||
|
||||
if [ $retval -eq 0 ] && \
|
||||
head -n 1 $STDOUT | grep -q -E '^#!/.*ksh$'; then
|
||||
ksh $STDOUT
|
||||
retval=$?
|
||||
fi
|
||||
|
||||
return $retval
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2017-07-20 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* Makefile (_MAKE_VERSION): 20170720
|
||||
Merge with NetBSD make, pick up
|
||||
o compat.c: pass SIGINT etc onto child and wait for it to exit
|
||||
before we self-terminate.
|
||||
|
||||
2017-07-11 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||
|
||||
* Makefile (_MAKE_VERSION): 20170711
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# $Id: Makefile,v 1.94 2017/07/15 18:22:14 sjg Exp $
|
||||
# $Id: Makefile,v 1.95 2017/07/20 19:36:13 sjg Exp $
|
||||
|
||||
# Base version on src date
|
||||
_MAKE_VERSION= 20170711
|
||||
_MAKE_VERSION= 20170720
|
||||
|
||||
PROG= bmake
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: compat.c,v 1.106 2016/08/26 23:28:39 dholland Exp $ */
|
||||
/* $NetBSD: compat.c,v 1.107 2017/07/20 19:29:54 sjg Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||
|
@ -70,14 +70,14 @@
|
|||
*/
|
||||
|
||||
#ifndef MAKE_NATIVE
|
||||
static char rcsid[] = "$NetBSD: compat.c,v 1.106 2016/08/26 23:28:39 dholland Exp $";
|
||||
static char rcsid[] = "$NetBSD: compat.c,v 1.107 2017/07/20 19:29:54 sjg Exp $";
|
||||
#else
|
||||
#include <sys/cdefs.h>
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)compat.c 8.2 (Berkeley) 3/19/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: compat.c,v 1.106 2016/08/26 23:28:39 dholland Exp $");
|
||||
__RCSID("$NetBSD: compat.c,v 1.107 2017/07/20 19:29:54 sjg Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif
|
||||
|
@ -118,6 +118,8 @@ __RCSID("$NetBSD: compat.c,v 1.106 2016/08/26 23:28:39 dholland Exp $");
|
|||
static GNode *curTarg = NULL;
|
||||
static GNode *ENDNode;
|
||||
static void CompatInterrupt(int);
|
||||
static pid_t compatChild;
|
||||
static int compatSigno;
|
||||
|
||||
/*
|
||||
* CompatDeleteTarget -- delete a failed, interrupted, or otherwise
|
||||
|
@ -176,8 +178,17 @@ CompatInterrupt(int signo)
|
|||
}
|
||||
if (signo == SIGQUIT)
|
||||
_exit(signo);
|
||||
bmake_signal(signo, SIG_DFL);
|
||||
kill(myPid, signo);
|
||||
/*
|
||||
* If there is a child running, pass the signal on
|
||||
* we will exist after it has exited.
|
||||
*/
|
||||
compatSigno = signo;
|
||||
if (compatChild > 0) {
|
||||
KILLPG(compatChild, signo);
|
||||
} else {
|
||||
bmake_signal(signo, SIG_DFL);
|
||||
kill(myPid, signo);
|
||||
}
|
||||
}
|
||||
|
||||
/*-
|
||||
|
@ -370,7 +381,7 @@ CompatRunCommand(void *cmdp, void *gnp)
|
|||
/*
|
||||
* Fork and execute the single command. If the fork fails, we abort.
|
||||
*/
|
||||
cpid = vFork();
|
||||
compatChild = cpid = vFork();
|
||||
if (cpid < 0) {
|
||||
Fatal("Could not fork");
|
||||
}
|
||||
|
@ -483,7 +494,12 @@ CompatRunCommand(void *cmdp, void *gnp)
|
|||
}
|
||||
}
|
||||
free(cmdStart);
|
||||
|
||||
compatChild = 0;
|
||||
if (compatSigno) {
|
||||
bmake_signal(compatSigno, SIG_DFL);
|
||||
kill(myPid, compatSigno);
|
||||
}
|
||||
|
||||
return (status);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: job.c,v 1.190 2017/04/16 21:23:43 riastradh Exp $ */
|
||||
/* $NetBSD: job.c,v 1.191 2017/07/20 19:29:54 sjg Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||
|
@ -70,14 +70,14 @@
|
|||
*/
|
||||
|
||||
#ifndef MAKE_NATIVE
|
||||
static char rcsid[] = "$NetBSD: job.c,v 1.190 2017/04/16 21:23:43 riastradh Exp $";
|
||||
static char rcsid[] = "$NetBSD: job.c,v 1.191 2017/07/20 19:29:54 sjg Exp $";
|
||||
#else
|
||||
#include <sys/cdefs.h>
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3/19/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: job.c,v 1.190 2017/04/16 21:23:43 riastradh Exp $");
|
||||
__RCSID("$NetBSD: job.c,v 1.191 2017/07/20 19:29:54 sjg Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
#endif
|
||||
|
@ -364,11 +364,6 @@ static Job childExitJob; /* child exit pseudo-job */
|
|||
(void)fprintf(fp, TARG_FMT, targPrefix, gn->name)
|
||||
|
||||
static sigset_t caught_signals; /* Set of signals we handle */
|
||||
#if defined(SYSV)
|
||||
#define KILLPG(pid, sig) kill(-(pid), (sig))
|
||||
#else
|
||||
#define KILLPG(pid, sig) killpg((pid), (sig))
|
||||
#endif
|
||||
|
||||
static void JobChildSig(int);
|
||||
static void JobContinueSig(int);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: make.h,v 1.102 2016/12/07 15:00:46 christos Exp $ */
|
||||
/* $NetBSD: make.h,v 1.103 2017/07/20 19:29:54 sjg Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988, 1989, 1990, 1993
|
||||
|
@ -543,4 +543,10 @@ int cached_stat(const char *, void *);
|
|||
#define PATH_MAX MAXPATHLEN
|
||||
#endif
|
||||
|
||||
#if defined(SYSV)
|
||||
#define KILLPG(pid, sig) kill(-(pid), (sig))
|
||||
#else
|
||||
#define KILLPG(pid, sig) killpg((pid), (sig))
|
||||
#endif
|
||||
|
||||
#endif /* _MAKE_H_ */
|
||||
|
|
|
@ -143,6 +143,11 @@ int Str_Match(const char *, const char *);
|
|||
char *Str_SYSVMatch(const char *, const char *, int *len);
|
||||
void Str_SYSVSubst(Buffer *, char *, char *, int);
|
||||
|
||||
#ifndef HAVE_STRLCPY
|
||||
/* strlcpy.c */
|
||||
size_t strlcpy(char *, const char *, size_t);
|
||||
#endif
|
||||
|
||||
/* suff.c */
|
||||
void Suff_ClearSuffixes(void);
|
||||
Boolean Suff_IsTransform(char *);
|
||||
|
|
|
@ -92,7 +92,7 @@
|
|||
* does not have dedicated bit counting instructions.
|
||||
*/
|
||||
#if defined(__FreeBSD__) && (defined(__sparc64__) || \
|
||||
defined(__mips_n64) || defined(__mips_o64) || defined(__riscv__))
|
||||
defined(__mips_n64) || defined(__mips_o64) || defined(__riscv))
|
||||
si_int __clzsi2(si_int);
|
||||
si_int __ctzsi2(si_int);
|
||||
#define __builtin_clz __clzsi2
|
||||
|
|
|
@ -83,7 +83,7 @@ namespace __sanitizer {
|
|||
#elif defined(__powerpc64__)
|
||||
const unsigned struct_kernel_stat_sz = 144;
|
||||
const unsigned struct_kernel_stat64_sz = 104;
|
||||
#elif defined(__riscv__)
|
||||
#elif defined(__riscv)
|
||||
/* RISCVTODO: check that these values are correct */
|
||||
const unsigned struct_kernel_stat_sz = 128;
|
||||
const unsigned struct_kernel_stat64_sz = 128;
|
||||
|
@ -126,7 +126,7 @@ namespace __sanitizer {
|
|||
|
||||
#if SANITIZER_LINUX || SANITIZER_FREEBSD
|
||||
|
||||
#if defined(__powerpc64__) || defined(__riscv__) || defined(__s390__)
|
||||
#if defined(__powerpc64__) || defined(__riscv) || defined(__s390__)
|
||||
const unsigned struct___old_kernel_stat_sz = 0;
|
||||
#elif !defined(__sparc__)
|
||||
const unsigned struct___old_kernel_stat_sz = 32;
|
||||
|
@ -554,7 +554,7 @@ namespace __sanitizer {
|
|||
typedef long __sanitizer___kernel_off_t;
|
||||
#endif
|
||||
|
||||
#if defined(__powerpc__) || defined(__mips__) || defined(__riscv__)
|
||||
#if defined(__powerpc__) || defined(__mips__) || defined(__riscv)
|
||||
typedef unsigned int __sanitizer___kernel_old_uid_t;
|
||||
typedef unsigned int __sanitizer___kernel_old_gid_t;
|
||||
#else
|
||||
|
|
|
@ -97,7 +97,7 @@
|
|||
#define LIBELF_BYTEORDER ELFDATA2MSB
|
||||
#define LIBELF_CLASS ELFCLASS32
|
||||
|
||||
#elif defined(__riscv64)
|
||||
#elif defined(__riscv) && (__riscv_xlen == 64)
|
||||
|
||||
#define LIBELF_ARCH EM_RISCV
|
||||
#define LIBELF_BYTEORDER ELFDATA2LSB
|
||||
|
|
79
contrib/hyperv/tools/scripts/hyperv_vfattach
Normal file
79
contrib/hyperv/tools/scripts/hyperv_vfattach
Normal file
|
@ -0,0 +1,79 @@
|
|||
#!/bin/sh
|
||||
|
||||
#
|
||||
# If transparent VF is enabled, don't do anything.
|
||||
#
|
||||
|
||||
sysctl -n hw.hn.vf_transparent > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
# Old kernel; no transparent VF.
|
||||
vf_transparent=0
|
||||
else
|
||||
vf_transparent=`sysctl -n hw.hn.vf_transparent`
|
||||
fi
|
||||
|
||||
if [ $vf_transparent -ne 0 ]
|
||||
then
|
||||
# Transparent VF; done!
|
||||
exit 0
|
||||
fi
|
||||
|
||||
iface=$1
|
||||
delay=$2
|
||||
|
||||
if [ $delay -gt 0 ]
|
||||
then
|
||||
#
|
||||
# Delayed VF up.
|
||||
#
|
||||
sleep $delay
|
||||
ifconfig $iface up
|
||||
# Done!
|
||||
exit $?
|
||||
fi
|
||||
|
||||
#
|
||||
# Check to see whether $iface is a VF or not.
|
||||
# If $iface is a VF, bring it up now.
|
||||
#
|
||||
|
||||
# for hyperv_vf_delay
|
||||
. /etc/rc.conf
|
||||
|
||||
sysctl -n hw.hn.vflist > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
# Old kernel; nothing could be done properly.
|
||||
exit 0
|
||||
fi
|
||||
vf_list=`sysctl -n hw.hn.vflist`
|
||||
|
||||
for vf in $vf_list
|
||||
do
|
||||
if [ $vf = $iface ]
|
||||
then
|
||||
#
|
||||
# Linger a little bit (at least 2 seconds) mainly to
|
||||
# make sure that $iface is fully attached.
|
||||
#
|
||||
# NOTE:
|
||||
# In Azure hyperv_vf_delay should be configured to a
|
||||
# large value, e.g. 120 seconds, to avoid racing cloud
|
||||
# agent goofs.
|
||||
#
|
||||
test $hyperv_vf_delay -ge 2 > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
hyperv_vf_delay=2
|
||||
fi
|
||||
#
|
||||
# NOTE:
|
||||
# "(sleep ..; ifconfig .. up) > /dev/null 2>&1 &"
|
||||
# does _not_ work.
|
||||
#
|
||||
daemon -f /usr/libexec/hyperv/hyperv_vfattach \
|
||||
$iface $hyperv_vf_delay
|
||||
break
|
||||
fi
|
||||
done
|
119
contrib/hyperv/tools/scripts/hyperv_vfup
Normal file
119
contrib/hyperv/tools/scripts/hyperv_vfup
Normal file
|
@ -0,0 +1,119 @@
|
|||
#!/bin/sh
|
||||
|
||||
. /etc/rc.subr
|
||||
. /etc/network.subr
|
||||
|
||||
load_rc_config netif
|
||||
|
||||
#
|
||||
# Customized per-interface setup, e.g. hyperv_vfup.hn1
|
||||
#
|
||||
# NOTE-CUSTOMIZE:
|
||||
# Comment this out, if this script is used as template
|
||||
# for the customized per-interface setup.
|
||||
#
|
||||
if [ -f /usr/libexec/hyperv/hyperv_vfup.$1 ]
|
||||
then
|
||||
/usr/libexec/hyperv/hyperv_vfup.$1
|
||||
exit $?
|
||||
fi
|
||||
|
||||
# NOTE-CUSTOMIZE:
|
||||
#hn=${0##*.}
|
||||
hn=$1
|
||||
hn_unit=`echo $hn | sed 's/[^0-9]*//g'`
|
||||
|
||||
vf=`sysctl -n dev.hn.$hn_unit.vf`
|
||||
if [ ! $vf ]
|
||||
then
|
||||
# Race happened; VF was removed, before we ran.
|
||||
echo "$hn: VF was detached"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#
|
||||
# Create laggX for hnX.
|
||||
# Add VF and hnX to laggX.
|
||||
#
|
||||
|
||||
lagg=lagg$hn_unit
|
||||
|
||||
ifconfig $lagg > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
#
|
||||
# No laggX, create it now.
|
||||
#
|
||||
ifconfig $lagg create > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "$lagg creation failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Configure laggX (failover), add hnX and VF to it.
|
||||
#
|
||||
ifconfig $lagg laggproto failover laggport $hn laggport $vf
|
||||
ifconfig $lagg inet6 no_dad
|
||||
|
||||
#
|
||||
# Stop dhclient on hnX, if any.
|
||||
#
|
||||
pidfile=/var/run/dhclient.$hn.pid
|
||||
if [ -f $pidfile ]
|
||||
then
|
||||
kill -TERM `cat $pidfile`
|
||||
fi
|
||||
|
||||
#
|
||||
# Remove all configured IPv4 addresses on hnX, e.g.
|
||||
# configured by dhclient. laggX will take over the
|
||||
# network operations.
|
||||
#
|
||||
while true
|
||||
do
|
||||
ifconfig $hn -alias > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# TODO: Remove IPv6 addresses on hnX
|
||||
|
||||
#
|
||||
# Use hnX's configuration for laggX
|
||||
#
|
||||
# NOTE-CUSTOMIZE:
|
||||
# If this script is used as template for the customized
|
||||
# per-interface setup, replace this with whatever you
|
||||
# want to do with the laggX.
|
||||
#
|
||||
if dhcpif $hn;
|
||||
then
|
||||
ifconfig $lagg up
|
||||
if syncdhcpif $hn;
|
||||
then
|
||||
dhclient $lagg
|
||||
else
|
||||
dhclient -b $lagg
|
||||
fi
|
||||
else
|
||||
ifconfig_args=`ifconfig_getargs $hn`
|
||||
if [ -n "$ifconfig_args" ]
|
||||
then
|
||||
ifconfig $lagg $ifconfig_args
|
||||
fi
|
||||
fi
|
||||
else
|
||||
#
|
||||
# laggX exists. Check whether VF was there or not.
|
||||
# If VF was not added to laggX, add it now.
|
||||
#
|
||||
ifconfig $lagg | grep "laggport: $vf" > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
ifconfig $lagg laggport $vf
|
||||
fi
|
||||
fi
|
|
@ -109,9 +109,9 @@ arc4_randomstir (void)
|
|||
/*
|
||||
* Throw away the first N words of output, as suggested in the
|
||||
* paper "Weaknesses in the Key Scheduling Algorithm of RC4"
|
||||
* by Fluher, Mantin, and Shamir. (N = 256 in our case.)
|
||||
* by Fluher, Mantin, and Shamir. (N = 768 in our case.)
|
||||
*/
|
||||
for (n = 0; n < 256*4; n++)
|
||||
for (n = 0; n < 768*4; n++)
|
||||
arc4_randbyte();
|
||||
MUTEX_EXIT(&arc4_mtx);
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ usage(prog)
|
|||
fprintf(stderr, "Usage:\t%s\n", prog);
|
||||
fprintf(stderr, "\t-a [-dnv] -m <name> [-o <role>] [-t type] [-T ttl] -i <ipaddr>[/netmask]\n");
|
||||
fprintf(stderr, "\t-A [-dnv] [-m <name>] [-o <role>] [-S <seed>] [-t <type>]\n");
|
||||
fprintf(stderr, "\t-f <file> [-dnuv]\n");
|
||||
fprintf(stderr, "\t-f <file> [-dnuvR]\n");
|
||||
fprintf(stderr, "\t-F [-dv] [-o <role>] [-t <type>]\n");
|
||||
fprintf(stderr, "\t-l [-dv] [-m <name>] [-t <type>] [-o <role>] [-M <core>] [-N <namelist>]\n");
|
||||
fprintf(stderr, "\t-r [-dnv] [-m <name>] [-o <role>] [-t type] -i <ipaddr>[/netmask]\n");
|
||||
|
|
|
@ -88,7 +88,7 @@ typedef int malloc_cpuid_t;
|
|||
# ifdef __powerpc__
|
||||
# define LG_QUANTUM 4
|
||||
# endif
|
||||
# ifdef __riscv__
|
||||
# ifdef __riscv
|
||||
# define LG_QUANTUM 4
|
||||
# endif
|
||||
# ifdef __s390__
|
||||
|
|
|
@ -1,19 +1,13 @@
|
|||
#ifndef JEMALLOC_INTERNAL_SPIN_H
|
||||
#define JEMALLOC_INTERNAL_SPIN_H
|
||||
|
||||
#ifdef JEMALLOC_SPIN_C_
|
||||
# define SPIN_INLINE extern inline
|
||||
#else
|
||||
# define SPIN_INLINE inline
|
||||
#endif
|
||||
|
||||
#define SPIN_INITIALIZER {0U}
|
||||
|
||||
typedef struct {
|
||||
unsigned iteration;
|
||||
} spin_t;
|
||||
|
||||
SPIN_INLINE void
|
||||
static inline void
|
||||
spin_adaptive(spin_t *spin) {
|
||||
volatile uint32_t i;
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@
|
|||
# define LG_VADDR 32
|
||||
# define LG_SIZEOF_PTR 2
|
||||
#endif
|
||||
#ifdef __riscv__
|
||||
#ifdef __riscv
|
||||
# define LG_VADDR 64
|
||||
# define LG_SIZEOF_PTR 3
|
||||
#endif
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
#define JEMALLOC_SPIN_C_
|
||||
#include "jemalloc/internal/jemalloc_preamble.h"
|
||||
|
||||
#include "jemalloc/internal/spin.h"
|
|
@ -64,7 +64,7 @@ typedef struct {
|
|||
} archive_crypto_ctx;
|
||||
|
||||
#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(HAVE_BCRYPT_H)
|
||||
#include <Bcrypt.h>
|
||||
#include <bcrypt.h>
|
||||
|
||||
/* Common in other bcrypt implementations, but missing from VS2008. */
|
||||
#ifndef BCRYPT_SUCCESS
|
||||
|
|
|
@ -374,13 +374,14 @@ archive_write_ar_data(struct archive_write *a, const void *buff, size_t s)
|
|||
return (ARCHIVE_WARN);
|
||||
}
|
||||
|
||||
ar->strtab = (char *)malloc(s);
|
||||
ar->strtab = (char *)malloc(s + 1);
|
||||
if (ar->strtab == NULL) {
|
||||
archive_set_error(&a->archive, ENOMEM,
|
||||
"Can't allocate strtab buffer");
|
||||
return (ARCHIVE_FATAL);
|
||||
}
|
||||
strncpy(ar->strtab, buff, s);
|
||||
memcpy(ar->strtab, buff, s);
|
||||
ar->strtab[s] = '\0';
|
||||
ar->has_strtab = 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,10 @@
|
|||
#ifndef _LIBCPP_BSD_LOCALE_DEFAULTS_H
|
||||
#define _LIBCPP_BSD_LOCALE_DEFAULTS_H
|
||||
|
||||
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#define __libcpp_mb_cur_max_l(loc) MB_CUR_MAX_L(loc)
|
||||
#define __libcpp_btowc_l(ch, loc) btowc_l(ch, loc)
|
||||
#define __libcpp_wctob_l(wch, loc) wctob_l(wch, loc)
|
||||
|
|
|
@ -18,6 +18,10 @@
|
|||
#include <stdarg.h>
|
||||
#include <memory>
|
||||
|
||||
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
inline _LIBCPP_ALWAYS_INLINE
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
# include <support/solaris/xlocale.h>
|
||||
#elif defined(_NEWLIB_VERSION)
|
||||
# include <support/newlib/xlocale.h>
|
||||
#elif (defined(__GLIBC__) || defined(__APPLE__) || defined(__FreeBSD__) \
|
||||
#elif (defined(__APPLE__) || defined(__FreeBSD__) \
|
||||
|| defined(__EMSCRIPTEN__) || defined(__IBMCPP__))
|
||||
# include <xlocale.h>
|
||||
#elif defined(__Fuchsia__)
|
||||
|
|
|
@ -116,7 +116,7 @@ public:
|
|||
using mutex_type = Mutex; // If MutexTypes... consists of the single type Mutex
|
||||
|
||||
explicit scoped_lock(MutexTypes&... m);
|
||||
scoped_lock(MutexTypes&... m, adopt_lock_t);
|
||||
scoped_lock(adopt_lock_t, MutexTypes&... m);
|
||||
~scoped_lock();
|
||||
scoped_lock(scoped_lock const&) = delete;
|
||||
scoped_lock& operator=(scoped_lock const&) = delete;
|
||||
|
@ -500,7 +500,7 @@ public:
|
|||
~scoped_lock() _LIBCPP_THREAD_SAFETY_ANNOTATION(release_capability()) {__m_.unlock();}
|
||||
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
explicit scoped_lock(mutex_type& __m, adopt_lock_t) _LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m))
|
||||
explicit scoped_lock(adopt_lock_t, mutex_type& __m) _LIBCPP_THREAD_SAFETY_ANNOTATION(requires_capability(__m))
|
||||
: __m_(__m) {}
|
||||
|
||||
scoped_lock(scoped_lock const&) = delete;
|
||||
|
@ -522,7 +522,7 @@ public:
|
|||
}
|
||||
|
||||
_LIBCPP_INLINE_VISIBILITY
|
||||
scoped_lock(_MArgs&... __margs, adopt_lock_t)
|
||||
scoped_lock(adopt_lock_t, _MArgs&... __margs)
|
||||
: __t_(__margs...)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -249,7 +249,8 @@ basic_stringbuf<_CharT, _Traits, _Allocator>::basic_stringbuf(ios_base::openmode
|
|||
template <class _CharT, class _Traits, class _Allocator>
|
||||
basic_stringbuf<_CharT, _Traits, _Allocator>::basic_stringbuf(const string_type& __s,
|
||||
ios_base::openmode __wch)
|
||||
: __hm_(0),
|
||||
: __str_(__s.get_allocator()),
|
||||
__hm_(0),
|
||||
__mode_(__wch)
|
||||
{
|
||||
str(__s);
|
||||
|
|
|
@ -38,7 +38,14 @@ GH_PAGES_DIR = gh-pages/
|
|||
GH_PAGES_DIR_VER = gh-pages/${PACKAGE_VERSION}
|
||||
PACKAGE_FILE = ${PACKAGE_TARNAME}-${PACKAGE_VERSION}.tar.gz
|
||||
|
||||
upload: dist upload-docs
|
||||
XOHTML_FILES = \
|
||||
${top_srcdir}/xohtml/xohtml.css \
|
||||
${top_srcdir}/xohtml/xohtml.js \
|
||||
${top_srcdir}/xohtml/external/jquery.js \
|
||||
${top_srcdir}/xohtml/external/jquery.qtip.css \
|
||||
${top_srcdir}/xohtml/external/jquery.qtip.js
|
||||
|
||||
upload: dist upload-docs upload-xohtml-files
|
||||
@echo "Remember to run:"
|
||||
@echo " gt tag ${PACKAGE_VERSION}"
|
||||
|
||||
|
@ -56,6 +63,18 @@ upload-docs: docs
|
|||
libxo-manual.html ${PACKAGE_VERSION} \
|
||||
&& git push origin gh-pages ) ; true
|
||||
|
||||
upload-xohtml-files:
|
||||
@echo "Uploading xohtml files ... "
|
||||
@-[ -d ${GH_PAGES_DIR} ] \
|
||||
&& echo "Updating xohtml files on gh-pages ..." \
|
||||
&& mkdir -p ${GH_PAGES_DIR_VER}/xohtml \
|
||||
&& cp ${XOHTML_FILES} ${GH_PAGES_DIR_VER}/xohtml \
|
||||
&& (cd ${GH_PAGES_DIR} \
|
||||
&& git add ${PACKAGE_VERSION}/xohtml \
|
||||
&& git commit -m 'new xohtml files' \
|
||||
${PACKAGE_VERSION}/xohtml \
|
||||
&& git push origin gh-pages ) ; true
|
||||
|
||||
pkgconfigdir=$(libdir)/pkgconfig
|
||||
pkgconfig_DATA = packaging/${PACKAGE_NAME}.pc
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
#
|
||||
|
||||
AC_PREREQ(2.2)
|
||||
AC_INIT([libxo], [0.8.1], [phil@juniper.net])
|
||||
AC_INIT([libxo], [0.8.4], [phil@juniper.net])
|
||||
AM_INIT_AUTOMAKE([-Wall -Werror foreign -Wno-portability])
|
||||
|
||||
# Support silent build rules. Requires at least automake-1.11.
|
||||
|
|
|
@ -515,7 +515,7 @@ li.indline1 {
|
|||
|
||||
}
|
||||
@top-right {
|
||||
content: "June 2017";
|
||||
content: "August 2017";
|
||||
|
||||
}
|
||||
@top-center {
|
||||
|
@ -22011,7 +22011,7 @@ jQuery(function ($) {
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="header left"></td>
|
||||
<td class="header right">June 14, 2017</td>
|
||||
<td class="header right">August 3, 2017</td>
|
||||
</tr>
|
||||
</table></div>
|
||||
<p id="title" class="title">libxo: The Easy Way to Generate text, XML, JSON, and HTML output<br><span class="filename">libxo-manual</span></p>
|
||||
|
|
|
@ -311,3 +311,13 @@ to use an alternative set of low-level output functions.
|
|||
.Xr xo_set_style 3 ,
|
||||
.Xr xo_set_writer 3 ,
|
||||
.Xr xo_format 5
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -137,7 +137,7 @@ static const char xo_default_format[] = "%s";
|
|||
|
||||
#define XO_INDENT_BY 2 /* Amount to indent when pretty printing */
|
||||
#define XO_DEPTH 128 /* Default stack depth */
|
||||
#define XO_MAX_ANCHOR_WIDTH (8*1024) /* Anything wider is just sillyb */
|
||||
#define XO_MAX_ANCHOR_WIDTH (8*1024) /* Anything wider is just silly */
|
||||
|
||||
#define XO_FAILURE_NAME "failure"
|
||||
|
||||
|
@ -5071,16 +5071,60 @@ xo_find_width (xo_handle_t *xop, xo_field_info_t *xfip,
|
|||
bp[vlen] = '\0';
|
||||
|
||||
width = strtol(bp, &cp, 0);
|
||||
if (width == LONG_MIN || width == LONG_MAX
|
||||
|| bp == cp || *cp != '\0' ) {
|
||||
if (width == LONG_MIN || width == LONG_MAX || bp == cp || *cp != '\0') {
|
||||
width = 0;
|
||||
xo_failure(xop, "invalid width for anchor: '%s'", bp);
|
||||
}
|
||||
} else if (flen) {
|
||||
if (flen != 2 || strncmp("%d", fmt, flen) != 0)
|
||||
xo_failure(xop, "invalid width format: '%*.*s'", flen, flen, fmt);
|
||||
if (!XOF_ISSET(xop, XOF_NO_VA_ARG))
|
||||
width = va_arg(xop->xo_vap, int);
|
||||
/*
|
||||
* We really expect the format for width to be "{:/%d}" or
|
||||
* "{:/%u}", so if that's the case, we just grab our width off
|
||||
* the argument list. But we need to avoid optimized logic if
|
||||
* there's a custom formatter.
|
||||
*/
|
||||
if (xop->xo_formatter == NULL && flen == 2
|
||||
&& strncmp("%d", fmt, flen) == 0) {
|
||||
if (!XOF_ISSET(xop, XOF_NO_VA_ARG))
|
||||
width = va_arg(xop->xo_vap, int);
|
||||
} else if (xop->xo_formatter == NULL && flen == 2
|
||||
&& strncmp("%u", fmt, flen) == 0) {
|
||||
if (!XOF_ISSET(xop, XOF_NO_VA_ARG))
|
||||
width = va_arg(xop->xo_vap, unsigned);
|
||||
} else {
|
||||
/*
|
||||
* So we have a format and it's not a simple one like
|
||||
* "{:/%d}". That means we need to format the field,
|
||||
* extract the value from the formatted output, and then
|
||||
* discard that output.
|
||||
*/
|
||||
int anchor_was_set = FALSE;
|
||||
xo_buffer_t *xbp = &xop->xo_data;
|
||||
ssize_t start_offset = xo_buf_offset(xbp);
|
||||
bp = xo_buf_cur(xbp); /* Save start of the string */
|
||||
cp = NULL;
|
||||
|
||||
if (XOIF_ISSET(xop, XOIF_ANCHOR)) {
|
||||
XOIF_CLEAR(xop, XOIF_ANCHOR);
|
||||
anchor_was_set = TRUE;
|
||||
}
|
||||
|
||||
ssize_t rc = xo_do_format_field(xop, xbp, fmt, flen, 0);
|
||||
if (rc >= 0) {
|
||||
xo_buf_append(xbp, "", 1); /* Append a NUL */
|
||||
|
||||
width = strtol(bp, &cp, 0);
|
||||
if (width == LONG_MIN || width == LONG_MAX
|
||||
|| bp == cp || *cp != '\0') {
|
||||
width = 0;
|
||||
xo_failure(xop, "invalid width for anchor: '%s'", bp);
|
||||
}
|
||||
}
|
||||
|
||||
/* Reset the cur pointer to where we found it */
|
||||
xbp->xb_curp = xbp->xb_bufp + start_offset;
|
||||
if (anchor_was_set)
|
||||
XOIF_SET(xop, XOIF_ANCHOR);
|
||||
}
|
||||
}
|
||||
|
||||
return width;
|
||||
|
@ -5107,9 +5151,6 @@ static void
|
|||
xo_anchor_start (xo_handle_t *xop, xo_field_info_t *xfip,
|
||||
const char *value, ssize_t vlen)
|
||||
{
|
||||
if (xo_style(xop) != XO_STYLE_TEXT && xo_style(xop) != XO_STYLE_HTML)
|
||||
return;
|
||||
|
||||
if (XOIF_ISSET(xop, XOIF_ANCHOR))
|
||||
xo_failure(xop, "the anchor already recording is discarded");
|
||||
|
||||
|
@ -5129,9 +5170,6 @@ static void
|
|||
xo_anchor_stop (xo_handle_t *xop, xo_field_info_t *xfip,
|
||||
const char *value, ssize_t vlen)
|
||||
{
|
||||
if (xo_style(xop) != XO_STYLE_TEXT && xo_style(xop) != XO_STYLE_HTML)
|
||||
return;
|
||||
|
||||
if (!XOIF_ISSET(xop, XOIF_ANCHOR)) {
|
||||
xo_failure(xop, "no start anchor");
|
||||
return;
|
||||
|
|
|
@ -58,3 +58,13 @@ already emitted in other form.
|
|||
.Sh SEE ALSO
|
||||
.Xr xo_emit 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -65,3 +65,13 @@ resources associated with the default handle.
|
|||
.Xr xo_emit 3 ,
|
||||
.Xr xo_set_options 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -102,3 +102,13 @@ then the number of display columns consumed by the output will be returned.
|
|||
.Xr xo_open_list 3 ,
|
||||
.Xr xo_format 5 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -70,3 +70,13 @@ parameter.
|
|||
.Xr xo_format 5 ,
|
||||
.Xr xo_err 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -109,3 +109,13 @@ for details.
|
|||
.Xr xo_open_list 3 ,
|
||||
.Xr xo_format 5 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -72,3 +72,13 @@ parameter.
|
|||
.Xr xo_emit 3 ,
|
||||
.Xr xo_emit_err 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -39,3 +39,13 @@ calls.
|
|||
.Xr printf 3 ,
|
||||
.Xr xo_emit 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -37,3 +37,13 @@ especially for the non-TEXT output styles.
|
|||
.Sh SEE ALSO
|
||||
.Xr xo_emit 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -33,3 +33,13 @@ function is used for this.
|
|||
.Sh SEE ALSO
|
||||
.Xr xo_emit 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -965,3 +965,13 @@ names to make that difference more obvious.
|
|||
.Xr libxo 3 ,
|
||||
.Xr xolint 1 ,
|
||||
.Xr xo_emit 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -66,3 +66,13 @@ and
|
|||
.Sh SEE ALSO
|
||||
.Xr xo_emit 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -41,3 +41,13 @@ function.
|
|||
.Xr xo_open_list 3 ,
|
||||
.Xr xo_format 5 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -186,3 +186,13 @@ and the name recorded do not match.
|
|||
.Sh SEE ALSO
|
||||
.Xr xo_emit 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -156,3 +156,13 @@ are rendered as multiple leaf elements.
|
|||
.Sh SEE ALSO
|
||||
.Xr xo_emit 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -103,3 +103,13 @@ properly.
|
|||
.Sh SEE ALSO
|
||||
.Xr xo_emit 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -145,3 +145,12 @@ The following are three example invocations of
|
|||
.Sh SEE ALSO
|
||||
.Xr libxo 3 ,
|
||||
.Xr xo_format 5
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
|
|
@ -150,3 +150,13 @@ must be maintained by the caller.
|
|||
.Sh SEE ALSO
|
||||
.Xr xo_emit 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -52,3 +52,13 @@ functions are used.
|
|||
.Sh SEE ALSO
|
||||
.Xr xo_emit 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
|
@ -137,3 +137,13 @@ handle.
|
|||
.Sh SEE ALSO
|
||||
.Xr xo_emit 3 ,
|
||||
.Xr libxo 3
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm libxo
|
||||
library first appeared in
|
||||
.Fx 11.0 .
|
||||
.Sh AUTHORS
|
||||
.Nm libxo
|
||||
was written by
|
||||
.An Phil Shafer Aq Mt phil@freebsd.org .
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue