mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-31 04:45:39 +01:00
Compare commits
22
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
afca0a0215 | ||
|
|
89a22c105d | ||
|
|
015fffc8b2 | ||
|
|
2d417323eb | ||
|
|
45d97b32db | ||
|
|
b5fbaaf760 | ||
|
|
86e188bc8c | ||
|
|
fa06ac302b | ||
|
|
0f25293703 | ||
|
|
441e391a02 | ||
|
|
0b2ec6e696 | ||
|
|
55f826f990 | ||
|
|
211396c70a | ||
|
|
6d32747831 | ||
|
|
9839cf7f7a | ||
|
|
772dc9fb9c | ||
|
|
13abc0eebb | ||
|
|
e031b6cdd7 | ||
|
|
a97901cccc | ||
|
|
d6964ababb | ||
|
|
a9fc8bc819 | ||
|
|
683e74bedf |
No files matched your search
@@ -1,5 +0,0 @@
|
||||
*.c diff=cpp
|
||||
*.h diff=cpp
|
||||
*.cpp diff=cpp
|
||||
*.hpp diff=cpp
|
||||
*.py diff=python
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
_.tinderbox.*
|
||||
_.amd64.*
|
||||
_.arm.*
|
||||
_.arm64.*
|
||||
_.i386.*
|
||||
_.ia64.*
|
||||
_.mips.*
|
||||
_.pc98.*
|
||||
_.powerpc.*
|
||||
_.riscv.*
|
||||
_.sparc64.*
|
||||
_.sun4v.*
|
||||
GPATH
|
||||
GRTAGS
|
||||
GTAGS
|
||||
ID
|
||||
cscope.out
|
||||
?cscope.out
|
||||
@@ -144,7 +144,7 @@ _MAKEOBJDIRPREFIX!= /usr/bin/env -i PATH=${PATH} ${MAKE} \
|
||||
# We often need to use the tree's version of make to build it.
|
||||
# Choices add to complexity though.
|
||||
# We cannot blindly use a make which may not be the one we want
|
||||
# so be explicit - until all choice is removed.
|
||||
# so be exlicit - until all choice is removed.
|
||||
.if !defined(WITHOUT_BMAKE)
|
||||
WANT_MAKE= bmake
|
||||
.else
|
||||
|
||||
+8
-18
@@ -640,10 +640,8 @@ build32: .PHONY
|
||||
${_+_}cd ${.CURDIR}; \
|
||||
${LIB32WMAKE} -f Makefile.inc1 -DNO_FSCHG libraries
|
||||
.for _t in obj depend all
|
||||
.if !defined(NO_RTLD)
|
||||
${_+_}cd ${.CURDIR}/libexec/rtld-elf; PROG=ld-elf32.so.1 ${LIB32WMAKE} \
|
||||
-DNO_FSCHG DIRPRFX=libexec/rtld-elf/ ${_t}
|
||||
.endif
|
||||
${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32WMAKE} \
|
||||
DIRPRFX=usr.bin/ldd ${_t}
|
||||
.endfor
|
||||
@@ -660,10 +658,8 @@ distribute32 install32: .MAKE .PHONY
|
||||
.if ${MK_KERBEROS} != "no"
|
||||
${_+_}cd ${.CURDIR}/kerberos5/lib; ${LIB32IMAKE} ${.TARGET:S/32$//}
|
||||
.endif
|
||||
.if !defined(NO_RTLD)
|
||||
${_+_}cd ${.CURDIR}/libexec/rtld-elf; \
|
||||
PROG=ld-elf32.so.1 ${LIB32IMAKE} ${.TARGET:S/32$//}
|
||||
.endif
|
||||
${_+_}cd ${.CURDIR}/usr.bin/ldd; PROG=ldd32 ${LIB32IMAKE} \
|
||||
${.TARGET:S/32$//}
|
||||
.endif
|
||||
@@ -1030,10 +1026,6 @@ BUILDKERNELS+= ${_kernel}
|
||||
.if empty(INSTALLKERNEL) && !defined(NO_INSTALLKERNEL)
|
||||
INSTALLKERNEL= ${_kernel}
|
||||
.endif
|
||||
.else
|
||||
.if make(buildkernel)
|
||||
.error Missing KERNCONF ${KERNCONFDIR}/${_kernel}
|
||||
.endif
|
||||
.endif
|
||||
.endfor
|
||||
|
||||
@@ -1371,9 +1363,11 @@ ${_bt}-usr.bin/clang/clang-tblgen: ${_bt}-lib/clang/libllvmtablegen ${_bt}-lib/c
|
||||
${_bt}-usr.bin/clang/tblgen: ${_bt}-lib/clang/libllvmtablegen ${_bt}-lib/clang/libllvmsupport
|
||||
.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 are required for older bootstrap env and cross-build
|
||||
.if ${MK_CDDL} != "no" && \
|
||||
((${BOOTSTRAPPING} < 1000034 && \
|
||||
!(${BOOTSTRAPPING} >= 901505 && ${BOOTSTRAPPING} < 999999)) \
|
||||
|| (${MACHINE} != ${TARGET} || ${MACHINE_ARCH} != ${TARGET_ARCH}))
|
||||
_dtrace_tools= cddl/lib/libctf lib/libelf \
|
||||
lib/libdwarf cddl/usr.bin/ctfconvert cddl/usr.bin/ctfmerge
|
||||
|
||||
@@ -1466,13 +1460,9 @@ _gcc_tools= gnu/usr.bin/cc/cc_tools
|
||||
_rescue= rescue/rescue
|
||||
.endif
|
||||
|
||||
.if ${MK_TCSH} != "no"
|
||||
_tcsh=bin/csh
|
||||
.endif
|
||||
|
||||
build-tools: .MAKE
|
||||
.for _tool in \
|
||||
${_tcsh} \
|
||||
bin/csh \
|
||||
bin/sh \
|
||||
${_rescue} \
|
||||
${LOCAL_TOOL_DIRS} \
|
||||
@@ -1590,7 +1580,7 @@ native-xtools: .PHONY
|
||||
bin/cat \
|
||||
bin/chmod \
|
||||
bin/cp \
|
||||
${_tcsh} \
|
||||
bin/csh \
|
||||
bin/echo \
|
||||
bin/expr \
|
||||
bin/hostname \
|
||||
@@ -1738,7 +1728,7 @@ gnu/lib/libdialog__L: lib/msun__L lib/ncurses/ncursesw__L
|
||||
_prebuild_libs+= lib/libc++
|
||||
.endif
|
||||
|
||||
lib/libgeom__L: lib/libexpat__L lib/libsbuf__L
|
||||
lib/libgeom__L: lib/libexpat__L
|
||||
|
||||
.if defined(WITH_ATF) || ${MK_TESTS} != "no"
|
||||
.if !defined(WITH_ATF)
|
||||
|
||||
@@ -38,8 +38,6 @@
|
||||
# xargs -n1 | sort | uniq -d;
|
||||
# done
|
||||
|
||||
# 20171204: Move fdformat man page from volume 1 to volume 8.
|
||||
OLD_FILES+=usr/share/man/man1/fdformat.1.gz
|
||||
# 20170620: remove stale manpage
|
||||
OLD_FILES+=usr/share/man/man2/cap_rights_get.2.gz
|
||||
# 20170610: chown-f_test replaced by chown_test
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Updating Information for FreeBSD stable/10 users
|
||||
Updating Information for FreeBSD current users
|
||||
|
||||
This file is maintained and copyrighted by M. Warner Losh <[email protected]>.
|
||||
See end of file for further details. For commonly done items, please see the
|
||||
@@ -6,7 +6,7 @@ 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
|
||||
https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/updating-src.html
|
||||
|
||||
Items affecting the ports and packages system can be found in
|
||||
/usr/ports/UPDATING. Please read that file before running portupgrade.
|
||||
@@ -16,22 +16,8 @@ from older versions of FreeBSD, try WITHOUT_CLANG to bootstrap to the tip of
|
||||
stable/10, and then rebuild without this option. The bootstrap process from
|
||||
older version of current is a bit fragile.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
20170915:
|
||||
The releng/10.4 branch has been created from stable/10@r323601
|
||||
10.4-RELEASE.
|
||||
|
||||
20170824:
|
||||
Since the switch to GPT disk labels, fsck for UFS/FFS has been
|
||||
@@ -68,9 +54,6 @@ older version of current is a bit fragile.
|
||||
by mkdir under .zfs/snapshot/. That should be the only user visible
|
||||
change.
|
||||
|
||||
20160304:
|
||||
The releng/10.3 branch has been created from stable/10@r296371
|
||||
|
||||
20160124:
|
||||
The NONE and HPN patches has been removed from OpenSSH. They are
|
||||
still available in the security/openssh-portable port.
|
||||
@@ -130,9 +113,6 @@ older version of current is a bit fragile.
|
||||
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.
|
||||
|
||||
20150723:
|
||||
The releng/10.2 branch has been created from stable/10@r285827
|
||||
|
||||
20150703:
|
||||
The default Unbound configuration now enables remote control
|
||||
using a local socket. Users who have already enabled the
|
||||
@@ -200,9 +180,6 @@ older version of current is a bit fragile.
|
||||
20141118:
|
||||
10.1-RELEASE.
|
||||
|
||||
20141207:
|
||||
The releng/10.1 branch has been created from stable/10@r272459.
|
||||
|
||||
20140904:
|
||||
The ofwfb driver, used to provide a graphics console on PowerPC when
|
||||
using vt(4), no longer allows mmap() of all of physical memory. This
|
||||
@@ -317,9 +294,6 @@ older version of current is a bit fragile.
|
||||
big-endian integer in accordance with RFC 4402.
|
||||
__FreeBSD_version is bumped to 1000701.
|
||||
|
||||
20131207:
|
||||
The releng/10.0 branch has been created from stable/10@r259064.
|
||||
|
||||
20131108:
|
||||
The WITHOUT_ATF build knob has been removed and its functionality
|
||||
has been subsumed into the more generic WITHOUT_TESTS. If you were
|
||||
@@ -342,10 +316,6 @@ older version of current is a bit fragile.
|
||||
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.
|
||||
|
||||
20131010:
|
||||
The rc.d/jail script has been updated to support jail(8)
|
||||
configuration file. The "jail_<jname>_*" rc.conf(5) variables
|
||||
|
||||
@@ -58,6 +58,8 @@ SUBDIR+= tests
|
||||
|
||||
.include <bsd.arch.inc.mk>
|
||||
|
||||
SUBDIR:= ${SUBDIR:O}
|
||||
|
||||
SUBDIR_PARALLEL=
|
||||
|
||||
.include <bsd.subdir.mk>
|
||||
+1
-1
@@ -51,11 +51,11 @@ __FBSDID("$FreeBSD$");
|
||||
#ifndef NO_UDOM_SUPPORT
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>
|
||||
#include <errno.h>
|
||||
#endif
|
||||
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <locale.h>
|
||||
#include <stddef.h>
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
# @(#)Makefile 8.1 (Berkeley) 6/6/93
|
||||
# $FreeBSD$
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
PACKAGE=runtime
|
||||
PROG= chflags
|
||||
|
||||
HAS_TESTS=
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
@@ -1,5 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
ATF_TESTS_SH+= chflags_test
|
||||
|
||||
.include <bsd.test.mk>
|
||||
@@ -1,63 +0,0 @@
|
||||
#
|
||||
# Copyright 2017 Shivansh Rai
|
||||
# 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 AUTHOR 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 AUTHOR 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$
|
||||
#
|
||||
|
||||
usage_output='usage: chflags'
|
||||
|
||||
atf_test_case invalid_usage
|
||||
invalid_usage_head()
|
||||
{
|
||||
atf_set "descr" "Verify that an invalid usage with a supported option produces a valid error message"
|
||||
}
|
||||
|
||||
invalid_usage_body()
|
||||
{
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" chflags -f
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" chflags -H
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" chflags -h
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" chflags -L
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" chflags -P
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" chflags -R
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" chflags -v
|
||||
}
|
||||
|
||||
atf_test_case no_arguments
|
||||
no_arguments_head()
|
||||
{
|
||||
atf_set "descr" "Verify that chflags(1) fails and generates a valid usage message when no arguments are supplied"
|
||||
}
|
||||
|
||||
no_arguments_body()
|
||||
{
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" chflags
|
||||
}
|
||||
|
||||
atf_init_test_cases()
|
||||
{
|
||||
atf_add_test_case invalid_usage
|
||||
atf_add_test_case no_arguments
|
||||
}
|
||||
@@ -1,12 +1,6 @@
|
||||
# @(#)Makefile 8.1 (Berkeley) 5/31/93
|
||||
# $FreeBSD$
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
PACKAGE=runtime
|
||||
PROG= mkdir
|
||||
|
||||
HAS_TESTS=
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
@@ -1,5 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
ATF_TESTS_SH+= mkdir_test
|
||||
|
||||
.include <bsd.test.mk>
|
||||
@@ -1,61 +0,0 @@
|
||||
#
|
||||
# Copyright 2017 Shivansh Rai
|
||||
# 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 AUTHOR 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 AUTHOR 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$
|
||||
#
|
||||
|
||||
usage_output='usage: mkdir'
|
||||
|
||||
atf_test_case invalid_usage
|
||||
invalid_usage_head()
|
||||
{
|
||||
atf_set "descr" "Verify that an invalid usage with a supported option produces a valid error message"
|
||||
}
|
||||
|
||||
invalid_usage_body()
|
||||
{
|
||||
atf_check -s not-exit:0 -e inline:"mkdir: option requires an argument -- m
|
||||
usage: mkdir [-pv] [-m mode] directory_name ...
|
||||
" mkdir -m
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" mkdir -p
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" mkdir -v
|
||||
}
|
||||
|
||||
atf_test_case no_arguments
|
||||
no_arguments_head()
|
||||
{
|
||||
atf_set "descr" "Verify that mkdir(1) fails and generates a valid usage message when no arguments are supplied"
|
||||
}
|
||||
|
||||
no_arguments_body()
|
||||
{
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" mkdir
|
||||
}
|
||||
|
||||
atf_init_test_cases()
|
||||
{
|
||||
atf_add_test_case invalid_usage
|
||||
atf_add_test_case no_arguments
|
||||
}
|
||||
@@ -53,7 +53,6 @@ char *emulname(KINFO *, VARENT *);
|
||||
VARENT *find_varentry(VAR *);
|
||||
const char *fmt_argv(char **, char *, char *, size_t);
|
||||
double getpcpu(const KINFO *);
|
||||
char *jailname(KINFO *, VARENT *);
|
||||
char *kvar(KINFO *, VARENT *);
|
||||
char *label(KINFO *, VARENT *);
|
||||
char *loginclass(KINFO *, VARENT *);
|
||||
|
||||
@@ -96,7 +96,6 @@ static VAR var[] = {
|
||||
{"ignored", "", "sigignore", 0, NULL, 0, CHAR, NULL, 0},
|
||||
{"inblk", "INBLK", NULL, USER, rvar, ROFF(ru_inblock), LONG, "ld", 0},
|
||||
{"inblock", "", "inblk", 0, NULL, 0, CHAR, NULL, 0},
|
||||
{"jail", "JAIL", NULL, LJUST, jailname, 0, CHAR, NULL, 0},
|
||||
{"jid", "JID", NULL, 0, kvar, KOFF(ki_jid), INT, "d", 0},
|
||||
{"jobc", "JOBC", NULL, 0, kvar, KOFF(ki_jobc), SHORT, "d", 0},
|
||||
{"ktrace", "KTRACE", NULL, 0, kvar, KOFF(ki_traceflag), INT, "x", 0},
|
||||
|
||||
@@ -49,7 +49,6 @@ __FBSDID("$FreeBSD$");
|
||||
|
||||
#include <err.h>
|
||||
#include <grp.h>
|
||||
#include <jail.h>
|
||||
#include <langinfo.h>
|
||||
#include <locale.h>
|
||||
#include <math.h>
|
||||
@@ -841,16 +840,3 @@ loginclass(KINFO *k, VARENT *ve __unused)
|
||||
}
|
||||
return (strdup(k->ki_p->ki_loginclass));
|
||||
}
|
||||
|
||||
char *
|
||||
jailname(KINFO *k, VARENT *ve __unused)
|
||||
{
|
||||
char *name;
|
||||
|
||||
if (k->ki_p->ki_jid == 0)
|
||||
return (strdup("-"));
|
||||
name = jail_getname(k->ki_p->ki_jid);
|
||||
if (name == NULL)
|
||||
return (strdup("-"));
|
||||
return (name);
|
||||
}
|
||||
+1
-3
@@ -29,7 +29,7 @@
|
||||
.\" @(#)ps.1 8.3 (Berkeley) 4/18/94
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd March 13, 2018
|
||||
.Dd August 12, 2016
|
||||
.Dt PS 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
@@ -554,8 +554,6 @@ group name (from egid) (alias
|
||||
.It Cm inblk
|
||||
total blocks read (alias
|
||||
.Cm inblock )
|
||||
.It Cm jail
|
||||
jail name
|
||||
.It Cm jid
|
||||
jail ID
|
||||
.It Cm jobc
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
# @(#)Makefile 8.1 (Berkeley) 7/19/93
|
||||
# $FreeBSD$
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
PACKAGE=rcmds
|
||||
PROG= rcp
|
||||
SRCS= rcp.c util.c
|
||||
CFLAGS+=-DBINDIR=${BINDIR}
|
||||
@@ -12,7 +9,4 @@ BINOWN= root
|
||||
BINMODE=4555
|
||||
PRECIOUSPROG=
|
||||
|
||||
HAS_TESTS=
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
@@ -1,5 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
ATF_TESTS_SH+= rcp_test
|
||||
|
||||
.include <bsd.test.mk>
|
||||
@@ -1,60 +0,0 @@
|
||||
#
|
||||
# Copyright 2017 Shivansh Rai
|
||||
# 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 AUTHOR 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 AUTHOR 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$
|
||||
#
|
||||
|
||||
usage_output='usage: rcp'
|
||||
|
||||
atf_test_case invalid_usage
|
||||
invalid_usage_head()
|
||||
{
|
||||
atf_set "descr" "Verify that an invalid usage with a supported option produces a valid error message"
|
||||
}
|
||||
|
||||
invalid_usage_body()
|
||||
{
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" rcp -4
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" rcp -6
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" rcp -p
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" rcp -r
|
||||
}
|
||||
|
||||
atf_test_case no_arguments
|
||||
no_arguments_head()
|
||||
{
|
||||
atf_set "descr" "Verify that rcp(1) fails and generates a valid usage message when no arguments are supplied"
|
||||
}
|
||||
|
||||
no_arguments_body()
|
||||
{
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" rcp
|
||||
}
|
||||
|
||||
atf_init_test_cases()
|
||||
{
|
||||
atf_add_test_case invalid_usage
|
||||
atf_add_test_case no_arguments
|
||||
}
|
||||
@@ -1,11 +1,6 @@
|
||||
# @(#)Makefile 8.1 (Berkeley) 5/31/93
|
||||
# $FreeBSD$
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
||||
PACKAGE=runtime
|
||||
PROG= rmdir
|
||||
HAS_TESTS=
|
||||
SUBDIR.${MK_TESTS}+= tests
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
@@ -1,5 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
ATF_TESTS_SH+= rmdir_test
|
||||
|
||||
.include <bsd.test.mk>
|
||||
@@ -1,58 +0,0 @@
|
||||
#
|
||||
# Copyright 2017 Shivansh Rai
|
||||
# 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 AUTHOR 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 AUTHOR 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$
|
||||
#
|
||||
|
||||
usage_output='usage: rmdir'
|
||||
|
||||
atf_test_case invalid_usage
|
||||
invalid_usage_head()
|
||||
{
|
||||
atf_set "descr" "Verify that an invalid usage with a supported option produces a valid error message"
|
||||
}
|
||||
|
||||
invalid_usage_body()
|
||||
{
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" rmdir -p
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" rmdir -v
|
||||
}
|
||||
|
||||
atf_test_case no_arguments
|
||||
no_arguments_head()
|
||||
{
|
||||
atf_set "descr" "Verify that rmdir(1) fails and generates a valid usage message when no arguments are supplied"
|
||||
}
|
||||
|
||||
no_arguments_body()
|
||||
{
|
||||
atf_check -s not-exit:0 -e match:"$usage_output" rmdir
|
||||
}
|
||||
|
||||
atf_init_test_cases()
|
||||
{
|
||||
atf_add_test_case invalid_usage
|
||||
atf_add_test_case no_arguments
|
||||
}
|
||||
@@ -74,7 +74,7 @@ zmount(const char *spec, const char *dir, int mflag, char *fstype,
|
||||
char *dataptr, int datalen, char *optptr, int optlen)
|
||||
{
|
||||
struct iovec *iov;
|
||||
char *optstr, *os, *p, *tofree;
|
||||
char *optstr, *os, *p;
|
||||
int iovlen, rv;
|
||||
|
||||
assert(spec != NULL);
|
||||
@@ -87,7 +87,7 @@ zmount(const char *spec, const char *dir, int mflag, char *fstype,
|
||||
assert(optptr != NULL);
|
||||
assert(optlen > 0);
|
||||
|
||||
tofree = optstr = strdup(optptr);
|
||||
optstr = strdup(optptr);
|
||||
assert(optstr != NULL);
|
||||
|
||||
iov = NULL;
|
||||
@@ -98,9 +98,11 @@ zmount(const char *spec, const char *dir, int mflag, char *fstype,
|
||||
build_iovec(&iov, &iovlen, "fspath", __DECONST(char *, dir),
|
||||
(size_t)-1);
|
||||
build_iovec(&iov, &iovlen, "from", __DECONST(char *, spec), (size_t)-1);
|
||||
while ((p = strsep(&optstr, ",/")) != NULL)
|
||||
build_iovec(&iov, &iovlen, p, NULL, (size_t)-1);
|
||||
for (p = optstr; p != NULL; strsep(&p, ",/ ")) {
|
||||
if (*p != '\0')
|
||||
build_iovec(&iov, &iovlen, p, NULL, (size_t)-1);
|
||||
}
|
||||
rv = nmount(iov, iovlen, 0);
|
||||
free(tofree);
|
||||
free(optstr);
|
||||
return (rv);
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
* This file and its contents are supplied under the terms of the
|
||||
* Common Development and Distribution License ("CDDL"), version 1.0.
|
||||
* You may only use this file in accordance with the terms of version
|
||||
* 1.0 of the CDDL.
|
||||
*
|
||||
* A full copy of the text of the CDDL should have accompanied this
|
||||
* source. A copy of the CDDL is also available via the Internet at
|
||||
* http://www.illumos.org/license/CDDL.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright 2017 Panzura. All rights reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ASSERTION:
|
||||
* Positive test for normalization() of stddev()
|
||||
*
|
||||
* SECTION: Aggregations/Normalization
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma D option quiet
|
||||
#pragma D option aggrate=1ms
|
||||
#pragma D option switchrate=50ms
|
||||
|
||||
BEGIN
|
||||
{
|
||||
i = 0;
|
||||
}
|
||||
|
||||
tick-100ms
|
||||
/i < 11/
|
||||
{
|
||||
@ = stddev(i * 100);
|
||||
i++;
|
||||
}
|
||||
|
||||
tick-100ms
|
||||
/i == 11/
|
||||
{
|
||||
printf("normalized data:\n");
|
||||
normalize(@, 10);
|
||||
exit(0);
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
normalized data:
|
||||
|
||||
31
|
||||
@@ -35,13 +35,13 @@ main(int argc, char **argv)
|
||||
sigset_t ss;
|
||||
|
||||
(void) sigemptyset(&ss);
|
||||
(void) sigaddset(&ss, SIGUSR1);
|
||||
(void) sigaddset(&ss, SIGINT);
|
||||
(void) sigprocmask(SIG_BLOCK, &ss, NULL);
|
||||
|
||||
do {
|
||||
(void) getpid();
|
||||
(void) sigpending(&ss);
|
||||
} while (!sigismember(&ss, SIGUSR1));
|
||||
} while (!sigismember(&ss, SIGINT));
|
||||
|
||||
return (0);
|
||||
}
|
||||
@@ -47,7 +47,7 @@ syscall::getpid:entry
|
||||
/pid == $1/
|
||||
{
|
||||
trace("raised");
|
||||
raise(SIGUSR1);
|
||||
raise(SIGINT);
|
||||
/*
|
||||
* Wait no more than half a second for the process to die.
|
||||
*/
|
||||
@@ -55,7 +55,6 @@ syscall::getpid:entry
|
||||
}
|
||||
|
||||
syscall::exit:entry
|
||||
/pid == $1/
|
||||
{
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ main(int argc, char **argv)
|
||||
sigemptyset(&sa.sa_mask);
|
||||
sa.sa_flags = 0;
|
||||
|
||||
(void) sigaction(SIGUSR1, &sa, NULL);
|
||||
(void) sigaction(SIGINT, &sa, NULL);
|
||||
|
||||
for (;;) {
|
||||
(void) getpid();
|
||||
|
||||
@@ -47,7 +47,7 @@ syscall::getpid:return
|
||||
/pid == $1/
|
||||
{
|
||||
trace("raised");
|
||||
raise(SIGUSR1);
|
||||
raise(SIGINT);
|
||||
/*
|
||||
* Wait no more than half a second for the process to die.
|
||||
*/
|
||||
@@ -55,7 +55,6 @@ syscall::getpid:return
|
||||
}
|
||||
|
||||
syscall::exit:entry
|
||||
/pid == $1/
|
||||
{
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ main(int argc, char **argv)
|
||||
sigemptyset(&sa.sa_mask);
|
||||
sa.sa_flags = 0;
|
||||
|
||||
(void) sigaction(SIGUSR1, &sa, NULL);
|
||||
(void) sigaction(SIGINT, &sa, NULL);
|
||||
|
||||
for (;;) {
|
||||
(void) getpid();
|
||||
|
||||
@@ -47,7 +47,7 @@ syscall::getpid:entry
|
||||
/pid == $1/
|
||||
{
|
||||
trace("raised");
|
||||
raise(SIGUSR1);
|
||||
raise(SIGINT);
|
||||
/*
|
||||
* Wait no more than half a second for the process to die.
|
||||
*/
|
||||
@@ -55,7 +55,6 @@ syscall::getpid:entry
|
||||
}
|
||||
|
||||
syscall::exit:entry
|
||||
/pid == $1/
|
||||
{
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -15,12 +15,11 @@
|
||||
.\" Copyright 2012, Richard Lowe.
|
||||
.\" Copyright (c) 2012, Marcelo Araujo <[email protected]>.
|
||||
.\" Copyright (c) 2012, 2014 by Delphix. All rights reserved.
|
||||
.\" Copyright 2016 Nexenta Systems, Inc.
|
||||
.\" All Rights Reserved.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd October 1, 2017
|
||||
.Dd July 26, 2014
|
||||
.Dt ZDB 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
@@ -28,13 +27,12 @@
|
||||
.Nd Display zpool debugging and consistency information
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl CmdibcsDvhLMXFPA
|
||||
.Op Fl CumdibcsDvhLMXFPA
|
||||
.Op Fl e Op Fl p Ar path...
|
||||
.Op Fl t Ar txg
|
||||
.Op Fl U Ar cache
|
||||
.Op Fl I Ar inflight I/Os
|
||||
.Op Fl x Ar dumpdir
|
||||
.Op Fl o Ar var=value
|
||||
.Ar poolname
|
||||
.Op Ar object ...
|
||||
.Nm
|
||||
@@ -65,7 +63,7 @@
|
||||
.Ar poolname
|
||||
.Nm
|
||||
.Fl l
|
||||
.Op Fl Aqu
|
||||
.Op Fl uA
|
||||
.Ar device
|
||||
.Nm
|
||||
.Fl C
|
||||
@@ -157,15 +155,10 @@ dataset.
|
||||
If specified multiple times, display counts of each intent log transaction
|
||||
type.
|
||||
.It Fl l Ar device
|
||||
Read the vdev labels from the specified device.
|
||||
Return 0 if a valid label was found, 1 if an error occurred, and 2 if no valid
|
||||
labels were found.
|
||||
Display the vdev labels from the specified device.
|
||||
If the
|
||||
.Fl u
|
||||
option is also specified, also display the uberblocks on this device.
|
||||
If the
|
||||
.Fl q
|
||||
option is also specified, also display the uberblocks on this device.
|
||||
.It Fl L
|
||||
Disable leak tracing and the loading of space maps.
|
||||
By default,
|
||||
@@ -259,10 +252,6 @@ Limit the number of outstanding checksum I/Os to the specified value.
|
||||
The default value is 200. This option affects the performance of the
|
||||
.Fl c
|
||||
option.
|
||||
.It Fl o Ar var=value
|
||||
Set the given global libzpool variable to the provided value. The value must be
|
||||
an unsigned 32-bit integer. Currently only little-endian systems are supported
|
||||
to avoid accidentally setting the high 32 bits of 64-bit variables.
|
||||
.It Fl P
|
||||
Print numbers in an unscaled form more amenable to parsing, eg. 1000000 rather
|
||||
than 1M.
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 2016 by Delphix. All rights reserved.
|
||||
* Copyright (c) 2014 Integros [integros.com]
|
||||
* Copyright 2016 Nexenta Systems, Inc.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
@@ -61,7 +60,6 @@
|
||||
#include <sys/ddt.h>
|
||||
#include <sys/zfeature.h>
|
||||
#include <zfs_comutil.h>
|
||||
#include <libcmdutils.h>
|
||||
#undef verify
|
||||
#include <libzfs.h>
|
||||
|
||||
@@ -119,9 +117,8 @@ static void
|
||||
usage(void)
|
||||
{
|
||||
(void) fprintf(stderr,
|
||||
"Usage: %s [-CmMdibcsDvhLXFPAG] [-t txg] [-e [-p path...]] "
|
||||
"[-U config] [-I inflight I/Os] [-x dumpdir] [-o var=value] "
|
||||
"poolname [object...]\n"
|
||||
"Usage: %s [-CumMdibcsDvhLXFPAG] [-t txg] [-e [-p path...]] "
|
||||
"[-U config] [-I inflight I/Os] [-x dumpdir] poolname [object...]\n"
|
||||
" %s [-divPA] [-e -p path...] [-U config] dataset "
|
||||
"[object...]\n"
|
||||
" %s -mM [-LXFPA] [-t txg] [-e [-p path...]] [-U config] "
|
||||
@@ -129,7 +126,7 @@ usage(void)
|
||||
" %s -R [-A] [-e [-p path...]] poolname "
|
||||
"vdev:offset:size[:flags]\n"
|
||||
" %s -S [-PA] [-e [-p path...]] [-U config] poolname\n"
|
||||
" %s -l [-Aqu] device\n"
|
||||
" %s -l [-uA] device\n"
|
||||
" %s -C [-A] [-U config]\n\n",
|
||||
cmdname, cmdname, cmdname, cmdname, cmdname, cmdname, cmdname);
|
||||
|
||||
@@ -140,6 +137,7 @@ usage(void)
|
||||
(void) fprintf(stderr, " If object numbers are specified, only "
|
||||
"those objects are dumped\n\n");
|
||||
(void) fprintf(stderr, " Options to control amount of output:\n");
|
||||
(void) fprintf(stderr, " -u uberblock\n");
|
||||
(void) fprintf(stderr, " -d dataset(s)\n");
|
||||
(void) fprintf(stderr, " -i intent logs\n");
|
||||
(void) fprintf(stderr, " -C config (or cachefile if alone)\n");
|
||||
@@ -153,7 +151,7 @@ usage(void)
|
||||
(void) fprintf(stderr, " -D dedup statistics\n");
|
||||
(void) fprintf(stderr, " -S simulate dedup to measure effect\n");
|
||||
(void) fprintf(stderr, " -v verbose (applies to all others)\n");
|
||||
(void) fprintf(stderr, " -l read label contents\n");
|
||||
(void) fprintf(stderr, " -l dump label contents\n");
|
||||
(void) fprintf(stderr, " -L disable leak tracking (do not "
|
||||
"load spacemaps)\n");
|
||||
(void) fprintf(stderr, " -R read and display block from a "
|
||||
@@ -182,10 +180,6 @@ usage(void)
|
||||
"checksumming I/Os [default is 200]\n");
|
||||
(void) fprintf(stderr, " -G dump zfs_dbgmsg buffer before "
|
||||
"exiting\n");
|
||||
(void) fprintf(stderr, " -o <variable>=<value> set global "
|
||||
"variable to an unsigned 32-bit integer value\n");
|
||||
(void) fprintf(stderr, " -q don't print label contents\n");
|
||||
(void) fprintf(stderr, " -u uberblock\n");
|
||||
(void) fprintf(stderr, "Specify an option more than once (e.g. -bb) "
|
||||
"to make only that option verbose\n");
|
||||
(void) fprintf(stderr, "Default is to dump everything non-verbosely\n");
|
||||
@@ -263,12 +257,12 @@ dump_history_offsets(objset_t *os, uint64_t object, void *data, size_t size)
|
||||
}
|
||||
|
||||
static void
|
||||
zdb_nicenum(uint64_t num, char *buf, size_t buflen)
|
||||
zdb_nicenum(uint64_t num, char *buf)
|
||||
{
|
||||
if (dump_opt['P'])
|
||||
(void) snprintf(buf, buflen, "%llu", (longlong_t)num);
|
||||
(void) sprintf(buf, "%llu", (longlong_t)num);
|
||||
else
|
||||
nicenum(num, buf, sizeof (buf));
|
||||
nicenum(num, buf);
|
||||
}
|
||||
|
||||
const char histo_stars[] = "****************************************";
|
||||
@@ -445,17 +439,12 @@ dump_bpobj(objset_t *os, uint64_t object, void *data, size_t size)
|
||||
bpobj_phys_t *bpop = data;
|
||||
char bytes[32], comp[32], uncomp[32];
|
||||
|
||||
/* make sure the output won't get truncated */
|
||||
CTASSERT(sizeof (bytes) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (comp) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (uncomp) >= NN_NUMBUF_SZ);
|
||||
|
||||
if (bpop == NULL)
|
||||
return;
|
||||
|
||||
zdb_nicenum(bpop->bpo_bytes, bytes, sizeof (bytes));
|
||||
zdb_nicenum(bpop->bpo_comp, comp, sizeof (comp));
|
||||
zdb_nicenum(bpop->bpo_uncomp, uncomp, sizeof (uncomp));
|
||||
zdb_nicenum(bpop->bpo_bytes, bytes);
|
||||
zdb_nicenum(bpop->bpo_comp, comp);
|
||||
zdb_nicenum(bpop->bpo_uncomp, uncomp);
|
||||
|
||||
(void) printf("\t\tnum_blkptrs = %llu\n",
|
||||
(u_longlong_t)bpop->bpo_num_blkptrs);
|
||||
@@ -748,10 +737,7 @@ dump_metaslab_stats(metaslab_t *msp)
|
||||
avl_tree_t *t = &msp->ms_size_tree;
|
||||
int free_pct = range_tree_space(rt) * 100 / msp->ms_size;
|
||||
|
||||
/* max sure nicenum has enough space */
|
||||
CTASSERT(sizeof (maxbuf) >= NN_NUMBUF_SZ);
|
||||
|
||||
zdb_nicenum(metaslab_block_maxsize(msp), maxbuf, sizeof (maxbuf));
|
||||
zdb_nicenum(metaslab_block_maxsize(msp), maxbuf);
|
||||
|
||||
(void) printf("\t %25s %10lu %7s %6s %4s %4d%%\n",
|
||||
"segments", avl_numnodes(t), "maxsize", maxbuf,
|
||||
@@ -768,8 +754,7 @@ dump_metaslab(metaslab_t *msp)
|
||||
space_map_t *sm = msp->ms_sm;
|
||||
char freebuf[32];
|
||||
|
||||
zdb_nicenum(msp->ms_size - space_map_allocated(sm), freebuf,
|
||||
sizeof (freebuf));
|
||||
zdb_nicenum(msp->ms_size - space_map_allocated(sm), freebuf);
|
||||
|
||||
(void) printf(
|
||||
"\tmetaslab %6llu offset %12llx spacemap %6llu free %5s\n",
|
||||
@@ -1352,9 +1337,6 @@ dump_dsl_dir(objset_t *os, uint64_t object, void *data, size_t size)
|
||||
time_t crtime;
|
||||
char nice[32];
|
||||
|
||||
/* make sure nicenum has enough space */
|
||||
CTASSERT(sizeof (nice) >= NN_NUMBUF_SZ);
|
||||
|
||||
if (dd == NULL)
|
||||
return;
|
||||
|
||||
@@ -1370,15 +1352,15 @@ dump_dsl_dir(objset_t *os, uint64_t object, void *data, size_t size)
|
||||
(u_longlong_t)dd->dd_origin_obj);
|
||||
(void) printf("\t\tchild_dir_zapobj = %llu\n",
|
||||
(u_longlong_t)dd->dd_child_dir_zapobj);
|
||||
zdb_nicenum(dd->dd_used_bytes, nice, sizeof (nice));
|
||||
zdb_nicenum(dd->dd_used_bytes, nice);
|
||||
(void) printf("\t\tused_bytes = %s\n", nice);
|
||||
zdb_nicenum(dd->dd_compressed_bytes, nice, sizeof (nice));
|
||||
zdb_nicenum(dd->dd_compressed_bytes, nice);
|
||||
(void) printf("\t\tcompressed_bytes = %s\n", nice);
|
||||
zdb_nicenum(dd->dd_uncompressed_bytes, nice, sizeof (nice));
|
||||
zdb_nicenum(dd->dd_uncompressed_bytes, nice);
|
||||
(void) printf("\t\tuncompressed_bytes = %s\n", nice);
|
||||
zdb_nicenum(dd->dd_quota, nice, sizeof (nice));
|
||||
zdb_nicenum(dd->dd_quota, nice);
|
||||
(void) printf("\t\tquota = %s\n", nice);
|
||||
zdb_nicenum(dd->dd_reserved, nice, sizeof (nice));
|
||||
zdb_nicenum(dd->dd_reserved, nice);
|
||||
(void) printf("\t\treserved = %s\n", nice);
|
||||
(void) printf("\t\tprops_zapobj = %llu\n",
|
||||
(u_longlong_t)dd->dd_props_zapobj);
|
||||
@@ -1388,8 +1370,7 @@ dump_dsl_dir(objset_t *os, uint64_t object, void *data, size_t size)
|
||||
(u_longlong_t)dd->dd_flags);
|
||||
|
||||
#define DO(which) \
|
||||
zdb_nicenum(dd->dd_used_breakdown[DD_USED_ ## which], nice, \
|
||||
sizeof (nice)); \
|
||||
zdb_nicenum(dd->dd_used_breakdown[DD_USED_ ## which], nice); \
|
||||
(void) printf("\t\tused_breakdown[" #which "] = %s\n", nice)
|
||||
DO(HEAD);
|
||||
DO(SNAP);
|
||||
@@ -1408,22 +1389,15 @@ dump_dsl_dataset(objset_t *os, uint64_t object, void *data, size_t size)
|
||||
char used[32], compressed[32], uncompressed[32], unique[32];
|
||||
char blkbuf[BP_SPRINTF_LEN];
|
||||
|
||||
/* make sure nicenum has enough space */
|
||||
CTASSERT(sizeof (used) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (compressed) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (uncompressed) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (unique) >= NN_NUMBUF_SZ);
|
||||
|
||||
if (ds == NULL)
|
||||
return;
|
||||
|
||||
ASSERT(size == sizeof (*ds));
|
||||
crtime = ds->ds_creation_time;
|
||||
zdb_nicenum(ds->ds_referenced_bytes, used, sizeof (used));
|
||||
zdb_nicenum(ds->ds_compressed_bytes, compressed, sizeof (compressed));
|
||||
zdb_nicenum(ds->ds_uncompressed_bytes, uncompressed,
|
||||
sizeof (uncompressed));
|
||||
zdb_nicenum(ds->ds_unique_bytes, unique, sizeof (unique));
|
||||
zdb_nicenum(ds->ds_referenced_bytes, used);
|
||||
zdb_nicenum(ds->ds_compressed_bytes, compressed);
|
||||
zdb_nicenum(ds->ds_uncompressed_bytes, uncompressed);
|
||||
zdb_nicenum(ds->ds_unique_bytes, unique);
|
||||
snprintf_blkptr(blkbuf, sizeof (blkbuf), &ds->ds_bp);
|
||||
|
||||
(void) printf("\t\tdir_obj = %llu\n",
|
||||
@@ -1482,15 +1456,12 @@ dump_bptree(objset_t *os, uint64_t obj, char *name)
|
||||
bptree_phys_t *bt;
|
||||
dmu_buf_t *db;
|
||||
|
||||
/* make sure nicenum has enough space */
|
||||
CTASSERT(sizeof (bytes) >= NN_NUMBUF_SZ);
|
||||
|
||||
if (dump_opt['d'] < 3)
|
||||
return;
|
||||
|
||||
VERIFY3U(0, ==, dmu_bonus_hold(os, obj, FTAG, &db));
|
||||
bt = db->db_data;
|
||||
zdb_nicenum(bt->bt_bytes, bytes, sizeof (bytes));
|
||||
zdb_nicenum(bt->bt_bytes, bytes);
|
||||
(void) printf("\n %s: %llu datasets, %s\n",
|
||||
name, (unsigned long long)(bt->bt_end - bt->bt_begin), bytes);
|
||||
dmu_buf_rele(db, FTAG);
|
||||
@@ -1522,18 +1493,13 @@ dump_full_bpobj(bpobj_t *bpo, char *name, int indent)
|
||||
char comp[32];
|
||||
char uncomp[32];
|
||||
|
||||
/* make sure nicenum has enough space */
|
||||
CTASSERT(sizeof (bytes) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (comp) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (uncomp) >= NN_NUMBUF_SZ);
|
||||
|
||||
if (dump_opt['d'] < 3)
|
||||
return;
|
||||
|
||||
zdb_nicenum(bpo->bpo_phys->bpo_bytes, bytes, sizeof (bytes));
|
||||
zdb_nicenum(bpo->bpo_phys->bpo_bytes, bytes);
|
||||
if (bpo->bpo_havesubobj && bpo->bpo_phys->bpo_subobjs != 0) {
|
||||
zdb_nicenum(bpo->bpo_phys->bpo_comp, comp, sizeof (comp));
|
||||
zdb_nicenum(bpo->bpo_phys->bpo_uncomp, uncomp, sizeof (uncomp));
|
||||
zdb_nicenum(bpo->bpo_phys->bpo_comp, comp);
|
||||
zdb_nicenum(bpo->bpo_phys->bpo_uncomp, uncomp);
|
||||
(void) printf(" %*s: object %llu, %llu local blkptrs, "
|
||||
"%llu subobjs in object %llu, %s (%s/%s comp)\n",
|
||||
indent * 8, name,
|
||||
@@ -1587,11 +1553,6 @@ dump_deadlist(dsl_deadlist_t *dl)
|
||||
char comp[32];
|
||||
char uncomp[32];
|
||||
|
||||
/* make sure nicenum has enough space */
|
||||
CTASSERT(sizeof (bytes) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (comp) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (uncomp) >= NN_NUMBUF_SZ);
|
||||
|
||||
if (dump_opt['d'] < 3)
|
||||
return;
|
||||
|
||||
@@ -1600,9 +1561,9 @@ dump_deadlist(dsl_deadlist_t *dl)
|
||||
return;
|
||||
}
|
||||
|
||||
zdb_nicenum(dl->dl_phys->dl_used, bytes, sizeof (bytes));
|
||||
zdb_nicenum(dl->dl_phys->dl_comp, comp, sizeof (comp));
|
||||
zdb_nicenum(dl->dl_phys->dl_uncomp, uncomp, sizeof (uncomp));
|
||||
zdb_nicenum(dl->dl_phys->dl_used, bytes);
|
||||
zdb_nicenum(dl->dl_phys->dl_comp, comp);
|
||||
zdb_nicenum(dl->dl_phys->dl_uncomp, uncomp);
|
||||
(void) printf("\n Deadlist: %s (%s/%s comp)\n",
|
||||
bytes, comp, uncomp);
|
||||
|
||||
@@ -1874,13 +1835,6 @@ dump_object(objset_t *os, uint64_t object, int verbosity, int *print_header)
|
||||
char aux[50];
|
||||
int error;
|
||||
|
||||
/* make sure nicenum has enough space */
|
||||
CTASSERT(sizeof (iblk) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (dblk) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (lsize) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (asize) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (bonus_size) >= NN_NUMBUF_SZ);
|
||||
|
||||
if (*print_header) {
|
||||
(void) printf("\n%10s %3s %5s %5s %5s %5s %6s %s\n",
|
||||
"Object", "lvl", "iblk", "dblk", "dsize", "lsize",
|
||||
@@ -1901,11 +1855,11 @@ dump_object(objset_t *os, uint64_t object, int verbosity, int *print_header)
|
||||
}
|
||||
dmu_object_info_from_dnode(dn, &doi);
|
||||
|
||||
zdb_nicenum(doi.doi_metadata_block_size, iblk, sizeof (iblk));
|
||||
zdb_nicenum(doi.doi_data_block_size, dblk, sizeof (dblk));
|
||||
zdb_nicenum(doi.doi_max_offset, lsize, sizeof (lsize));
|
||||
zdb_nicenum(doi.doi_physical_blocks_512 << 9, asize, sizeof (asize));
|
||||
zdb_nicenum(doi.doi_bonus_size, bonus_size, sizeof (bonus_size));
|
||||
zdb_nicenum(doi.doi_metadata_block_size, iblk);
|
||||
zdb_nicenum(doi.doi_data_block_size, dblk);
|
||||
zdb_nicenum(doi.doi_max_offset, lsize);
|
||||
zdb_nicenum(doi.doi_physical_blocks_512 << 9, asize);
|
||||
zdb_nicenum(doi.doi_bonus_size, bonus_size);
|
||||
(void) sprintf(fill, "%6.2f", 100.0 * doi.doi_fill_count *
|
||||
doi.doi_data_block_size / (object == 0 ? DNODES_PER_BLOCK : 1) /
|
||||
doi.doi_max_offset);
|
||||
@@ -1968,8 +1922,6 @@ dump_object(objset_t *os, uint64_t object, int verbosity, int *print_header)
|
||||
|
||||
for (;;) {
|
||||
char segsize[32];
|
||||
/* make sure nicenum has enough space */
|
||||
CTASSERT(sizeof (segsize) >= NN_NUMBUF_SZ);
|
||||
error = dnode_next_offset(dn,
|
||||
0, &start, minlvl, blkfill, 0);
|
||||
if (error)
|
||||
@@ -1977,7 +1929,7 @@ dump_object(objset_t *os, uint64_t object, int verbosity, int *print_header)
|
||||
end = start;
|
||||
error = dnode_next_offset(dn,
|
||||
DNODE_FIND_HOLE, &end, minlvl, blkfill, 0);
|
||||
zdb_nicenum(end - start, segsize, sizeof (segsize));
|
||||
zdb_nicenum(end - start, segsize);
|
||||
(void) printf("\t\tsegment [%016llx, %016llx)"
|
||||
" size %5s\n", (u_longlong_t)start,
|
||||
(u_longlong_t)end, segsize);
|
||||
@@ -2008,9 +1960,6 @@ dump_dir(objset_t *os)
|
||||
int print_header = 1;
|
||||
int i, error;
|
||||
|
||||
/* make sure nicenum has enough space */
|
||||
CTASSERT(sizeof (numbuf) >= NN_NUMBUF_SZ);
|
||||
|
||||
dsl_pool_config_enter(dmu_objset_pool(os), FTAG);
|
||||
dmu_objset_fast_stat(os, &dds);
|
||||
dsl_pool_config_exit(dmu_objset_pool(os), FTAG);
|
||||
@@ -2029,7 +1978,7 @@ dump_dir(objset_t *os)
|
||||
|
||||
ASSERT3U(usedobjs, ==, BP_GET_FILL(os->os_rootbp));
|
||||
|
||||
zdb_nicenum(refdbytes, numbuf, sizeof (numbuf));
|
||||
zdb_nicenum(refdbytes, numbuf);
|
||||
|
||||
if (verbosity >= 4) {
|
||||
(void) snprintf(blkbuf, sizeof (blkbuf), ", rootbp ");
|
||||
@@ -2205,48 +2154,45 @@ dump_label_uberblocks(vdev_label_t *lbl, uint64_t ashift)
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
static void
|
||||
dump_label(const char *dev)
|
||||
{
|
||||
int fd;
|
||||
vdev_label_t label;
|
||||
char path[MAXPATHLEN];
|
||||
char *buf = label.vl_vdev_phys.vp_nvlist;
|
||||
char *path, *buf = label.vl_vdev_phys.vp_nvlist;
|
||||
size_t buflen = sizeof (label.vl_vdev_phys.vp_nvlist);
|
||||
struct stat64 statbuf;
|
||||
uint64_t psize, ashift;
|
||||
boolean_t label_found = B_FALSE;
|
||||
int len = strlen(dev) + 1;
|
||||
|
||||
(void) strlcpy(path, dev, sizeof (path));
|
||||
if (dev[0] == '/') {
|
||||
if (strncmp(dev, ZFS_DISK_ROOTD,
|
||||
strlen(ZFS_DISK_ROOTD)) == 0) {
|
||||
(void) snprintf(path, sizeof (path), "%s%s",
|
||||
ZFS_RDISK_ROOTD, dev + strlen(ZFS_DISK_ROOTD));
|
||||
}
|
||||
} else if (stat64(path, &statbuf) != 0) {
|
||||
char *s;
|
||||
|
||||
(void) snprintf(path, sizeof (path), "%s%s", ZFS_RDISK_ROOTD,
|
||||
dev);
|
||||
if ((s = strrchr(dev, 's')) == NULL || !isdigit(*(s + 1)))
|
||||
(void) strlcat(path, "s0", sizeof (path));
|
||||
if (strncmp(dev, ZFS_DISK_ROOTD, strlen(ZFS_DISK_ROOTD)) == 0) {
|
||||
len++;
|
||||
path = malloc(len);
|
||||
(void) snprintf(path, len, "%s%s", ZFS_RDISK_ROOTD,
|
||||
dev + strlen(ZFS_DISK_ROOTD));
|
||||
} else {
|
||||
path = strdup(dev);
|
||||
}
|
||||
|
||||
if (stat64(path, &statbuf) != 0) {
|
||||
if ((fd = open64(path, O_RDONLY)) < 0) {
|
||||
(void) printf("cannot open '%s': %s\n", path, strerror(errno));
|
||||
free(path);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (fstat64(fd, &statbuf) != 0) {
|
||||
(void) printf("failed to stat '%s': %s\n", path,
|
||||
strerror(errno));
|
||||
free(path);
|
||||
(void) close(fd);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (S_ISBLK(statbuf.st_mode)) {
|
||||
(void) printf("cannot use '%s': character device required\n",
|
||||
path);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if ((fd = open64(path, O_RDONLY)) < 0) {
|
||||
(void) printf("cannot open '%s': %s\n", path, strerror(errno));
|
||||
free(path);
|
||||
(void) close(fd);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -2256,43 +2202,36 @@ dump_label(const char *dev)
|
||||
for (int l = 0; l < VDEV_LABELS; l++) {
|
||||
nvlist_t *config = NULL;
|
||||
|
||||
if (!dump_opt['q']) {
|
||||
(void) printf("------------------------------------\n");
|
||||
(void) printf("LABEL %d\n", l);
|
||||
(void) printf("------------------------------------\n");
|
||||
}
|
||||
(void) printf("--------------------------------------------\n");
|
||||
(void) printf("LABEL %d\n", l);
|
||||
(void) printf("--------------------------------------------\n");
|
||||
|
||||
if (pread64(fd, &label, sizeof (label),
|
||||
vdev_label_offset(psize, l, 0)) != sizeof (label)) {
|
||||
if (!dump_opt['q'])
|
||||
(void) printf("failed to read label %d\n", l);
|
||||
(void) printf("failed to read label %d\n", l);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (nvlist_unpack(buf, buflen, &config, 0) != 0) {
|
||||
if (!dump_opt['q'])
|
||||
(void) printf("failed to unpack label %d\n", l);
|
||||
(void) printf("failed to unpack label %d\n", l);
|
||||
ashift = SPA_MINBLOCKSHIFT;
|
||||
} else {
|
||||
nvlist_t *vdev_tree = NULL;
|
||||
|
||||
if (!dump_opt['q'])
|
||||
dump_nvlist(config, 4);
|
||||
dump_nvlist(config, 4);
|
||||
if ((nvlist_lookup_nvlist(config,
|
||||
ZPOOL_CONFIG_VDEV_TREE, &vdev_tree) != 0) ||
|
||||
(nvlist_lookup_uint64(vdev_tree,
|
||||
ZPOOL_CONFIG_ASHIFT, &ashift) != 0))
|
||||
ashift = SPA_MINBLOCKSHIFT;
|
||||
nvlist_free(config);
|
||||
label_found = B_TRUE;
|
||||
}
|
||||
if (dump_opt['u'])
|
||||
dump_label_uberblocks(&label, ashift);
|
||||
}
|
||||
|
||||
free(path);
|
||||
(void) close(fd);
|
||||
|
||||
return (label_found ? 0 : 2);
|
||||
}
|
||||
|
||||
static uint64_t dataset_feature_count[SPA_FEATURES];
|
||||
@@ -2572,9 +2511,6 @@ zdb_blkptr_cb(spa_t *spa, zilog_t *zilog, const blkptr_t *bp,
|
||||
int sec_remaining =
|
||||
(zcb->zcb_totalasize - bytes) / 1024 / kb_per_sec;
|
||||
|
||||
/* make sure nicenum has enough space */
|
||||
CTASSERT(sizeof (buf) >= NN_NUMBUF_SZ);
|
||||
|
||||
zfs_nicenum(bytes, buf, sizeof (buf));
|
||||
(void) fprintf(stderr,
|
||||
"\r%5s completed (%4dMB/s) "
|
||||
@@ -2907,14 +2843,6 @@ dump_block_stats(spa_t *spa)
|
||||
char avg[32], gang[32];
|
||||
char *typename;
|
||||
|
||||
/* make sure nicenum has enough space */
|
||||
CTASSERT(sizeof (csize) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (lsize) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (psize) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (asize) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (avg) >= NN_NUMBUF_SZ);
|
||||
CTASSERT(sizeof (gang) >= NN_NUMBUF_SZ);
|
||||
|
||||
if (t < DMU_OT_NUMTYPES)
|
||||
typename = dmu_ot[t].ot_name;
|
||||
else
|
||||
@@ -2948,17 +2876,12 @@ dump_block_stats(spa_t *spa)
|
||||
zcb.zcb_type[ZB_TOTAL][t].zb_asize)
|
||||
continue;
|
||||
|
||||
zdb_nicenum(zb->zb_count, csize,
|
||||
sizeof (csize));
|
||||
zdb_nicenum(zb->zb_lsize, lsize,
|
||||
sizeof (lsize));
|
||||
zdb_nicenum(zb->zb_psize, psize,
|
||||
sizeof (psize));
|
||||
zdb_nicenum(zb->zb_asize, asize,
|
||||
sizeof (asize));
|
||||
zdb_nicenum(zb->zb_asize / zb->zb_count, avg,
|
||||
sizeof (avg));
|
||||
zdb_nicenum(zb->zb_gangs, gang, sizeof (gang));
|
||||
zdb_nicenum(zb->zb_count, csize);
|
||||
zdb_nicenum(zb->zb_lsize, lsize);
|
||||
zdb_nicenum(zb->zb_psize, psize);
|
||||
zdb_nicenum(zb->zb_asize, asize);
|
||||
zdb_nicenum(zb->zb_asize / zb->zb_count, avg);
|
||||
zdb_nicenum(zb->zb_gangs, gang);
|
||||
|
||||
(void) printf("%6s\t%5s\t%5s\t%5s\t%5s"
|
||||
"\t%5.2f\t%6.2f\t",
|
||||
@@ -3664,7 +3587,7 @@ main(int argc, char **argv)
|
||||
spa_config_path = spa_config_path_env;
|
||||
|
||||
while ((c = getopt(argc, argv,
|
||||
"bcdhilmMI:suCDRSAFLXx:evp:t:U:PGo:q")) != -1) {
|
||||
"bcdhilmMI:suCDRSAFLXx:evp:t:U:PG")) != -1) {
|
||||
switch (c) {
|
||||
case 'b':
|
||||
case 'c':
|
||||
@@ -3690,7 +3613,6 @@ main(int argc, char **argv)
|
||||
case 'X':
|
||||
case 'e':
|
||||
case 'P':
|
||||
case 'q':
|
||||
dump_opt[c]++;
|
||||
break;
|
||||
case 'I':
|
||||
@@ -3734,11 +3656,6 @@ main(int argc, char **argv)
|
||||
case 'x':
|
||||
vn_dumpdir = optarg;
|
||||
break;
|
||||
case 'o':
|
||||
error = set_global_var(optarg);
|
||||
if (error != 0)
|
||||
usage();
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
break;
|
||||
@@ -3794,8 +3711,10 @@ main(int argc, char **argv)
|
||||
usage();
|
||||
}
|
||||
|
||||
if (dump_opt['l'])
|
||||
return (dump_label(argv[0]));
|
||||
if (dump_opt['l']) {
|
||||
dump_label(argv[0]);
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (dump_opt['X'] || dump_opt['F'])
|
||||
rewind = ZPOOL_DO_REWIND |
|
||||
|
||||
@@ -57,7 +57,6 @@
|
||||
.Ar ...
|
||||
.Op Fl m Ar mountpoint
|
||||
.Op Fl R Ar root
|
||||
.Op Fl t Ar tempname
|
||||
.Ar pool vdev ...
|
||||
.Nm
|
||||
.Cm destroy
|
||||
@@ -109,7 +108,6 @@
|
||||
.Op Fl m
|
||||
.Op Fl N
|
||||
.Op Fl R Ar root
|
||||
.Op Fl t
|
||||
.Op Fl F Op Fl n
|
||||
.Ar pool | id
|
||||
.Op Ar newpool
|
||||
@@ -870,7 +868,6 @@ do not actually discard any transactions.
|
||||
.Ar ...
|
||||
.Op Fl m Ar mountpoint
|
||||
.Op Fl R Ar root
|
||||
.Op Fl t Ar tempname
|
||||
.Ar pool vdev ...
|
||||
.Xc
|
||||
.Pp
|
||||
@@ -972,18 +969,6 @@ or
|
||||
.Qq Cm none .
|
||||
For more information on dataset mount points, see
|
||||
.Xr zfs 8 .
|
||||
.It Fl t Ar tempname
|
||||
Sets the in-core pool name to
|
||||
.Pa tempname
|
||||
while the on-disk name will be the name specified as the pool name
|
||||
.Pa pool .
|
||||
This will set the default
|
||||
.Sy cachefile
|
||||
property to
|
||||
.Sy none .
|
||||
This is intended to handle name space collisions when creating pools
|
||||
for other systems, such as virtual machines or physical machines
|
||||
whose pools live on network block devices.
|
||||
.El
|
||||
.It Xo
|
||||
.Nm
|
||||
@@ -1238,7 +1223,6 @@ Searches for and imports all pools found.
|
||||
.Op Fl m
|
||||
.Op Fl N
|
||||
.Op Fl R Ar root
|
||||
.Op Fl t
|
||||
.Op Fl F Op Fl n
|
||||
.Ar pool | id
|
||||
.Op Ar newpool
|
||||
@@ -1298,20 +1282,6 @@ Import the pool without mounting any file systems.
|
||||
.It Fl R Ar root
|
||||
Equivalent to
|
||||
.Qq Fl o Cm cachefile=none,altroot= Ns Pa root
|
||||
.It Fl t
|
||||
Used with
|
||||
.Ar newpool .
|
||||
Specifies that
|
||||
.Ar newpool
|
||||
is temporary.
|
||||
Temporary pool names last until export.
|
||||
Ensures that the original pool name will be used in all label updates and
|
||||
therefore is retained upon export.
|
||||
Will also set
|
||||
.Sy cachefile
|
||||
property to
|
||||
.Sy none
|
||||
when not explicitly specified.
|
||||
.It Fl F
|
||||
Recovery mode for a non-importable pool. Attempt to return the pool to an
|
||||
importable state by discarding the last few transactions. Not all damaged pools
|
||||
|
||||
@@ -212,9 +212,8 @@ get_usage(zpool_help_t idx)
|
||||
return (gettext("\tclear [-nF] <pool> [device]\n"));
|
||||
case HELP_CREATE:
|
||||
return (gettext("\tcreate [-fnd] [-o property=value] ... \n"
|
||||
"\t [-O file-system-property=value] ...\n"
|
||||
"\t [-m mountpoint] [-R root] [-t tempname] "
|
||||
"<pool> <vdev> ...\n"));
|
||||
"\t [-O file-system-property=value] ... \n"
|
||||
"\t [-m mountpoint] [-R root] <pool> <vdev> ...\n"));
|
||||
case HELP_DESTROY:
|
||||
return (gettext("\tdestroy [-f] <pool>\n"));
|
||||
case HELP_DETACH:
|
||||
@@ -231,7 +230,7 @@ get_usage(zpool_help_t idx)
|
||||
"[-R root] [-F [-n]] -a\n"
|
||||
"\timport [-o mntopts] [-o property=value] ... \n"
|
||||
"\t [-d dir | -c cachefile] [-D] [-f] [-m] [-N] "
|
||||
"[-R root] [-F [-n]] [-t]\n"
|
||||
"[-R root] [-F [-n]]\n"
|
||||
"\t <pool | id> [newpool]\n"));
|
||||
case HELP_IOSTAT:
|
||||
return (gettext("\tiostat [-v] [-T d|u] [pool] ... [interval "
|
||||
@@ -480,21 +479,6 @@ add_prop_list(const char *propname, char *propval, nvlist_t **props,
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set a default property pair (name, string-value) in a property nvlist
|
||||
*/
|
||||
static int
|
||||
add_prop_list_default(const char *propname, char *propval, nvlist_t **props,
|
||||
boolean_t poolprop)
|
||||
{
|
||||
char *pval;
|
||||
|
||||
if (nvlist_lookup_string(*props, propname, &pval) == 0)
|
||||
return (0);
|
||||
|
||||
return (add_prop_list(propname, propval, props, poolprop));
|
||||
}
|
||||
|
||||
/*
|
||||
* zpool add [-fn] <pool> <vdev> ...
|
||||
*
|
||||
@@ -720,7 +704,7 @@ zpool_do_labelclear(int argc, char **argv)
|
||||
return (1);
|
||||
}
|
||||
|
||||
if (zpool_read_label(fd, &config) != 0) {
|
||||
if (zpool_read_label(fd, &config) != 0 || config == NULL) {
|
||||
(void) fprintf(stderr,
|
||||
gettext("failed to read label from %s\n"), vdev);
|
||||
return (1);
|
||||
@@ -791,15 +775,14 @@ errout:
|
||||
/*
|
||||
* zpool create [-fnd] [-o property=value] ...
|
||||
* [-O file-system-property=value] ...
|
||||
* [-R root] [-m mountpoint] [-t tempname] <pool> <dev> ...
|
||||
* [-R root] [-m mountpoint] <pool> <dev> ...
|
||||
*
|
||||
* -f Force creation, even if devices appear in use
|
||||
* -n Do not create the pool, but display the resulting layout if it
|
||||
* were to be created.
|
||||
* -R Create a pool under an alternate root
|
||||
* -m Set default mountpoint for the root dataset. By default it's
|
||||
* -R Create a pool under an alternate root
|
||||
* -m Set default mountpoint for the root dataset. By default it's
|
||||
* '/<pool>'
|
||||
* -t Use the temporary name until the pool is exported.
|
||||
* -o Set property=value.
|
||||
* -d Don't automatically enable all supported pool features
|
||||
* (individual features can be enabled with -o).
|
||||
@@ -819,7 +802,6 @@ zpool_do_create(int argc, char **argv)
|
||||
int c;
|
||||
nvlist_t *nvroot = NULL;
|
||||
char *poolname;
|
||||
char *tname = NULL;
|
||||
int ret = 1;
|
||||
char *altroot = NULL;
|
||||
char *mountpoint = NULL;
|
||||
@@ -828,7 +810,7 @@ zpool_do_create(int argc, char **argv)
|
||||
char *propval;
|
||||
|
||||
/* check options */
|
||||
while ((c = getopt(argc, argv, ":fndR:m:o:O:t:")) != -1) {
|
||||
while ((c = getopt(argc, argv, ":fndR:m:o:O:")) != -1) {
|
||||
switch (c) {
|
||||
case 'f':
|
||||
force = B_TRUE;
|
||||
@@ -844,7 +826,11 @@ zpool_do_create(int argc, char **argv)
|
||||
if (add_prop_list(zpool_prop_to_name(
|
||||
ZPOOL_PROP_ALTROOT), optarg, &props, B_TRUE))
|
||||
goto errout;
|
||||
if (add_prop_list_default(zpool_prop_to_name(
|
||||
if (nvlist_lookup_string(props,
|
||||
zpool_prop_to_name(ZPOOL_PROP_CACHEFILE),
|
||||
&propval) == 0)
|
||||
break;
|
||||
if (add_prop_list(zpool_prop_to_name(
|
||||
ZPOOL_PROP_CACHEFILE), "none", &props, B_TRUE))
|
||||
goto errout;
|
||||
break;
|
||||
@@ -903,27 +889,6 @@ zpool_do_create(int argc, char **argv)
|
||||
goto errout;
|
||||
}
|
||||
break;
|
||||
case 't':
|
||||
/*
|
||||
* Sanity check temporary pool name.
|
||||
*/
|
||||
if (strchr(optarg, '/') != NULL) {
|
||||
(void) fprintf(stderr, gettext("cannot create "
|
||||
"'%s': invalid character '/' in temporary "
|
||||
"name\n"), optarg);
|
||||
(void) fprintf(stderr, gettext("use 'zfs "
|
||||
"create' to create a dataset\n"));
|
||||
goto errout;
|
||||
}
|
||||
|
||||
if (add_prop_list(zpool_prop_to_name(
|
||||
ZPOOL_PROP_TNAME), optarg, &props, B_TRUE))
|
||||
goto errout;
|
||||
if (add_prop_list_default(zpool_prop_to_name(
|
||||
ZPOOL_PROP_CACHEFILE), "none", &props, B_TRUE))
|
||||
goto errout;
|
||||
tname = optarg;
|
||||
break;
|
||||
case ':':
|
||||
(void) fprintf(stderr, gettext("missing argument for "
|
||||
"'%c' option\n"), optopt);
|
||||
@@ -1096,8 +1061,8 @@ zpool_do_create(int argc, char **argv)
|
||||
ret = 1;
|
||||
if (zpool_create(g_zfs, poolname,
|
||||
nvroot, props, fsprops) == 0) {
|
||||
zfs_handle_t *pool = zfs_open(g_zfs,
|
||||
tname ? tname : poolname, ZFS_TYPE_FILESYSTEM);
|
||||
zfs_handle_t *pool = zfs_open(g_zfs, poolname,
|
||||
ZFS_TYPE_FILESYSTEM);
|
||||
if (pool != NULL) {
|
||||
if (zfs_mount(pool, NULL, 0) == 0)
|
||||
ret = zfs_shareall(pool);
|
||||
@@ -1966,8 +1931,7 @@ do_import(nvlist_t *config, const char *newname, const char *mntopts,
|
||||
* import [-o mntopts] [-o prop=value] ... [-R root] [-D]
|
||||
* [-d dir | -c cachefile] [-f] -a
|
||||
* import [-o mntopts] [-o prop=value] ... [-R root] [-D]
|
||||
* [-d dir | -c cachefile] [-f] [-n] [-F] [-t]
|
||||
* <pool | id> [newpool]
|
||||
* [-d dir | -c cachefile] [-f] [-n] [-F] <pool | id> [newpool]
|
||||
*
|
||||
* -c Read pool information from a cachefile instead of searching
|
||||
* devices.
|
||||
@@ -1996,9 +1960,6 @@ do_import(nvlist_t *config, const char *newname, const char *mntopts,
|
||||
*
|
||||
* -N Import the pool but don't mount datasets.
|
||||
*
|
||||
* -t Use newpool as a temporary pool name instead of renaming
|
||||
* the pool.
|
||||
*
|
||||
* -T Specify a starting txg to use for import. This option is
|
||||
* intentionally undocumented option for testing purposes.
|
||||
*
|
||||
@@ -2040,7 +2001,7 @@ zpool_do_import(int argc, char **argv)
|
||||
char *endptr;
|
||||
|
||||
/* check options */
|
||||
while ((c = getopt(argc, argv, ":aCc:d:DEfFmnNo:R:tT:VX")) != -1) {
|
||||
while ((c = getopt(argc, argv, ":aCc:d:DEfFmnNo:R:T:VX")) != -1) {
|
||||
switch (c) {
|
||||
case 'a':
|
||||
do_all = B_TRUE;
|
||||
@@ -2094,13 +2055,11 @@ zpool_do_import(int argc, char **argv)
|
||||
if (add_prop_list(zpool_prop_to_name(
|
||||
ZPOOL_PROP_ALTROOT), optarg, &props, B_TRUE))
|
||||
goto error;
|
||||
if (add_prop_list_default(zpool_prop_to_name(
|
||||
ZPOOL_PROP_CACHEFILE), "none", &props, B_TRUE))
|
||||
goto error;
|
||||
break;
|
||||
case 't':
|
||||
flags |= ZFS_IMPORT_TEMP_NAME;
|
||||
if (add_prop_list_default(zpool_prop_to_name(
|
||||
if (nvlist_lookup_string(props,
|
||||
zpool_prop_to_name(ZPOOL_PROP_CACHEFILE),
|
||||
&propval) == 0)
|
||||
break;
|
||||
if (add_prop_list(zpool_prop_to_name(
|
||||
ZPOOL_PROP_CACHEFILE), "none", &props, B_TRUE))
|
||||
goto error;
|
||||
break;
|
||||
@@ -2234,9 +2193,9 @@ zpool_do_import(int argc, char **argv)
|
||||
(void) fprintf(stderr, gettext("cannot import '%s': "
|
||||
"a pool with that name already exists\n"),
|
||||
argv[0]);
|
||||
(void) fprintf(stderr, gettext("use the form 'zpool import "
|
||||
"[-t] <pool | id> <newpool>' to give it a new temporary "
|
||||
"or permanent name\n"));
|
||||
(void) fprintf(stderr, gettext("use the form '%s "
|
||||
"<pool | id> <newpool>' to give it a new name\n"),
|
||||
"zpool import");
|
||||
err = 1;
|
||||
} else if (pools == NULL && idata.exists) {
|
||||
(void) fprintf(stderr, gettext("cannot import '%s': "
|
||||
|
||||
@@ -684,21 +684,6 @@ get_replication(nvlist_t *nvroot, boolean_t fatal)
|
||||
verify(nvlist_lookup_string(cnv,
|
||||
ZPOOL_CONFIG_TYPE,
|
||||
&childtype) == 0);
|
||||
if (strcmp(childtype,
|
||||
VDEV_TYPE_SPARE) == 0) {
|
||||
/* We have a replacing vdev with
|
||||
* a spare child. Get the first
|
||||
* real child of the spare
|
||||
*/
|
||||
verify(
|
||||
nvlist_lookup_nvlist_array(
|
||||
cnv,
|
||||
ZPOOL_CONFIG_CHILDREN,
|
||||
&rchild,
|
||||
&rchildren) == 0);
|
||||
assert(rchildren >= 2);
|
||||
cnv = rchild[0];
|
||||
}
|
||||
}
|
||||
|
||||
verify(nvlist_lookup_string(cnv,
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
* Copyright (c) 2012 Martin Matuska <mm@FreeBSD.org>. All rights reserved.
|
||||
* Copyright (c) 2013 Steven Hartland. All rights reserved.
|
||||
* Copyright (c) 2014 Integros [integros.com]
|
||||
* Copyright 2017 Joyent, Inc.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -125,7 +124,6 @@
|
||||
#include <errno.h>
|
||||
#include <sys/fs/zfs.h>
|
||||
#include <libnvpair.h>
|
||||
#include <libcmdutils.h>
|
||||
|
||||
static int ztest_fd_data = -1;
|
||||
static int ztest_fd_rand = -1;
|
||||
@@ -556,13 +554,12 @@ usage(boolean_t requested)
|
||||
{
|
||||
const ztest_shared_opts_t *zo = &ztest_opts_defaults;
|
||||
|
||||
char nice_vdev_size[NN_NUMBUF_SZ];
|
||||
char nice_gang_bang[NN_NUMBUF_SZ];
|
||||
char nice_vdev_size[10];
|
||||
char nice_gang_bang[10];
|
||||
FILE *fp = requested ? stdout : stderr;
|
||||
|
||||
nicenum(zo->zo_vdev_size, nice_vdev_size, sizeof (nice_vdev_size));
|
||||
nicenum(zo->zo_metaslab_gang_bang, nice_gang_bang,
|
||||
sizeof (nice_gang_bang));
|
||||
nicenum(zo->zo_vdev_size, nice_vdev_size);
|
||||
nicenum(zo->zo_metaslab_gang_bang, nice_gang_bang);
|
||||
|
||||
(void) fprintf(fp, "Usage: %s\n"
|
||||
"\t[-v vdevs (default: %llu)]\n"
|
||||
@@ -584,8 +581,6 @@ usage(boolean_t requested)
|
||||
"\t[-F freezeloops (default: %llu)] max loops in spa_freeze()\n"
|
||||
"\t[-P passtime (default: %llu sec)] time per pass\n"
|
||||
"\t[-B alt_ztest (default: <none>)] alternate ztest path\n"
|
||||
"\t[-o variable=value] ... set global variable to an unsigned\n"
|
||||
"\t 32-bit integer value\n"
|
||||
"\t[-h] (print help)\n"
|
||||
"",
|
||||
zo->zo_pool,
|
||||
@@ -621,7 +616,7 @@ process_options(int argc, char **argv)
|
||||
bcopy(&ztest_opts_defaults, zo, sizeof (*zo));
|
||||
|
||||
while ((opt = getopt(argc, argv,
|
||||
"v:s:a:m:r:R:d:t:g:i:k:p:f:VET:P:hF:B:o:")) != EOF) {
|
||||
"v:s:a:m:r:R:d:t:g:i:k:p:f:VET:P:hF:B:")) != EOF) {
|
||||
value = 0;
|
||||
switch (opt) {
|
||||
case 'v':
|
||||
@@ -708,10 +703,6 @@ process_options(int argc, char **argv)
|
||||
case 'B':
|
||||
(void) strlcpy(altdir, optarg, sizeof (altdir));
|
||||
break;
|
||||
case 'o':
|
||||
if (set_global_var(optarg) != 0)
|
||||
usage(B_FALSE);
|
||||
break;
|
||||
case 'h':
|
||||
usage(B_TRUE);
|
||||
break;
|
||||
@@ -3159,10 +3150,10 @@ ztest_vdev_LUN_growth(ztest_ds_t *zd, uint64_t id)
|
||||
old_class_space, new_class_space);
|
||||
|
||||
if (ztest_opts.zo_verbose >= 5) {
|
||||
char oldnumbuf[NN_NUMBUF_SZ], newnumbuf[NN_NUMBUF_SZ];
|
||||
char oldnumbuf[6], newnumbuf[6];
|
||||
|
||||
nicenum(old_class_space, oldnumbuf, sizeof (oldnumbuf));
|
||||
nicenum(new_class_space, newnumbuf, sizeof (newnumbuf));
|
||||
nicenum(old_class_space, oldnumbuf);
|
||||
nicenum(new_class_space, newnumbuf);
|
||||
(void) printf("%s grew from %s to %s\n",
|
||||
spa->spa_name, oldnumbuf, newnumbuf);
|
||||
}
|
||||
@@ -6199,7 +6190,7 @@ main(int argc, char **argv)
|
||||
ztest_info_t *zi;
|
||||
ztest_shared_callstate_t *zc;
|
||||
char timebuf[100];
|
||||
char numbuf[NN_NUMBUF_SZ];
|
||||
char numbuf[6];
|
||||
spa_t *spa;
|
||||
char *cmd;
|
||||
boolean_t hasalt;
|
||||
@@ -6336,7 +6327,7 @@ main(int argc, char **argv)
|
||||
|
||||
now = MIN(now, zs->zs_proc_stop);
|
||||
print_time(zs->zs_proc_stop - now, timebuf);
|
||||
nicenum(zs->zs_space, numbuf, sizeof (numbuf));
|
||||
nicenum(zs->zs_space, numbuf);
|
||||
|
||||
(void) printf("Pass %3d, %8s, %3llu ENOSPC, "
|
||||
"%4.1f%% of %5s used, %3.0f%% done, %8s to go\n",
|
||||
|
||||
@@ -1,130 +0,0 @@
|
||||
/*
|
||||
* 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 (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2017 Jason king
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/debug.h>
|
||||
#include "libcmdutils.h"
|
||||
|
||||
/* The largest suffix that can fit, aka an exabyte (2^60 / 10^18) */
|
||||
#define INDEX_MAX (6)
|
||||
|
||||
/* Verify INDEX_MAX fits */
|
||||
CTASSERT(INDEX_MAX * 10 < sizeof (uint64_t) * 8);
|
||||
|
||||
void
|
||||
nicenum_scale(uint64_t n, size_t units, char *buf, size_t buflen,
|
||||
uint32_t flags)
|
||||
{
|
||||
uint64_t divamt = 1024;
|
||||
uint64_t divisor = 1;
|
||||
int index = 0;
|
||||
int rc = 0;
|
||||
char u;
|
||||
|
||||
if (units == 0)
|
||||
units = 1;
|
||||
|
||||
if (n > 0) {
|
||||
n *= units;
|
||||
if (n < units)
|
||||
goto overflow;
|
||||
}
|
||||
|
||||
if (flags & NN_DIVISOR_1000)
|
||||
divamt = 1000;
|
||||
|
||||
/*
|
||||
* This tries to find the suffix S(n) such that
|
||||
* S(n) <= n < S(n+1), where S(n) = 2^(n*10) | 10^(3*n)
|
||||
* (i.e. 1024/1000, 1,048,576/1,000,000, etc). Stop once S(n)
|
||||
* is the largest prefix supported (i.e. don't bother computing
|
||||
* and checking S(n+1). Since INDEX_MAX should be the largest
|
||||
* suffix that fits (currently an exabyte), S(INDEX_MAX + 1) is
|
||||
* never checked as it would overflow.
|
||||
*/
|
||||
while (index < INDEX_MAX) {
|
||||
uint64_t newdiv = divisor * divamt;
|
||||
|
||||
/* CTASSERT() guarantee these never trip */
|
||||
VERIFY3U(newdiv, >=, divamt);
|
||||
VERIFY3U(newdiv, >=, divisor);
|
||||
|
||||
if (n < newdiv)
|
||||
break;
|
||||
|
||||
divisor = newdiv;
|
||||
index++;
|
||||
}
|
||||
|
||||
u = " KMGTPE"[index];
|
||||
|
||||
if (index == 0) {
|
||||
rc = snprintf(buf, buflen, "%llu", n);
|
||||
} else if (n % divisor == 0) {
|
||||
/*
|
||||
* If this is an even multiple of the base, always display
|
||||
* without any decimal precision.
|
||||
*/
|
||||
rc = snprintf(buf, buflen, "%llu%c", n / divisor, u);
|
||||
} else {
|
||||
/*
|
||||
* We want to choose a precision that reflects the best choice
|
||||
* for fitting in 5 characters. This can get rather tricky
|
||||
* when we have numbers that are very close to an order of
|
||||
* magnitude. For example, when displaying 10239 (which is
|
||||
* really 9.999K), we want only a single place of precision
|
||||
* for 10.0K. We could develop some complex heuristics for
|
||||
* this, but it's much easier just to try each combination
|
||||
* in turn.
|
||||
*/
|
||||
int i;
|
||||
for (i = 2; i >= 0; i--) {
|
||||
if ((rc = snprintf(buf, buflen, "%.*f%c", i,
|
||||
(double)n / divisor, u)) <= 5)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (rc + 1 > buflen || rc < 0)
|
||||
goto overflow;
|
||||
|
||||
return;
|
||||
|
||||
overflow:
|
||||
/* prefer a more verbose message if possible */
|
||||
if (buflen > 10)
|
||||
(void) strlcpy(buf, "<overflow>", buflen);
|
||||
else
|
||||
(void) strlcpy(buf, "??", buflen);
|
||||
}
|
||||
|
||||
void
|
||||
nicenum(uint64_t num, char *buf, size_t buflen)
|
||||
{
|
||||
nicenum_scale(num, 1, buf, buflen, 0);
|
||||
}
|
||||
@@ -1,235 +0,0 @@
|
||||
/*
|
||||
* 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 2007 Sun Microsystems, Inc. All rights reserved.
|
||||
* Use is subject to license terms.
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2013 RackTop Systems.
|
||||
*/
|
||||
/*
|
||||
* Copyright 2017 Joyent, Inc.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Declarations for the functions in libcmdutils.
|
||||
*/
|
||||
|
||||
#ifndef _LIBCMDUTILS_H
|
||||
#define _LIBCMDUTILS_H
|
||||
|
||||
#ifdef illumos
|
||||
#if !defined(_LP64) && \
|
||||
!((_FILE_OFFSET_BITS == 64) || defined(_LARGEFILE64_SOURCE))
|
||||
#error "libcmdutils.h can only be used in a largefile compilation environment"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This is a private header file. Applications should not directly include
|
||||
* this file.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <limits.h>
|
||||
#include <libintl.h>
|
||||
#include <string.h>
|
||||
#include <dirent.h>
|
||||
#ifdef illumos
|
||||
#include <attr.h>
|
||||
#endif
|
||||
#include <sys/avl.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/mman.h>
|
||||
#include <libnvpair.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* extended system attribute support */
|
||||
#define _NOT_SATTR 0
|
||||
#define _RO_SATTR 1
|
||||
#define _RW_SATTR 2
|
||||
|
||||
#define MAXMAPSIZE (1024*1024*8) /* map at most 8MB */
|
||||
#define SMALLFILESIZE (32*1024) /* don't use mmap on little file */
|
||||
|
||||
/* Type used for a node containing a device id and inode number */
|
||||
|
||||
#if defined(_LP64) || (_FILE_OFFSET_BITS == 64)
|
||||
typedef struct tree_node {
|
||||
dev_t node_dev;
|
||||
ino_t node_ino;
|
||||
avl_node_t avl_link;
|
||||
} tree_node_t;
|
||||
#else
|
||||
typedef struct tree_node {
|
||||
dev_t node_dev;
|
||||
ino64_t node_ino;
|
||||
avl_node_t avl_link;
|
||||
} tree_node_t;
|
||||
#endif
|
||||
|
||||
/* extended system attribute support */
|
||||
|
||||
/* Determine if a file is the name of an extended system attribute file */
|
||||
extern int sysattr_type(char *);
|
||||
|
||||
/* Determine if the underlying file system supports system attributes */
|
||||
extern int sysattr_support(char *, int);
|
||||
|
||||
/* Copies the content of the source file to the target file */
|
||||
#if defined(_LP64) || (_FILE_OFFSET_BITS == 64)
|
||||
extern int writefile(int, int, char *, char *, char *, char *,
|
||||
struct stat *, struct stat *);
|
||||
#else
|
||||
extern int writefile(int, int, char *, char *, char *, char *,
|
||||
struct stat64 *, struct stat64 *);
|
||||
#endif
|
||||
|
||||
/* Gets file descriptors of the source and target attribute files */
|
||||
extern int get_attrdirs(int, int, char *, int *, int *);
|
||||
|
||||
/* Move extended attribute and extended system attribute */
|
||||
extern int mv_xattrs(char *, char *, char *, int, int);
|
||||
|
||||
/* Returns non default extended system attribute list */
|
||||
extern nvlist_t *sysattr_list(char *, int, char *);
|
||||
|
||||
|
||||
|
||||
/* avltree */
|
||||
|
||||
/*
|
||||
* Used to compare two nodes. We are attempting to match the 1st
|
||||
* argument (node) against the 2nd argument (a node which
|
||||
* is already in the search tree).
|
||||
*/
|
||||
|
||||
extern int tnode_compare(const void *, const void *);
|
||||
|
||||
/*
|
||||
* Used to add a single node (containing the input device id and
|
||||
* inode number) to the specified search tree. The calling
|
||||
* application must set the tree pointer to NULL before calling
|
||||
* add_tnode() for the first time.
|
||||
*/
|
||||
#if defined(_LP64) || (_FILE_OFFSET_BITS == 64)
|
||||
extern int add_tnode(avl_tree_t **, dev_t, ino_t);
|
||||
#else
|
||||
extern int add_tnode(avl_tree_t **, dev_t, ino64_t);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Used to destroy a whole tree (all nodes) without rebalancing.
|
||||
* The calling application is responsible for setting the tree
|
||||
* pointer to NULL upon return.
|
||||
*/
|
||||
extern void destroy_tree(avl_tree_t *);
|
||||
|
||||
|
||||
|
||||
/* user/group id helpers */
|
||||
|
||||
/*
|
||||
* Used to get the next available user id in given range.
|
||||
*/
|
||||
extern int findnextuid(uid_t, uid_t, uid_t *);
|
||||
|
||||
/*
|
||||
* Used to get the next available group id in given range.
|
||||
*/
|
||||
extern int findnextgid(gid_t, gid_t, gid_t *);
|
||||
|
||||
|
||||
|
||||
/* dynamic string utilities */
|
||||
|
||||
typedef struct custr custr_t;
|
||||
|
||||
/*
|
||||
* Allocate and free a "custr_t" dynamic string object. Returns 0 on success
|
||||
* and -1 otherwise.
|
||||
*/
|
||||
extern int custr_alloc(custr_t **);
|
||||
extern void custr_free(custr_t *);
|
||||
|
||||
/*
|
||||
* Allocate a "custr_t" dynamic string object that operates on a fixed external
|
||||
* buffer.
|
||||
*/
|
||||
extern int custr_alloc_buf(custr_t **, void *, size_t);
|
||||
|
||||
/*
|
||||
* Append a single character, or a NUL-terminated string of characters, to a
|
||||
* dynamic string. Returns 0 on success and -1 otherwise. The dynamic string
|
||||
* will be unmodified if the function returns -1.
|
||||
*/
|
||||
extern int custr_appendc(custr_t *, char);
|
||||
extern int custr_append(custr_t *, const char *);
|
||||
|
||||
/*
|
||||
* Append a format string and arguments as though the contents were being parsed
|
||||
* through snprintf. Returns 0 on success and -1 otherwise. The dynamic string
|
||||
* will be unmodified if the function returns -1.
|
||||
*/
|
||||
extern int custr_append_printf(custr_t *, const char *, ...);
|
||||
extern int custr_append_vprintf(custr_t *, const char *, va_list);
|
||||
|
||||
/*
|
||||
* Determine the length in bytes, not including the NUL terminator, of the
|
||||
* dynamic string.
|
||||
*/
|
||||
extern size_t custr_len(custr_t *);
|
||||
|
||||
/*
|
||||
* Clear the contents of a dynamic string. Does not free the underlying
|
||||
* memory.
|
||||
*/
|
||||
extern void custr_reset(custr_t *);
|
||||
|
||||
/*
|
||||
* Retrieve a const pointer to a NUL-terminated string version of the contents
|
||||
* of the dynamic string. Storage for this string should not be freed, and
|
||||
* the pointer will be invalidated by any mutations to the dynamic string.
|
||||
*/
|
||||
extern const char *custr_cstr(custr_t *str);
|
||||
|
||||
#define NN_DIVISOR_1000 (1U << 0)
|
||||
|
||||
/* Minimum size for the output of nicenum, including NULL */
|
||||
#define NN_NUMBUF_SZ (6)
|
||||
|
||||
void nicenum(uint64_t, char *, size_t);
|
||||
void nicenum_scale(uint64_t, size_t, char *, size_t, uint32_t);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LIBCMDUTILS_H */
|
||||
@@ -22,7 +22,7 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, Joyent, Inc. All rights reserved.
|
||||
* Copyright (c) 2011, 2016 by Delphix. All rights reserved.
|
||||
* Copyright (c) 2011, 2015 by Delphix. All rights reserved.
|
||||
* Copyright (c) 2012 DEY Storage Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2011-2012 Pawel Jakub Dawidek. All rights reserved.
|
||||
* Copyright (c) 2013 Martin Matuska. All rights reserved.
|
||||
@@ -2068,7 +2068,6 @@ get_numeric_property(zfs_handle_t *zhp, zfs_prop_t prop, zprop_source_t *src,
|
||||
if (zfs_prop_readonly(prop) &&
|
||||
*source != NULL && (*source)[0] == '\0') {
|
||||
*source = NULL;
|
||||
return (-1);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
@@ -55,6 +55,15 @@
|
||||
#define ZDIFF_REMOVED '-'
|
||||
#define ZDIFF_RENAMED 'R'
|
||||
|
||||
static boolean_t
|
||||
do_name_cmp(const char *fpath, const char *tpath)
|
||||
{
|
||||
char *fname, *tname;
|
||||
fname = strrchr(fpath, '/') + 1;
|
||||
tname = strrchr(tpath, '/') + 1;
|
||||
return (strcmp(fname, tname) == 0);
|
||||
}
|
||||
|
||||
typedef struct differ_info {
|
||||
zfs_handle_t *zhp;
|
||||
char *fromsnap;
|
||||
@@ -253,6 +262,7 @@ static int
|
||||
write_inuse_diffs_one(FILE *fp, differ_info_t *di, uint64_t dobj)
|
||||
{
|
||||
struct zfs_stat fsb, tsb;
|
||||
boolean_t same_name;
|
||||
mode_t fmode, tmode;
|
||||
char fobjname[MAXPATHLEN], tobjname[MAXPATHLEN];
|
||||
int fobjerr, tobjerr;
|
||||
@@ -313,6 +323,7 @@ write_inuse_diffs_one(FILE *fp, differ_info_t *di, uint64_t dobj)
|
||||
|
||||
if (fmode != tmode && fsb.zs_gen == tsb.zs_gen)
|
||||
tsb.zs_gen++; /* Force a generational difference */
|
||||
same_name = do_name_cmp(fobjname, tobjname);
|
||||
|
||||
/* Simple modification or no change */
|
||||
if (fsb.zs_gen == tsb.zs_gen) {
|
||||
@@ -323,7 +334,7 @@ write_inuse_diffs_one(FILE *fp, differ_info_t *di, uint64_t dobj)
|
||||
if (change) {
|
||||
print_link_change(fp, di, change,
|
||||
change > 0 ? fobjname : tobjname, &tsb);
|
||||
} else if (strcmp(fobjname, tobjname) == 0) {
|
||||
} else if (same_name) {
|
||||
print_file(fp, di, ZDIFF_MODIFIED, fobjname, &tsb);
|
||||
} else {
|
||||
print_rename(fp, di, fobjname, tobjname, &tsb);
|
||||
|
||||
@@ -864,7 +864,6 @@ label_offset(uint64_t size, int l)
|
||||
/*
|
||||
* Given a file descriptor, read the label information and return an nvlist
|
||||
* describing the configuration, if there is one.
|
||||
* Return 0 on success, or -1 on failure
|
||||
*/
|
||||
int
|
||||
zpool_read_label(int fd, nvlist_t **config)
|
||||
@@ -877,7 +876,7 @@ zpool_read_label(int fd, nvlist_t **config)
|
||||
*config = NULL;
|
||||
|
||||
if (fstat64(fd, &statbuf) == -1)
|
||||
return (-1);
|
||||
return (0);
|
||||
size = P2ALIGN_TYPED(statbuf.st_size, sizeof (vdev_label_t), uint64_t);
|
||||
|
||||
if ((label = malloc(sizeof (vdev_label_t))) == NULL)
|
||||
@@ -911,8 +910,7 @@ zpool_read_label(int fd, nvlist_t **config)
|
||||
|
||||
free(label);
|
||||
*config = NULL;
|
||||
errno = ENOENT;
|
||||
return (-1);
|
||||
return (0);
|
||||
}
|
||||
|
||||
typedef struct rdsk_node {
|
||||
@@ -1090,7 +1088,7 @@ zpool_open_func(void *arg)
|
||||
}
|
||||
#endif /* illumos */
|
||||
|
||||
if ((zpool_read_label(fd, &config)) != 0 && errno == ENOMEM) {
|
||||
if ((zpool_read_label(fd, &config)) != 0) {
|
||||
(void) close(fd);
|
||||
(void) no_memory(rn->rn_hdl);
|
||||
return;
|
||||
@@ -1591,7 +1589,7 @@ zpool_in_use(libzfs_handle_t *hdl, int fd, pool_state_t *state, char **namestr,
|
||||
|
||||
*inuse = B_FALSE;
|
||||
|
||||
if (zpool_read_label(fd, &config) != 0 && errno == ENOMEM) {
|
||||
if (zpool_read_label(fd, &config) != 0) {
|
||||
(void) no_memory(hdl);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
@@ -20,11 +20,9 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright 2015 Nexenta Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014 by Delphix. All rights reserved.
|
||||
* Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>
|
||||
* Copyright 2017 RackTop Systems.
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -89,7 +87,7 @@ zfs_share_type_t zfs_is_shared_proto(zfs_handle_t *, char **,
|
||||
zfs_share_proto_t);
|
||||
|
||||
/*
|
||||
* The share protocols table must be in the same order as the zfs_share_proto_t
|
||||
* The share protocols table must be in the same order as the zfs_share_prot_t
|
||||
* enum in libzfs_impl.h
|
||||
*/
|
||||
typedef struct {
|
||||
@@ -874,7 +872,7 @@ unshare_one(libzfs_handle_t *hdl, const char *name, const char *mountpoint,
|
||||
/* make sure libshare initialized */
|
||||
if ((err = zfs_init_libshare(hdl, SA_INIT_SHARE_API)) != SA_OK) {
|
||||
free(mntpt); /* don't need the copy anymore */
|
||||
return (zfs_error_fmt(hdl, proto_table[proto].p_unshare_err,
|
||||
return (zfs_error_fmt(hdl, EZFS_SHARENFSFAILED,
|
||||
dgettext(TEXT_DOMAIN, "cannot unshare '%s': %s"),
|
||||
name, _sa_errorstr(err)));
|
||||
}
|
||||
@@ -885,13 +883,12 @@ unshare_one(libzfs_handle_t *hdl, const char *name, const char *mountpoint,
|
||||
if (share != NULL) {
|
||||
err = zfs_sa_disable_share(share, proto_table[proto].p_name);
|
||||
if (err != SA_OK) {
|
||||
return (zfs_error_fmt(hdl,
|
||||
proto_table[proto].p_unshare_err,
|
||||
return (zfs_error_fmt(hdl, EZFS_UNSHARENFSFAILED,
|
||||
dgettext(TEXT_DOMAIN, "cannot unshare '%s': %s"),
|
||||
name, _sa_errorstr(err)));
|
||||
}
|
||||
} else {
|
||||
return (zfs_error_fmt(hdl, proto_table[proto].p_unshare_err,
|
||||
return (zfs_error_fmt(hdl, EZFS_UNSHARENFSFAILED,
|
||||
dgettext(TEXT_DOMAIN, "cannot unshare '%s': not found"),
|
||||
name));
|
||||
}
|
||||
|
||||
@@ -630,7 +630,6 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char *poolname,
|
||||
goto error;
|
||||
}
|
||||
break;
|
||||
|
||||
case ZPOOL_PROP_READONLY:
|
||||
if (!flags.import) {
|
||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
||||
@@ -641,16 +640,6 @@ zpool_valid_proplist(libzfs_handle_t *hdl, const char *poolname,
|
||||
}
|
||||
break;
|
||||
|
||||
case ZPOOL_PROP_TNAME:
|
||||
if (!flags.create) {
|
||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
||||
"property '%s' can only be set at "
|
||||
"creation time"), propname);
|
||||
(void) zfs_error(hdl, EZFS_BADPROP, errbuf);
|
||||
goto error;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
||||
"property '%s'(%d) not defined"), propname, prop);
|
||||
@@ -2283,7 +2272,6 @@ vdev_get_physpaths(nvlist_t *nv, char *physpath, size_t phypath_size,
|
||||
return (ret);
|
||||
}
|
||||
} else if (strcmp(type, VDEV_TYPE_MIRROR) == 0 ||
|
||||
strcmp(type, VDEV_TYPE_RAIDZ) == 0 ||
|
||||
strcmp(type, VDEV_TYPE_REPLACING) == 0 ||
|
||||
(is_spare = (strcmp(type, VDEV_TYPE_SPARE) == 0))) {
|
||||
nvlist_t **child;
|
||||
|
||||
@@ -3195,12 +3195,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
|
||||
/*
|
||||
* Determine the name of the origin snapshot, store in zc_string.
|
||||
*/
|
||||
if (originsnap) {
|
||||
(void) strncpy(zc.zc_string, originsnap, sizeof (zc.zc_string));
|
||||
if (flags->verbose)
|
||||
(void) printf("using provided clone origin %s\n",
|
||||
zc.zc_string);
|
||||
} else if (drrb->drr_flags & DRR_FLAG_CLONE) {
|
||||
if (drrb->drr_flags & DRR_FLAG_CLONE) {
|
||||
if (guid_to_name(hdl, zc.zc_value,
|
||||
drrb->drr_fromguid, B_FALSE, zc.zc_string) != 0) {
|
||||
zcmd_free_nvlists(&zc);
|
||||
@@ -3211,6 +3206,11 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
|
||||
}
|
||||
if (flags->verbose)
|
||||
(void) printf("found clone origin %s\n", zc.zc_string);
|
||||
} else if (originsnap) {
|
||||
(void) strncpy(zc.zc_string, originsnap, sizeof (zc.zc_string));
|
||||
if (flags->verbose)
|
||||
(void) printf("using provided clone origin %s\n",
|
||||
zc.zc_string);
|
||||
}
|
||||
|
||||
boolean_t resuming = DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo) &
|
||||
|
||||
@@ -48,7 +48,6 @@
|
||||
#include <sys/mnttab.h>
|
||||
#include <sys/mntent.h>
|
||||
#include <sys/types.h>
|
||||
#include <libcmdutils.h>
|
||||
|
||||
#include <libzfs.h>
|
||||
#include <libzfs_core.h>
|
||||
@@ -576,7 +575,42 @@ zfs_strdup(libzfs_handle_t *hdl, const char *str)
|
||||
void
|
||||
zfs_nicenum(uint64_t num, char *buf, size_t buflen)
|
||||
{
|
||||
nicenum(num, buf, buflen);
|
||||
uint64_t n = num;
|
||||
int index = 0;
|
||||
char u;
|
||||
|
||||
while (n >= 1024) {
|
||||
n /= 1024;
|
||||
index++;
|
||||
}
|
||||
|
||||
u = " KMGTPE"[index];
|
||||
|
||||
if (index == 0) {
|
||||
(void) snprintf(buf, buflen, "%llu", n);
|
||||
} else if ((num & ((1ULL << 10 * index) - 1)) == 0) {
|
||||
/*
|
||||
* If this is an even multiple of the base, always display
|
||||
* without any decimal precision.
|
||||
*/
|
||||
(void) snprintf(buf, buflen, "%llu%c", n, u);
|
||||
} else {
|
||||
/*
|
||||
* We want to choose a precision that reflects the best choice
|
||||
* for fitting in 5 characters. This can get rather tricky when
|
||||
* we have numbers that are very close to an order of magnitude.
|
||||
* For example, when displaying 10239 (which is really 9.999K),
|
||||
* we want only a single place of precision for 10.0K. We could
|
||||
* develop some complex heuristics for this, but it's much
|
||||
* easier just to try each combination in turn.
|
||||
*/
|
||||
int i;
|
||||
for (i = 2; i >= 0; i--) {
|
||||
if (snprintf(buf, buflen, "%.*f%c", i,
|
||||
(double)num / (1ULL << 10 * index), u) <= 5)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -727,9 +727,11 @@ static char ce_suffix[CE_IGNORE][2] = { "", "\n", "\n", "" };
|
||||
void
|
||||
vpanic(const char *fmt, va_list adx)
|
||||
{
|
||||
char buf[512];
|
||||
(void) vsnprintf(buf, 512, fmt, adx);
|
||||
assfail(buf, NULL, 0);
|
||||
(void) fprintf(stderr, "error: ");
|
||||
(void) vfprintf(stderr, fmt, adx);
|
||||
(void) fprintf(stderr, "\n");
|
||||
|
||||
abort(); /* think of it as a "user-level crash dump" */
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2016 by Delphix. All rights reserved.
|
||||
* Copyright (c) 2012, 2015 by Delphix. All rights reserved.
|
||||
* Copyright (c) 2012, Joyent, Inc. All rights reserved.
|
||||
*/
|
||||
/*
|
||||
@@ -579,9 +579,8 @@ extern void kernel_init(int);
|
||||
extern void kernel_fini(void);
|
||||
|
||||
struct spa;
|
||||
extern void nicenum(uint64_t num, char *buf, size_t);
|
||||
extern void nicenum(uint64_t num, char *buf);
|
||||
extern void show_pool_stats(struct spa *);
|
||||
extern int set_global_var(char *arg);
|
||||
|
||||
typedef struct callb_cpr {
|
||||
kmutex_t *cc_lockp;
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016 by Delphix. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
@@ -32,12 +31,38 @@
|
||||
#include <sys/spa.h>
|
||||
#include <sys/fs/zfs.h>
|
||||
#include <sys/refcount.h>
|
||||
#include <dlfcn.h>
|
||||
|
||||
/*
|
||||
* Routines needed by more than one client of libzpool.
|
||||
*/
|
||||
|
||||
void
|
||||
nicenum(uint64_t num, char *buf)
|
||||
{
|
||||
uint64_t n = num;
|
||||
int index = 0;
|
||||
char u;
|
||||
|
||||
while (n >= 1024) {
|
||||
n = (n + (1024 / 2)) / 1024; /* Round up or down */
|
||||
index++;
|
||||
}
|
||||
|
||||
u = " KMGTPE"[index];
|
||||
|
||||
if (index == 0) {
|
||||
(void) sprintf(buf, "%llu", (u_longlong_t)n);
|
||||
} else if (n < 10 && (num & (num - 1)) != 0) {
|
||||
(void) sprintf(buf, "%.2f%c",
|
||||
(double)num / (1ULL << 10 * index), u);
|
||||
} else if (n < 100 && (num & (num - 1)) != 0) {
|
||||
(void) sprintf(buf, "%.1f%c",
|
||||
(double)num / (1ULL << 10 * index), u);
|
||||
} else {
|
||||
(void) sprintf(buf, "%llu%c", (u_longlong_t)n, u);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
show_vdev_stats(const char *desc, const char *ctype, nvlist_t *nv, int indent)
|
||||
{
|
||||
@@ -70,17 +95,15 @@ show_vdev_stats(const char *desc, const char *ctype, nvlist_t *nv, int indent)
|
||||
|
||||
sec = MAX(1, vs->vs_timestamp / NANOSEC);
|
||||
|
||||
nicenum(vs->vs_alloc, used, sizeof (used));
|
||||
nicenum(vs->vs_space - vs->vs_alloc, avail, sizeof (avail));
|
||||
nicenum(vs->vs_ops[ZIO_TYPE_READ] / sec, rops, sizeof (rops));
|
||||
nicenum(vs->vs_ops[ZIO_TYPE_WRITE] / sec, wops, sizeof (wops));
|
||||
nicenum(vs->vs_bytes[ZIO_TYPE_READ] / sec, rbytes,
|
||||
sizeof (rbytes));
|
||||
nicenum(vs->vs_bytes[ZIO_TYPE_WRITE] / sec, wbytes,
|
||||
sizeof (wbytes));
|
||||
nicenum(vs->vs_read_errors, rerr, sizeof (rerr));
|
||||
nicenum(vs->vs_write_errors, werr, sizeof (werr));
|
||||
nicenum(vs->vs_checksum_errors, cerr, sizeof (cerr));
|
||||
nicenum(vs->vs_alloc, used);
|
||||
nicenum(vs->vs_space - vs->vs_alloc, avail);
|
||||
nicenum(vs->vs_ops[ZIO_TYPE_READ] / sec, rops);
|
||||
nicenum(vs->vs_ops[ZIO_TYPE_WRITE] / sec, wops);
|
||||
nicenum(vs->vs_bytes[ZIO_TYPE_READ] / sec, rbytes);
|
||||
nicenum(vs->vs_bytes[ZIO_TYPE_WRITE] / sec, wbytes);
|
||||
nicenum(vs->vs_read_errors, rerr);
|
||||
nicenum(vs->vs_write_errors, werr);
|
||||
nicenum(vs->vs_checksum_errors, cerr);
|
||||
|
||||
(void) printf("%*s%s%*s%*s%*s %5s %5s %5s %5s %5s %5s %5s\n",
|
||||
indent, "",
|
||||
@@ -130,58 +153,3 @@ show_pool_stats(spa_t *spa)
|
||||
|
||||
nvlist_free(config);
|
||||
}
|
||||
|
||||
/*
|
||||
* Sets given global variable in libzpool to given unsigned 32-bit value.
|
||||
* arg: "<variable>=<value>"
|
||||
*/
|
||||
int
|
||||
set_global_var(char *arg)
|
||||
{
|
||||
void *zpoolhdl;
|
||||
char *varname = arg, *varval;
|
||||
u_longlong_t val;
|
||||
|
||||
#ifndef _LITTLE_ENDIAN
|
||||
/*
|
||||
* On big endian systems changing a 64-bit variable would set the high
|
||||
* 32 bits instead of the low 32 bits, which could cause unexpected
|
||||
* results.
|
||||
*/
|
||||
fprintf(stderr, "Setting global variables is only supported on "
|
||||
"little-endian systems\n", varname);
|
||||
return (ENOTSUP);
|
||||
#endif
|
||||
if ((varval = strchr(arg, '=')) != NULL) {
|
||||
*varval = '\0';
|
||||
varval++;
|
||||
val = strtoull(varval, NULL, 0);
|
||||
if (val > UINT32_MAX) {
|
||||
fprintf(stderr, "Value for global variable '%s' must "
|
||||
"be a 32-bit unsigned integer\n", varname);
|
||||
return (EOVERFLOW);
|
||||
}
|
||||
} else {
|
||||
return (EINVAL);
|
||||
}
|
||||
|
||||
zpoolhdl = dlopen("libzpool.so", RTLD_LAZY);
|
||||
if (zpoolhdl != NULL) {
|
||||
uint32_t *var;
|
||||
var = dlsym(zpoolhdl, varname);
|
||||
if (var == NULL) {
|
||||
fprintf(stderr, "Global variable '%s' does not exist "
|
||||
"in libzpool.so\n", varname);
|
||||
return (EINVAL);
|
||||
}
|
||||
*var = (uint32_t)val;
|
||||
|
||||
dlclose(zpoolhdl);
|
||||
} else {
|
||||
fprintf(stderr, "Failed to open libzpool.so to set global "
|
||||
"variable\n");
|
||||
return (EIO);
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
@@ -4,7 +4,6 @@
|
||||
.PATH: ${SRCTOP}/sys/cddl/contrib/opensolaris/common/zfs
|
||||
.PATH: ${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
|
||||
.PATH: ${SRCTOP}/cddl/contrib/opensolaris/lib/libzfs/common
|
||||
.PATH: ${SRCTOP}/cddl/contrib/opensolaris/lib/libcmdutils/common
|
||||
|
||||
LIB= zfs
|
||||
DPADD= ${LIBMD} ${LIBPTHREAD} ${LIBUMEM} ${LIBUTIL} ${LIBM} ${LIBNVPAIR} \
|
||||
@@ -22,8 +21,6 @@ SRCS= deviceid.c \
|
||||
zmount.c \
|
||||
zone.c
|
||||
|
||||
SRCS+= nicenum.c
|
||||
|
||||
SRCS+= libzfs_changelist.c \
|
||||
libzfs_compat.c \
|
||||
libzfs_config.c \
|
||||
@@ -62,6 +59,5 @@ CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libnvpair
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libuutil/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzfs/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzfs_core/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libcmdutils
|
||||
|
||||
.include <bsd.lib.mk>
|
||||
@@ -23,8 +23,6 @@ ATOMIC_SRCS= opensolaris_atomic.c
|
||||
.endif
|
||||
# UNICODE_SRCS
|
||||
.PATH: ${SRCTOP}/sys/cddl/contrib/opensolaris/common/unicode
|
||||
# LIBCMDUTILS_SRCS
|
||||
.PATH: ${SRCTOP}/cddl/contrib/opensolaris/lib/libcmdutils/common
|
||||
|
||||
LIB= zpool
|
||||
|
||||
@@ -33,11 +31,10 @@ ZFS_SHARED_SRCS= ${ZFS_SHARED_OBJS:C/.o$/.c/}
|
||||
KERNEL_SRCS= kernel.c taskq.c util.c
|
||||
LIST_SRCS= list.c
|
||||
UNICODE_SRCS= u8_textprep.c
|
||||
LIBCMDUTILS_SRCS=nicenum.c
|
||||
|
||||
SRCS= ${ZFS_COMMON_SRCS} ${ZFS_SHARED_SRCS} \
|
||||
${KERNEL_SRCS} ${LIST_SRCS} ${ATOMIC_SRCS} \
|
||||
${UNICODE_SRCS} ${LIBCMDUTILS_SRCS}
|
||||
${UNICODE_SRCS}
|
||||
|
||||
WARNS?= 0
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/compat/opensolaris
|
||||
@@ -50,7 +47,6 @@ CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/zfs
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/head
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libnvpair
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libcmdutils
|
||||
# XXX: pthread doesn't have mutex_owned() equivalent, so we need to look
|
||||
# into libthr private structures. That's sooo evil, but it's only for
|
||||
# ZFS debugging tools needs.
|
||||
|
||||
@@ -11,7 +11,6 @@ CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/include
|
||||
CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/lib/libumem
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzpool/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libnvpair
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libcmdutils
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/zfs
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/sys
|
||||
|
||||
@@ -167,8 +167,6 @@ TESTFILES= \
|
||||
tst.sizedkeys.d.out \
|
||||
tst.stddev.d \
|
||||
tst.stddev.d.out \
|
||||
tst.stddev.normalize.d \
|
||||
tst.stddev.normalize.d.out \
|
||||
tst.subr.d \
|
||||
tst.sum.d \
|
||||
tst.sum.d.out \
|
||||
|
||||
@@ -12,7 +12,6 @@ CSTD= c99
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/compat/opensolaris
|
||||
CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/include
|
||||
CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/lib/libumem
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libcmdutils
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libnvpair
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libuutil/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzfs/common
|
||||
|
||||
@@ -79,7 +79,7 @@ enum show_opt {
|
||||
static void
|
||||
time_print(time_type tt)
|
||||
{
|
||||
time_t t = (time_t)(intptr_t)tt;
|
||||
time_t t = (time_t)*tt;
|
||||
struct tm *tp = localtime(&t);
|
||||
printf("%02d/%02d/%04d %02d:%02d:%02d",
|
||||
tp->tm_mon + 1, tp->tm_mday,
|
||||
|
||||
@@ -4815,7 +4815,7 @@ _bfd_elf_archive_symbol_lookup (bfd *abfd,
|
||||
len = strlen (name);
|
||||
copy = bfd_alloc (abfd, len);
|
||||
if (copy == NULL)
|
||||
return (struct elf_link_hash_entry *)(intptr_t)-1;
|
||||
return (struct elf_link_hash_entry *) 0 - 1;
|
||||
|
||||
first = p - name + 1;
|
||||
memcpy (copy, name, first);
|
||||
@@ -4927,7 +4927,7 @@ elf_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
|
||||
}
|
||||
|
||||
h = archive_symbol_lookup (abfd, info, symdef->name);
|
||||
if (h == (struct elf_link_hash_entry *)(intptr_t)-1)
|
||||
if (h == (struct elf_link_hash_entry *) 0 - 1)
|
||||
goto error_return;
|
||||
|
||||
if (h == NULL)
|
||||
|
||||
@@ -320,7 +320,7 @@ ihex_scan (bfd *abfd)
|
||||
{
|
||||
if (! ISHEX (buf[i]))
|
||||
{
|
||||
ihex_bad_byte (abfd, lineno, buf[i], error);
|
||||
ihex_bad_byte (abfd, lineno, hdr[i], error);
|
||||
goto error_return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -448,17 +448,6 @@ _bfd_XXi_swap_aouthdr_in (bfd * abfd,
|
||||
{
|
||||
int idx;
|
||||
|
||||
/* PR 17512: Corrupt PE binaries can cause seg-faults. */
|
||||
if (a->NumberOfRvaAndSizes > 16)
|
||||
{
|
||||
(*_bfd_error_handler)
|
||||
(_("%B: aout header specifies an invalid number of data-directory entries: %d"),
|
||||
abfd, a->NumberOfRvaAndSizes);
|
||||
/* Paranoia: If the number is corrupt, then assume that the
|
||||
actual entries themselves might be corrupt as well. */
|
||||
a->NumberOfRvaAndSizes = 0;
|
||||
}
|
||||
|
||||
for (idx = 0; idx < 16; idx++)
|
||||
{
|
||||
/* If data directory is empty, rva also should be 0. */
|
||||
@@ -1439,15 +1428,6 @@ pe_print_edata (bfd * abfd, void * vfile)
|
||||
}
|
||||
}
|
||||
|
||||
/* PR 17512: Handle corrupt PE binaries. */
|
||||
if (datasize < 36)
|
||||
{
|
||||
fprintf (file,
|
||||
_("\nThere is an export table in %s, but it is too small (%d)\n"),
|
||||
section->name, (int) datasize);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
fprintf (file, _("\nThere is an export table in %s at 0x%lx\n"),
|
||||
section->name, (unsigned long) addr);
|
||||
|
||||
|
||||
@@ -1353,13 +1353,13 @@ pe_bfd_object_p (bfd * abfd)
|
||||
if (pe_arch (bfd_target_efi_arch (*target_ptr)) != arch)
|
||||
continue;
|
||||
|
||||
if (efi)
|
||||
{
|
||||
/* TARGET_PTR is an EFI backend. Don't match
|
||||
TARGET with a EFI file. */
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return NULL;
|
||||
}
|
||||
if (efi)
|
||||
{
|
||||
/* TARGET_PTR is an EFI backend. Don't match
|
||||
TARGET with a EFI file. */
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
else if (bfd_target_pei_p (*target_ptr))
|
||||
{
|
||||
@@ -1367,13 +1367,13 @@ pe_bfd_object_p (bfd * abfd)
|
||||
if (pe_arch (bfd_target_pei_arch (*target_ptr)) != arch)
|
||||
continue;
|
||||
|
||||
if (!efi)
|
||||
{
|
||||
/* TARGET_PTR is a PE backend. Don't match
|
||||
TARGET with a PE file. */
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return NULL;
|
||||
}
|
||||
if (!efi)
|
||||
{
|
||||
/* TARGET_PTR is a PE backend. Don't match
|
||||
TARGET with a PE file. */
|
||||
bfd_set_error (bfd_error_wrong_format);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,11 +119,11 @@ extern "C" {
|
||||
may ignore the byte-within-word field of the pointer. */
|
||||
|
||||
#ifndef __PTR_TO_INT
|
||||
# define __PTR_TO_INT(P) ((intptr_t)(P))
|
||||
# define __PTR_TO_INT(P) ((P) - (char *) 0)
|
||||
#endif
|
||||
|
||||
#ifndef __INT_TO_PTR
|
||||
# define __INT_TO_PTR(P) ((void*)(intptr_t)(P))
|
||||
# define __INT_TO_PTR(P) ((P) + (char *) 0)
|
||||
#endif
|
||||
|
||||
/* We need the type of the resulting object. If __PTRDIFF_TYPE__ is
|
||||
@@ -427,7 +427,7 @@ __extension__ \
|
||||
__o1->maybe_empty_object = 1; \
|
||||
__o1->next_free \
|
||||
= __INT_TO_PTR ((__PTR_TO_INT (__o1->next_free)+__o1->alignment_mask)\
|
||||
& ~(intptr_t)(__o1->alignment_mask)); \
|
||||
& ~ (__o1->alignment_mask)); \
|
||||
if (__o1->next_free - (char *)__o1->chunk \
|
||||
> __o1->chunk_limit - (char *)__o1->chunk) \
|
||||
__o1->next_free = __o1->chunk_limit; \
|
||||
|
||||
@@ -474,7 +474,7 @@ table_check_response(struct tabwork *work, const struct snmp_pdu *resp)
|
||||
if (snmp_client.version == SNMP_V1 &&
|
||||
resp->error_status == SNMP_ERR_NOSUCHNAME &&
|
||||
resp->error_index ==
|
||||
((work->descr->last_change.len == 0) ? 1 : 2))
|
||||
(work->descr->last_change.len == 0) ? 1 : 2)
|
||||
/* EOT */
|
||||
return (0);
|
||||
/* Error */
|
||||
|
||||
@@ -439,15 +439,11 @@ mibif_restart_mibII_poll_timer(void)
|
||||
int
|
||||
mib_fetch_ifmib(struct mibif *ifp)
|
||||
{
|
||||
static int kmib[2] = { -1, 0 }; /* for sysctl net.ifdescr_maxlen */
|
||||
|
||||
int name[6];
|
||||
size_t kmiblen = nitems(kmib);
|
||||
size_t len;
|
||||
void *newmib;
|
||||
struct ifmibdata oldmib = ifp->mib;
|
||||
struct ifreq irr;
|
||||
unsigned int alias_maxlen = MIBIF_ALIAS_SIZE_MAX;
|
||||
|
||||
if (fetch_generic_mib(ifp, &oldmib) == -1)
|
||||
return (-1);
|
||||
@@ -519,69 +515,18 @@ mib_fetch_ifmib(struct mibif *ifp)
|
||||
}
|
||||
|
||||
out:
|
||||
|
||||
/*
|
||||
* Find sysctl mib for net.ifdescr_maxlen (one time).
|
||||
* kmib[0] == -1 at first call to mib_fetch_ifmib().
|
||||
* Then kmib[0] > 0 if we found sysctl mib for net.ifdescr_maxlen.
|
||||
* Else, kmib[0] == 0 (unexpected error from a kernel).
|
||||
*/
|
||||
if (kmib[0] < 0 &&
|
||||
sysctlnametomib("net.ifdescr_maxlen", kmib, &kmiblen) < 0) {
|
||||
kmib[0] = 0;
|
||||
syslog(LOG_WARNING, "sysctlnametomib net.ifdescr_maxlen: %m");
|
||||
}
|
||||
|
||||
/*
|
||||
* Fetch net.ifdescr_maxlen value every time to catch up with changes.
|
||||
*/
|
||||
len = sizeof(alias_maxlen);
|
||||
if (kmib[0] > 0 && sysctl(kmib, 2, &alias_maxlen, &len, NULL, 0) < 0) {
|
||||
/* unexpected error from the kernel, use default value */
|
||||
alias_maxlen = MIBIF_ALIAS_SIZE_MAX;
|
||||
syslog(LOG_WARNING, "sysctl net.ifdescr_maxlen: %m");
|
||||
}
|
||||
|
||||
/*
|
||||
* Kernel limit might be decreased after interfaces got
|
||||
* their descriptions assigned. Try to obtain them anyway.
|
||||
*/
|
||||
if (alias_maxlen == 0)
|
||||
alias_maxlen = MIBIF_ALIAS_SIZE_MAX;
|
||||
|
||||
/*
|
||||
* Allocate maximum memory for a buffer and later reallocate
|
||||
* to free extra memory.
|
||||
*/
|
||||
if ((ifp->alias = malloc(alias_maxlen)) == NULL) {
|
||||
syslog(LOG_WARNING, "malloc(%d) failed: %m", (int)alias_maxlen);
|
||||
goto fin;
|
||||
}
|
||||
|
||||
strlcpy(irr.ifr_name, ifp->name, sizeof(irr.ifr_name));
|
||||
irr.ifr_buffer.buffer = ifp->alias;
|
||||
irr.ifr_buffer.length = alias_maxlen;
|
||||
irr.ifr_buffer.buffer = MIBIF_PRIV(ifp)->alias;
|
||||
irr.ifr_buffer.length = sizeof(MIBIF_PRIV(ifp)->alias);
|
||||
if (ioctl(mib_netsock, SIOCGIFDESCR, &irr) == -1) {
|
||||
free(ifp->alias);
|
||||
ifp->alias = NULL;
|
||||
MIBIF_PRIV(ifp)->alias[0] = 0;
|
||||
if (errno != ENOMSG)
|
||||
syslog(LOG_WARNING, "SIOCGIFDESCR (%s): %m", ifp->name);
|
||||
} else if (irr.ifr_buffer.buffer == NULL) {
|
||||
free(ifp->alias);
|
||||
ifp->alias = NULL;
|
||||
MIBIF_PRIV(ifp)->alias[0] = 0;
|
||||
syslog(LOG_WARNING, "SIOCGIFDESCR (%s): too long (%zu)",
|
||||
ifp->name, irr.ifr_buffer.length);
|
||||
} else {
|
||||
ifp->alias_size = strnlen(ifp->alias, alias_maxlen) + 1;
|
||||
|
||||
if (ifp->alias_size > MIBIF_ALIAS_SIZE)
|
||||
ifp->alias_size = MIBIF_ALIAS_SIZE;
|
||||
|
||||
if (ifp->alias_size < alias_maxlen)
|
||||
ifp->alias = realloc(ifp->alias, ifp->alias_size);
|
||||
}
|
||||
|
||||
fin:
|
||||
ifp->mibtick = get_ticks();
|
||||
return (0);
|
||||
}
|
||||
@@ -761,10 +706,6 @@ mibif_free(struct mibif *ifp)
|
||||
mibif_reset_hc_timer();
|
||||
}
|
||||
|
||||
if (ifp->alias != NULL) {
|
||||
free(ifp->alias);
|
||||
ifp->alias = NULL;
|
||||
}
|
||||
free(ifp->private);
|
||||
ifp->private = NULL;
|
||||
free(ifp->physaddr);
|
||||
|
||||
@@ -57,9 +57,8 @@
|
||||
#include "snmp_mibII.h"
|
||||
#include "mibII_tree.h"
|
||||
|
||||
/* maximum size of the interface alias unless overridden with net.ifdescr_maxlen */
|
||||
/* maximum size of the interface alias */
|
||||
#define MIBIF_ALIAS_SIZE (64 + 1)
|
||||
#define MIBIF_ALIAS_SIZE_MAX 1024
|
||||
|
||||
/*
|
||||
* Interface list and flags.
|
||||
@@ -82,6 +81,8 @@ struct mibif_private {
|
||||
uint64_t hc_imcasts;
|
||||
uint64_t hc_ipackets;
|
||||
|
||||
/* this should be made public */
|
||||
char alias[MIBIF_ALIAS_SIZE];
|
||||
};
|
||||
#define MIBIF_PRIV(IFP) ((struct mibif_private *)((IFP)->private))
|
||||
|
||||
|
||||
@@ -528,7 +528,7 @@ op_ifxtable(struct snmp_context *ctx, struct snmp_value *value,
|
||||
break;
|
||||
|
||||
case LEAF_ifAlias:
|
||||
ret = string_get(value, ifp->alias, ifp->alias_size - 1);
|
||||
ret = string_get(value, MIBIF_PRIV(ifp)->alias, -1);
|
||||
break;
|
||||
|
||||
case LEAF_ifCounterDiscontinuityTime:
|
||||
|
||||
@@ -80,9 +80,6 @@ struct mibif {
|
||||
/* to be set by ifType specific modules. This is ifSpecific. */
|
||||
struct asn_oid spec_oid;
|
||||
|
||||
char *alias;
|
||||
size_t alias_size;
|
||||
|
||||
/* private data - don't touch */
|
||||
void *private;
|
||||
};
|
||||
|
||||
+2
-31
@@ -2,8 +2,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
@@ -325,32 +325,3 @@ Security fix only. Fixes CERT-FI 20469 as it applies to bzip2.
|
||||
Izdebski.
|
||||
|
||||
* Make the documentation build on Ubuntu 10.04
|
||||
|
||||
1.0.7 (27 Jun 19)
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Fix undefined behavior in the macros SET_BH, CLEAR_BH, & ISSET_BH
|
||||
|
||||
* bzip2: Fix return value when combining --test,-t and -q.
|
||||
|
||||
* bzip2recover: Fix buffer overflow for large argv[0]
|
||||
|
||||
* bzip2recover: Fix use after free issue with outFile (CVE-2016-3189)
|
||||
|
||||
* Make sure nSelectors is not out of range (CVE-2019-12900)
|
||||
|
||||
1.0.8 (13 Jul 19)
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Accept as many selectors as the file format allows.
|
||||
This relaxes the fix for CVE-2019-12900 from 1.0.7
|
||||
so that bzip2 allows decompression of bz2 files that
|
||||
use (too) many selectors again.
|
||||
|
||||
* Fix handling of large (> 4GB) files on Windows.
|
||||
|
||||
* Cleanup of bzdiff and bzgrep scripts so they don't use
|
||||
any bash extensions and handle multiple archives correctly.
|
||||
|
||||
* There is now a bz2-files testsuite at
|
||||
https://sourceware.org/git/bzip2-tests.git
|
||||
@@ -2,7 +2,7 @@
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
This program, "bzip2", the associated library "libbzip2", and all
|
||||
documentation, are copyright (C) 1996-2019 Julian R Seward. All
|
||||
documentation, are copyright (C) 1996-2010 Julian R Seward. All
|
||||
rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
@@ -36,7 +36,7 @@ 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.
|
||||
|
||||
Julian Seward, jseward@acm.org
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Julian Seward, jseward@bzip.org
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
+29
-10
@@ -6,8 +6,8 @@ This version is fully compatible with the previous public releases.
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in this file.
|
||||
|
||||
@@ -73,7 +73,7 @@ HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc.
|
||||
|
||||
It's difficult for me to support compilation on all these platforms.
|
||||
My approach is to collect binaries for these platforms, and put them
|
||||
on the master web site (https://sourceware.org/bzip2/). Look there. However
|
||||
on the master web site (http://www.bzip.org). Look there. However
|
||||
(FWIW), bzip2-1.0.X is very standard ANSI C and should compile
|
||||
unmodified with MS Visual C. If you have difficulties building, you
|
||||
might want to read README.COMPILATION.PROBLEMS.
|
||||
@@ -161,22 +161,43 @@ WHAT'S NEW IN 0.9.5 ?
|
||||
* Many small improvements in file and flag handling.
|
||||
* A Y2K statement.
|
||||
|
||||
WHAT'S NEW IN 1.0.x ?
|
||||
WHAT'S NEW IN 1.0.0 ?
|
||||
|
||||
See the CHANGES file.
|
||||
|
||||
I hope you find bzip2 useful. Feel free to contact the developers at
|
||||
[email protected]
|
||||
WHAT'S NEW IN 1.0.2 ?
|
||||
|
||||
See the CHANGES file.
|
||||
|
||||
WHAT'S NEW IN 1.0.3 ?
|
||||
|
||||
See the CHANGES file.
|
||||
|
||||
WHAT'S NEW IN 1.0.4 ?
|
||||
|
||||
See the CHANGES file.
|
||||
|
||||
WHAT'S NEW IN 1.0.5 ?
|
||||
|
||||
See the CHANGES file.
|
||||
|
||||
WHAT'S NEW IN 1.0.6 ?
|
||||
|
||||
See the CHANGES file.
|
||||
|
||||
|
||||
I hope you find bzip2 useful. Feel free to contact me at
|
||||
[email protected]
|
||||
if you have any suggestions or queries. Many people mailed me with
|
||||
comments, suggestions and patches after the releases of bzip-0.15,
|
||||
bzip-0.21, and bzip2 versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1,
|
||||
1.0.2 and 1.0.3, and the changes in bzip2 are largely a result of this
|
||||
feedback. I thank you for your comments.
|
||||
|
||||
bzip2's "home" is https://sourceware.org/bzip2/
|
||||
bzip2's "home" is http://www.bzip.org/
|
||||
|
||||
Julian Seward
|
||||
jseward@acm.org
|
||||
jseward@bzip.org
|
||||
Cambridge, UK.
|
||||
|
||||
18 July 1996 (version 0.15)
|
||||
@@ -192,5 +213,3 @@ Cambridge, UK.
|
||||
20 December 2006 (bzip2, version 1.0.4)
|
||||
10 December 2007 (bzip2, version 1.0.5)
|
||||
6 Sept 2010 (bzip2, version 1.0.6)
|
||||
27 June 2019 (bzip2, version 1.0.7)
|
||||
13 July 2019 (bzip2, version 1.0.8)
|
||||
@@ -2,8 +2,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
@@ -12,7 +12,7 @@ This program is released under the terms of the license contained
|
||||
in the file LICENSE.
|
||||
------------------------------------------------------------------
|
||||
|
||||
bzip2 should compile without problems on the vast majority of
|
||||
bzip2-1.0.6 should compile without problems on the vast majority of
|
||||
platforms. Using the supplied Makefile, I've built and tested it
|
||||
myself for x86-linux and amd64-linux. With makefile.msc, Visual C++
|
||||
6.0 and nmake, you can build a native Win32 version too. Large file
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
@@ -202,9 +202,9 @@ void fallbackQSort3 ( UInt32* fmap,
|
||||
bhtab [ 0 .. 2+(nblock/32) ] destroyed
|
||||
*/
|
||||
|
||||
#define SET_BH(zz) bhtab[(zz) >> 5] |= ((UInt32)1 << ((zz) & 31))
|
||||
#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~((UInt32)1 << ((zz) & 31))
|
||||
#define ISSET_BH(zz) (bhtab[(zz) >> 5] & ((UInt32)1 << ((zz) & 31)))
|
||||
#define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31))
|
||||
#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31))
|
||||
#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31)))
|
||||
#define WORD_BH(zz) bhtab[(zz) >> 5]
|
||||
#define UNALIGNED_BH(zz) ((zz) & 0x01f)
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.PU
|
||||
.TH bzip2 1
|
||||
.SH NAME
|
||||
bzip2, bunzip2 \- a block-sorting file compressor, v1.0.8
|
||||
bzip2, bunzip2 \- a block-sorting file compressor, v1.0.6
|
||||
.br
|
||||
bzcat \- decompresses files to stdout
|
||||
.br
|
||||
@@ -405,7 +405,7 @@ I/O error messages are not as helpful as they could be.
|
||||
tries hard to detect I/O errors and exit cleanly, but the details of
|
||||
what the problem is sometimes seem rather misleading.
|
||||
|
||||
This manual page pertains to version 1.0.8 of
|
||||
This manual page pertains to version 1.0.6 of
|
||||
.I bzip2.
|
||||
Compressed data created by this version is entirely forwards and
|
||||
backwards compatible with the previous public releases, versions
|
||||
@@ -427,9 +427,9 @@ with MaybeUInt64 set to be an unsigned 64-bit integer.
|
||||
|
||||
|
||||
.SH AUTHOR
|
||||
Julian Seward, jseward@acm.org.
|
||||
Julian Seward, jsewardbzip.org.
|
||||
|
||||
https://sourceware.org/bzip2/
|
||||
http://www.bzip.org
|
||||
|
||||
The ideas embodied in
|
||||
.I bzip2
|
||||
|
||||
+19
-21
@@ -7,8 +7,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
@@ -128,12 +128,12 @@
|
||||
#if BZ_LCCWIN32
|
||||
# include <io.h>
|
||||
# include <fcntl.h>
|
||||
# include <sys/stat.h>
|
||||
# include <sys\stat.h>
|
||||
|
||||
# define NORETURN /**/
|
||||
# define PATH_SEP '\\'
|
||||
# define MY_LSTAT _stati64
|
||||
# define MY_STAT _stati64
|
||||
# define MY_LSTAT _stat
|
||||
# define MY_STAT _stat
|
||||
# define MY_S_ISREG(x) ((x) & _S_IFREG)
|
||||
# define MY_S_ISDIR(x) ((x) & _S_IFDIR)
|
||||
|
||||
@@ -554,7 +554,7 @@ static
|
||||
Bool testStream ( FILE *zStream )
|
||||
{
|
||||
BZFILE* bzf = NULL;
|
||||
Int32 bzerr, bzerr_dummy, ret, streamNo, i;
|
||||
Int32 bzerr, bzerr_dummy, ret, nread, streamNo, i;
|
||||
UChar obuf[5000];
|
||||
UChar unused[BZ_MAX_UNUSED];
|
||||
Int32 nUnused;
|
||||
@@ -577,7 +577,7 @@ Bool testStream ( FILE *zStream )
|
||||
streamNo++;
|
||||
|
||||
while (bzerr == BZ_OK) {
|
||||
BZ2_bzRead ( &bzerr, bzf, obuf, 5000 );
|
||||
nread = BZ2_bzRead ( &bzerr, bzf, obuf, 5000 );
|
||||
if (bzerr == BZ_DATA_ERROR_MAGIC) goto errhandler;
|
||||
}
|
||||
if (bzerr != BZ_STREAM_END) goto errhandler;
|
||||
@@ -748,8 +748,8 @@ void panic ( const Char* s )
|
||||
fprintf ( stderr,
|
||||
"\n%s: PANIC -- internal consistency error:\n"
|
||||
"\t%s\n"
|
||||
"\tThis is a BUG. Please report it to:\n"
|
||||
"\tbzip2-devel@sourceware.org\n",
|
||||
"\tThis is a BUG. Please report it to me at:\n"
|
||||
"\tjseward@bzip.org\n",
|
||||
progName, s );
|
||||
showFileNames();
|
||||
cleanUpAndFail( 3 );
|
||||
@@ -829,7 +829,7 @@ void mySIGSEGVorSIGBUScatcher ( IntNative n )
|
||||
" The user's manual, Section 4.3, has more info on (1) and (2).\n"
|
||||
" \n"
|
||||
" If you suspect this is a bug in bzip2, or are unsure about (1)\n"
|
||||
" or (2), feel free to report it to: bzip2-devel@sourceware.org.\n"
|
||||
" or (2), feel free to report it to me at: jseward@bzip.org.\n"
|
||||
" Section 4.3 of the user's manual describes the info a useful\n"
|
||||
" bug report should have. If the manual is available on your\n"
|
||||
" system, please try and read it before mailing me. If you don't\n"
|
||||
@@ -852,7 +852,7 @@ void mySIGSEGVorSIGBUScatcher ( IntNative n )
|
||||
" The user's manual, Section 4.3, has more info on (2) and (3).\n"
|
||||
" \n"
|
||||
" If you suspect this is a bug in bzip2, or are unsure about (2)\n"
|
||||
" or (3), feel free to report it to: bzip2-devel@sourceware.org.\n"
|
||||
" or (3), feel free to report it to me at: jseward@bzip.org.\n"
|
||||
" Section 4.3 of the user's manual describes the info a useful\n"
|
||||
" bug report should have. If the manual is available on your\n"
|
||||
" system, please try and read it before mailing me. If you don't\n"
|
||||
@@ -1605,11 +1605,11 @@ void license ( void )
|
||||
"bzip2, a block-sorting file compressor. "
|
||||
"Version %s.\n"
|
||||
" \n"
|
||||
" Copyright (C) 1996-2019 by Julian Seward.\n"
|
||||
" Copyright (C) 1996-2010 by Julian Seward.\n"
|
||||
" \n"
|
||||
" This program is free software; you can redistribute it and/or modify\n"
|
||||
" it under the terms set out in the LICENSE file, which is included\n"
|
||||
" in the bzip2 source distribution.\n"
|
||||
" in the bzip2-1.0.6 source distribution.\n"
|
||||
" \n"
|
||||
" This program is distributed in the hope that it will be useful,\n"
|
||||
" but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
|
||||
@@ -2005,14 +2005,12 @@ IntNative main ( IntNative argc, Char *argv[] )
|
||||
testf ( aa->name );
|
||||
}
|
||||
}
|
||||
if (testFailsExist) {
|
||||
if (noisy) {
|
||||
fprintf ( stderr,
|
||||
"\n"
|
||||
"You can use the `bzip2recover' program to attempt to recover\n"
|
||||
"data from undamaged sections of corrupted files.\n\n"
|
||||
);
|
||||
}
|
||||
if (testFailsExist && noisy) {
|
||||
fprintf ( stderr,
|
||||
"\n"
|
||||
"You can use the `bzip2recover' program to attempt to recover\n"
|
||||
"data from undamaged sections of corrupted files.\n\n"
|
||||
);
|
||||
setExit(2);
|
||||
exit(exitValue);
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
@@ -309,12 +309,11 @@ Int32 main ( Int32 argc, Char** argv )
|
||||
UInt32 buffHi, buffLo, blockCRC;
|
||||
Char* p;
|
||||
|
||||
strncpy ( progName, argv[0], BZ_MAX_FILENAME-1);
|
||||
progName[BZ_MAX_FILENAME-1]='\0';
|
||||
strcpy ( progName, argv[0] );
|
||||
inFileName[0] = outFileName[0] = 0;
|
||||
|
||||
fprintf ( stderr,
|
||||
"bzip2recover 1.0.8: extracts blocks from damaged .bz2 files.\n" );
|
||||
"bzip2recover 1.0.6: extracts blocks from damaged .bz2 files.\n" );
|
||||
|
||||
if (argc != 2) {
|
||||
fprintf ( stderr, "%s: usage is `%s damaged_file_name'.\n",
|
||||
@@ -458,7 +457,6 @@ Int32 main ( Int32 argc, Char** argv )
|
||||
bsPutUChar ( bsWr, 0x50 ); bsPutUChar ( bsWr, 0x90 );
|
||||
bsPutUInt32 ( bsWr, blockCRC );
|
||||
bsClose ( bsWr );
|
||||
outFile = NULL;
|
||||
}
|
||||
if (wrBlock >= rbCtr) break;
|
||||
wrBlock++;
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
@@ -47,12 +47,12 @@ void BZ2_bz__AssertH__fail ( int errcode )
|
||||
fprintf(stderr,
|
||||
"\n\nbzip2/libbzip2: internal error number %d.\n"
|
||||
"This is a bug in bzip2/libbzip2, %s.\n"
|
||||
"Please report it to: bzip2-devel@sourceware.org. If this happened\n"
|
||||
"Please report it to me at: jseward@bzip.org. If this happened\n"
|
||||
"when you were using some program which uses libbzip2 as a\n"
|
||||
"component, you should also report this bug to the author(s)\n"
|
||||
"of that program. Please make an effort to report this bug;\n"
|
||||
"timely and accurate bug reports eventually lead to higher\n"
|
||||
"quality software. Thanks.\n\n",
|
||||
"quality software. Thanks. Julian Seward, 10 December 2007.\n\n",
|
||||
errcode,
|
||||
BZ2_bzlibVersion()
|
||||
);
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
/*-- General stuff. --*/
|
||||
|
||||
#define BZ_VERSION "1.0.8, 13-Jul-2019"
|
||||
#define BZ_VERSION "1.0.6, 6-Sept-2010"
|
||||
|
||||
typedef char Char;
|
||||
typedef unsigned char Bool;
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
@@ -454,7 +454,7 @@ void sendMTFValues ( EState* s )
|
||||
|
||||
AssertH( nGroups < 8, 3002 );
|
||||
AssertH( nSelectors < 32768 &&
|
||||
nSelectors <= BZ_MAX_SELECTORS,
|
||||
nSelectors <= (2 + (900000 / BZ_G_SIZE)),
|
||||
3003 );
|
||||
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
@@ -285,7 +285,7 @@ Int32 BZ2_decompress ( DState* s )
|
||||
|
||||
/*--- Now the selectors ---*/
|
||||
GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
|
||||
if (nGroups < 2 || nGroups > BZ_N_GROUPS) RETURN(BZ_DATA_ERROR);
|
||||
if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
|
||||
GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
|
||||
if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
|
||||
for (i = 0; i < nSelectors; i++) {
|
||||
@@ -296,14 +296,8 @@ Int32 BZ2_decompress ( DState* s )
|
||||
j++;
|
||||
if (j >= nGroups) RETURN(BZ_DATA_ERROR);
|
||||
}
|
||||
/* Having more than BZ_MAX_SELECTORS doesn't make much sense
|
||||
since they will never be used, but some implementations might
|
||||
"round up" the number of selectors, so just ignore those. */
|
||||
if (i < BZ_MAX_SELECTORS)
|
||||
s->selectorMtf[i] = j;
|
||||
s->selectorMtf[i] = j;
|
||||
}
|
||||
if (nSelectors > BZ_MAX_SELECTORS)
|
||||
nSelectors = BZ_MAX_SELECTORS;
|
||||
|
||||
/*--- Undo the MTF values for the selectors. ---*/
|
||||
{
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
bzip2/libbzip2 version 1.0.6 of 6 September 2010
|
||||
Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
Checking test results. If any of the four "cmp"s which follow
|
||||
report any differences, something is wrong. If you can't easily
|
||||
figure out what, please let me know (jseward@acm.org).
|
||||
figure out what, please let me know (jseward@bzip.org).
|
||||
|
||||
+2
-56
@@ -1,60 +1,6 @@
|
||||
2017-09-02 11:53 Christos Zoulas <[email protected]>
|
||||
|
||||
* release 5.32
|
||||
|
||||
2017-08-28 16:37 Christos Zoulas <[email protected]>
|
||||
|
||||
* Always reset state in {file,buffer}_apprentice (Krzysztof Wilczynski)
|
||||
|
||||
2017-08-27 03:55 Christos Zoulas <[email protected]>
|
||||
|
||||
* Fix always true condition (Thomas Jarosch)
|
||||
|
||||
2017-05-24 17:30 Christos Zoulas <[email protected]>
|
||||
|
||||
* pickier parsing of numeric values in magic files.
|
||||
|
||||
2017-05-23 17:55 Christos Zoulas <[email protected]>
|
||||
|
||||
* PR/615 add magic_getflags()
|
||||
|
||||
2017-05-23 13:55 Christos Zoulas <[email protected]>
|
||||
|
||||
* release 5.31
|
||||
|
||||
2017-03-17 20:32 Christos Zoulas <[email protected]>
|
||||
|
||||
* remove trailing spaces from magic files
|
||||
* refactor is_tar
|
||||
* better bounds checks for cdf
|
||||
|
||||
2017-02-10 12:24 Christos Zoulas <[email protected]>
|
||||
|
||||
* release 5.30
|
||||
|
||||
2017-02-07 23:27 Christos Zoulas <[email protected]>
|
||||
|
||||
* If we exceeded the offset in a search return no match
|
||||
(Christoph Biedl)
|
||||
* Be more lenient on corrupt CDF files (Christoph Biedl)
|
||||
|
||||
2017-02-04 16:46 Christos Zoulas <[email protected]>
|
||||
|
||||
* pacify ubsan sign extension (oss-fuzz/524)
|
||||
|
||||
2017-02-01 12:42 Christos Zoulas <[email protected]>
|
||||
|
||||
* off by one in cdf parsing (PR/593)
|
||||
* report debugging sections in elf (PR/591)
|
||||
|
||||
2016-11-06 10:52 Christos Zoulas <[email protected]>
|
||||
|
||||
* Allow @@@ in extensions
|
||||
* Add missing overflow check in der magic (Jonas Wagner)
|
||||
|
||||
2016-10-25 10:40 Christos Zoulas <[email protected]>
|
||||
|
||||
* release 5.29
|
||||
* release 5.28
|
||||
|
||||
2016-10-24 11:20 Christos Zoulas <[email protected]>
|
||||
|
||||
@@ -441,7 +387,7 @@
|
||||
`
|
||||
2013-11-06 14:40 Christos Zoulas <[email protected]>
|
||||
|
||||
* fix erroneous non-zero exit code from non-existent file and message
|
||||
* fix erroneous non-zero exit code from non-existant file and message
|
||||
|
||||
2013-10-29 14:25 Christos Zoulas <[email protected]>
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -21,7 +21,7 @@ If you have problems, you may need to regenerate the build system entirely.
|
||||
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
||||
|
||||
# visibility.m4 serial 5 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2005, 2008, 2010-2016 Free Software Foundation, Inc.
|
||||
dnl Copyright (C) 2005, 2008, 2010-2014 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
Vendored
+60
-84
@@ -1,8 +1,8 @@
|
||||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2015 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2017-01-01'
|
||||
timestamp='2015-03-04'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
@@ -27,7 +27,7 @@ timestamp='2017-01-01'
|
||||
# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
|
||||
#
|
||||
# You can get the latest version of this script from:
|
||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
|
||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
|
||||
#
|
||||
# Please send patches to <[email protected]>.
|
||||
|
||||
@@ -50,7 +50,7 @@ version="\
|
||||
GNU config.guess ($timestamp)
|
||||
|
||||
Originally written by Per Bothner.
|
||||
Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
Copyright 1992-2015 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
@@ -186,12 +186,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
|
||||
esac
|
||||
# The Operating System including object format, if it has switched
|
||||
# to ELF recently (or will in the future) and ABI.
|
||||
# to ELF recently, or will in the future.
|
||||
case "${UNAME_MACHINE_ARCH}" in
|
||||
earm*)
|
||||
os=netbsdelf
|
||||
;;
|
||||
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
|
||||
arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
|
||||
eval $set_cc_for_build
|
||||
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ELF__
|
||||
@@ -224,7 +221,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
release='-gnu'
|
||||
;;
|
||||
*)
|
||||
release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
|
||||
release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
;;
|
||||
esac
|
||||
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
|
||||
@@ -240,10 +237,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
|
||||
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
|
||||
exit ;;
|
||||
*:LibertyBSD:*:*)
|
||||
UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
|
||||
echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
|
||||
exit ;;
|
||||
*:ekkoBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
|
||||
exit ;;
|
||||
@@ -256,9 +249,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
*:MirBSD:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
|
||||
exit ;;
|
||||
*:Sortix:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-sortix
|
||||
exit ;;
|
||||
alpha:OSF1:*:*)
|
||||
case $UNAME_RELEASE in
|
||||
*4.0)
|
||||
@@ -275,42 +265,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
|
||||
case "$ALPHA_CPU_TYPE" in
|
||||
"EV4 (21064)")
|
||||
UNAME_MACHINE=alpha ;;
|
||||
UNAME_MACHINE="alpha" ;;
|
||||
"EV4.5 (21064)")
|
||||
UNAME_MACHINE=alpha ;;
|
||||
UNAME_MACHINE="alpha" ;;
|
||||
"LCA4 (21066/21068)")
|
||||
UNAME_MACHINE=alpha ;;
|
||||
UNAME_MACHINE="alpha" ;;
|
||||
"EV5 (21164)")
|
||||
UNAME_MACHINE=alphaev5 ;;
|
||||
UNAME_MACHINE="alphaev5" ;;
|
||||
"EV5.6 (21164A)")
|
||||
UNAME_MACHINE=alphaev56 ;;
|
||||
UNAME_MACHINE="alphaev56" ;;
|
||||
"EV5.6 (21164PC)")
|
||||
UNAME_MACHINE=alphapca56 ;;
|
||||
UNAME_MACHINE="alphapca56" ;;
|
||||
"EV5.7 (21164PC)")
|
||||
UNAME_MACHINE=alphapca57 ;;
|
||||
UNAME_MACHINE="alphapca57" ;;
|
||||
"EV6 (21264)")
|
||||
UNAME_MACHINE=alphaev6 ;;
|
||||
UNAME_MACHINE="alphaev6" ;;
|
||||
"EV6.7 (21264A)")
|
||||
UNAME_MACHINE=alphaev67 ;;
|
||||
UNAME_MACHINE="alphaev67" ;;
|
||||
"EV6.8CB (21264C)")
|
||||
UNAME_MACHINE=alphaev68 ;;
|
||||
UNAME_MACHINE="alphaev68" ;;
|
||||
"EV6.8AL (21264B)")
|
||||
UNAME_MACHINE=alphaev68 ;;
|
||||
UNAME_MACHINE="alphaev68" ;;
|
||||
"EV6.8CX (21264D)")
|
||||
UNAME_MACHINE=alphaev68 ;;
|
||||
UNAME_MACHINE="alphaev68" ;;
|
||||
"EV6.9A (21264/EV69A)")
|
||||
UNAME_MACHINE=alphaev69 ;;
|
||||
UNAME_MACHINE="alphaev69" ;;
|
||||
"EV7 (21364)")
|
||||
UNAME_MACHINE=alphaev7 ;;
|
||||
UNAME_MACHINE="alphaev7" ;;
|
||||
"EV7.9 (21364A)")
|
||||
UNAME_MACHINE=alphaev79 ;;
|
||||
UNAME_MACHINE="alphaev79" ;;
|
||||
esac
|
||||
# A Pn.n version is a patched version.
|
||||
# A Vn.n version is a released version.
|
||||
# A Tn.n version is a released field test version.
|
||||
# A Xn.n version is an unreleased experimental baselevel.
|
||||
# 1.2 uses "1.2" for uname -r.
|
||||
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
|
||||
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
|
||||
exitcode=$?
|
||||
trap '' 0
|
||||
@@ -383,16 +373,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
exit ;;
|
||||
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
|
||||
eval $set_cc_for_build
|
||||
SUN_ARCH=i386
|
||||
SUN_ARCH="i386"
|
||||
# If there is a compiler, see if it is configured for 64-bit objects.
|
||||
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
|
||||
# This test works for both compilers.
|
||||
if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
|
||||
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
|
||||
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
|
||||
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
|
||||
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
|
||||
grep IS_64BIT_ARCH >/dev/null
|
||||
then
|
||||
SUN_ARCH=x86_64
|
||||
SUN_ARCH="x86_64"
|
||||
fi
|
||||
fi
|
||||
echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
@@ -417,7 +407,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
exit ;;
|
||||
sun*:*:4.2BSD:*)
|
||||
UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
|
||||
test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
|
||||
test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
|
||||
case "`/bin/arch`" in
|
||||
sun3)
|
||||
echo m68k-sun-sunos${UNAME_RELEASE}
|
||||
@@ -642,13 +632,13 @@ EOF
|
||||
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
|
||||
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
|
||||
case "${sc_cpu_version}" in
|
||||
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
|
||||
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
|
||||
523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
|
||||
528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
|
||||
532) # CPU_PA_RISC2_0
|
||||
case "${sc_kernel_bits}" in
|
||||
32) HP_ARCH=hppa2.0n ;;
|
||||
64) HP_ARCH=hppa2.0w ;;
|
||||
'') HP_ARCH=hppa2.0 ;; # HP-UX 10.20
|
||||
32) HP_ARCH="hppa2.0n" ;;
|
||||
64) HP_ARCH="hppa2.0w" ;;
|
||||
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
|
||||
esac ;;
|
||||
esac
|
||||
fi
|
||||
@@ -687,11 +677,11 @@ EOF
|
||||
exit (0);
|
||||
}
|
||||
EOF
|
||||
(CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
|
||||
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
|
||||
test -z "$HP_ARCH" && HP_ARCH=hppa
|
||||
fi ;;
|
||||
esac
|
||||
if [ ${HP_ARCH} = hppa2.0w ]
|
||||
if [ ${HP_ARCH} = "hppa2.0w" ]
|
||||
then
|
||||
eval $set_cc_for_build
|
||||
|
||||
@@ -704,12 +694,12 @@ EOF
|
||||
# $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
|
||||
# => hppa64-hp-hpux11.23
|
||||
|
||||
if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
|
||||
if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
|
||||
grep -q __LP64__
|
||||
then
|
||||
HP_ARCH=hppa2.0w
|
||||
HP_ARCH="hppa2.0w"
|
||||
else
|
||||
HP_ARCH=hppa64
|
||||
HP_ARCH="hppa64"
|
||||
fi
|
||||
fi
|
||||
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
|
||||
@@ -814,14 +804,14 @@ EOF
|
||||
echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
|
||||
exit ;;
|
||||
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
|
||||
FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
|
||||
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
|
||||
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
|
||||
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
|
||||
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
|
||||
exit ;;
|
||||
5000:UNIX_System_V:4.*:*)
|
||||
FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
|
||||
FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
|
||||
FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
|
||||
FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
|
||||
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
|
||||
exit ;;
|
||||
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
|
||||
@@ -903,7 +893,7 @@ EOF
|
||||
exit ;;
|
||||
*:GNU/*:*:*)
|
||||
# other systems with GNU libc and userland
|
||||
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
|
||||
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
|
||||
exit ;;
|
||||
i*86:Minix:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
@@ -926,7 +916,7 @@ EOF
|
||||
EV68*) UNAME_MACHINE=alphaev68 ;;
|
||||
esac
|
||||
objdump --private-headers /bin/sh | grep -q ld.so.1
|
||||
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
|
||||
if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
arc:Linux:*:* | arceb:Linux:*:*)
|
||||
@@ -972,9 +962,6 @@ EOF
|
||||
ia64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
k1om:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
m32r*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
@@ -1000,9 +987,6 @@ EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
||||
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
|
||||
;;
|
||||
mips64el:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
openrisc*:Linux:*:*)
|
||||
echo or1k-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
@@ -1035,9 +1019,6 @@ EOF
|
||||
ppcle:Linux:*:*)
|
||||
echo powerpcle-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
riscv32:Linux:*:* | riscv64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
s390:Linux:*:* | s390x:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
|
||||
exit ;;
|
||||
@@ -1057,7 +1038,7 @@ EOF
|
||||
echo ${UNAME_MACHINE}-dec-linux-${LIBC}
|
||||
exit ;;
|
||||
x86_64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-linux-${LIBC}
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
xtensa*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
@@ -1136,7 +1117,7 @@ EOF
|
||||
# uname -m prints for DJGPP always 'pc', but it prints nothing about
|
||||
# the processor, so we play safe by assuming i586.
|
||||
# Note: whatever this is, it MUST be the same as what config.sub
|
||||
# prints for the "djgpp" host, or else GDB configure will decide that
|
||||
# prints for the "djgpp" host, or else GDB configury will decide that
|
||||
# this is a cross-build.
|
||||
echo i586-pc-msdosdjgpp
|
||||
exit ;;
|
||||
@@ -1285,9 +1266,6 @@ EOF
|
||||
SX-8R:SUPER-UX:*:*)
|
||||
echo sx8r-nec-superux${UNAME_RELEASE}
|
||||
exit ;;
|
||||
SX-ACE:SUPER-UX:*:*)
|
||||
echo sxace-nec-superux${UNAME_RELEASE}
|
||||
exit ;;
|
||||
Power*:Rhapsody:*:*)
|
||||
echo powerpc-apple-rhapsody${UNAME_RELEASE}
|
||||
exit ;;
|
||||
@@ -1301,9 +1279,9 @@ EOF
|
||||
UNAME_PROCESSOR=powerpc
|
||||
fi
|
||||
if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
|
||||
if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
|
||||
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
|
||||
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
|
||||
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
|
||||
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
|
||||
grep IS_64BIT_ARCH >/dev/null
|
||||
then
|
||||
case $UNAME_PROCESSOR in
|
||||
@@ -1325,7 +1303,7 @@ EOF
|
||||
exit ;;
|
||||
*:procnto*:*:* | *:QNX:[0123456789]*:*)
|
||||
UNAME_PROCESSOR=`uname -p`
|
||||
if test "$UNAME_PROCESSOR" = x86; then
|
||||
if test "$UNAME_PROCESSOR" = "x86"; then
|
||||
UNAME_PROCESSOR=i386
|
||||
UNAME_MACHINE=pc
|
||||
fi
|
||||
@@ -1356,7 +1334,7 @@ EOF
|
||||
# "uname -m" is not consistent, so use $cputype instead. 386
|
||||
# is converted to i386 for consistency with other x86
|
||||
# operating systems.
|
||||
if test "$cputype" = 386; then
|
||||
if test "$cputype" = "386"; then
|
||||
UNAME_MACHINE=i386
|
||||
else
|
||||
UNAME_MACHINE="$cputype"
|
||||
@@ -1398,7 +1376,7 @@ EOF
|
||||
echo i386-pc-xenix
|
||||
exit ;;
|
||||
i*86:skyos:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
|
||||
echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
|
||||
exit ;;
|
||||
i*86:rdos:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-rdos
|
||||
@@ -1409,25 +1387,23 @@ EOF
|
||||
x86_64:VMkernel:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-esx
|
||||
exit ;;
|
||||
amd64:Isilon\ OneFS:*:*)
|
||||
echo x86_64-unknown-onefs
|
||||
exit ;;
|
||||
esac
|
||||
|
||||
cat >&2 <<EOF
|
||||
$0: unable to guess system type
|
||||
|
||||
This script (version $timestamp), has failed to recognize the
|
||||
operating system you are using. If your script is old, overwrite
|
||||
config.guess and config.sub with the latest versions from:
|
||||
This script, last modified $timestamp, has failed to recognize
|
||||
the operating system you are using. It is advised that you
|
||||
download the most up to date version of the config scripts from
|
||||
|
||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
|
||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
|
||||
and
|
||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
|
||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
|
||||
|
||||
If $0 has already been updated, send the following data and any
|
||||
information you think might be pertinent to [email protected] to
|
||||
provide the necessary information to handle your system.
|
||||
If the version you run ($0) is already up to date, please
|
||||
send the following data and any information you think might be
|
||||
pertinent to <[email protected]> in order to provide the needed
|
||||
information to handle your system.
|
||||
|
||||
config.guess timestamp = $timestamp
|
||||
|
||||
|
||||
Vendored
+17
-35
@@ -1,8 +1,8 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2015 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2017-01-01'
|
||||
timestamp='2015-03-08'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
@@ -33,7 +33,7 @@ timestamp='2017-01-01'
|
||||
# Otherwise, we print the canonical config type on stdout and succeed.
|
||||
|
||||
# You can get the latest version of this script from:
|
||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
|
||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
|
||||
|
||||
# This file is supposed to be the same for all GNU packages
|
||||
# and recognize all the CPU types, system types and aliases
|
||||
@@ -53,7 +53,8 @@ timestamp='2017-01-01'
|
||||
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
|
||||
Usage: $0 [OPTION] CPU-MFR-OPSYS
|
||||
$0 [OPTION] ALIAS
|
||||
|
||||
Canonicalize a configuration name.
|
||||
|
||||
@@ -67,7 +68,7 @@ Report bugs and patches to <[email protected]>."
|
||||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
Copyright 1992-2015 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
@@ -117,7 +118,7 @@ case $maybe_os in
|
||||
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
|
||||
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
|
||||
knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
|
||||
kopensolaris*-gnu* | cloudabi*-eabi* | \
|
||||
kopensolaris*-gnu* | \
|
||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
os=-$maybe_os
|
||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||
@@ -254,7 +255,6 @@ case $basic_machine in
|
||||
| arc | arceb \
|
||||
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
||||
| avr | avr32 \
|
||||
| ba \
|
||||
| be32 | be64 \
|
||||
| bfin \
|
||||
| c4x | c8051 | clipper \
|
||||
@@ -301,12 +301,11 @@ case $basic_machine in
|
||||
| open8 | or1k | or1knd | or32 \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||
| pru \
|
||||
| pyramid \
|
||||
| riscv32 | riscv64 \
|
||||
| rl78 | rx \
|
||||
| score \
|
||||
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||
| sh64 | sh64le \
|
||||
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
|
||||
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
|
||||
@@ -377,7 +376,6 @@ case $basic_machine in
|
||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
| ba-* \
|
||||
| be32-* | be64-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
@@ -429,15 +427,13 @@ case $basic_machine in
|
||||
| orion-* \
|
||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
|
||||
| pru-* \
|
||||
| pyramid-* \
|
||||
| riscv32-* | riscv64-* \
|
||||
| rl78-* | romp-* | rs6000-* | rx-* \
|
||||
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
|
||||
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
|
||||
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
|
||||
| sparclite-* \
|
||||
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
|
||||
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
|
||||
| tahoe-* \
|
||||
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
||||
| tile*-* \
|
||||
@@ -522,7 +518,7 @@ case $basic_machine in
|
||||
basic_machine=i386-pc
|
||||
os=-aros
|
||||
;;
|
||||
asmjs)
|
||||
asmjs)
|
||||
basic_machine=asmjs-unknown
|
||||
;;
|
||||
aux)
|
||||
@@ -645,14 +641,6 @@ case $basic_machine in
|
||||
basic_machine=m68k-bull
|
||||
os=-sysv3
|
||||
;;
|
||||
e500v[12])
|
||||
basic_machine=powerpc-unknown
|
||||
os=$os"spe"
|
||||
;;
|
||||
e500v[12]-*)
|
||||
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
os=$os"spe"
|
||||
;;
|
||||
ebmon29k)
|
||||
basic_machine=a29k-amd
|
||||
os=-ebmon
|
||||
@@ -1032,7 +1020,7 @@ case $basic_machine in
|
||||
ppc-* | ppcbe-*)
|
||||
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppcle | powerpclittle)
|
||||
ppcle | powerpclittle | ppc-le | powerpc-little)
|
||||
basic_machine=powerpcle-unknown
|
||||
;;
|
||||
ppcle-* | powerpclittle-*)
|
||||
@@ -1042,7 +1030,7 @@ case $basic_machine in
|
||||
;;
|
||||
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppc64le | powerpc64little)
|
||||
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
|
||||
basic_machine=powerpc64le-unknown
|
||||
;;
|
||||
ppc64le-* | powerpc64little-*)
|
||||
@@ -1388,18 +1376,18 @@ case $os in
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||
| -sym* | -kopensolaris* | -plan9* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* | -aros* | -cloudabi* | -sortix* \
|
||||
| -aos* | -aros* | -cloudabi* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
| -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
|
||||
| -bitrig* | -openbsd* | -solidbsd* \
|
||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
@@ -1408,8 +1396,7 @@ case $os in
|
||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
|
||||
| -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
|
||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-qnx*)
|
||||
@@ -1541,8 +1528,6 @@ case $os in
|
||||
;;
|
||||
-nacl*)
|
||||
;;
|
||||
-ios)
|
||||
;;
|
||||
-none)
|
||||
;;
|
||||
*)
|
||||
@@ -1638,9 +1623,6 @@ case $basic_machine in
|
||||
sparc-* | *-sun)
|
||||
os=-sunos4.1.1
|
||||
;;
|
||||
pru-*)
|
||||
os=-elf
|
||||
;;
|
||||
*-be)
|
||||
os=-beos
|
||||
;;
|
||||
|
||||
Vendored
+10
-10
@@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.69 for file 5.32.
|
||||
# Generated by GNU Autoconf 2.69 for file 5.29.
|
||||
#
|
||||
# Report bugs to <[email protected]>.
|
||||
#
|
||||
@@ -590,8 +590,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='file'
|
||||
PACKAGE_TARNAME='file'
|
||||
PACKAGE_VERSION='5.32'
|
||||
PACKAGE_STRING='file 5.32'
|
||||
PACKAGE_VERSION='5.29'
|
||||
PACKAGE_STRING='file 5.29'
|
||||
PACKAGE_BUGREPORT='[email protected]'
|
||||
PACKAGE_URL=''
|
||||
|
||||
@@ -1328,7 +1328,7 @@ if test "$ac_init_help" = "long"; then
|
||||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures file 5.32 to adapt to many kinds of systems.
|
||||
\`configure' configures file 5.29 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@@ -1398,7 +1398,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of file 5.32:";;
|
||||
short | recursive ) echo "Configuration of file 5.29:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@@ -1509,7 +1509,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
file configure 5.32
|
||||
file configure 5.29
|
||||
generated by GNU Autoconf 2.69
|
||||
|
||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
@@ -2165,7 +2165,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by file $as_me 5.32, which was
|
||||
It was created by file $as_me 5.29, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
@@ -3031,7 +3031,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='file'
|
||||
VERSION='5.32'
|
||||
VERSION='5.29'
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
@@ -15075,7 +15075,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by file $as_me 5.32, which was
|
||||
This file was extended by file $as_me 5.29, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@@ -15141,7 +15141,7 @@ _ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||
ac_cs_version="\\
|
||||
file config.status 5.32
|
||||
file config.status 5.29
|
||||
configured by $0, generated by GNU Autoconf 2.69,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT([file],[5.32],[[email protected]])
|
||||
AC_INIT([file],[5.29],[[email protected]])
|
||||
AM_INIT_AUTOMAKE([subdir-objects foreign])
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.\" $File: file.man,v 1.125 2017/01/03 11:24:46 christos Exp $
|
||||
.\" $File: file.man,v 1.124 2016/10/19 20:52:45 christos Exp $
|
||||
.Dd October 19, 2016
|
||||
.Dt FILE __CSECTION__
|
||||
.Os
|
||||
@@ -238,8 +238,8 @@ or at least one filename argument must be present;
|
||||
to test the standard input, use
|
||||
.Sq -
|
||||
as a filename argument.
|
||||
Please note that
|
||||
.Ar namefile
|
||||
Please note that
|
||||
.Ar namefile
|
||||
is unwrapped and the enclosed filenames are processed when this option is
|
||||
encountered and before any further options processing is done.
|
||||
This allows one to process multiple lists of files with different command line
|
||||
@@ -411,10 +411,10 @@ and
|
||||
.Fl h
|
||||
options.
|
||||
.Sh SEE ALSO
|
||||
.Xr magic __FSECTION__ ,
|
||||
.Xr hexdump 1 ,
|
||||
.Xr od 1 ,
|
||||
.Xr strings 1 ,
|
||||
.Xr magic __FSECTION__ ,
|
||||
.Xr fstyp 8
|
||||
.Sh STANDARDS CONFORMANCE
|
||||
This program is believed to exceed the System V Interface Definition
|
||||
@@ -531,15 +531,16 @@ John Gilmore revised the code extensively, making it better than
|
||||
the first version.
|
||||
Geoff Collyer found several inadequacies
|
||||
and provided some magic file entries.
|
||||
Contributions of the
|
||||
Contributions by the
|
||||
.Sq \*[Am]
|
||||
operator by Rob McMahon,
|
||||
.Aq [email protected] ,
|
||||
1989.
|
||||
.Pp
|
||||
Guy Harris,
|
||||
Guy Harris,
|
||||
.Aq [email protected] ,
|
||||
made many changes from 1993 to the present.
|
||||
1989.
|
||||
.Pp
|
||||
Primary development and maintenance from 1990 to the present by
|
||||
Christos Zoulas
|
||||
@@ -587,6 +588,7 @@ program, and are not covered by the above license.
|
||||
.Nm
|
||||
returns 0 on success, and non-zero on error.
|
||||
.Sh BUGS
|
||||
.Pp
|
||||
Please report bugs and send patches to the bug tracker at
|
||||
.Pa http://bugs.gw.com/
|
||||
or the mailing list at
|
||||
@@ -595,6 +597,7 @@ or the mailing list at
|
||||
.Pa http://mx.gw.com/mailman/listinfo/file
|
||||
first to subscribe).
|
||||
.Sh TODO
|
||||
.Pp
|
||||
Fix output so that tests for MIME and APPLE flags are not needed all
|
||||
over the place, and actual output is only done in one place.
|
||||
This needs a design.
|
||||
@@ -643,16 +646,16 @@ Fix
|
||||
.Dq name
|
||||
and
|
||||
.Dq use
|
||||
to check for consistency at compile time (duplicate
|
||||
to check for consistency at compile time (duplicate
|
||||
.Dq name ,
|
||||
.Dq use
|
||||
pointing to undefined
|
||||
.Dq name
|
||||
).
|
||||
Make
|
||||
Make
|
||||
.Dq name
|
||||
/
|
||||
.Dq use
|
||||
.Dq use
|
||||
more efficient by keeping a sorted list of names.
|
||||
Special-case ^ to flip endianness in the parser so that it does not
|
||||
have to be escaped, and document it.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.\" $File: libmagic.man,v 1.41 2017/05/23 21:54:07 christos Exp $
|
||||
.\" $File: libmagic.man,v 1.40 2016/03/31 17:51:12 christos Exp $
|
||||
.\"
|
||||
.\" Copyright (c) Christos Zoulas 2003.
|
||||
.\" All Rights Reserved.
|
||||
@@ -25,7 +25,7 @@
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd May 23, 2017
|
||||
.Dd September 11, 2015
|
||||
.Dt LIBMAGIC 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
@@ -35,7 +35,6 @@
|
||||
.Nm magic_errno ,
|
||||
.Nm magic_descriptor ,
|
||||
.Nm magic_buffer ,
|
||||
.Nm magic_getflags ,
|
||||
.Nm magic_setflags ,
|
||||
.Nm magic_check ,
|
||||
.Nm magic_compile ,
|
||||
@@ -65,8 +64,6 @@
|
||||
.Ft const char *
|
||||
.Fn magic_buffer "magic_t cookie" "const void *buffer" "size_t length"
|
||||
.Ft int
|
||||
.Fn magic_getflags "magic_t cookie"
|
||||
.Ft int
|
||||
.Fn magic_setflags "magic_t cookie" "int flags"
|
||||
.Ft int
|
||||
.Fn magic_check "magic_t cookie" "const char *filename"
|
||||
@@ -209,12 +206,6 @@ argument with
|
||||
bytes size.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_getflags
|
||||
functions returns a value representing current
|
||||
.Ar flags
|
||||
set.
|
||||
.Pp
|
||||
The
|
||||
.Fn magic_setflags
|
||||
function sets the
|
||||
.Ar flags
|
||||
|
||||
+12
-18
@@ -1,5 +1,5 @@
|
||||
.\" $File: magic.man,v 1.91 2017/02/12 15:30:08 christos Exp $
|
||||
.Dd February 12, 2017
|
||||
.\" $File: magic.man,v 1.88 2016/07/27 09:42:49 rrt Exp $
|
||||
.Dd July 20, 2016
|
||||
.Dt MAGIC __FSECTION__
|
||||
.Os
|
||||
.\" install as magic.4 on USG, magic.5 on V7, Berkeley and Linux systems.
|
||||
@@ -7,7 +7,7 @@
|
||||
.Nm magic
|
||||
.Nd file command's magic pattern file
|
||||
.Sh DESCRIPTION
|
||||
This manual page documents the format of magic files as
|
||||
This manual page documents the format of the magic file as
|
||||
used by the
|
||||
.Xr file __CSECTION__
|
||||
command, version __VERSION__.
|
||||
@@ -17,19 +17,13 @@ command identifies the type of a file using,
|
||||
among other tests,
|
||||
a test for whether the file contains certain
|
||||
.Dq "magic patterns" .
|
||||
The database of these
|
||||
.Dq "magic patterns"
|
||||
is usually located in a binary file in
|
||||
.Pa __MAGIC__.mgc
|
||||
or a directory of source text magic pattern fragment files in
|
||||
.Pa __MAGIC__ .
|
||||
The database specifies what patterns are to be tested for, what message or
|
||||
The file
|
||||
.Pa __MAGIC__
|
||||
specifies what patterns are to be tested for, what message or
|
||||
MIME type to print if a particular pattern is found,
|
||||
and additional information to extract from the file.
|
||||
.Pp
|
||||
The format of the source fragment files that are used to build this database
|
||||
is as follows:
|
||||
Each line of a fragment file specifies a test to be performed.
|
||||
Each line of the file specifies a test to be performed.
|
||||
A test compares the data starting at a particular offset
|
||||
in the file with a byte value, a string or a numeric value.
|
||||
If the test succeeds, a message is printed.
|
||||
@@ -104,13 +98,13 @@ The following modifiers are supported:
|
||||
.It B
|
||||
A byte length (default).
|
||||
.It H
|
||||
A 4 byte big endian length.
|
||||
.It h
|
||||
A 2 byte big endian length.
|
||||
.It h
|
||||
A 2 byte big little length.
|
||||
.It L
|
||||
A 4 byte little endian length.
|
||||
A 4 byte big endian length.
|
||||
.It l
|
||||
A 2 byte little endian length.
|
||||
A 4 byte big little length.
|
||||
.It J
|
||||
The length includes itself in its count.
|
||||
.El
|
||||
@@ -657,7 +651,7 @@ start of the main indirect offset.
|
||||
\*[Gt]\*[Gt]\*[Gt]\*[Gt](\*[Am]0xe.l+(-4)) string PK\e3\e4 \eb, ZIP self-extracting archive
|
||||
.Ed
|
||||
.Pp
|
||||
If you have a list of known values at a particular continuation level,
|
||||
If you have a list of known avalues at a particular continuation level,
|
||||
and you want to provide a switch-like default case:
|
||||
.Bd -literal -offset indent
|
||||
# clear that continuation level match
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# Localstuff: file(1) magic for locally observed files
|
||||
#
|
||||
# $File: Localstuff,v 1.5 2007/01/12 17:38:27 christos Exp $
|
||||
# $File: Localstuff,v 1.4 2003/03/23 04:17:27 christos Exp $
|
||||
# Add any locally observed files here. Remember:
|
||||
# text if readable, executable if runnable binary, data if unreadable.
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: adventure,v 1.17 2017/07/03 16:03:40 christos Exp $
|
||||
# $File: adventure,v 1.15 2015/09/07 10:03:21 christos Exp $
|
||||
# adventure: file(1) magic for Adventure game files
|
||||
#
|
||||
# from Allen Garvin <[email protected]>
|
||||
@@ -36,12 +36,11 @@
|
||||
>0 ubyte <9
|
||||
>>16 belong&0xfe00f0f0 0x3030
|
||||
>>>0 ubyte < 10
|
||||
>>>>2 ubeshort x
|
||||
>>>>2 ubeshort < 10
|
||||
>>>>>18 regex [0-9][0-9][0-9][0-9][0-9][0-9]
|
||||
>>>>>>0 ubyte < 10 Infocom (Z-machine %d
|
||||
>>>>>>>2 ubeshort x \b, Release %d
|
||||
>>>>>>>>18 string >\0 \b, Serial %.6s
|
||||
>>>>>>>>18 string x \b)
|
||||
>>>>>>0 ubyte < 10 Infocom (Z-machine %d,
|
||||
>>>>>>>2 ubeshort < 10 Release %d /
|
||||
>>>>>>>>18 string >\0 Serial %.6s)
|
||||
!:strength + 40
|
||||
!:mime application/x-zmachine
|
||||
|
||||
@@ -79,7 +78,7 @@
|
||||
!:mime application/x-tads
|
||||
# Some saved game files start with "TADS2 save/g\n\r\032\0", a little-endian
|
||||
# 2-byte length N, the N-char name of the game file *without* a NUL (darn!),
|
||||
# "TADS2 save\n\r\032\0" and the interpreter version.
|
||||
# "TADS2 save\n\r\032\0" and the interpreter version.
|
||||
0 string TADS2\ save/g TADS
|
||||
>12 belong !0x0A0D1A00 saved game data, CORRUPTED
|
||||
>12 belong 0x0A0D1A00
|
||||
@@ -110,7 +109,7 @@
|
||||
# edited by David Griffith <[email protected]>
|
||||
# Danny Milosavljevic <[email protected]>
|
||||
# These are ADRIFT (adventure game standard) game files, extension .taf
|
||||
# Checked from source at (http://www.adrift.co/) and various taf files
|
||||
# Checked from source at (http://www.adrift.co/) and various taf files
|
||||
# found at the Interactive Fiction Archive (http://ifarchive.org/)
|
||||
0 belong 0x3C423FC9
|
||||
>4 belong 0x6A87C2CF Adrift game file version
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: amanda,v 1.6 2017/03/17 21:35:28 christos Exp $
|
||||
# $File: amanda,v 1.5 2009/09/19 16:28:07 christos Exp $
|
||||
# amanda: file(1) magic for amanda file format
|
||||
#
|
||||
0 string AMANDA:\ AMANDA
|
||||
0 string AMANDA:\ AMANDA
|
||||
>8 string TAPESTART\ DATE tape header file,
|
||||
>>23 string X
|
||||
>>>25 string >\ Unused %s
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: amigaos,v 1.16 2017/03/17 21:35:28 christos Exp $
|
||||
# $File: amigaos,v 1.15 2012/06/21 01:13:59 christos Exp $
|
||||
# amigaos: file(1) magic for AmigaOS binary formats:
|
||||
|
||||
#
|
||||
@@ -11,7 +11,7 @@
|
||||
0 belong 0x000003e7 AmigaOS object/library data
|
||||
#
|
||||
0 beshort 0xe310 Amiga Workbench
|
||||
>2 beshort 1
|
||||
>2 beshort 1
|
||||
>>48 byte 1 disk icon
|
||||
>>48 byte 2 drawer icon
|
||||
>>48 byte 3 tool icon
|
||||
@@ -49,7 +49,7 @@
|
||||
0 string/c @database AmigaGuide file
|
||||
|
||||
# Amiga disk types
|
||||
#
|
||||
#
|
||||
0 string RDSK Rigid Disk Block
|
||||
>160 string x on %.24s
|
||||
0 string DOS\0 Amiga DOS disk
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------
|
||||
# $File: android,v 1.10 2017/03/17 21:35:28 christos Exp $
|
||||
# $File: android,v 1.9 2016/01/11 21:19:18 christos Exp $
|
||||
# Various android related magic entries
|
||||
#------------------------------------------------------------
|
||||
|
||||
@@ -61,9 +61,9 @@
|
||||
# http://forum.xda-developers.com/showthread.php?t=816449
|
||||
# Partition Information Table for Samsung's smartphone with Android
|
||||
# used by flash software Odin
|
||||
0 ulelong 0x12349876
|
||||
0 ulelong 0x12349876
|
||||
# 1st pit entry marker
|
||||
>0x01C ulequad&0xFFFFFFFCFFFFFFFC =0x0000000000000000
|
||||
>0x01C ulequad&0xFFFFFFFCFFFFFFFC =0x0000000000000000
|
||||
# minimal 13 and maximal 18 PIT entries found
|
||||
>>4 ulelong <128 Partition Information Table for Samsung smartphone
|
||||
>>>4 ulelong x \b, %d entries
|
||||
@@ -109,9 +109,9 @@
|
||||
|
||||
0 name PIT-entry
|
||||
# garbage value implies end of pit entries
|
||||
>0x00 ulequad&0xFFFFFFFCFFFFFFFC =0x0000000000000000
|
||||
>0x00 ulequad&0xFFFFFFFCFFFFFFFC =0x0000000000000000
|
||||
# skip empty partition name
|
||||
>>0x24 ubyte !0
|
||||
>>0x24 ubyte !0
|
||||
# partition name
|
||||
>>>0x24 string >\0 %-.32s
|
||||
# flags
|
||||
@@ -122,7 +122,7 @@
|
||||
>>>0x08 ulelong x (0x%x)
|
||||
# filename
|
||||
>>>0x44 string >\0 "%-.64s"
|
||||
#>>>0x18 ulelong >0
|
||||
#>>>0x18 ulelong >0
|
||||
# blocksize in 512 byte units ?
|
||||
#>>>>0x18 ulelong x \b, %db
|
||||
# partition size in blocks ?
|
||||
|
||||
Loaded 100 of 2100 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user