MFH @ r337607, in preparation for boarding
This commit is contained in:
commit
14b841d4a8
@ -830,6 +830,13 @@ IMAKE+= __MAKE_SHELL=${INSTALLTMP}/sh
|
||||
.else
|
||||
IMAKEENV+= PATH=${TMPPATH}:${INSTALLTMP}
|
||||
.endif
|
||||
|
||||
# When generating install media, do not allow user and group information from
|
||||
# the build host to affect the contents of the distribution.
|
||||
.if make(distributeworld)
|
||||
DB_FROM_SRC= yes
|
||||
.endif
|
||||
|
||||
.if defined(DB_FROM_SRC)
|
||||
INSTALLFLAGS+= -N ${.CURDIR}/etc
|
||||
MTREEFLAGS+= -N ${.CURDIR}/etc
|
||||
@ -1936,13 +1943,17 @@ update: .PHONY
|
||||
_elftoolchain_libs= lib/libelf lib/libdwarf
|
||||
.endif
|
||||
|
||||
# libnv and libl are both requirements for config(8), which is an unconditional
|
||||
# bootstrap-tool.
|
||||
_config_deps= lib/libnv usr.bin/lex/lib
|
||||
|
||||
legacy: .PHONY
|
||||
.if ${BOOTSTRAPPING} < ${MINIMUM_SUPPORTED_OSREL} && ${BOOTSTRAPPING} != 0
|
||||
@echo "ERROR: Source upgrades from versions prior to ${MINIMUM_SUPPORTED_REL} are not supported."; \
|
||||
false
|
||||
.endif
|
||||
|
||||
.for _tool in tools/build ${_elftoolchain_libs} lib/libnv
|
||||
.for _tool in tools/build ${_elftoolchain_libs} ${_config_deps}
|
||||
${_+_}@${ECHODIR} "===> ${_tool} (obj,includes,all,install)"; \
|
||||
cd ${.CURDIR}/${_tool}; \
|
||||
if [ -z "${NO_OBJWALK}" ]; then ${MAKE} DIRPRFX=${_tool}/ obj; fi; \
|
||||
|
@ -126,10 +126,11 @@ LIBCOMPATWMAKE+= ${LIBCOMPATWMAKEENV} ${MAKE} ${LIBCOMPATWMAKEFLAGS} \
|
||||
MAKEOBJDIRPREFIX= \
|
||||
MK_MAN=no MK_HTML=no
|
||||
LIBCOMPATIMAKE+= ${LIBCOMPATWMAKE:NINSTALL=*:NDESTDIR=*} \
|
||||
MK_TOOLCHAIN=no ${IMAKE_INSTALL} \
|
||||
${IMAKE_INSTALL} \
|
||||
-DLIBRARIES_ONLY
|
||||
|
||||
_LC_LIBDIRS.yes= lib gnu/lib
|
||||
_LC_LIBDIRS.yes= lib
|
||||
_LC_LIBDIRS.yes+= gnu/lib
|
||||
_LC_LIBDIRS.${MK_CDDL:tl}+= cddl/lib
|
||||
_LC_LIBDIRS.${MK_CRYPT:tl}+= secure/lib
|
||||
_LC_LIBDIRS.${MK_KERBEROS:tl}+= kerberos5/lib
|
||||
|
@ -38,6 +38,8 @@
|
||||
# xargs -n1 | sort | uniq -d;
|
||||
# done
|
||||
|
||||
# 20180725: Cleanup old libcasper.so.0
|
||||
OLD_LIBS+=lib/libcasper.so.0
|
||||
# 20180722: indent(1) option renamed, test files follow
|
||||
OLD_FILES+=usr/bin/indent/tests/nsac.0
|
||||
OLD_FILES+=usr/bin/indent/tests/nsac.0.pro
|
||||
@ -588,8 +590,6 @@ OLD_FILES+=usr/lib/clang/5.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.
|
||||
# 20171104: libcap_random should be in /lib not in /usr/lib
|
||||
OLD_LIBS+=usr/lib/libcap_random.so.0
|
||||
# 20171104: Casper can work only as shared library
|
||||
OLD_FILES+=usr/lib/libcasper.a
|
||||
OLD_FILES+=usr/lib/libcasper_p.a
|
||||
OLD_FILES+=usr/lib/libcap_dns.a
|
||||
OLD_FILES+=usr/lib/libcap_dns_p.a
|
||||
OLD_FILES+=usr/lib/libcap_grp.a
|
||||
@ -600,6 +600,20 @@ OLD_FILES+=usr/lib/libcap_random.a
|
||||
OLD_FILES+=usr/lib/libcap_random_p.a
|
||||
OLD_FILES+=usr/lib/libcap_sysctl.a
|
||||
OLD_FILES+=usr/lib/libcap_sysctl_p.a
|
||||
OLD_FILES+=usr/lib/libcasper.a
|
||||
OLD_FILES+=usr/lib/libcasper_p.a
|
||||
OLD_FILES+=usr/lib32/libcap_dns.a
|
||||
OLD_FILES+=usr/lib32/libcap_dns_p.a
|
||||
OLD_FILES+=usr/lib32/libcap_grp.a
|
||||
OLD_FILES+=usr/lib32/libcap_grp_p.a
|
||||
OLD_FILES+=usr/lib32/libcap_pwd.a
|
||||
OLD_FILES+=usr/lib32/libcap_pwd_p.a
|
||||
OLD_FILES+=usr/lib32/libcap_random.a
|
||||
OLD_FILES+=usr/lib32/libcap_random_p.a
|
||||
OLD_FILES+=usr/lib32/libcap_sysctl.a
|
||||
OLD_FILES+=usr/lib32/libcap_sysctl_p.a
|
||||
OLD_FILES+=usr/lib32/libcasper.a
|
||||
OLD_FILES+=usr/lib32/libcasper_p.a
|
||||
# 20171031: Removal of adding_user man page
|
||||
OLD_FILES+=usr/share/man/man7/adding_user.7.gz
|
||||
# 20171031: Disconnected libpathconv tests
|
||||
@ -620,6 +634,8 @@ OLD_FILES+=usr/share/man/man9/mbp_sync.9.gz
|
||||
# 20171010: Remove libstand
|
||||
OLD_FILES+=usr/lib/libstand.a
|
||||
OLD_FILES+=usr/lib/libstand_p.a
|
||||
OLD_FILES+=usr/lib32/libstand.a
|
||||
OLD_FILES+=usr/lib32/libstand_p.a
|
||||
OLD_FILES+=usr/include/stand.h
|
||||
OLD_FILES+=usr/share/man/man3/libstand.3.gz
|
||||
# 20171003: remove RCMDS
|
||||
@ -1372,6 +1388,10 @@ OLD_FILES+=usr/lib/libifc.a
|
||||
OLD_FILES+=usr/lib/libifc_p.a
|
||||
OLD_FILES+=usr/lib/libifconfig.a
|
||||
OLD_FILES+=usr/lib/libifconfig_p.a
|
||||
OLD_FILES+=usr/lib32/libifc.a
|
||||
OLD_FILES+=usr/lib32/libifc_p.a
|
||||
OLD_FILES+=usr/lib32/libifconfig.a
|
||||
OLD_FILES+=usr/lib32/libifconfig_p.a
|
||||
# 20170529: mount.conf(8) -> mount.conf(5)
|
||||
OLD_FILES+=usr/share/man/man8/mount.conf.8.gz
|
||||
# 20170525: remove misleading template
|
||||
|
40
UPDATING
40
UPDATING
@ -1,4 +1,4 @@
|
||||
Updating Information for FreeBSD current users.
|
||||
Updating Information for FreeBSD current users.
|
||||
|
||||
This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>.
|
||||
See end of file for further details. For commonly done items, please see the
|
||||
@ -31,6 +31,29 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW:
|
||||
disable the most expensive debugging functionality run
|
||||
"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
|
||||
|
||||
20180808:
|
||||
The default pager for most commands has been changed to "less". To
|
||||
restore the old behavior, set PAGER="more" and MANPAGER="more -s" in
|
||||
your environment.
|
||||
|
||||
20180731:
|
||||
The jedec_ts(4) driver has been removed. A superset of its functionality
|
||||
is available in the jedec_dimm(4) driver, and the manpage for that
|
||||
driver includes migration instructions. If you have "device jedec_ts"
|
||||
in your kernel configuration file, it must be removed.
|
||||
|
||||
20180730:
|
||||
amd64/GENERIC now has EFI runtime services, EFIRT, enabled by default.
|
||||
This should have no effect if the kernel is booted via BIOS/legacy boot.
|
||||
EFIRT may be disabled via a loader tunable, efi.rt.disabled, if a system
|
||||
has a buggy firmware that prevents a successful boot due to use of
|
||||
runtime services.
|
||||
|
||||
20180727:
|
||||
Atmel AT91RM9200 and AT91SAM9, Cavium CNS 11xx and XScale
|
||||
support has been removed from the tree. These ports were
|
||||
obsolete and/or known to be broken for many years.
|
||||
|
||||
20180723:
|
||||
loader.efi has been augmented to participate more fully in the
|
||||
UEFI boot manager protocol. loader.efi will now look at the
|
||||
@ -40,12 +63,23 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW:
|
||||
|
||||
20180720:
|
||||
zfsloader's functionality has now been folded into loader.
|
||||
zfsloader is no longer necesasary once you've updated your
|
||||
zfsloader is no longer necessary once you've updated your
|
||||
boot blocks. For a transition period, we will install a
|
||||
hardlink for zfsloader to loader to allow a smooth transition
|
||||
until the boot blocks can be updated (hard link because old
|
||||
zfs boot blocks don't understand symlinks).
|
||||
|
||||
20180719:
|
||||
ARM64 now have efifb support, if you want to have serial console
|
||||
on your arm64 board when an screen is connected and the bootloader
|
||||
setup a frambuffer for us to use, just add :
|
||||
boot_serial=YES
|
||||
boot_multicons=YES
|
||||
in /boot/loader.conf
|
||||
For Raspberry Pi 3 (RPI) users, this is needed even if you don't have
|
||||
an screen connected as the firmware will setup a framebuffer are that
|
||||
u-boot will expose as an EFI framebuffer.
|
||||
|
||||
20180719:
|
||||
New uid:gid added, ntpd:ntpd (123:123). Be sure to run mergemaster
|
||||
or take steps to update /etc/passwd before doing installworld on
|
||||
@ -164,7 +198,7 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW:
|
||||
Support for FDDI networks has been removed. If you have device
|
||||
fddi or device fpa in your kernel config file they must be
|
||||
removed.
|
||||
|
||||
|
||||
20180406:
|
||||
In addition to supporting RFC 3164 formatted messages, the
|
||||
syslogd(8) service is now capable of parsing RFC 5424 formatted
|
||||
|
@ -32,7 +32,7 @@
|
||||
.\" @(#)date.1 8.3 (Berkeley) 4/28/95
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 1, 2018
|
||||
.Dd August 4, 2018
|
||||
.Dt DATE 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -64,6 +64,13 @@
|
||||
.Nm
|
||||
.Op Fl d Ar dst
|
||||
.Op Fl t Ar minutes_west
|
||||
.Nm
|
||||
.Op Fl jnu
|
||||
.Op Fl I Ns Op Ar FMT
|
||||
.Op Fl f Ar input_fmt
|
||||
.Op Fl r Ar ...
|
||||
.Op Fl v Ar ...
|
||||
.Op Ar new_date
|
||||
.Sh DESCRIPTION
|
||||
When invoked without arguments, the
|
||||
.Nm
|
||||
@ -113,6 +120,33 @@ provided rather than using the default
|
||||
format.
|
||||
Parsing is done using
|
||||
.Xr strptime 3 .
|
||||
.It Fl I Ns Op Ar FMT
|
||||
Use
|
||||
.St -iso8601
|
||||
output format.
|
||||
.Ar FMT
|
||||
may be omitted, in which case the default is
|
||||
.Sq date .
|
||||
Valid
|
||||
.Ar FMT
|
||||
values are
|
||||
.Sq date ,
|
||||
.Sq hours ,
|
||||
.Sq minutes ,
|
||||
and
|
||||
.Sq seconds .
|
||||
The date and time is formatted to the specified precision.
|
||||
When
|
||||
.Ar FMT
|
||||
is
|
||||
.Sq hours
|
||||
(or the more precise
|
||||
.Sq minutes
|
||||
or
|
||||
.Sq seconds ) ,
|
||||
the
|
||||
.St -iso8601
|
||||
format includes the timezone.
|
||||
.It Fl j
|
||||
Do not try to set the date.
|
||||
This allows you to use the
|
||||
@ -401,6 +435,14 @@ sets the time to
|
||||
.Li "2:32 PM" ,
|
||||
without modifying the date.
|
||||
.Pp
|
||||
The command
|
||||
.Pp
|
||||
.Dl "TZ=America/Los_Angeles date -Iseconds -r 1533415339"
|
||||
.Pp
|
||||
will display
|
||||
.Pp
|
||||
.Dl "2018-08-04T13:42:19-07:00"
|
||||
.Pp
|
||||
Finally the command:
|
||||
.Pp
|
||||
.Dl "date -j -f ""%a %b %d %T %Z %Y"" ""`date`"" ""+%s"""
|
||||
@ -425,6 +467,19 @@ between
|
||||
and
|
||||
.Xr timed 8
|
||||
fails.
|
||||
.Pp
|
||||
It is invalid to combine the
|
||||
.Fl I
|
||||
flag with either
|
||||
.Fl R
|
||||
or an output format
|
||||
.Dq ( + Ns ... )
|
||||
operand.
|
||||
If this occurs,
|
||||
.Nm
|
||||
prints:
|
||||
.Ql multiple output formats specified
|
||||
and exits with an error status.
|
||||
.Sh SEE ALSO
|
||||
.Xr locale 1 ,
|
||||
.Xr gettimeofday 2 ,
|
||||
@ -443,12 +498,22 @@ The
|
||||
utility is expected to be compatible with
|
||||
.St -p1003.2 .
|
||||
The
|
||||
.Fl d , f , j , n , r , t ,
|
||||
.Fl d , f , I , j , n , r , t ,
|
||||
and
|
||||
.Fl v
|
||||
options are all extensions to the standard.
|
||||
.Pp
|
||||
The format selected by the
|
||||
.Fl I
|
||||
flag is compatible with
|
||||
.St -iso8601 .
|
||||
.Sh HISTORY
|
||||
A
|
||||
.Nm
|
||||
command appeared in
|
||||
.At v1 .
|
||||
.Pp
|
||||
The
|
||||
.Fl I
|
||||
flag was added in
|
||||
.Fx 12.0 .
|
||||
|
104
bin/date/date.c
104
bin/date/date.c
@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <locale.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -68,10 +69,25 @@ __FBSDID("$FreeBSD$");
|
||||
static time_t tval;
|
||||
int retval;
|
||||
|
||||
static void setthetime(const char *, const char *, int, int);
|
||||
static void badformat(void);
|
||||
static void iso8601_usage(const char *);
|
||||
static void multipleformats(void);
|
||||
static void printdate(const char *);
|
||||
static void printisodate(struct tm *);
|
||||
static void setthetime(const char *, const char *, int, int);
|
||||
static void usage(void);
|
||||
|
||||
static const struct iso8601_fmt {
|
||||
const char *refname;
|
||||
const char *format_string;
|
||||
} iso8601_fmts[] = {
|
||||
{ "date", "%Y-%m-%d" },
|
||||
{ "hours", "T%H" },
|
||||
{ "minutes", ":%M" },
|
||||
{ "seconds", ":%S" },
|
||||
};
|
||||
static const struct iso8601_fmt *iso8601_selected;
|
||||
|
||||
static const char *rfc2822_format = "%a, %d %b %Y %T %z";
|
||||
|
||||
int
|
||||
@ -79,7 +95,7 @@ main(int argc, char *argv[])
|
||||
{
|
||||
struct timezone tz;
|
||||
int ch, rflag;
|
||||
int jflag, nflag, Rflag;
|
||||
bool Iflag, jflag, nflag, Rflag;
|
||||
const char *format;
|
||||
char buf[1024];
|
||||
char *endptr, *fmt;
|
||||
@ -89,15 +105,16 @@ main(int argc, char *argv[])
|
||||
const struct vary *badv;
|
||||
struct tm *lt;
|
||||
struct stat sb;
|
||||
size_t i;
|
||||
|
||||
v = NULL;
|
||||
fmt = NULL;
|
||||
(void) setlocale(LC_TIME, "");
|
||||
tz.tz_dsttime = tz.tz_minuteswest = 0;
|
||||
rflag = 0;
|
||||
jflag = nflag = Rflag = 0;
|
||||
Iflag = jflag = nflag = Rflag = 0;
|
||||
set_timezone = 0;
|
||||
while ((ch = getopt(argc, argv, "d:f:jnRr:t:uv:")) != -1)
|
||||
while ((ch = getopt(argc, argv, "d:f:I::jnRr:t:uv:")) != -1)
|
||||
switch((char)ch) {
|
||||
case 'd': /* daylight savings time */
|
||||
tz.tz_dsttime = strtol(optarg, &endptr, 10) ? 1 : 0;
|
||||
@ -108,6 +125,22 @@ main(int argc, char *argv[])
|
||||
case 'f':
|
||||
fmt = optarg;
|
||||
break;
|
||||
case 'I':
|
||||
if (Rflag)
|
||||
multipleformats();
|
||||
Iflag = 1;
|
||||
if (optarg == NULL) {
|
||||
iso8601_selected = iso8601_fmts;
|
||||
break;
|
||||
}
|
||||
for (i = 0; i < nitems(iso8601_fmts); i++)
|
||||
if (strcmp(optarg, iso8601_fmts[i].refname) == 0)
|
||||
break;
|
||||
if (i == nitems(iso8601_fmts))
|
||||
iso8601_usage(optarg);
|
||||
|
||||
iso8601_selected = &iso8601_fmts[i];
|
||||
break;
|
||||
case 'j':
|
||||
jflag = 1; /* don't set time */
|
||||
break;
|
||||
@ -115,6 +148,8 @@ main(int argc, char *argv[])
|
||||
nflag = 1;
|
||||
break;
|
||||
case 'R': /* RFC 2822 datetime format */
|
||||
if (Iflag)
|
||||
multipleformats();
|
||||
Rflag = 1;
|
||||
break;
|
||||
case 'r': /* user specified seconds */
|
||||
@ -163,6 +198,8 @@ main(int argc, char *argv[])
|
||||
|
||||
/* allow the operands in any order */
|
||||
if (*argv && **argv == '+') {
|
||||
if (Iflag)
|
||||
multipleformats();
|
||||
format = *argv + 1;
|
||||
++argv;
|
||||
}
|
||||
@ -173,8 +210,11 @@ main(int argc, char *argv[])
|
||||
} else if (fmt != NULL)
|
||||
usage();
|
||||
|
||||
if (*argv && **argv == '+')
|
||||
if (*argv && **argv == '+') {
|
||||
if (Iflag)
|
||||
multipleformats();
|
||||
format = *argv + 1;
|
||||
}
|
||||
|
||||
lt = localtime(&tval);
|
||||
if (lt == NULL)
|
||||
@ -188,6 +228,9 @@ main(int argc, char *argv[])
|
||||
}
|
||||
vary_destroy(v);
|
||||
|
||||
if (Iflag)
|
||||
printisodate(lt);
|
||||
|
||||
if (format == rfc2822_format)
|
||||
/*
|
||||
* When using RFC 2822 datetime format, don't honor the
|
||||
@ -196,12 +239,40 @@ main(int argc, char *argv[])
|
||||
setlocale(LC_TIME, "C");
|
||||
|
||||
(void)strftime(buf, sizeof(buf), format, lt);
|
||||
printdate(buf);
|
||||
}
|
||||
|
||||
static void
|
||||
printdate(const char *buf)
|
||||
{
|
||||
(void)printf("%s\n", buf);
|
||||
if (fflush(stdout))
|
||||
err(1, "stdout");
|
||||
exit(retval);
|
||||
}
|
||||
|
||||
static void
|
||||
printisodate(struct tm *lt)
|
||||
{
|
||||
const struct iso8601_fmt *it;
|
||||
char fmtbuf[32], buf[32], tzbuf[8];
|
||||
|
||||
fmtbuf[0] = 0;
|
||||
for (it = iso8601_fmts; it <= iso8601_selected; it++)
|
||||
strlcat(fmtbuf, it->format_string, sizeof(fmtbuf));
|
||||
|
||||
(void)strftime(buf, sizeof(buf), fmtbuf, lt);
|
||||
|
||||
if (iso8601_selected > iso8601_fmts) {
|
||||
(void)strftime(tzbuf, sizeof(tzbuf), "%z", lt);
|
||||
memmove(&tzbuf[4], &tzbuf[3], 3);
|
||||
tzbuf[3] = ':';
|
||||
strlcat(buf, tzbuf, sizeof(buf));
|
||||
}
|
||||
|
||||
printdate(buf);
|
||||
}
|
||||
|
||||
#define ATOI2(s) ((s) += 2, ((s)[-2] - '0') * 10 + ((s)[-1] - '0'))
|
||||
|
||||
static void
|
||||
@ -326,13 +397,28 @@ badformat(void)
|
||||
usage();
|
||||
}
|
||||
|
||||
static void
|
||||
iso8601_usage(const char *badarg)
|
||||
{
|
||||
errx(1, "invalid argument '%s' for -I", badarg);
|
||||
}
|
||||
|
||||
static void
|
||||
multipleformats(void)
|
||||
{
|
||||
errx(1, "multiple output formats specified");
|
||||
}
|
||||
|
||||
static void
|
||||
usage(void)
|
||||
{
|
||||
(void)fprintf(stderr, "%s\n%s\n",
|
||||
"usage: date [-jnRu] [-d dst] [-r seconds] [-t west] "
|
||||
"[-v[+|-]val[ymwdHMS]] ... ",
|
||||
(void)fprintf(stderr, "%s\n%s\n%s\n",
|
||||
"usage: date [-jnRu] [-d dst] [-r seconds|file] [-t west] "
|
||||
"[-v[+|-]val[ymwdHMS]]",
|
||||
" "
|
||||
"[-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]");
|
||||
"[-I[date | hours | minutes | seconds]]",
|
||||
" "
|
||||
"[-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]"
|
||||
);
|
||||
exit(1);
|
||||
}
|
||||
|
@ -48,6 +48,55 @@ ${desc}_test_body() {
|
||||
atf_add_test_case ${desc}_test
|
||||
}
|
||||
|
||||
iso8601_check()
|
||||
{
|
||||
local arg flags exp_output_1 exp_output_2
|
||||
|
||||
arg="${1}"
|
||||
flags="${2}"
|
||||
exp_output_1="${3}"
|
||||
exp_output_2="${4}"
|
||||
|
||||
atf_check -o "inline:${exp_output_1}\n" \
|
||||
date $flags -r ${TEST1} "-I${arg}"
|
||||
atf_check -o "inline:${exp_output_2}\n" \
|
||||
date $flags -r ${TEST2} "-I${arg}"
|
||||
}
|
||||
|
||||
iso8601_string_test()
|
||||
{
|
||||
local desc arg exp_output_1 exp_output_2 flags
|
||||
|
||||
desc="${1}"
|
||||
arg="${2}"
|
||||
flags="${3}"
|
||||
exp_output_1="${4}"
|
||||
exp_output_2="${5}"
|
||||
|
||||
atf_test_case iso8601_${desc}_test
|
||||
eval "
|
||||
iso8601_${desc}_test_body() {
|
||||
iso8601_check '${arg}' '${flags}' '${exp_output_1}' '${exp_output_2}'
|
||||
}"
|
||||
atf_add_test_case iso8601_${desc}_test
|
||||
|
||||
if [ -z "$flags" ]; then
|
||||
atf_test_case iso8601_${desc}_parity
|
||||
eval "
|
||||
iso8601_${desc}_parity_body() {
|
||||
local exp1 exp2
|
||||
|
||||
atf_require_prog gdate
|
||||
|
||||
exp1=\"\$(gdate --date '@${TEST1}' '-I${arg}')\"
|
||||
exp2=\"\$(gdate --date '@${TEST2}' '-I${arg}')\"
|
||||
|
||||
iso8601_check '${arg}' '' \"\${exp1}\" \"\${exp2}\"
|
||||
}"
|
||||
atf_add_test_case iso8601_${desc}_parity
|
||||
fi
|
||||
}
|
||||
|
||||
atf_init_test_cases()
|
||||
{
|
||||
format_string_test A A Saturday Monday
|
||||
@ -89,4 +138,12 @@ atf_init_test_cases()
|
||||
format_string_test z z +0000 +0000
|
||||
format_string_test percent % % %
|
||||
format_string_test plus + "Sat Feb 7 07:04:03 UTC 1970" "Mon Nov 12 21:20:00 UTC 2001"
|
||||
|
||||
iso8601_string_test default "" "" "1970-02-07" "2001-11-12"
|
||||
iso8601_string_test date date "" "1970-02-07" "2001-11-12"
|
||||
iso8601_string_test hours hours "" "1970-02-07T07+00:00" "2001-11-12T21+00:00"
|
||||
iso8601_string_test minutes minutes "" "1970-02-07T07:04+00:00" "2001-11-12T21:20+00:00"
|
||||
iso8601_string_test seconds seconds "" "1970-02-07T07:04:03+00:00" "2001-11-12T21:20:00+00:00"
|
||||
# BSD date(1) does not support fractional seconds at this time.
|
||||
#iso8601_string_test ns ns "" "1970-02-07T07:04:03,000000000+00:00" "2001-11-12T21:20:00,000000000+00:00"
|
||||
}
|
||||
|
@ -306,6 +306,8 @@ f_status(char *arg)
|
||||
ddflags |= C_NOINFO;
|
||||
else if (strcmp(arg, "noxfer") == 0)
|
||||
ddflags |= C_NOXFER;
|
||||
else if (strcmp(arg, "progress") == 0)
|
||||
ddflags |= C_PROGRESS;
|
||||
else
|
||||
errx(1, "unknown status %s", arg);
|
||||
}
|
||||
|
@ -32,7 +32,7 @@
|
||||
.\" @(#)dd.1 8.2 (Berkeley) 1/13/94
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd April 2, 2017
|
||||
.Dd August 8, 2018
|
||||
.Dt DD 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -164,12 +164,14 @@ bytes per second.
|
||||
Where
|
||||
.Cm value
|
||||
is one of the symbols from the following list.
|
||||
.Bl -tag -width "noxfer"
|
||||
.Bl -tag -width "progress"
|
||||
.It Cm noxfer
|
||||
Do not print the transfer statistics as the last line of status output.
|
||||
.It Cm none
|
||||
Do not print the status output.
|
||||
Error messages are shown; informational messages are not.
|
||||
.It Cm progress
|
||||
Print basic transfer statistics once per second.
|
||||
.El
|
||||
.It Cm conv Ns = Ns Ar value Ns Op , Ns Ar value ...
|
||||
Where
|
||||
|
14
bin/dd/dd.c
14
bin/dd/dd.c
@ -54,6 +54,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include <sys/disklabel.h>
|
||||
#include <sys/filio.h>
|
||||
#include <sys/mtio.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include <assert.h>
|
||||
#include <capsicum_helpers.h>
|
||||
@ -89,6 +90,7 @@ const u_char *ctab; /* conversion table */
|
||||
char fill_char; /* Character to fill with if defined */
|
||||
size_t speed = 0; /* maximum speed, in bytes per second */
|
||||
volatile sig_atomic_t need_summary;
|
||||
volatile sig_atomic_t need_progress;
|
||||
|
||||
int
|
||||
main(int argc __unused, char *argv[])
|
||||
@ -102,6 +104,7 @@ main(int argc __unused, char *argv[])
|
||||
err(1, "unable to enter capability mode");
|
||||
|
||||
(void)signal(SIGINFO, siginfo_handler);
|
||||
(void)signal(SIGALRM, sigalrm_handler);
|
||||
(void)signal(SIGINT, terminate);
|
||||
|
||||
atexit(summary);
|
||||
@ -281,6 +284,14 @@ setup(void)
|
||||
ctab = casetab;
|
||||
}
|
||||
|
||||
if ((ddflags & C_PROGRESS)) {
|
||||
struct itimerval timer = {
|
||||
.it_interval = { .tv_sec = 1, .tv_usec = 0 },
|
||||
.it_value = { .tv_sec = 1, .tv_usec = 0 },
|
||||
};
|
||||
setitimer(ITIMER_REAL, &timer, NULL);
|
||||
}
|
||||
|
||||
if (clock_gettime(CLOCK_MONOTONIC, &st.start))
|
||||
err(1, "clock_gettime");
|
||||
}
|
||||
@ -461,6 +472,9 @@ dd_in(void)
|
||||
if (need_summary) {
|
||||
summary();
|
||||
}
|
||||
if (need_progress) {
|
||||
progress();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -100,5 +100,6 @@ typedef struct {
|
||||
#define C_STATUS 0x08000000
|
||||
#define C_NOXFER 0x10000000
|
||||
#define C_NOINFO 0x20000000
|
||||
#define C_PROGRESS 0x40000000
|
||||
|
||||
#define C_PARITY (C_PAREVEN | C_PARODD | C_PARNONE | C_PARSET)
|
||||
|
@ -46,7 +46,9 @@ void pos_in(void);
|
||||
void pos_out(void);
|
||||
double secs_elapsed(void);
|
||||
void summary(void);
|
||||
void progress(void);
|
||||
void siginfo_handler(int);
|
||||
void sigalrm_handler(int);
|
||||
void terminate(int);
|
||||
void unblock(void);
|
||||
void unblock_close(void);
|
||||
@ -66,3 +68,4 @@ extern const u_char a2ibm_32V[], a2ibm_POSIX[];
|
||||
extern u_char casetab[];
|
||||
extern char fill_char;
|
||||
extern volatile sig_atomic_t need_summary;
|
||||
extern volatile sig_atomic_t need_progress;
|
||||
|
@ -56,6 +56,8 @@ __FBSDID("$FreeBSD$");
|
||||
#include "dd.h"
|
||||
#include "extern.h"
|
||||
|
||||
static int need_newline;
|
||||
|
||||
double
|
||||
secs_elapsed(void)
|
||||
{
|
||||
@ -83,6 +85,9 @@ summary(void)
|
||||
if (ddflags & C_NOINFO)
|
||||
return;
|
||||
|
||||
if (need_newline && !need_summary)
|
||||
fprintf(stderr, "\n");
|
||||
|
||||
secs = secs_elapsed();
|
||||
|
||||
(void)fprintf(stderr,
|
||||
@ -102,6 +107,28 @@ summary(void)
|
||||
need_summary = 0;
|
||||
}
|
||||
|
||||
void
|
||||
progress(void)
|
||||
{
|
||||
double secs;
|
||||
static int lastlen;
|
||||
int len;
|
||||
|
||||
secs = secs_elapsed();
|
||||
len = fprintf(stderr,
|
||||
"\r%ju bytes transferred in %.0f secs (%.0f bytes/sec)",
|
||||
st.bytes, secs, st.bytes / secs);
|
||||
|
||||
if (len > 0) {
|
||||
if (len < lastlen)
|
||||
(void)fprintf(stderr, "%*s", len - lastlen, "");
|
||||
lastlen = len;
|
||||
}
|
||||
|
||||
need_newline = 1;
|
||||
need_progress = 0;
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
void
|
||||
siginfo_handler(int signo __unused)
|
||||
@ -110,6 +137,14 @@ siginfo_handler(int signo __unused)
|
||||
need_summary = 1;
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
void
|
||||
sigalrm_handler(int signo __unused)
|
||||
{
|
||||
|
||||
need_progress = 1;
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
void
|
||||
terminate(int sig)
|
||||
|
14
bin/ls/ls.1
14
bin/ls/ls.1
@ -32,7 +32,7 @@
|
||||
.\" @(#)ls.1 8.7 (Berkeley) 7/29/94
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd January 17, 2018
|
||||
.Dd August 8, 2018
|
||||
.Dt LS 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -132,6 +132,8 @@ after each that is a
|
||||
Enable colorized output.
|
||||
This option is equivalent to defining
|
||||
.Ev CLICOLOR
|
||||
or
|
||||
.Ev COLORTERM
|
||||
in the environment.
|
||||
(See below.)
|
||||
This functionality can be compiled out by removing the definition of
|
||||
@ -628,6 +630,10 @@ The
|
||||
variable still needs to reference a color capable terminal however
|
||||
otherwise it is not possible to determine which color sequences to
|
||||
use.
|
||||
.It Ev COLORTERM
|
||||
See description for
|
||||
.Ev CLICOLOR
|
||||
above.
|
||||
.It Ev COLUMNS
|
||||
If this variable contains a string representing a
|
||||
decimal integer, it is used as the
|
||||
@ -652,7 +658,9 @@ for more information.
|
||||
.It Ev LSCOLORS
|
||||
The value of this variable describes what color to use for which
|
||||
attribute when colors are enabled with
|
||||
.Ev CLICOLOR .
|
||||
.Ev CLICOLOR
|
||||
or
|
||||
.Ev COLORTERM .
|
||||
This string is a concatenation of pairs of the format
|
||||
.Ar f Ns Ar b ,
|
||||
where
|
||||
@ -759,6 +767,8 @@ option for more details.
|
||||
.It Ev TERM
|
||||
The
|
||||
.Ev CLICOLOR
|
||||
and
|
||||
.Ev COLORTERM
|
||||
functionality depends on a terminal type with color capabilities.
|
||||
.It Ev TZ
|
||||
The timezone to use when displaying dates.
|
||||
|
@ -368,7 +368,7 @@ main(int argc, char *argv[])
|
||||
f_listdot = 1;
|
||||
|
||||
/* Enabling of colours is conditional on the environment. */
|
||||
if (getenv("CLICOLOR") &&
|
||||
if ((getenv("CLICOLOR") || getenv("COLORTERM")) &&
|
||||
(isatty(STDOUT_FILENO) || getenv("CLICOLOR_FORCE")))
|
||||
#ifdef COLORLS
|
||||
if (tgetent(termcapbuf, getenv("TERM")) == 1) {
|
||||
|
125
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localudplite.ksh
Executable file
125
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4localudplite.ksh
Executable file
@ -0,0 +1,125 @@
|
||||
#!/usr/bin/env ksh
|
||||
#
|
||||
# CDDL HEADER START
|
||||
#
|
||||
# The contents of this file are subject to the terms of the
|
||||
# Common Development and Distribution License (the "License").
|
||||
# You may not use this file except in compliance with the License.
|
||||
#
|
||||
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
|
||||
# or http://www.opensolaris.org/os/licensing.
|
||||
# See the License for the specific language governing permissions
|
||||
# and limitations under the License.
|
||||
#
|
||||
# When distributing Covered Code, include this CDDL HEADER in each
|
||||
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
||||
# If applicable, add the following below this CDDL HEADER, with the
|
||||
# fields enclosed by brackets "[]" replaced with your own identifying
|
||||
# information: Portions Copyright [yyyy] [name of copyright owner]
|
||||
#
|
||||
# CDDL HEADER END
|
||||
#
|
||||
|
||||
#
|
||||
# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
|
||||
#
|
||||
# Test {ip,udplite}:::{send,receive} of IPv4 UDP-Lite to a local address.
|
||||
#
|
||||
# This may fail due to:
|
||||
#
|
||||
# 1. A change to the ip stack breaking expected probe behavior,
|
||||
# which is the reason we are testing.
|
||||
# 2. No physical network interface is plumbed and up.
|
||||
# 3. No other hosts on this subnet are reachable and listening on rpcbind.
|
||||
# 4. An unlikely race causes the unlocked global send/receive
|
||||
# variables to be corrupted.
|
||||
#
|
||||
# This test sends a UDP-Lite message using perl and checks that at least the
|
||||
# following counts were traced:
|
||||
#
|
||||
# 1 x ip:::send (UDPLite sent to UDP-Lite port 33434)
|
||||
# 1 x udplite:::send (UDPLite sent to UDP-Lite port 33434)
|
||||
# 1 x ip:::receive (UDP-Lite received)
|
||||
# 1 x udplite:::receive (UDP-Lite received)
|
||||
#
|
||||
# A udplite:::receive event is expected even if the received UDP-Lite packet
|
||||
# elicits an ICMP PORT_UNREACHABLE message since there is no UDP-Lite
|
||||
# socket for receiving the packet.
|
||||
#
|
||||
|
||||
if (( $# != 1 )); then
|
||||
print -u2 "expected one argument: <dtrace-path>"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
dtrace=$1
|
||||
local=127.0.0.1
|
||||
port=33434
|
||||
DIR=/var/tmp/dtest.$$
|
||||
|
||||
mkdir $DIR
|
||||
cd $DIR
|
||||
|
||||
cat > test.pl <<-EOPERL
|
||||
use IO::Socket;
|
||||
my \$s = IO::Socket::INET->new(
|
||||
Type => SOCK_DGRAM,
|
||||
Proto => "udplite",
|
||||
PeerAddr => "$local",
|
||||
PeerPort => $port);
|
||||
die "Could not create UDP-Lite socket $local port $port" unless \$s;
|
||||
send \$s, "Hello", 0;
|
||||
close \$s;
|
||||
sleep(2);
|
||||
EOPERL
|
||||
|
||||
$dtrace -c 'perl test.pl' -qs /dev/stdin <<EODTRACE
|
||||
BEGIN
|
||||
{
|
||||
ipsend = udplitesend = ipreceive = udplitereceive = 0;
|
||||
}
|
||||
|
||||
ip:::send
|
||||
/args[2]->ip_saddr == "$local" && args[2]->ip_daddr == "$local" &&
|
||||
args[4]->ipv4_protocol == IPPROTO_UDPLITE/
|
||||
{
|
||||
ipsend++;
|
||||
}
|
||||
|
||||
udplite:::send
|
||||
/args[2]->ip_saddr == "$local" && args[2]->ip_daddr == "$local"/
|
||||
{
|
||||
udplitesend++;
|
||||
}
|
||||
|
||||
ip:::receive
|
||||
/args[2]->ip_saddr == "$local" && args[2]->ip_daddr == "$local" &&
|
||||
args[4]->ipv4_protocol == IPPROTO_UDPLITE/
|
||||
{
|
||||
ipreceive++;
|
||||
}
|
||||
|
||||
udplite:::receive
|
||||
/args[2]->ip_saddr == "$local" && args[2]->ip_daddr == "$local"/
|
||||
{
|
||||
udplitereceive++;
|
||||
}
|
||||
|
||||
END
|
||||
{
|
||||
printf("Minimum UDP-Lite events seen\n\n");
|
||||
printf("ip:::send - %s\n", ipsend >= 1 ? "yes" : "no");
|
||||
printf("ip:::receive - %s\n", ipreceive >= 1 ? "yes" : "no");
|
||||
printf("udplite:::send - %s\n", udplitesend >= 1 ? "yes" : "no");
|
||||
printf("udplite:::receive - %s\n", udplitereceive >= 1 ? "yes" : "no");
|
||||
}
|
||||
EODTRACE
|
||||
|
||||
status=$?
|
||||
|
||||
cd /
|
||||
/bin/rm -rf $DIR
|
||||
|
||||
exit $status
|
@ -0,0 +1,7 @@
|
||||
Minimum UDP-Lite events seen
|
||||
|
||||
ip:::send - yes
|
||||
ip:::receive - yes
|
||||
udplite:::send - yes
|
||||
udplite:::receive - yes
|
||||
|
113
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4remoteudplite.ksh
Executable file
113
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv4remoteudplite.ksh
Executable file
@ -0,0 +1,113 @@
|
||||
#!/usr/bin/env ksh93
|
||||
#
|
||||
# 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) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
|
||||
#
|
||||
# Test {udplite,ip}:::{send,receive} of IPv4 UDP-Lite to a remote host.
|
||||
#
|
||||
# This may fail due to:
|
||||
#
|
||||
# 1. A change to the ip stack breaking expected probe behavior,
|
||||
# which is the reason we are testing.
|
||||
# 2. No physical network interface is plumbed and up.
|
||||
# 3. No other hosts on this subnet are reachable and listening on rpcbind.
|
||||
# 4. An unlikely race causes the unlocked global send/receive
|
||||
# variables to be corrupted.
|
||||
#
|
||||
# This test sends a UDP-Lite message using perl and checks that at least the
|
||||
# following counts were traced:
|
||||
#
|
||||
# 1 x ip:::send (UDP-Lite sent to UDP-Lite port 33434)
|
||||
# 1 x udplite:::send (UDP-Lite sent to UDP-Lite port 33434)
|
||||
#
|
||||
|
||||
if (( $# != 1 )); then
|
||||
print -u2 "expected one argument: <dtrace-path>"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
dtrace=$1
|
||||
getaddr=./get.ipv4remote.pl
|
||||
port=33434
|
||||
DIR=/var/tmp/dtest.$$
|
||||
|
||||
if [[ ! -x $getaddr ]]; then
|
||||
print -u2 "could not find or execute sub program: $getaddr"
|
||||
exit 3
|
||||
fi
|
||||
$getaddr | read source dest
|
||||
if (( $? != 0 )); then
|
||||
exit 4
|
||||
fi
|
||||
|
||||
mkdir $DIR
|
||||
cd $DIR
|
||||
|
||||
cat > test.pl <<-EOPERL
|
||||
use IO::Socket;
|
||||
my \$s = IO::Socket::INET->new(
|
||||
Type => SOCK_DGRAM,
|
||||
Proto => "udplite",
|
||||
PeerAddr => "$dest",
|
||||
PeerPort => $port);
|
||||
die "Could not create UDP-Lite socket $dest port $port" unless \$s;
|
||||
send \$s, "Hello", 0;
|
||||
close \$s;
|
||||
sleep(2);
|
||||
EOPERL
|
||||
|
||||
$dtrace -c 'perl test.pl' -qs /dev/stdin <<EODTRACE
|
||||
BEGIN
|
||||
{
|
||||
ipsend = udplitesend = 0;
|
||||
}
|
||||
|
||||
ip:::send
|
||||
/args[2]->ip_saddr == "$source" && args[2]->ip_daddr == "$dest" &&
|
||||
args[4]->ipv4_protocol == IPPROTO_UDPLITE/
|
||||
{
|
||||
ipsend++;
|
||||
}
|
||||
|
||||
udplite:::send
|
||||
/args[2]->ip_saddr == "$source" && args[2]->ip_daddr == "$dest"/
|
||||
{
|
||||
udplitesend++;
|
||||
}
|
||||
|
||||
END
|
||||
{
|
||||
printf("Minimum UDPLite events seen\n\n");
|
||||
printf("ip:::send - %s\n", ipsend >= 1 ? "yes" : "no");
|
||||
printf("udplite:::send - %s\n", udplitesend >= 1 ? "yes" : "no");
|
||||
}
|
||||
EODTRACE
|
||||
|
||||
status=$?
|
||||
|
||||
cd /
|
||||
/bin/rm -rf $DIR
|
||||
|
||||
exit $status
|
@ -0,0 +1,5 @@
|
||||
Minimum UDP-Lite events seen
|
||||
|
||||
ip:::send - yes
|
||||
udplite:::send - yes
|
||||
|
@ -108,6 +108,7 @@ static uint64_t *zopt_object = NULL;
|
||||
static unsigned zopt_objects = 0;
|
||||
static libzfs_handle_t *g_zfs;
|
||||
static uint64_t max_inflight = 1000;
|
||||
static int leaked_objects = 0;
|
||||
|
||||
static void snprintf_blkptr_compact(char *, size_t, const blkptr_t *);
|
||||
|
||||
@ -774,7 +775,6 @@ verify_spacemap_refcounts(spa_t *spa)
|
||||
static void
|
||||
dump_spacemap(objset_t *os, space_map_t *sm)
|
||||
{
|
||||
uint64_t alloc, offset, entry;
|
||||
char *ddata[] = { "ALLOC", "FREE", "CONDENSE", "INVALID",
|
||||
"INVALID", "INVALID", "INVALID", "INVALID" };
|
||||
|
||||
@ -791,41 +791,73 @@ dump_spacemap(objset_t *os, space_map_t *sm)
|
||||
/*
|
||||
* Print out the freelist entries in both encoded and decoded form.
|
||||
*/
|
||||
alloc = 0;
|
||||
for (offset = 0; offset < space_map_length(sm);
|
||||
offset += sizeof (entry)) {
|
||||
uint8_t mapshift = sm->sm_shift;
|
||||
uint8_t mapshift = sm->sm_shift;
|
||||
int64_t alloc = 0;
|
||||
uint64_t word;
|
||||
for (uint64_t offset = 0; offset < space_map_length(sm);
|
||||
offset += sizeof (word)) {
|
||||
|
||||
VERIFY0(dmu_read(os, space_map_object(sm), offset,
|
||||
sizeof (entry), &entry, DMU_READ_PREFETCH));
|
||||
if (SM_DEBUG_DECODE(entry)) {
|
||||
sizeof (word), &word, DMU_READ_PREFETCH));
|
||||
|
||||
if (sm_entry_is_debug(word)) {
|
||||
(void) printf("\t [%6llu] %s: txg %llu, pass %llu\n",
|
||||
(u_longlong_t)(offset / sizeof (entry)),
|
||||
ddata[SM_DEBUG_ACTION_DECODE(entry)],
|
||||
(u_longlong_t)SM_DEBUG_TXG_DECODE(entry),
|
||||
(u_longlong_t)SM_DEBUG_SYNCPASS_DECODE(entry));
|
||||
} else {
|
||||
(void) printf("\t [%6llu] %c range:"
|
||||
" %010llx-%010llx size: %06llx\n",
|
||||
(u_longlong_t)(offset / sizeof (entry)),
|
||||
SM_TYPE_DECODE(entry) == SM_ALLOC ? 'A' : 'F',
|
||||
(u_longlong_t)((SM_OFFSET_DECODE(entry) <<
|
||||
mapshift) + sm->sm_start),
|
||||
(u_longlong_t)((SM_OFFSET_DECODE(entry) <<
|
||||
mapshift) + sm->sm_start +
|
||||
(SM_RUN_DECODE(entry) << mapshift)),
|
||||
(u_longlong_t)(SM_RUN_DECODE(entry) << mapshift));
|
||||
if (SM_TYPE_DECODE(entry) == SM_ALLOC)
|
||||
alloc += SM_RUN_DECODE(entry) << mapshift;
|
||||
else
|
||||
alloc -= SM_RUN_DECODE(entry) << mapshift;
|
||||
(u_longlong_t)(offset / sizeof (word)),
|
||||
ddata[SM_DEBUG_ACTION_DECODE(word)],
|
||||
(u_longlong_t)SM_DEBUG_TXG_DECODE(word),
|
||||
(u_longlong_t)SM_DEBUG_SYNCPASS_DECODE(word));
|
||||
continue;
|
||||
}
|
||||
|
||||
uint8_t words;
|
||||
char entry_type;
|
||||
uint64_t entry_off, entry_run, entry_vdev = SM_NO_VDEVID;
|
||||
|
||||
if (sm_entry_is_single_word(word)) {
|
||||
entry_type = (SM_TYPE_DECODE(word) == SM_ALLOC) ?
|
||||
'A' : 'F';
|
||||
entry_off = (SM_OFFSET_DECODE(word) << mapshift) +
|
||||
sm->sm_start;
|
||||
entry_run = SM_RUN_DECODE(word) << mapshift;
|
||||
words = 1;
|
||||
} else {
|
||||
/* it is a two-word entry so we read another word */
|
||||
ASSERT(sm_entry_is_double_word(word));
|
||||
|
||||
uint64_t extra_word;
|
||||
offset += sizeof (extra_word);
|
||||
VERIFY0(dmu_read(os, space_map_object(sm), offset,
|
||||
sizeof (extra_word), &extra_word,
|
||||
DMU_READ_PREFETCH));
|
||||
|
||||
ASSERT3U(offset, <=, space_map_length(sm));
|
||||
|
||||
entry_run = SM2_RUN_DECODE(word) << mapshift;
|
||||
entry_vdev = SM2_VDEV_DECODE(word);
|
||||
entry_type = (SM2_TYPE_DECODE(extra_word) == SM_ALLOC) ?
|
||||
'A' : 'F';
|
||||
entry_off = (SM2_OFFSET_DECODE(extra_word) <<
|
||||
mapshift) + sm->sm_start;
|
||||
words = 2;
|
||||
}
|
||||
|
||||
(void) printf("\t [%6llu] %c range:"
|
||||
" %010llx-%010llx size: %06llx vdev: %06llu words: %u\n",
|
||||
(u_longlong_t)(offset / sizeof (word)),
|
||||
entry_type, (u_longlong_t)entry_off,
|
||||
(u_longlong_t)(entry_off + entry_run),
|
||||
(u_longlong_t)entry_run,
|
||||
(u_longlong_t)entry_vdev, words);
|
||||
|
||||
if (entry_type == 'A')
|
||||
alloc += entry_run;
|
||||
else
|
||||
alloc -= entry_run;
|
||||
}
|
||||
if (alloc != space_map_allocated(sm)) {
|
||||
(void) printf("space_map_object alloc (%llu) INCONSISTENT "
|
||||
"with space map summary (%llu)\n",
|
||||
(u_longlong_t)space_map_allocated(sm), (u_longlong_t)alloc);
|
||||
if ((uint64_t)alloc != space_map_allocated(sm)) {
|
||||
(void) printf("space_map_object alloc (%lld) INCONSISTENT "
|
||||
"with space map summary (%lld)\n",
|
||||
(longlong_t)space_map_allocated(sm), (longlong_t)alloc);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1155,7 +1187,7 @@ dump_ddt(ddt_t *ddt, enum ddt_type type, enum ddt_class class)
|
||||
while ((error = ddt_object_walk(ddt, type, class, &walk, &dde)) == 0)
|
||||
dump_dde(ddt, &dde, walk);
|
||||
|
||||
ASSERT(error == ENOENT);
|
||||
ASSERT3U(error, ==, ENOENT);
|
||||
|
||||
(void) printf("\n");
|
||||
}
|
||||
@ -1957,9 +1989,12 @@ dump_znode(objset_t *os, uint64_t object, void *data, size_t size)
|
||||
|
||||
if (dump_opt['d'] > 4) {
|
||||
error = zfs_obj_to_path(os, object, path, sizeof (path));
|
||||
if (error != 0) {
|
||||
if (error == ESTALE) {
|
||||
(void) snprintf(path, sizeof (path), "on delete queue");
|
||||
} else if (error != 0) {
|
||||
leaked_objects++;
|
||||
(void) snprintf(path, sizeof (path),
|
||||
"\?\?\?<object#%llu>", (u_longlong_t)object);
|
||||
"path not found, possibly leaked");
|
||||
}
|
||||
(void) printf("\tpath %s\n", path);
|
||||
}
|
||||
@ -2289,6 +2324,12 @@ dump_dir(objset_t *os)
|
||||
}
|
||||
|
||||
ASSERT3U(object_count, ==, usedobjs);
|
||||
|
||||
if (leaked_objects != 0) {
|
||||
(void) printf("%d potentially leaked objects detected\n",
|
||||
leaked_objects);
|
||||
leaked_objects = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@ -3002,7 +3043,7 @@ zdb_claim_removing(spa_t *spa, zdb_cb_t *zcb)
|
||||
spa_config_enter(spa, SCL_CONFIG, FTAG, RW_READER);
|
||||
|
||||
spa_vdev_removal_t *svr = spa->spa_vdev_removal;
|
||||
vdev_t *vd = svr->svr_vdev;
|
||||
vdev_t *vd = vdev_lookup_top(spa, svr->svr_vdev_id);
|
||||
vdev_indirect_mapping_t *vim = vd->vdev_indirect_mapping;
|
||||
|
||||
for (uint64_t msi = 0; msi < vd->vdev_ms_count; msi++) {
|
||||
@ -3018,13 +3059,17 @@ zdb_claim_removing(spa_t *spa, zdb_cb_t *zcb)
|
||||
svr->svr_allocd_segs, SM_ALLOC));
|
||||
|
||||
/*
|
||||
* Clear everything past what has been synced,
|
||||
* because we have not allocated mappings for it yet.
|
||||
* Clear everything past what has been synced unless
|
||||
* it's past the spacemap, because we have not allocated
|
||||
* mappings for it yet.
|
||||
*/
|
||||
range_tree_clear(svr->svr_allocd_segs,
|
||||
vdev_indirect_mapping_max_offset(vim),
|
||||
msp->ms_sm->sm_start + msp->ms_sm->sm_size -
|
||||
vdev_indirect_mapping_max_offset(vim));
|
||||
uint64_t vim_max_offset =
|
||||
vdev_indirect_mapping_max_offset(vim);
|
||||
uint64_t sm_end = msp->ms_sm->sm_start +
|
||||
msp->ms_sm->sm_size;
|
||||
if (sm_end > vim_max_offset)
|
||||
range_tree_clear(svr->svr_allocd_segs,
|
||||
vim_max_offset, sm_end - vim_max_offset);
|
||||
}
|
||||
|
||||
zcb->zcb_removing_size +=
|
||||
@ -3097,15 +3142,14 @@ typedef struct checkpoint_sm_exclude_entry_arg {
|
||||
} checkpoint_sm_exclude_entry_arg_t;
|
||||
|
||||
static int
|
||||
checkpoint_sm_exclude_entry_cb(maptype_t type, uint64_t offset, uint64_t size,
|
||||
void *arg)
|
||||
checkpoint_sm_exclude_entry_cb(space_map_entry_t *sme, void *arg)
|
||||
{
|
||||
checkpoint_sm_exclude_entry_arg_t *cseea = arg;
|
||||
vdev_t *vd = cseea->cseea_vd;
|
||||
metaslab_t *ms = vd->vdev_ms[offset >> vd->vdev_ms_shift];
|
||||
uint64_t end = offset + size;
|
||||
metaslab_t *ms = vd->vdev_ms[sme->sme_offset >> vd->vdev_ms_shift];
|
||||
uint64_t end = sme->sme_offset + sme->sme_run;
|
||||
|
||||
ASSERT(type == SM_FREE);
|
||||
ASSERT(sme->sme_type == SM_FREE);
|
||||
|
||||
/*
|
||||
* Since the vdev_checkpoint_sm exists in the vdev level
|
||||
@ -3123,7 +3167,7 @@ checkpoint_sm_exclude_entry_cb(maptype_t type, uint64_t offset, uint64_t size,
|
||||
* metaslab boundaries. So if needed we could add code
|
||||
* that handles metaslab-crossing segments in the future.
|
||||
*/
|
||||
VERIFY3U(offset, >=, ms->ms_start);
|
||||
VERIFY3U(sme->sme_offset, >=, ms->ms_start);
|
||||
VERIFY3U(end, <=, ms->ms_start + ms->ms_size);
|
||||
|
||||
/*
|
||||
@ -3131,10 +3175,10 @@ checkpoint_sm_exclude_entry_cb(maptype_t type, uint64_t offset, uint64_t size,
|
||||
* also verify that the entry is there to begin with.
|
||||
*/
|
||||
mutex_enter(&ms->ms_lock);
|
||||
range_tree_remove(ms->ms_allocatable, offset, size);
|
||||
range_tree_remove(ms->ms_allocatable, sme->sme_offset, sme->sme_run);
|
||||
mutex_exit(&ms->ms_lock);
|
||||
|
||||
cseea->cseea_checkpoint_size += size;
|
||||
cseea->cseea_checkpoint_size += sme->sme_run;
|
||||
return (0);
|
||||
}
|
||||
|
||||
@ -4109,15 +4153,14 @@ typedef struct verify_checkpoint_sm_entry_cb_arg {
|
||||
#define ENTRIES_PER_PROGRESS_UPDATE 10000
|
||||
|
||||
static int
|
||||
verify_checkpoint_sm_entry_cb(maptype_t type, uint64_t offset, uint64_t size,
|
||||
void *arg)
|
||||
verify_checkpoint_sm_entry_cb(space_map_entry_t *sme, void *arg)
|
||||
{
|
||||
verify_checkpoint_sm_entry_cb_arg_t *vcsec = arg;
|
||||
vdev_t *vd = vcsec->vcsec_vd;
|
||||
metaslab_t *ms = vd->vdev_ms[offset >> vd->vdev_ms_shift];
|
||||
uint64_t end = offset + size;
|
||||
metaslab_t *ms = vd->vdev_ms[sme->sme_offset >> vd->vdev_ms_shift];
|
||||
uint64_t end = sme->sme_offset + sme->sme_run;
|
||||
|
||||
ASSERT(type == SM_FREE);
|
||||
ASSERT(sme->sme_type == SM_FREE);
|
||||
|
||||
if ((vcsec->vcsec_entryid % ENTRIES_PER_PROGRESS_UPDATE) == 0) {
|
||||
(void) fprintf(stderr,
|
||||
@ -4131,7 +4174,7 @@ verify_checkpoint_sm_entry_cb(maptype_t type, uint64_t offset, uint64_t size,
|
||||
/*
|
||||
* See comment in checkpoint_sm_exclude_entry_cb()
|
||||
*/
|
||||
VERIFY3U(offset, >=, ms->ms_start);
|
||||
VERIFY3U(sme->sme_offset, >=, ms->ms_start);
|
||||
VERIFY3U(end, <=, ms->ms_start + ms->ms_size);
|
||||
|
||||
/*
|
||||
@ -4140,7 +4183,7 @@ verify_checkpoint_sm_entry_cb(maptype_t type, uint64_t offset, uint64_t size,
|
||||
* their respective ms_allocateable trees should not contain them.
|
||||
*/
|
||||
mutex_enter(&ms->ms_lock);
|
||||
range_tree_verify(ms->ms_allocatable, offset, size);
|
||||
range_tree_verify(ms->ms_allocatable, sme->sme_offset, sme->sme_run);
|
||||
mutex_exit(&ms->ms_lock);
|
||||
|
||||
return (0);
|
||||
@ -4386,7 +4429,7 @@ verify_checkpoint(spa_t *spa)
|
||||
DMU_POOL_ZPOOL_CHECKPOINT, sizeof (uint64_t),
|
||||
sizeof (uberblock_t) / sizeof (uint64_t), &checkpoint);
|
||||
|
||||
if (error == ENOENT) {
|
||||
if (error == ENOENT && !dump_opt['L']) {
|
||||
/*
|
||||
* If the feature is active but the uberblock is missing
|
||||
* then we must be in the middle of discarding the
|
||||
@ -4409,7 +4452,7 @@ verify_checkpoint(spa_t *spa)
|
||||
error = 3;
|
||||
}
|
||||
|
||||
if (error == 0)
|
||||
if (error == 0 && !dump_opt['L'])
|
||||
verify_checkpoint_blocks(spa);
|
||||
|
||||
return (error);
|
||||
@ -4514,7 +4557,7 @@ dump_zpool(spa_t *spa)
|
||||
if (dump_opt['h'])
|
||||
dump_history(spa);
|
||||
|
||||
if (rc == 0 && !dump_opt['L'])
|
||||
if (rc == 0)
|
||||
rc = verify_checkpoint(spa);
|
||||
|
||||
if (rc != 0) {
|
||||
@ -4907,19 +4950,18 @@ zdb_embedded_block(char *thing)
|
||||
words + 8, words + 9, words + 10, words + 11,
|
||||
words + 12, words + 13, words + 14, words + 15);
|
||||
if (err != 16) {
|
||||
(void) printf("invalid input format\n");
|
||||
(void) fprintf(stderr, "invalid input format\n");
|
||||
exit(1);
|
||||
}
|
||||
ASSERT3U(BPE_GET_LSIZE(&bp), <=, SPA_MAXBLOCKSIZE);
|
||||
buf = malloc(SPA_MAXBLOCKSIZE);
|
||||
if (buf == NULL) {
|
||||
(void) fprintf(stderr, "%s: failed to allocate %llu bytes\n",
|
||||
__func__, SPA_MAXBLOCKSIZE);
|
||||
(void) fprintf(stderr, "out of memory\n");
|
||||
exit(1);
|
||||
}
|
||||
err = decode_embedded_bp(&bp, buf, BPE_GET_LSIZE(&bp));
|
||||
if (err != 0) {
|
||||
(void) printf("decode failed: %u\n", err);
|
||||
(void) fprintf(stderr, "decode failed: %u\n", err);
|
||||
free(buf);
|
||||
exit(1);
|
||||
}
|
||||
@ -5372,5 +5414,5 @@ main(int argc, char **argv)
|
||||
libzfs_fini(g_zfs);
|
||||
kernel_fini();
|
||||
|
||||
return (0);
|
||||
return (error);
|
||||
}
|
||||
|
@ -28,6 +28,7 @@
|
||||
.\" Copyright (c) 2016 Nexenta Systems, Inc. All Rights Reserved.
|
||||
.\" Copyright (c) 2014, Xin LI <delphij@FreeBSD.org>
|
||||
.\" Copyright (c) 2014-2015, The FreeBSD Foundation, All Rights Reserved.
|
||||
.\" Copyright 2018 Joyent, Inc.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
@ -319,7 +320,8 @@ namespace. For example:
|
||||
.Pp
|
||||
where the maximum length of a dataset name is
|
||||
.Dv MAXNAMELEN
|
||||
(256 bytes).
|
||||
(256 bytes)
|
||||
and the maximum amount of nesting allowed in a path is 50 levels deep.
|
||||
.Pp
|
||||
A dataset can be one of the following:
|
||||
.Bl -hang -width 12n
|
||||
@ -546,6 +548,13 @@ property. Compression can be turned on by running:
|
||||
.Qq Nm Cm set compression=on Ar dataset
|
||||
The default value is
|
||||
.Cm off .
|
||||
.It Sy createtxg
|
||||
The transaction group (txg) in which the dataset was created.
|
||||
Bookmarks have the same
|
||||
.Sy createtxg
|
||||
as the snapshot they are initially tied to.
|
||||
This property is suitable for ordering a list of snapshots,
|
||||
e.g. for incremental send and receive.
|
||||
.It Sy creation
|
||||
The time this dataset was created.
|
||||
.It Sy clones
|
||||
@ -573,6 +582,14 @@ This value is only available when a
|
||||
.Sy filesystem_limit
|
||||
has
|
||||
been set somewhere in the tree under which the dataset resides.
|
||||
.It Sy guid
|
||||
The 64 bit GUID of this dataset or bookmark which does not change over its
|
||||
entire lifetime.
|
||||
When a snapshot is sent to another pool, the received snapshot has the same
|
||||
GUID.
|
||||
Thus, the
|
||||
.Sy guid
|
||||
is suitable to identify a snapshot across pools.
|
||||
.It Sy logicalreferenced
|
||||
The amount of space that is
|
||||
.Qq logically
|
||||
@ -1311,7 +1328,7 @@ The default value is
|
||||
Limits the amount of space a dataset can consume. This property enforces a hard
|
||||
limit on the amount of space used. This hard limit does not include space used
|
||||
by descendents, including file systems and snapshots.
|
||||
.It Sy refreservation Ns = Ns Ar size | Cm none
|
||||
.It Sy refreservation Ns = Ns Ar size | Cm none | Cm auto
|
||||
The minimum amount of space guaranteed to a dataset, not including its
|
||||
descendents. When the amount of space used is below this value, the dataset is
|
||||
treated as if it were taking up the amount of space specified by
|
||||
@ -1327,6 +1344,18 @@ is set, a snapshot is only allowed if there is enough free pool space outside
|
||||
of this reservation to accommodate the current number of "referenced" bytes in
|
||||
the dataset.
|
||||
.Pp
|
||||
If
|
||||
.Sy refreservation
|
||||
is set to
|
||||
.Sy auto ,
|
||||
a volume is thick provisioned or not sparse.
|
||||
.Sy refreservation Ns = Cm auto
|
||||
is only supported on volumes.
|
||||
See
|
||||
.Sy volsize
|
||||
in the Native Properties
|
||||
section for more information about sparse volumes.
|
||||
.Pp
|
||||
This property can also be referred to by its shortened column name,
|
||||
.Sy refreserv .
|
||||
.It Sy reservation Ns = Ns Ar size | Cm none
|
||||
@ -1459,18 +1488,33 @@ on how the volume is used. These effects can also occur when the volume size is
|
||||
changed while it is in use (particularly when shrinking the size). Extreme care
|
||||
should be used when adjusting the volume size.
|
||||
.Pp
|
||||
Though not recommended, a "sparse volume" (also known as "thin provisioning")
|
||||
Though not recommended, a "sparse volume" (also known as "thin provisioned")
|
||||
can be created by specifying the
|
||||
.Fl s
|
||||
option to the
|
||||
.Qq Nm Cm create Fl V
|
||||
command, or by changing the reservation after the volume has been created. A
|
||||
"sparse volume" is a volume where the reservation is less then the volume size.
|
||||
command, or by changing the value of the
|
||||
.Sy refreservation
|
||||
property, or
|
||||
.Sy reservation
|
||||
property on pool version 8 or earlier
|
||||
.Pc
|
||||
after the volume has been created.
|
||||
A "sparse volume" is a volume where the value of
|
||||
.Sy refreservation
|
||||
is less then the size of the volume plus the space required to store its
|
||||
metadata.
|
||||
Consequently, writes to a sparse volume can fail with
|
||||
.Sy ENOSPC
|
||||
when the pool is low on space. For a sparse volume, changes to
|
||||
.Sy volsize
|
||||
are not reflected in the reservation.
|
||||
are not reflected in the
|
||||
.Sy refreservation .
|
||||
A volume that is not sparse is said to be "thick provisioned".
|
||||
A sparse volume can become thick provisioned by setting
|
||||
.Sy refreservation
|
||||
to
|
||||
.Sy auto .
|
||||
.It Sy volmode Ns = Ns Cm default | geom | dev | none
|
||||
This property specifies how volumes should be exposed to the OS.
|
||||
Setting it to
|
||||
|
@ -72,6 +72,7 @@
|
||||
#include <aclutils.h>
|
||||
#include <directory.h>
|
||||
#include <idmap.h>
|
||||
#include <libshare.h>
|
||||
#endif
|
||||
|
||||
#include "zfs_iter.h"
|
||||
@ -6221,6 +6222,17 @@ share_mount(int op, int argc, char **argv)
|
||||
return (0);
|
||||
|
||||
qsort(dslist, count, sizeof (void *), libzfs_dataset_cmp);
|
||||
#ifdef illumos
|
||||
sa_init_selective_arg_t sharearg;
|
||||
sharearg.zhandle_arr = dslist;
|
||||
sharearg.zhandle_len = count;
|
||||
if ((ret = zfs_init_libshare_arg(zfs_get_handle(dslist[0]),
|
||||
SA_INIT_SHARE_API_SELECTIVE, &sharearg)) != SA_OK) {
|
||||
(void) fprintf(stderr,
|
||||
gettext("Could not initialize libshare, %d"), ret);
|
||||
return (ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
if (verbose)
|
||||
@ -7026,11 +7038,28 @@ zfs_do_diff(int argc, char **argv)
|
||||
return (err != 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* zfs remap <filesystem | volume>
|
||||
*
|
||||
* Remap the indirect blocks in the given fileystem or volume.
|
||||
*/
|
||||
static int
|
||||
zfs_do_remap(int argc, char **argv)
|
||||
{
|
||||
const char *fsname;
|
||||
int err = 0;
|
||||
int c;
|
||||
|
||||
/* check options */
|
||||
while ((c = getopt(argc, argv, "")) != -1) {
|
||||
switch (c) {
|
||||
case '?':
|
||||
(void) fprintf(stderr,
|
||||
gettext("invalid option '%c'\n"), optopt);
|
||||
usage(B_FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
if (argc != 2) {
|
||||
(void) fprintf(stderr, gettext("wrong number of arguments\n"));
|
||||
usage(B_FALSE);
|
||||
|
@ -482,6 +482,24 @@ This feature becomes
|
||||
when the "zpool remove" command is
|
||||
used on a top-level vdev, and will never return to being
|
||||
.Sy enabled .
|
||||
.It Sy spacemap_v2
|
||||
.Bl -column "READ\-ONLY COMPATIBLE" "com.delphix:spacemap_v2"
|
||||
.It GUID Ta com.delphix:spacemap_v2
|
||||
.It READ\-ONLY COMPATIBLE Ta yes
|
||||
.It DEPENDENCIES Ta none
|
||||
.El
|
||||
.Pp
|
||||
This feature enables the use of the new space map encoding which
|
||||
consists of two words (instead of one) whenever it is advantageous.
|
||||
The new encoding allows space maps to represent large regions of
|
||||
space more efficiently on-disk while also increasing their maximum
|
||||
addressable offset.
|
||||
.Pp
|
||||
This feature becomes
|
||||
.Sy active
|
||||
as soon as it is enabled and will
|
||||
never return to being
|
||||
.Sy enabled .
|
||||
.It Sy large_blocks
|
||||
.Bl -column "READ\-ONLY COMPATIBLE" "org.open-zfs:large_block"
|
||||
.It GUID Ta org.open-zfs:large_block
|
||||
|
@ -121,6 +121,11 @@
|
||||
.Ar pool | id
|
||||
.Op Ar newpool
|
||||
.Nm
|
||||
.Cm initialize
|
||||
.Op Fl cs
|
||||
.Ar pool
|
||||
.Op Ar device Ns ...
|
||||
.Nm
|
||||
.Cm iostat
|
||||
.Op Fl T Cm d Ns | Ns Cm u
|
||||
.Op Fl v
|
||||
@ -1437,6 +1442,32 @@ to fully rewind.
|
||||
.El
|
||||
.It Xo
|
||||
.Nm
|
||||
.Cm initialize
|
||||
.Op Fl cs
|
||||
.Ar pool
|
||||
.Op Ar device Ns ...
|
||||
.Xc
|
||||
Begins initializing by writing to all unallocated regions on the specified
|
||||
devices, or all eligible devices in the pool if no individual devices are
|
||||
specified.
|
||||
Only leaf data or log devices may be initialized.
|
||||
.Bl -tag -width Ds
|
||||
.It Fl c, -cancel
|
||||
Cancel initializing on the specified devices, or all eligible devices if none
|
||||
are specified.
|
||||
If one or more target devices are invalid or are not currently being
|
||||
initialized, the command will fail and no cancellation will occur on any device.
|
||||
.It Fl s -suspend
|
||||
Suspend initializing on the specified devices, or all eligible devices if none
|
||||
are specified.
|
||||
If one or more target devices are invalid or are not currently being
|
||||
initialized, the command will fail and no suspension will occur on any device.
|
||||
Initializing can then be resumed by running
|
||||
.Nm zpool Cm initialize
|
||||
with no flags on the relevant target devices.
|
||||
.El
|
||||
.It Xo
|
||||
.Nm
|
||||
.Cm iostat
|
||||
.Op Fl T Cm d Ns | Ns Cm u
|
||||
.Op Fl v
|
||||
|
@ -87,6 +87,7 @@ static int zpool_do_detach(int, char **);
|
||||
static int zpool_do_replace(int, char **);
|
||||
static int zpool_do_split(int, char **);
|
||||
|
||||
static int zpool_do_initialize(int, char **);
|
||||
static int zpool_do_scrub(int, char **);
|
||||
|
||||
static int zpool_do_import(int, char **);
|
||||
@ -136,6 +137,7 @@ typedef enum {
|
||||
HELP_ONLINE,
|
||||
HELP_REPLACE,
|
||||
HELP_REMOVE,
|
||||
HELP_INITIALIZE,
|
||||
HELP_SCRUB,
|
||||
HELP_STATUS,
|
||||
HELP_UPGRADE,
|
||||
@ -187,6 +189,7 @@ static zpool_command_t command_table[] = {
|
||||
{ "replace", zpool_do_replace, HELP_REPLACE },
|
||||
{ "split", zpool_do_split, HELP_SPLIT },
|
||||
{ NULL },
|
||||
{ "initialize", zpool_do_initialize, HELP_INITIALIZE },
|
||||
{ "scrub", zpool_do_scrub, HELP_SCRUB },
|
||||
{ NULL },
|
||||
{ "import", zpool_do_import, HELP_IMPORT },
|
||||
@ -261,6 +264,8 @@ get_usage(zpool_help_t idx)
|
||||
return (gettext("\tremove [-nps] <pool> <device> ...\n"));
|
||||
case HELP_REOPEN:
|
||||
return (gettext("\treopen <pool>\n"));
|
||||
case HELP_INITIALIZE:
|
||||
return (gettext("\tinitialize [-cs] <pool> [<device> ...]\n"));
|
||||
case HELP_SCRUB:
|
||||
return (gettext("\tscrub [-s | -p] <pool> ...\n"));
|
||||
case HELP_STATUS:
|
||||
@ -1650,6 +1655,43 @@ print_status_config(zpool_handle_t *zhp, const char *name, nvlist_t *nv,
|
||||
"resilvering" : "repairing");
|
||||
}
|
||||
|
||||
if ((vs->vs_initialize_state == VDEV_INITIALIZE_ACTIVE ||
|
||||
vs->vs_initialize_state == VDEV_INITIALIZE_SUSPENDED ||
|
||||
vs->vs_initialize_state == VDEV_INITIALIZE_COMPLETE) &&
|
||||
!vs->vs_scan_removing) {
|
||||
char zbuf[1024];
|
||||
char tbuf[256];
|
||||
struct tm zaction_ts;
|
||||
|
||||
time_t t = vs->vs_initialize_action_time;
|
||||
int initialize_pct = 100;
|
||||
if (vs->vs_initialize_state != VDEV_INITIALIZE_COMPLETE) {
|
||||
initialize_pct = (vs->vs_initialize_bytes_done * 100 /
|
||||
(vs->vs_initialize_bytes_est + 1));
|
||||
}
|
||||
|
||||
(void) localtime_r(&t, &zaction_ts);
|
||||
(void) strftime(tbuf, sizeof (tbuf), "%c", &zaction_ts);
|
||||
|
||||
switch (vs->vs_initialize_state) {
|
||||
case VDEV_INITIALIZE_SUSPENDED:
|
||||
(void) snprintf(zbuf, sizeof (zbuf),
|
||||
", suspended, started at %s", tbuf);
|
||||
break;
|
||||
case VDEV_INITIALIZE_ACTIVE:
|
||||
(void) snprintf(zbuf, sizeof (zbuf),
|
||||
", started at %s", tbuf);
|
||||
break;
|
||||
case VDEV_INITIALIZE_COMPLETE:
|
||||
(void) snprintf(zbuf, sizeof (zbuf),
|
||||
", completed at %s", tbuf);
|
||||
break;
|
||||
}
|
||||
|
||||
(void) printf(gettext(" (%d%% initialized%s)"),
|
||||
initialize_pct, zbuf);
|
||||
}
|
||||
|
||||
(void) printf("\n");
|
||||
|
||||
for (c = 0; c < children; c++) {
|
||||
@ -4238,6 +4280,119 @@ zpool_do_scrub(int argc, char **argv)
|
||||
return (for_each_pool(argc, argv, B_TRUE, NULL, scrub_callback, &cb));
|
||||
}
|
||||
|
||||
static void
|
||||
zpool_collect_leaves(zpool_handle_t *zhp, nvlist_t *nvroot, nvlist_t *res)
|
||||
{
|
||||
uint_t children = 0;
|
||||
nvlist_t **child;
|
||||
uint_t i;
|
||||
|
||||
(void) nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_CHILDREN,
|
||||
&child, &children);
|
||||
|
||||
if (children == 0) {
|
||||
char *path = zpool_vdev_name(g_zfs, zhp, nvroot, B_FALSE);
|
||||
fnvlist_add_boolean(res, path);
|
||||
free(path);
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < children; i++) {
|
||||
zpool_collect_leaves(zhp, child[i], res);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* zpool initialize [-cs] <pool> [<vdev> ...]
|
||||
* Initialize all unused blocks in the specified vdevs, or all vdevs in the pool
|
||||
* if none specified.
|
||||
*
|
||||
* -c Cancel. Ends active initializing.
|
||||
* -s Suspend. Initializing can then be restarted with no flags.
|
||||
*/
|
||||
int
|
||||
zpool_do_initialize(int argc, char **argv)
|
||||
{
|
||||
int c;
|
||||
char *poolname;
|
||||
zpool_handle_t *zhp;
|
||||
nvlist_t *vdevs;
|
||||
int err = 0;
|
||||
|
||||
struct option long_options[] = {
|
||||
{"cancel", no_argument, NULL, 'c'},
|
||||
{"suspend", no_argument, NULL, 's'},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
pool_initialize_func_t cmd_type = POOL_INITIALIZE_DO;
|
||||
while ((c = getopt_long(argc, argv, "cs", long_options, NULL)) != -1) {
|
||||
switch (c) {
|
||||
case 'c':
|
||||
if (cmd_type != POOL_INITIALIZE_DO) {
|
||||
(void) fprintf(stderr, gettext("-c cannot be "
|
||||
"combined with other options\n"));
|
||||
usage(B_FALSE);
|
||||
}
|
||||
cmd_type = POOL_INITIALIZE_CANCEL;
|
||||
break;
|
||||
case 's':
|
||||
if (cmd_type != POOL_INITIALIZE_DO) {
|
||||
(void) fprintf(stderr, gettext("-s cannot be "
|
||||
"combined with other options\n"));
|
||||
usage(B_FALSE);
|
||||
}
|
||||
cmd_type = POOL_INITIALIZE_SUSPEND;
|
||||
break;
|
||||
case '?':
|
||||
if (optopt != 0) {
|
||||
(void) fprintf(stderr,
|
||||
gettext("invalid option '%c'\n"), optopt);
|
||||
} else {
|
||||
(void) fprintf(stderr,
|
||||
gettext("invalid option '%s'\n"),
|
||||
argv[optind - 1]);
|
||||
}
|
||||
usage(B_FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
|
||||
if (argc < 1) {
|
||||
(void) fprintf(stderr, gettext("missing pool name argument\n"));
|
||||
usage(B_FALSE);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
poolname = argv[0];
|
||||
zhp = zpool_open(g_zfs, poolname);
|
||||
if (zhp == NULL)
|
||||
return (-1);
|
||||
|
||||
vdevs = fnvlist_alloc();
|
||||
if (argc == 1) {
|
||||
/* no individual leaf vdevs specified, so add them all */
|
||||
nvlist_t *config = zpool_get_config(zhp, NULL);
|
||||
nvlist_t *nvroot = fnvlist_lookup_nvlist(config,
|
||||
ZPOOL_CONFIG_VDEV_TREE);
|
||||
zpool_collect_leaves(zhp, nvroot, vdevs);
|
||||
} else {
|
||||
int i;
|
||||
for (i = 1; i < argc; i++) {
|
||||
fnvlist_add_boolean(vdevs, argv[i]);
|
||||
}
|
||||
}
|
||||
|
||||
err = zpool_initialize(zhp, cmd_type, vdevs);
|
||||
|
||||
fnvlist_free(vdevs);
|
||||
zpool_close(zhp);
|
||||
|
||||
return (err);
|
||||
}
|
||||
|
||||
typedef struct status_cbdata {
|
||||
int cb_count;
|
||||
boolean_t cb_allpools;
|
||||
|
@ -20,7 +20,7 @@
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 2016 by Delphix. All rights reserved.
|
||||
* Copyright (c) 2011, 2017 by Delphix. All rights reserved.
|
||||
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2012 Martin Matuska <mm@FreeBSD.org>. All rights reserved.
|
||||
* Copyright (c) 2013 Steven Hartland. All rights reserved.
|
||||
@ -104,6 +104,7 @@
|
||||
#include <sys/zil_impl.h>
|
||||
#include <sys/vdev_impl.h>
|
||||
#include <sys/vdev_file.h>
|
||||
#include <sys/vdev_initialize.h>
|
||||
#include <sys/spa_impl.h>
|
||||
#include <sys/metaslab_impl.h>
|
||||
#include <sys/dsl_prop.h>
|
||||
@ -195,6 +196,7 @@ extern uint64_t zfs_deadman_synctime_ms;
|
||||
extern int metaslab_preload_limit;
|
||||
extern boolean_t zfs_compressed_arc_enabled;
|
||||
extern boolean_t zfs_abd_scatter_enabled;
|
||||
extern boolean_t zfs_force_some_double_word_sm_entries;
|
||||
|
||||
static ztest_shared_opts_t *ztest_shared_opts;
|
||||
static ztest_shared_opts_t ztest_opts;
|
||||
@ -347,6 +349,7 @@ ztest_func_t ztest_spa_upgrade;
|
||||
ztest_func_t ztest_device_removal;
|
||||
ztest_func_t ztest_remap_blocks;
|
||||
ztest_func_t ztest_spa_checkpoint_create_discard;
|
||||
ztest_func_t ztest_initialize;
|
||||
|
||||
uint64_t zopt_always = 0ULL * NANOSEC; /* all the time */
|
||||
uint64_t zopt_incessant = 1ULL * NANOSEC / 10; /* every 1/10 second */
|
||||
@ -390,7 +393,8 @@ ztest_info_t ztest_info[] = {
|
||||
&ztest_opts.zo_vdevtime },
|
||||
{ ztest_device_removal, 1, &zopt_sometimes },
|
||||
{ ztest_remap_blocks, 1, &zopt_sometimes },
|
||||
{ ztest_spa_checkpoint_create_discard, 1, &zopt_rarely }
|
||||
{ ztest_spa_checkpoint_create_discard, 1, &zopt_rarely },
|
||||
{ ztest_initialize, 1, &zopt_sometimes }
|
||||
};
|
||||
|
||||
#define ZTEST_FUNCS (sizeof (ztest_info) / sizeof (ztest_info_t))
|
||||
@ -437,6 +441,7 @@ static ztest_ds_t *ztest_ds;
|
||||
|
||||
static kmutex_t ztest_vdev_lock;
|
||||
static kmutex_t ztest_checkpoint_lock;
|
||||
static boolean_t ztest_device_removal_active = B_FALSE;
|
||||
|
||||
/*
|
||||
* The ztest_name_lock protects the pool and dataset namespace used by
|
||||
@ -2881,7 +2886,7 @@ ztest_vdev_attach_detach(ztest_ds_t *zd, uint64_t id)
|
||||
* value. Don't bother trying to attach while we are in the middle
|
||||
* of removal.
|
||||
*/
|
||||
if (spa->spa_vdev_removal != NULL) {
|
||||
if (ztest_device_removal_active) {
|
||||
spa_config_exit(spa, SCL_ALL, FTAG);
|
||||
mutex_exit(&ztest_vdev_lock);
|
||||
return;
|
||||
@ -3056,16 +3061,49 @@ ztest_device_removal(ztest_ds_t *zd, uint64_t id)
|
||||
spa_t *spa = ztest_spa;
|
||||
vdev_t *vd;
|
||||
uint64_t guid;
|
||||
int error;
|
||||
|
||||
mutex_enter(&ztest_vdev_lock);
|
||||
|
||||
if (ztest_device_removal_active) {
|
||||
mutex_exit(&ztest_vdev_lock);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove a random top-level vdev and wait for removal to finish.
|
||||
*/
|
||||
spa_config_enter(spa, SCL_VDEV, FTAG, RW_READER);
|
||||
vd = vdev_lookup_top(spa, ztest_random_vdev_top(spa, B_FALSE));
|
||||
guid = vd->vdev_guid;
|
||||
spa_config_exit(spa, SCL_VDEV, FTAG);
|
||||
|
||||
(void) spa_vdev_remove(spa, guid, B_FALSE);
|
||||
error = spa_vdev_remove(spa, guid, B_FALSE);
|
||||
if (error == 0) {
|
||||
ztest_device_removal_active = B_TRUE;
|
||||
mutex_exit(&ztest_vdev_lock);
|
||||
|
||||
while (spa->spa_vdev_removal != NULL)
|
||||
txg_wait_synced(spa_get_dsl(spa), 0);
|
||||
} else {
|
||||
mutex_exit(&ztest_vdev_lock);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* The pool needs to be scrubbed after completing device removal.
|
||||
* Failure to do so may result in checksum errors due to the
|
||||
* strategy employed by ztest_fault_inject() when selecting which
|
||||
* offset are redundant and can be damaged.
|
||||
*/
|
||||
error = spa_scan(spa, POOL_SCAN_SCRUB);
|
||||
if (error == 0) {
|
||||
while (dsl_scan_scrubbing(spa_get_dsl(spa)))
|
||||
txg_wait_synced(spa_get_dsl(spa), 0);
|
||||
}
|
||||
|
||||
mutex_enter(&ztest_vdev_lock);
|
||||
ztest_device_removal_active = B_FALSE;
|
||||
mutex_exit(&ztest_vdev_lock);
|
||||
}
|
||||
|
||||
@ -3204,7 +3242,7 @@ ztest_vdev_LUN_growth(ztest_ds_t *zd, uint64_t id)
|
||||
* that the metaslab_class space increased (because it decreases
|
||||
* when the device removal completes).
|
||||
*/
|
||||
if (spa->spa_vdev_removal != NULL) {
|
||||
if (ztest_device_removal_active) {
|
||||
spa_config_exit(spa, SCL_STATE, spa);
|
||||
mutex_exit(&ztest_vdev_lock);
|
||||
mutex_exit(&ztest_checkpoint_lock);
|
||||
@ -4985,6 +5023,18 @@ ztest_fault_inject(ztest_ds_t *zd, uint64_t id)
|
||||
boolean_t islog = B_FALSE;
|
||||
|
||||
mutex_enter(&ztest_vdev_lock);
|
||||
|
||||
/*
|
||||
* Device removal is in progress, fault injection must be disabled
|
||||
* until it completes and the pool is scrubbed. The fault injection
|
||||
* strategy for damaging blocks does not take in to account evacuated
|
||||
* blocks which may have already been damaged.
|
||||
*/
|
||||
if (ztest_device_removal_active) {
|
||||
mutex_exit(&ztest_vdev_lock);
|
||||
return;
|
||||
}
|
||||
|
||||
maxfaults = MAXFAULTS();
|
||||
leaves = MAX(zs->zs_mirrors, 1) * ztest_opts.zo_raidz;
|
||||
mirror_save = zs->zs_mirrors;
|
||||
@ -5330,6 +5380,12 @@ ztest_scrub(ztest_ds_t *zd, uint64_t id)
|
||||
{
|
||||
spa_t *spa = ztest_spa;
|
||||
|
||||
/*
|
||||
* Scrub in progress by device removal.
|
||||
*/
|
||||
if (ztest_device_removal_active)
|
||||
return;
|
||||
|
||||
(void) spa_scan(spa, POOL_SCAN_SCRUB);
|
||||
(void) poll(NULL, 0, 100); /* wait a moment, then force a restart */
|
||||
(void) spa_scan(spa, POOL_SCAN_SCRUB);
|
||||
@ -5418,6 +5474,97 @@ ztest_spa_rename(ztest_ds_t *zd, uint64_t id)
|
||||
rw_exit(&ztest_name_lock);
|
||||
}
|
||||
|
||||
static vdev_t *
|
||||
ztest_random_concrete_vdev_leaf(vdev_t *vd)
|
||||
{
|
||||
if (vd == NULL)
|
||||
return (NULL);
|
||||
|
||||
if (vd->vdev_children == 0)
|
||||
return (vd);
|
||||
|
||||
vdev_t *eligible[vd->vdev_children];
|
||||
int eligible_idx = 0, i;
|
||||
for (i = 0; i < vd->vdev_children; i++) {
|
||||
vdev_t *cvd = vd->vdev_child[i];
|
||||
if (cvd->vdev_top->vdev_removing)
|
||||
continue;
|
||||
if (cvd->vdev_children > 0 ||
|
||||
(vdev_is_concrete(cvd) && !cvd->vdev_detached)) {
|
||||
eligible[eligible_idx++] = cvd;
|
||||
}
|
||||
}
|
||||
VERIFY(eligible_idx > 0);
|
||||
|
||||
uint64_t child_no = ztest_random(eligible_idx);
|
||||
return (ztest_random_concrete_vdev_leaf(eligible[child_no]));
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
void
|
||||
ztest_initialize(ztest_ds_t *zd, uint64_t id)
|
||||
{
|
||||
spa_t *spa = ztest_spa;
|
||||
int error = 0;
|
||||
|
||||
mutex_enter(&ztest_vdev_lock);
|
||||
|
||||
spa_config_enter(spa, SCL_VDEV, FTAG, RW_READER);
|
||||
|
||||
/* Random leaf vdev */
|
||||
vdev_t *rand_vd = ztest_random_concrete_vdev_leaf(spa->spa_root_vdev);
|
||||
if (rand_vd == NULL) {
|
||||
spa_config_exit(spa, SCL_VDEV, FTAG);
|
||||
mutex_exit(&ztest_vdev_lock);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* The random vdev we've selected may change as soon as we
|
||||
* drop the spa_config_lock. We create local copies of things
|
||||
* we're interested in.
|
||||
*/
|
||||
uint64_t guid = rand_vd->vdev_guid;
|
||||
char *path = strdup(rand_vd->vdev_path);
|
||||
boolean_t active = rand_vd->vdev_initialize_thread != NULL;
|
||||
|
||||
zfs_dbgmsg("vd %p, guid %llu", rand_vd, guid);
|
||||
spa_config_exit(spa, SCL_VDEV, FTAG);
|
||||
|
||||
uint64_t cmd = ztest_random(POOL_INITIALIZE_FUNCS);
|
||||
error = spa_vdev_initialize(spa, guid, cmd);
|
||||
switch (cmd) {
|
||||
case POOL_INITIALIZE_CANCEL:
|
||||
if (ztest_opts.zo_verbose >= 4) {
|
||||
(void) printf("Cancel initialize %s", path);
|
||||
if (!active)
|
||||
(void) printf(" failed (no initialize active)");
|
||||
(void) printf("\n");
|
||||
}
|
||||
break;
|
||||
case POOL_INITIALIZE_DO:
|
||||
if (ztest_opts.zo_verbose >= 4) {
|
||||
(void) printf("Start initialize %s", path);
|
||||
if (active && error == 0)
|
||||
(void) printf(" failed (already active)");
|
||||
else if (error != 0)
|
||||
(void) printf(" failed (error %d)", error);
|
||||
(void) printf("\n");
|
||||
}
|
||||
break;
|
||||
case POOL_INITIALIZE_SUSPEND:
|
||||
if (ztest_opts.zo_verbose >= 4) {
|
||||
(void) printf("Suspend initialize %s", path);
|
||||
if (!active)
|
||||
(void) printf(" failed (no initialize active)");
|
||||
(void) printf("\n");
|
||||
}
|
||||
break;
|
||||
}
|
||||
free(path);
|
||||
mutex_exit(&ztest_vdev_lock);
|
||||
}
|
||||
|
||||
/*
|
||||
* Verify pool integrity by running zdb.
|
||||
*/
|
||||
@ -5868,7 +6015,6 @@ ztest_run(ztest_shared_t *zs)
|
||||
*/
|
||||
kernel_init(FREAD | FWRITE);
|
||||
VERIFY0(spa_open(ztest_opts.zo_pool, &spa, FTAG));
|
||||
spa->spa_debug = B_TRUE;
|
||||
metaslab_preload_limit = ztest_random(20) + 1;
|
||||
ztest_spa = spa;
|
||||
|
||||
@ -6025,7 +6171,6 @@ ztest_freeze(void)
|
||||
kernel_init(FREAD | FWRITE);
|
||||
VERIFY3U(0, ==, spa_open(ztest_opts.zo_pool, &spa, FTAG));
|
||||
VERIFY3U(0, ==, ztest_dataset_open(0));
|
||||
spa->spa_debug = B_TRUE;
|
||||
ztest_spa = spa;
|
||||
|
||||
/*
|
||||
@ -6096,7 +6241,6 @@ ztest_freeze(void)
|
||||
VERIFY3U(0, ==, ztest_dataset_open(0));
|
||||
ztest_dataset_close(0);
|
||||
|
||||
spa->spa_debug = B_TRUE;
|
||||
ztest_spa = spa;
|
||||
txg_wait_synced(spa_get_dsl(spa), 0);
|
||||
ztest_reguid(NULL, 0);
|
||||
@ -6397,6 +6541,12 @@ main(int argc, char **argv)
|
||||
|
||||
dprintf_setup(&argc, argv);
|
||||
zfs_deadman_synctime_ms = 300000;
|
||||
/*
|
||||
* As two-word space map entries may not come up often (especially
|
||||
* if pool and vdev sizes are small) we want to force at least some
|
||||
* of them so the feature get tested.
|
||||
*/
|
||||
zfs_force_some_double_word_sm_entries = B_TRUE;
|
||||
|
||||
ztest_fd_rand = open("/dev/urandom", O_RDONLY);
|
||||
ASSERT3S(ztest_fd_rand, >=, 0);
|
||||
|
@ -343,13 +343,13 @@ static const dt_ident_t _dtrace_globals[] = {
|
||||
&dt_idops_func, "void(@)" },
|
||||
{ "mod", DT_IDENT_ACTFUNC, 0, DT_ACT_MOD, DT_ATTR_STABCMN,
|
||||
DT_VERS_1_2, &dt_idops_func, "_symaddr(uintptr_t)" },
|
||||
#ifdef illumos
|
||||
{ "msgdsize", DT_IDENT_FUNC, 0, DIF_SUBR_MSGDSIZE,
|
||||
DT_ATTR_STABCMN, DT_VERS_1_0,
|
||||
&dt_idops_func, "size_t(mblk_t *)" },
|
||||
{ "msgsize", DT_IDENT_FUNC, 0, DIF_SUBR_MSGSIZE,
|
||||
DT_ATTR_STABCMN, DT_VERS_1_0,
|
||||
&dt_idops_func, "size_t(mblk_t *)" },
|
||||
#ifdef illumos
|
||||
{ "mutex_owned", DT_IDENT_FUNC, 0, DIF_SUBR_MUTEX_OWNED,
|
||||
DT_ATTR_EVOLCMN, DT_VERS_1_0,
|
||||
&dt_idops_func, "int(genunix`kmutex_t *)" },
|
||||
|
@ -10,6 +10,7 @@
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2014, Joyent, Inc.
|
||||
* Copyright (c) 2017 by Delphix. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
@ -394,8 +395,10 @@ nvlist_print_json(FILE *fp, nvlist_t *nvl)
|
||||
}
|
||||
|
||||
case DATA_TYPE_UNKNOWN:
|
||||
case DATA_TYPE_DONTCARE:
|
||||
return (-1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FPRINTF(fp, "}");
|
||||
|
@ -137,6 +137,9 @@ typedef enum zfs_error {
|
||||
EZFS_NO_CHECKPOINT, /* pool has no checkpoint */
|
||||
EZFS_DEVRM_IN_PROGRESS, /* a device is currently being removed */
|
||||
EZFS_VDEV_TOO_BIG, /* a device is too big to be used */
|
||||
EZFS_TOOMANY, /* argument list too long */
|
||||
EZFS_INITIALIZING, /* currently initializing */
|
||||
EZFS_NO_INITIALIZE, /* no active initialize */
|
||||
EZFS_UNKNOWN
|
||||
} zfs_error_t;
|
||||
|
||||
@ -262,6 +265,8 @@ typedef struct splitflags {
|
||||
* Functions to manipulate pool and vdev state
|
||||
*/
|
||||
extern int zpool_scan(zpool_handle_t *, pool_scan_func_t, pool_scrub_cmd_t);
|
||||
extern int zpool_initialize(zpool_handle_t *, pool_initialize_func_t,
|
||||
nvlist_t *);
|
||||
extern int zpool_clear(zpool_handle_t *, const char *, nvlist_t *);
|
||||
extern int zpool_reguid(zpool_handle_t *);
|
||||
extern int zpool_reopen(zpool_handle_t *);
|
||||
@ -838,6 +843,17 @@ extern int zmount(const char *, const char *, int, char *, char *, int, char *,
|
||||
#endif
|
||||
extern int zfs_remap_indirects(libzfs_handle_t *hdl, const char *);
|
||||
|
||||
/* Allow consumers to initialize libshare externally for optimal performance */
|
||||
extern int zfs_init_libshare_arg(libzfs_handle_t *, int, void *);
|
||||
/*
|
||||
* For most consumers, zfs_init_libshare_arg is sufficient on its own, and
|
||||
* zfs_uninit_libshare is unnecessary. zfs_uninit_libshare should only be called
|
||||
* if the caller has already initialized libshare for one set of zfs handles,
|
||||
* and wishes to share or unshare filesystems outside of that set. In that case,
|
||||
* the caller should uninitialize libshare, and then re-initialize it with the
|
||||
* new handles being shared or unshared.
|
||||
*/
|
||||
extern void zfs_uninit_libshare(libzfs_handle_t *);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -26,7 +26,7 @@
|
||||
* Portions Copyright 2007 Ramprakash Jelari
|
||||
* Copyright (c) 2011 Pawel Jakub Dawidek <pawel@dawidek.net>.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2014, 2015 by Delphix. All rights reserved.
|
||||
* Copyright (c) 2014, 2016 by Delphix. All rights reserved.
|
||||
* Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>
|
||||
*/
|
||||
|
||||
@ -166,6 +166,11 @@ changelist_postfix(prop_changelist_t *clp)
|
||||
char shareopts[ZFS_MAXPROPLEN];
|
||||
int errors = 0;
|
||||
libzfs_handle_t *hdl;
|
||||
#ifdef illumos
|
||||
size_t num_datasets = 0, i;
|
||||
zfs_handle_t **zhandle_arr;
|
||||
sa_init_selective_arg_t sharearg;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If we're changing the mountpoint, attempt to destroy the underlying
|
||||
@ -192,8 +197,33 @@ changelist_postfix(prop_changelist_t *clp)
|
||||
hdl = cn->cn_handle->zfs_hdl;
|
||||
assert(hdl != NULL);
|
||||
zfs_uninit_libshare(hdl);
|
||||
}
|
||||
|
||||
#ifdef illumos
|
||||
/*
|
||||
* For efficiencies sake, we initialize libshare for only a few
|
||||
* shares (the ones affected here). Future initializations in
|
||||
* this process should just use the cached initialization.
|
||||
*/
|
||||
for (cn = uu_list_last(clp->cl_list); cn != NULL;
|
||||
cn = uu_list_prev(clp->cl_list, cn)) {
|
||||
num_datasets++;
|
||||
}
|
||||
|
||||
zhandle_arr = zfs_alloc(hdl,
|
||||
num_datasets * sizeof (zfs_handle_t *));
|
||||
for (i = 0, cn = uu_list_last(clp->cl_list); cn != NULL;
|
||||
cn = uu_list_prev(clp->cl_list, cn)) {
|
||||
zhandle_arr[i++] = cn->cn_handle;
|
||||
zfs_refresh_properties(cn->cn_handle);
|
||||
}
|
||||
assert(i == num_datasets);
|
||||
sharearg.zhandle_arr = zhandle_arr;
|
||||
sharearg.zhandle_len = num_datasets;
|
||||
errors = zfs_init_libshare_arg(hdl, SA_INIT_SHARE_API_SELECTIVE,
|
||||
&sharearg);
|
||||
free(zhandle_arr);
|
||||
#endif
|
||||
}
|
||||
/*
|
||||
* We walk the datasets in reverse, because we want to mount any parent
|
||||
* datasets before mounting the children. We walk all datasets even if
|
||||
@ -218,7 +248,9 @@ changelist_postfix(prop_changelist_t *clp)
|
||||
continue;
|
||||
cn->cn_needpost = B_FALSE;
|
||||
|
||||
#ifndef illumos
|
||||
zfs_refresh_properties(cn->cn_handle);
|
||||
#endif
|
||||
|
||||
if (ZFS_IS_VOLUME(cn->cn_handle))
|
||||
continue;
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
/*
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, Joyent, Inc. All rights reserved.
|
||||
* Copyright (c) 2018, Joyent, Inc. All rights reserved.
|
||||
* Copyright (c) 2011, 2016 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.
|
||||
@ -50,7 +50,9 @@
|
||||
#include <pwd.h>
|
||||
#include <grp.h>
|
||||
#include <stddef.h>
|
||||
#ifdef illumos
|
||||
#include <idmap.h>
|
||||
#endif
|
||||
|
||||
#include <sys/dnode.h>
|
||||
#include <sys/spa.h>
|
||||
@ -785,15 +787,13 @@ typedef struct mnttab_node {
|
||||
static int
|
||||
libzfs_mnttab_cache_compare(const void *arg1, const void *arg2)
|
||||
{
|
||||
const mnttab_node_t *mtn1 = arg1;
|
||||
const mnttab_node_t *mtn2 = arg2;
|
||||
const mnttab_node_t *mtn1 = (const mnttab_node_t *)arg1;
|
||||
const mnttab_node_t *mtn2 = (const mnttab_node_t *)arg2;
|
||||
int rv;
|
||||
|
||||
rv = strcmp(mtn1->mtn_mt.mnt_special, mtn2->mtn_mt.mnt_special);
|
||||
|
||||
if (rv == 0)
|
||||
return (0);
|
||||
return (rv > 0 ? 1 : -1);
|
||||
return (AVL_ISIGN(rv));
|
||||
}
|
||||
|
||||
void
|
||||
@ -1407,7 +1407,6 @@ zfs_valid_proplist(libzfs_handle_t *hdl, zfs_type_t type, nvlist_t *nvl,
|
||||
|
||||
switch (prop) {
|
||||
case ZFS_PROP_RESERVATION:
|
||||
case ZFS_PROP_REFRESERVATION:
|
||||
if (intval > volsize) {
|
||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
||||
"'%s' is greater than current "
|
||||
@ -1418,6 +1417,17 @@ zfs_valid_proplist(libzfs_handle_t *hdl, zfs_type_t type, nvlist_t *nvl,
|
||||
}
|
||||
break;
|
||||
|
||||
case ZFS_PROP_REFRESERVATION:
|
||||
if (intval > volsize && intval != UINT64_MAX) {
|
||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
||||
"'%s' is greater than current "
|
||||
"volume size"), propname);
|
||||
(void) zfs_error(hdl, EZFS_BADPROP,
|
||||
errbuf);
|
||||
goto error;
|
||||
}
|
||||
break;
|
||||
|
||||
case ZFS_PROP_VOLSIZE:
|
||||
if (intval % blocksize != 0) {
|
||||
zfs_nicenum(blocksize, buf,
|
||||
@ -1519,6 +1529,61 @@ zfs_add_synthetic_resv(zfs_handle_t *zhp, nvlist_t *nvl)
|
||||
return (1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Helper for 'zfs {set|clone} refreservation=auto'. Must be called after
|
||||
* zfs_valid_proplist(), as it is what sets the UINT64_MAX sentinal value.
|
||||
* Return codes must match zfs_add_synthetic_resv().
|
||||
*/
|
||||
static int
|
||||
zfs_fix_auto_resv(zfs_handle_t *zhp, nvlist_t *nvl)
|
||||
{
|
||||
uint64_t volsize;
|
||||
uint64_t resvsize;
|
||||
zfs_prop_t prop;
|
||||
nvlist_t *props;
|
||||
|
||||
if (!ZFS_IS_VOLUME(zhp)) {
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (zfs_which_resv_prop(zhp, &prop) != 0) {
|
||||
return (-1);
|
||||
}
|
||||
|
||||
if (prop != ZFS_PROP_REFRESERVATION) {
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (nvlist_lookup_uint64(nvl, zfs_prop_to_name(prop), &resvsize) != 0) {
|
||||
/* No value being set, so it can't be "auto" */
|
||||
return (0);
|
||||
}
|
||||
if (resvsize != UINT64_MAX) {
|
||||
/* Being set to a value other than "auto" */
|
||||
return (0);
|
||||
}
|
||||
|
||||
props = fnvlist_alloc();
|
||||
|
||||
fnvlist_add_uint64(props, zfs_prop_to_name(ZFS_PROP_VOLBLOCKSIZE),
|
||||
zfs_prop_get_int(zhp, ZFS_PROP_VOLBLOCKSIZE));
|
||||
|
||||
if (nvlist_lookup_uint64(nvl, zfs_prop_to_name(ZFS_PROP_VOLSIZE),
|
||||
&volsize) != 0) {
|
||||
volsize = zfs_prop_get_int(zhp, ZFS_PROP_VOLSIZE);
|
||||
}
|
||||
|
||||
resvsize = zvol_volsize_to_reservation(volsize, props);
|
||||
fnvlist_free(props);
|
||||
|
||||
(void) nvlist_remove_all(nvl, zfs_prop_to_name(prop));
|
||||
if (nvlist_add_uint64(nvl, zfs_prop_to_name(prop), resvsize) != 0) {
|
||||
(void) no_memory(zhp->zfs_hdl);
|
||||
return (-1);
|
||||
}
|
||||
return (1);
|
||||
}
|
||||
|
||||
void
|
||||
zfs_setprop_error(libzfs_handle_t *hdl, zfs_prop_t prop, int err,
|
||||
char *errbuf)
|
||||
@ -1685,6 +1750,12 @@ zfs_prop_set_list(zfs_handle_t *zhp, nvlist_t *props)
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
if (added_resv != 1 &&
|
||||
(added_resv = zfs_fix_auto_resv(zhp, nvl)) == -1) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check how many properties we're setting and allocate an array to
|
||||
* store changelist pointers for postfix().
|
||||
@ -2711,6 +2782,7 @@ zfs_prop_get(zfs_handle_t *zhp, zfs_prop_t prop, char *propbuf, size_t proplen,
|
||||
break;
|
||||
|
||||
case ZFS_PROP_GUID:
|
||||
case ZFS_PROP_CREATETXG:
|
||||
/*
|
||||
* GUIDs are stored as numbers, but they are identifiers.
|
||||
* We don't want them to be pretty printed, because pretty
|
||||
@ -3376,8 +3448,22 @@ zfs_create_ancestors(libzfs_handle_t *hdl, const char *path)
|
||||
{
|
||||
int prefix;
|
||||
char *path_copy;
|
||||
char errbuf[1024];
|
||||
int rc = 0;
|
||||
|
||||
(void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN,
|
||||
"cannot create '%s'"), path);
|
||||
|
||||
/*
|
||||
* Check that we are not passing the nesting limit
|
||||
* before we start creating any ancestors.
|
||||
*/
|
||||
if (dataset_nestcheck(path) != 0) {
|
||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
||||
"maximum name nesting depth exceeded"));
|
||||
return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf));
|
||||
}
|
||||
|
||||
if (check_parents(hdl, path, NULL, B_TRUE, &prefix) != 0)
|
||||
return (-1);
|
||||
|
||||
@ -3413,6 +3499,12 @@ zfs_create(libzfs_handle_t *hdl, const char *path, zfs_type_t type,
|
||||
if (!zfs_validate_name(hdl, path, type, B_TRUE))
|
||||
return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf));
|
||||
|
||||
if (dataset_nestcheck(path) != 0) {
|
||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
||||
"maximum name nesting depth exceeded"));
|
||||
return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf));
|
||||
}
|
||||
|
||||
/* validate parents exist */
|
||||
if (check_parents(hdl, path, &zoned, B_FALSE, NULL) != 0)
|
||||
return (-1);
|
||||
@ -3715,6 +3807,7 @@ zfs_clone(zfs_handle_t *zhp, const char *target, nvlist_t *props)
|
||||
|
||||
if (props) {
|
||||
zfs_type_t type;
|
||||
|
||||
if (ZFS_IS_VOLUME(zhp)) {
|
||||
type = ZFS_TYPE_VOLUME;
|
||||
} else {
|
||||
@ -3723,6 +3816,10 @@ zfs_clone(zfs_handle_t *zhp, const char *target, nvlist_t *props)
|
||||
if ((props = zfs_valid_proplist(hdl, type, props, zoned,
|
||||
zhp, zhp->zpool_hdl, errbuf)) == NULL)
|
||||
return (-1);
|
||||
if (zfs_fix_auto_resv(zhp, props) == -1) {
|
||||
nvlist_free(props);
|
||||
return (-1);
|
||||
}
|
||||
}
|
||||
|
||||
ret = lzc_clone(target, zhp->zfs_name, props);
|
||||
@ -3839,12 +3936,24 @@ zfs_remap_indirects(libzfs_handle_t *hdl, const char *fs)
|
||||
char errbuf[1024];
|
||||
|
||||
(void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN,
|
||||
"cannot remap filesystem '%s' "), fs);
|
||||
"cannot remap dataset '%s'"), fs);
|
||||
|
||||
err = lzc_remap(fs);
|
||||
|
||||
if (err != 0) {
|
||||
(void) zfs_standard_error(hdl, err, errbuf);
|
||||
switch (err) {
|
||||
case ENOTSUP:
|
||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
||||
"pool must be upgraded"));
|
||||
(void) zfs_error(hdl, EZFS_BADVERSION, errbuf);
|
||||
break;
|
||||
case EINVAL:
|
||||
(void) zfs_error(hdl, EZFS_BADTYPE, errbuf);
|
||||
break;
|
||||
default:
|
||||
(void) zfs_standard_error(hdl, err, errbuf);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return (err);
|
||||
@ -4196,6 +4305,7 @@ zfs_rename(zfs_handle_t *zhp, const char *source, const char *target,
|
||||
errbuf));
|
||||
}
|
||||
}
|
||||
|
||||
if (!zfs_validate_name(hdl, target, zhp->zfs_type, B_TRUE))
|
||||
return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf));
|
||||
} else {
|
||||
|
@ -22,7 +22,7 @@
|
||||
/*
|
||||
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright 2015 Nexenta Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2015 by Delphix. All rights reserved.
|
||||
* Copyright (c) 2015, 2017 by Delphix. All rights reserved.
|
||||
* Copyright 2016 Joyent, Inc.
|
||||
* Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>
|
||||
*/
|
||||
@ -101,7 +101,10 @@ get_stats_for_obj(differ_info_t *di, const char *dsname, uint64_t obj,
|
||||
return (0);
|
||||
}
|
||||
|
||||
if (di->zerr == EPERM) {
|
||||
if (di->zerr == ESTALE) {
|
||||
(void) snprintf(pn, maxlen, "(on_delete_queue)");
|
||||
return (0);
|
||||
} else if (di->zerr == EPERM) {
|
||||
(void) snprintf(di->errbuf, sizeof (di->errbuf),
|
||||
dgettext(TEXT_DOMAIN,
|
||||
"The sys_config privilege or diff delegated permission "
|
||||
|
@ -207,7 +207,6 @@ void namespace_clear(libzfs_handle_t *);
|
||||
*/
|
||||
|
||||
extern int zfs_init_libshare(libzfs_handle_t *, int);
|
||||
extern void zfs_uninit_libshare(libzfs_handle_t *);
|
||||
extern int zfs_parse_options(char *, zfs_share_proto_t);
|
||||
|
||||
extern int zfs_unshare_proto(zfs_handle_t *,
|
||||
|
@ -33,7 +33,7 @@
|
||||
* ZFS label of each device. If we successfully read the label, then we
|
||||
* organize the configuration information in the following hierarchy:
|
||||
*
|
||||
* pool guid -> toplevel vdev guid -> label txg
|
||||
* pool guid -> toplevel vdev guid -> label txg
|
||||
*
|
||||
* Duplicate entries matching this same tuple will be discarded. Once we have
|
||||
* examined every device, we pick the best label txg config for each toplevel
|
||||
@ -245,7 +245,6 @@ add_config(libzfs_handle_t *hdl, pool_list_t *pl, const char *path,
|
||||
ne->ne_next = pl->names;
|
||||
pl->names = ne;
|
||||
|
||||
nvlist_free(config);
|
||||
return (0);
|
||||
}
|
||||
|
||||
@ -265,7 +264,6 @@ add_config(libzfs_handle_t *hdl, pool_list_t *pl, const char *path,
|
||||
&top_guid) != 0 ||
|
||||
nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_TXG,
|
||||
&txg) != 0 || txg == 0) {
|
||||
nvlist_free(config);
|
||||
return (0);
|
||||
}
|
||||
|
||||
@ -280,7 +278,6 @@ add_config(libzfs_handle_t *hdl, pool_list_t *pl, const char *path,
|
||||
|
||||
if (pe == NULL) {
|
||||
if ((pe = zfs_alloc(hdl, sizeof (pool_entry_t))) == NULL) {
|
||||
nvlist_free(config);
|
||||
return (-1);
|
||||
}
|
||||
pe->pe_guid = pool_guid;
|
||||
@ -299,7 +296,6 @@ add_config(libzfs_handle_t *hdl, pool_list_t *pl, const char *path,
|
||||
|
||||
if (ve == NULL) {
|
||||
if ((ve = zfs_alloc(hdl, sizeof (vdev_entry_t))) == NULL) {
|
||||
nvlist_free(config);
|
||||
return (-1);
|
||||
}
|
||||
ve->ve_guid = top_guid;
|
||||
@ -319,15 +315,12 @@ add_config(libzfs_handle_t *hdl, pool_list_t *pl, const char *path,
|
||||
|
||||
if (ce == NULL) {
|
||||
if ((ce = zfs_alloc(hdl, sizeof (config_entry_t))) == NULL) {
|
||||
nvlist_free(config);
|
||||
return (-1);
|
||||
}
|
||||
ce->ce_txg = txg;
|
||||
ce->ce_config = config;
|
||||
ce->ce_config = fnvlist_dup(config);
|
||||
ce->ce_next = ve->ve_configs;
|
||||
ve->ve_configs = ce;
|
||||
} else {
|
||||
nvlist_free(config);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1396,9 +1389,7 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg)
|
||||
&this_guid) == 0 &&
|
||||
iarg->guid == this_guid;
|
||||
}
|
||||
if (!matched) {
|
||||
nvlist_free(config);
|
||||
} else {
|
||||
if (matched) {
|
||||
/*
|
||||
* use the non-raw path for the config
|
||||
*/
|
||||
@ -1408,6 +1399,7 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg)
|
||||
config) != 0)
|
||||
config_failed = B_TRUE;
|
||||
}
|
||||
nvlist_free(config);
|
||||
}
|
||||
free(slice->rn_name);
|
||||
free(slice);
|
||||
|
@ -272,12 +272,7 @@ zfs_snapshot_compare(const void *larg, const void *rarg)
|
||||
lcreate = zfs_prop_get_int(l, ZFS_PROP_CREATETXG);
|
||||
rcreate = zfs_prop_get_int(r, ZFS_PROP_CREATETXG);
|
||||
|
||||
if (lcreate < rcreate)
|
||||
return (-1);
|
||||
else if (lcreate > rcreate)
|
||||
return (+1);
|
||||
else
|
||||
return (0);
|
||||
return (AVL_CMP(lcreate, rcreate));
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -579,6 +579,7 @@ zfs_is_shared_smb(zfs_handle_t *zhp, char **where)
|
||||
|
||||
#ifdef illumos
|
||||
static sa_handle_t (*_sa_init)(int);
|
||||
static sa_handle_t (*_sa_init_arg)(int, void *);
|
||||
static void (*_sa_fini)(sa_handle_t);
|
||||
static sa_share_t (*_sa_find_share)(sa_handle_t, char *);
|
||||
static int (*_sa_enable_share)(sa_share_t, char *);
|
||||
@ -620,6 +621,8 @@ _zfs_init_libshare(void)
|
||||
|
||||
if ((libshare = dlopen(path, RTLD_LAZY | RTLD_GLOBAL)) != NULL) {
|
||||
_sa_init = (sa_handle_t (*)(int))dlsym(libshare, "sa_init");
|
||||
_sa_init_arg = (sa_handle_t (*)(int, void *))dlsym(libshare,
|
||||
"sa_init_arg");
|
||||
_sa_fini = (void (*)(sa_handle_t))dlsym(libshare, "sa_fini");
|
||||
_sa_find_share = (sa_share_t (*)(sa_handle_t, char *))
|
||||
dlsym(libshare, "sa_find_share");
|
||||
@ -639,14 +642,15 @@ _zfs_init_libshare(void)
|
||||
char *, char *))dlsym(libshare, "sa_zfs_process_share");
|
||||
_sa_update_sharetab_ts = (void (*)(sa_handle_t))
|
||||
dlsym(libshare, "sa_update_sharetab_ts");
|
||||
if (_sa_init == NULL || _sa_fini == NULL ||
|
||||
_sa_find_share == NULL || _sa_enable_share == NULL ||
|
||||
_sa_disable_share == NULL || _sa_errorstr == NULL ||
|
||||
_sa_parse_legacy_options == NULL ||
|
||||
if (_sa_init == NULL || _sa_init_arg == NULL ||
|
||||
_sa_fini == NULL || _sa_find_share == NULL ||
|
||||
_sa_enable_share == NULL || _sa_disable_share == NULL ||
|
||||
_sa_errorstr == NULL || _sa_parse_legacy_options == NULL ||
|
||||
_sa_needs_refresh == NULL || _sa_get_zfs_handle == NULL ||
|
||||
_sa_zfs_process_share == NULL ||
|
||||
_sa_update_sharetab_ts == NULL) {
|
||||
_sa_init = NULL;
|
||||
_sa_init_arg = NULL;
|
||||
_sa_fini = NULL;
|
||||
_sa_disable_share = NULL;
|
||||
_sa_enable_share = NULL;
|
||||
@ -670,8 +674,8 @@ _zfs_init_libshare(void)
|
||||
* service value is which part(s) of the API to initialize and is a
|
||||
* direct map to the libshare sa_init(service) interface.
|
||||
*/
|
||||
int
|
||||
zfs_init_libshare(libzfs_handle_t *zhandle, int service)
|
||||
static int
|
||||
zfs_init_libshare_impl(libzfs_handle_t *zhandle, int service, void *arg)
|
||||
{
|
||||
#ifdef illumos
|
||||
/*
|
||||
@ -694,11 +698,11 @@ zfs_init_libshare(libzfs_handle_t *zhandle, int service)
|
||||
if (_sa_needs_refresh != NULL &&
|
||||
_sa_needs_refresh(zhandle->libzfs_sharehdl)) {
|
||||
zfs_uninit_libshare(zhandle);
|
||||
zhandle->libzfs_sharehdl = _sa_init(service);
|
||||
zhandle->libzfs_sharehdl = _sa_init_arg(service, arg);
|
||||
}
|
||||
|
||||
if (zhandle && zhandle->libzfs_sharehdl == NULL)
|
||||
zhandle->libzfs_sharehdl = _sa_init(service);
|
||||
zhandle->libzfs_sharehdl = _sa_init_arg(service, arg);
|
||||
|
||||
if (zhandle->libzfs_sharehdl == NULL)
|
||||
return (SA_NO_MEMORY);
|
||||
@ -706,6 +710,18 @@ zfs_init_libshare(libzfs_handle_t *zhandle, int service)
|
||||
|
||||
return (SA_OK);
|
||||
}
|
||||
int
|
||||
zfs_init_libshare(libzfs_handle_t *zhandle, int service)
|
||||
{
|
||||
return (zfs_init_libshare_impl(zhandle, service, NULL));
|
||||
}
|
||||
|
||||
int
|
||||
zfs_init_libshare_arg(libzfs_handle_t *zhandle, int service, void *arg)
|
||||
{
|
||||
return (zfs_init_libshare_impl(zhandle, service, arg));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* zfs_uninit_libshare(zhandle)
|
||||
@ -817,9 +833,9 @@ zfs_share_proto(zfs_handle_t *zhp, zfs_share_proto_t *proto)
|
||||
ZFS_MAXPROPLEN, B_FALSE) != 0 ||
|
||||
strcmp(shareopts, "off") == 0)
|
||||
continue;
|
||||
|
||||
#ifdef illumos
|
||||
ret = zfs_init_libshare(hdl, SA_INIT_SHARE_API);
|
||||
ret = zfs_init_libshare_arg(hdl, SA_INIT_ONE_SHARE_FROM_HANDLE,
|
||||
zhp);
|
||||
if (ret != SA_OK) {
|
||||
(void) zfs_error_fmt(hdl, EZFS_SHARENFSFAILED,
|
||||
dgettext(TEXT_DOMAIN, "cannot share '%s': %s"),
|
||||
@ -930,6 +946,7 @@ unshare_one(libzfs_handle_t *hdl, const char *name, const char *mountpoint,
|
||||
sa_share_t share;
|
||||
int err;
|
||||
char *mntpt;
|
||||
|
||||
/*
|
||||
* Mountpoint could get trashed if libshare calls getmntany
|
||||
* which it does during API initialization, so strdup the
|
||||
@ -937,8 +954,14 @@ unshare_one(libzfs_handle_t *hdl, const char *name, const char *mountpoint,
|
||||
*/
|
||||
mntpt = zfs_strdup(hdl, mountpoint);
|
||||
|
||||
/* make sure libshare initialized */
|
||||
if ((err = zfs_init_libshare(hdl, SA_INIT_SHARE_API)) != SA_OK) {
|
||||
/*
|
||||
* make sure libshare initialized, initialize everything because we
|
||||
* don't know what other unsharing may happen later. Functions up the
|
||||
* stack are allowed to initialize instead a subset of shares at the
|
||||
* time the set is known.
|
||||
*/
|
||||
if ((err = zfs_init_libshare_arg(hdl, SA_INIT_ONE_SHARE_FROM_NAME,
|
||||
(void *)name)) != SA_OK) {
|
||||
free(mntpt); /* don't need the copy anymore */
|
||||
return (zfs_error_fmt(hdl, proto_table[proto].p_unshare_err,
|
||||
dgettext(TEXT_DOMAIN, "cannot unshare '%s': %s"),
|
||||
@ -1289,6 +1312,9 @@ zpool_disable_datasets(zpool_handle_t *zhp, boolean_t force)
|
||||
int i;
|
||||
int ret = -1;
|
||||
int flags = (force ? MS_FORCE : 0);
|
||||
#ifdef illumos
|
||||
sa_init_selective_arg_t sharearg;
|
||||
#endif
|
||||
|
||||
namelen = strlen(zhp->zpool_name);
|
||||
|
||||
@ -1363,6 +1389,14 @@ zpool_disable_datasets(zpool_handle_t *zhp, boolean_t force)
|
||||
* At this point, we have the entire list of filesystems, so sort it by
|
||||
* mountpoint.
|
||||
*/
|
||||
#ifdef illumos
|
||||
sharearg.zhandle_arr = datasets;
|
||||
sharearg.zhandle_len = used;
|
||||
ret = zfs_init_libshare_arg(hdl, SA_INIT_SHARE_API_SELECTIVE,
|
||||
&sharearg);
|
||||
if (ret != 0)
|
||||
goto out;
|
||||
#endif
|
||||
qsort(mountpoints, used, sizeof (char *), mountpoint_compare);
|
||||
|
||||
/*
|
||||
|
@ -1981,6 +1981,100 @@ zpool_scan(zpool_handle_t *zhp, pool_scan_func_t func, pool_scrub_cmd_t cmd)
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
xlate_init_err(int err)
|
||||
{
|
||||
switch (err) {
|
||||
case ENODEV:
|
||||
return (EZFS_NODEVICE);
|
||||
case EINVAL:
|
||||
case EROFS:
|
||||
return (EZFS_BADDEV);
|
||||
case EBUSY:
|
||||
return (EZFS_INITIALIZING);
|
||||
case ESRCH:
|
||||
return (EZFS_NO_INITIALIZE);
|
||||
}
|
||||
return (err);
|
||||
}
|
||||
|
||||
/*
|
||||
* Begin, suspend, or cancel the initialization (initializing of all free
|
||||
* blocks) for the given vdevs in the given pool.
|
||||
*/
|
||||
int
|
||||
zpool_initialize(zpool_handle_t *zhp, pool_initialize_func_t cmd_type,
|
||||
nvlist_t *vds)
|
||||
{
|
||||
char msg[1024];
|
||||
libzfs_handle_t *hdl = zhp->zpool_hdl;
|
||||
|
||||
nvlist_t *errlist;
|
||||
|
||||
/* translate vdev names to guids */
|
||||
nvlist_t *vdev_guids = fnvlist_alloc();
|
||||
nvlist_t *guids_to_paths = fnvlist_alloc();
|
||||
boolean_t spare, cache;
|
||||
nvlist_t *tgt;
|
||||
nvpair_t *elem;
|
||||
|
||||
for (elem = nvlist_next_nvpair(vds, NULL); elem != NULL;
|
||||
elem = nvlist_next_nvpair(vds, elem)) {
|
||||
char *vd_path = nvpair_name(elem);
|
||||
tgt = zpool_find_vdev(zhp, vd_path, &spare, &cache, NULL);
|
||||
|
||||
if ((tgt == NULL) || cache || spare) {
|
||||
(void) snprintf(msg, sizeof (msg),
|
||||
dgettext(TEXT_DOMAIN, "cannot initialize '%s'"),
|
||||
vd_path);
|
||||
int err = (tgt == NULL) ? EZFS_NODEVICE :
|
||||
(spare ? EZFS_ISSPARE : EZFS_ISL2CACHE);
|
||||
fnvlist_free(vdev_guids);
|
||||
fnvlist_free(guids_to_paths);
|
||||
return (zfs_error(hdl, err, msg));
|
||||
}
|
||||
|
||||
uint64_t guid = fnvlist_lookup_uint64(tgt, ZPOOL_CONFIG_GUID);
|
||||
fnvlist_add_uint64(vdev_guids, vd_path, guid);
|
||||
|
||||
(void) snprintf(msg, sizeof (msg), "%llu", guid);
|
||||
fnvlist_add_string(guids_to_paths, msg, vd_path);
|
||||
}
|
||||
|
||||
int err = lzc_initialize(zhp->zpool_name, cmd_type, vdev_guids,
|
||||
&errlist);
|
||||
fnvlist_free(vdev_guids);
|
||||
|
||||
if (err == 0) {
|
||||
fnvlist_free(guids_to_paths);
|
||||
return (0);
|
||||
}
|
||||
|
||||
nvlist_t *vd_errlist = NULL;
|
||||
if (errlist != NULL) {
|
||||
vd_errlist = fnvlist_lookup_nvlist(errlist,
|
||||
ZPOOL_INITIALIZE_VDEVS);
|
||||
}
|
||||
|
||||
(void) snprintf(msg, sizeof (msg),
|
||||
dgettext(TEXT_DOMAIN, "operation failed"));
|
||||
|
||||
for (elem = nvlist_next_nvpair(vd_errlist, NULL); elem != NULL;
|
||||
elem = nvlist_next_nvpair(vd_errlist, elem)) {
|
||||
int64_t vd_error = xlate_init_err(fnvpair_value_int64(elem));
|
||||
char *path = fnvlist_lookup_string(guids_to_paths,
|
||||
nvpair_name(elem));
|
||||
(void) zfs_error_fmt(hdl, vd_error, "cannot initialize '%s'",
|
||||
path);
|
||||
}
|
||||
|
||||
fnvlist_free(guids_to_paths);
|
||||
if (vd_errlist != NULL)
|
||||
return (-1);
|
||||
|
||||
return (zpool_standard_error(hdl, err, msg));
|
||||
}
|
||||
|
||||
#ifdef illumos
|
||||
/*
|
||||
* This provides a very minimal check whether a given string is likely a
|
||||
@ -2836,7 +2930,7 @@ zpool_vdev_attach(zpool_handle_t *zhp,
|
||||
|
||||
case EBUSY:
|
||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "%s is busy, "
|
||||
"or pool has removing/removed vdevs"),
|
||||
"or device removal is in progress"),
|
||||
new_disk);
|
||||
(void) zfs_error(hdl, EZFS_BADDEV, msg);
|
||||
break;
|
||||
|
@ -489,15 +489,10 @@ typedef struct fsavl_node {
|
||||
static int
|
||||
fsavl_compare(const void *arg1, const void *arg2)
|
||||
{
|
||||
const fsavl_node_t *fn1 = arg1;
|
||||
const fsavl_node_t *fn2 = arg2;
|
||||
const fsavl_node_t *fn1 = (const fsavl_node_t *)arg1;
|
||||
const fsavl_node_t *fn2 = (const fsavl_node_t *)arg2;
|
||||
|
||||
if (fn1->fn_guid > fn2->fn_guid)
|
||||
return (+1);
|
||||
else if (fn1->fn_guid < fn2->fn_guid)
|
||||
return (-1);
|
||||
else
|
||||
return (0);
|
||||
return (AVL_CMP(fn1->fn_guid, fn2->fn_guid));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
/*
|
||||
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, Joyent, Inc. All rights reserved.
|
||||
* Copyright (c) 2018 Joyent, Inc.
|
||||
* Copyright (c) 2011, 2017 by Delphix. All rights reserved.
|
||||
* Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>
|
||||
* Copyright (c) 2017 Datto Inc.
|
||||
@ -254,6 +254,13 @@ libzfs_error_description(libzfs_handle_t *hdl)
|
||||
return (dgettext(TEXT_DOMAIN, "device removal in progress"));
|
||||
case EZFS_VDEV_TOO_BIG:
|
||||
return (dgettext(TEXT_DOMAIN, "device exceeds supported size"));
|
||||
case EZFS_TOOMANY:
|
||||
return (dgettext(TEXT_DOMAIN, "argument list too long"));
|
||||
case EZFS_INITIALIZING:
|
||||
return (dgettext(TEXT_DOMAIN, "currently initializing"));
|
||||
case EZFS_NO_INITIALIZE:
|
||||
return (dgettext(TEXT_DOMAIN, "there is no active "
|
||||
"initialization"));
|
||||
case EZFS_UNKNOWN:
|
||||
return (dgettext(TEXT_DOMAIN, "unknown error"));
|
||||
default:
|
||||
@ -1227,6 +1234,7 @@ zprop_parse_value(libzfs_handle_t *hdl, nvpair_t *elem, int prop,
|
||||
const char *propname;
|
||||
char *value;
|
||||
boolean_t isnone = B_FALSE;
|
||||
boolean_t isauto = B_FALSE;
|
||||
|
||||
if (type == ZFS_TYPE_POOL) {
|
||||
proptype = zpool_prop_get_type(prop);
|
||||
@ -1262,8 +1270,9 @@ zprop_parse_value(libzfs_handle_t *hdl, nvpair_t *elem, int prop,
|
||||
(void) nvpair_value_string(elem, &value);
|
||||
if (strcmp(value, "none") == 0) {
|
||||
isnone = B_TRUE;
|
||||
} else if (zfs_nicestrtonum(hdl, value, ivalp)
|
||||
!= 0) {
|
||||
} else if (strcmp(value, "auto") == 0) {
|
||||
isauto = B_TRUE;
|
||||
} else if (zfs_nicestrtonum(hdl, value, ivalp) != 0) {
|
||||
goto error;
|
||||
}
|
||||
} else if (datatype == DATA_TYPE_UINT64) {
|
||||
@ -1293,6 +1302,31 @@ zprop_parse_value(libzfs_handle_t *hdl, nvpair_t *elem, int prop,
|
||||
prop == ZFS_PROP_SNAPSHOT_LIMIT)) {
|
||||
*ivalp = UINT64_MAX;
|
||||
}
|
||||
|
||||
/*
|
||||
* Special handling for setting 'refreservation' to 'auto'. Use
|
||||
* UINT64_MAX to tell the caller to use zfs_fix_auto_resv().
|
||||
* 'auto' is only allowed on volumes.
|
||||
*/
|
||||
if (isauto) {
|
||||
switch (prop) {
|
||||
case ZFS_PROP_REFRESERVATION:
|
||||
if ((type & ZFS_TYPE_VOLUME) == 0) {
|
||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
||||
"'%s=auto' only allowed on "
|
||||
"volumes"), nvpair_name(elem));
|
||||
goto error;
|
||||
}
|
||||
*ivalp = UINT64_MAX;
|
||||
break;
|
||||
default:
|
||||
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
|
||||
"'auto' is invalid value for '%s'"),
|
||||
nvpair_name(elem));
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case PROP_TYPE_INDEX:
|
||||
|
@ -1085,3 +1085,40 @@ lzc_channel_program_nosync(const char *pool, const char *program,
|
||||
return (lzc_channel_program_impl(pool, program, B_FALSE, timeout,
|
||||
memlimit, argnvl, outnvl));
|
||||
}
|
||||
|
||||
/*
|
||||
* Changes initializing state.
|
||||
*
|
||||
* vdevs should be a list of (<key>, guid) where guid is a uint64 vdev GUID.
|
||||
* The key is ignored.
|
||||
*
|
||||
* If there are errors related to vdev arguments, per-vdev errors are returned
|
||||
* in an nvlist with the key "vdevs". Each error is a (guid, errno) pair where
|
||||
* guid is stringified with PRIu64, and errno is one of the following as
|
||||
* an int64_t:
|
||||
* - ENODEV if the device was not found
|
||||
* - EINVAL if the devices is not a leaf or is not concrete (e.g. missing)
|
||||
* - EROFS if the device is not writeable
|
||||
* - EBUSY start requested but the device is already being initialized
|
||||
* - ESRCH cancel/suspend requested but device is not being initialized
|
||||
*
|
||||
* If the errlist is empty, then return value will be:
|
||||
* - EINVAL if one or more arguments was invalid
|
||||
* - Other spa_open failures
|
||||
* - 0 if the operation succeeded
|
||||
*/
|
||||
int
|
||||
lzc_initialize(const char *poolname, pool_initialize_func_t cmd_type,
|
||||
nvlist_t *vdevs, nvlist_t **errlist)
|
||||
{
|
||||
int error;
|
||||
nvlist_t *args = fnvlist_alloc();
|
||||
fnvlist_add_uint64(args, ZPOOL_INITIALIZE_COMMAND, (uint64_t)cmd_type);
|
||||
fnvlist_add_nvlist(args, ZPOOL_INITIALIZE_VDEVS, vdevs);
|
||||
|
||||
error = lzc_ioctl(ZFS_IOC_POOL_INITIALIZE, poolname, args, errlist);
|
||||
|
||||
fnvlist_free(args);
|
||||
|
||||
return (error);
|
||||
}
|
||||
|
@ -31,6 +31,8 @@
|
||||
#include <libnvpair.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/fs/zfs.h>
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -56,6 +58,8 @@ int lzc_destroy_snaps(nvlist_t *, boolean_t, nvlist_t **);
|
||||
int lzc_bookmark(nvlist_t *, nvlist_t **);
|
||||
int lzc_get_bookmarks(const char *, nvlist_t *, nvlist_t **);
|
||||
int lzc_destroy_bookmarks(nvlist_t *, nvlist_t **);
|
||||
int lzc_initialize(const char *, pool_initialize_func_t, nvlist_t *,
|
||||
nvlist_t **);
|
||||
|
||||
int lzc_snaprange_space(const char *, const char *, uint64_t *);
|
||||
|
||||
|
@ -670,6 +670,9 @@ extern zoneid_t getzoneid(void);
|
||||
#define root_mount_wait() do { } while (0)
|
||||
#define root_mounted() (1)
|
||||
|
||||
#define noinline __attribute__((noinline))
|
||||
#define likely(x) __builtin_expect((x), 1)
|
||||
|
||||
struct file {
|
||||
void *dummy;
|
||||
};
|
||||
|
@ -56,6 +56,7 @@ DSRCS= errno.d \
|
||||
tcp.d \
|
||||
socket.d \
|
||||
udp.d \
|
||||
udplite.d \
|
||||
unistd.d
|
||||
|
||||
FILES= ${DSRCS}
|
||||
|
@ -167,6 +167,8 @@ inline short IPPROTO_IPCOMP = 108;
|
||||
inline short IPPROTO_SCTP = 132;
|
||||
#pragma D binding "1.5" IPPROTO_RAW
|
||||
inline short IPPROTO_RAW = 255;
|
||||
#pragma D binding "1.13" IPPROTO_UDPLITE
|
||||
inline short IPPROTO_UDPLITE = 136;
|
||||
|
||||
inline uint8_t INP_IPV4 = 0x01;
|
||||
inline uint8_t INP_IPV6 = 0x02;
|
||||
@ -193,6 +195,7 @@ inline string protocols[int proto] =
|
||||
proto == IPPROTO_PIM ? "PIM" :
|
||||
proto == IPPROTO_IPCOMP ? "IPCOMP" :
|
||||
proto == IPPROTO_SCTP ? "SCTP" :
|
||||
proto == IPPROTO_UDPLITE ? "UDPLITE" :
|
||||
proto == IPPROTO_RAW ? "RAW" :
|
||||
"<unknown>";
|
||||
|
||||
|
77
cddl/lib/libdtrace/udplite.d
Normal file
77
cddl/lib/libdtrace/udplite.d
Normal file
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* 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
|
||||
*
|
||||
* $FreeBSD$
|
||||
*/
|
||||
/*
|
||||
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013 Mark Johnston <markj@FreeBSD.org>
|
||||
* Copyright (c) 2018 Michael Tuexen <tuexen@FreeBSD.org>
|
||||
*/
|
||||
|
||||
#pragma D depends_on library ip.d
|
||||
#pragma D depends_on module kernel
|
||||
#pragma D depends_on provider udplite
|
||||
|
||||
/*
|
||||
* udplitesinfo contains stable UDPLite details.
|
||||
*/
|
||||
typedef struct udplitesinfo {
|
||||
uintptr_t udplites_addr;
|
||||
uint16_t udplites_lport; /* local port */
|
||||
uint16_t udplites_rport; /* remote port */
|
||||
string udplites_laddr; /* local address, as a string */
|
||||
string udplites_raddr; /* remote address, as a string */
|
||||
} udplitesinfo_t;
|
||||
|
||||
/*
|
||||
* udpliteinfo is the UDPLite header fields.
|
||||
*/
|
||||
typedef struct udpliteinfo {
|
||||
uint16_t udplite_sport; /* source port */
|
||||
uint16_t udplite_dport; /* destination port */
|
||||
uint16_t udplite_coverage; /* checksum coverage */
|
||||
uint16_t udplite_checksum; /* headers + data checksum */
|
||||
struct udplitehdr *udplite_hdr; /* raw UDPLite header */
|
||||
} udpliteinfo_t;
|
||||
|
||||
#pragma D binding "1.13" translator
|
||||
translator udplitesinfo_t < struct inpcb *p > {
|
||||
udplites_addr = (uintptr_t)p;
|
||||
udplites_lport = p == NULL ? 0 : ntohs(p->inp_inc.inc_ie.ie_lport);
|
||||
udplites_rport = p == NULL ? 0 : ntohs(p->inp_inc.inc_ie.ie_fport);
|
||||
udplites_laddr = p == NULL ? "<unknown>" :
|
||||
p->inp_vflag == INP_IPV4 ?
|
||||
inet_ntoa(&p->inp_inc.inc_ie.ie_dependladdr.id46_addr.ia46_addr4.s_addr) :
|
||||
inet_ntoa6(&p->inp_inc.inc_ie.ie_dependladdr.id6_addr);
|
||||
udplites_raddr = p == NULL ? "<unknown>" :
|
||||
p->inp_vflag == INP_IPV4 ?
|
||||
inet_ntoa(&p->inp_inc.inc_ie.ie_dependfaddr.id46_addr.ia46_addr4.s_addr) :
|
||||
inet_ntoa6(&p->inp_inc.inc_ie.ie_dependfaddr.id6_addr);
|
||||
};
|
||||
|
||||
#pragma D binding "1.13" translator
|
||||
translator udpliteinfo_t < struct udphdr *p > {
|
||||
udplite_sport = p == NULL ? 0 : ntohs(p->uh_sport);
|
||||
udplite_dport = p == NULL ? 0 : ntohs(p->uh_dport);
|
||||
udplite_coverage = p == NULL ? 0 : ntohs(p->uh_ulen);
|
||||
udplite_checksum = p == NULL ? 0 : ntohs(p->uh_sum);
|
||||
udplite_hdr = (struct udplitehdr *)p;
|
||||
};
|
@ -50,7 +50,6 @@ CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/lib/libumem
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzpool/common
|
||||
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
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/head
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libnvpair
|
||||
|
@ -25,7 +25,6 @@ CFLAGS+= -I${SRCTOP}/cddl/compat/opensolaris/lib/libumem
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzpool/common
|
||||
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
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/head
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libnvpair
|
||||
|
@ -47,7 +47,6 @@ 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/libzpool/common
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/sys
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lua
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/zfs
|
||||
|
@ -19,7 +19,6 @@ CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libumem/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libnvpair
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/sys
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/zfs
|
||||
|
||||
LIBADD= jail nvpair uutil zfs_core zfs
|
||||
|
@ -23,7 +23,6 @@ CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libnvpair
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/zfs
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/sys
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzpool/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/cmd/stat/common
|
||||
|
||||
|
@ -15,7 +15,6 @@ CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzfs_core/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzpool/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libnvpair
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/sys
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/zfs/
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/head
|
||||
|
@ -13,7 +13,6 @@ CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzpool/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libnvpair
|
||||
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
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/head
|
||||
|
||||
|
@ -14,7 +14,6 @@ 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
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/head
|
||||
|
||||
|
@ -13,12 +13,16 @@ ${PACKAGE}FILES= \
|
||||
tst.ipv4localtcp.ksh.out \
|
||||
tst.ipv4localudp.ksh \
|
||||
tst.ipv4localudp.ksh.out \
|
||||
tst.ipv4localudplite.ksh \
|
||||
tst.ipv4localudplite.ksh.out \
|
||||
tst.ipv4remoteicmp.ksh \
|
||||
tst.ipv4remoteicmp.ksh.out \
|
||||
tst.ipv4remotetcp.ksh \
|
||||
tst.ipv4remotetcp.ksh.out \
|
||||
tst.ipv4remoteudp.ksh \
|
||||
tst.ipv4remoteudp.ksh.out \
|
||||
tst.ipv4remoteudplite.ksh \
|
||||
tst.ipv4remoteudplite.ksh.out \
|
||||
tst.ipv6localicmp.ksh \
|
||||
tst.ipv6localicmp.ksh.out \
|
||||
tst.ipv6remoteicmp.ksh \
|
||||
|
@ -119,6 +119,7 @@ exclude SKIP common/builtinvar/tst.ipl1.d
|
||||
# These tests rely on being able to find a host via broadcast pings.
|
||||
exclude EXFAIL common/ip/tst.ipv4remotetcp.ksh
|
||||
exclude EXFAIL common/ip/tst.ipv4remoteudp.ksh
|
||||
exclude EXFAIL common/ip/tst.ipv4remoteudplite.ksh
|
||||
exclude EXFAIL common/ip/tst.ipv6remoteicmp.ksh
|
||||
exclude EXFAIL common/ip/tst.ipv4remoteicmp.ksh
|
||||
exclude EXFAIL common/ip/tst.remotetcpstate.ksh
|
||||
|
@ -14,6 +14,7 @@ FILES= chmod \
|
||||
sendrecv \
|
||||
tcp \
|
||||
udp \
|
||||
udplite \
|
||||
vop_create \
|
||||
vop_readdir \
|
||||
vop_rename \
|
||||
@ -78,6 +79,8 @@ LINKS+= ${LIBEXECDIR}/dwatch/tcp ${LIBEXECDIR}/dwatch/tcp-state-change
|
||||
LINKS+= ${LIBEXECDIR}/dwatch/tcp ${LIBEXECDIR}/dwatch/tcp-status
|
||||
LINKS+= ${LIBEXECDIR}/dwatch/udp ${LIBEXECDIR}/dwatch/udp-receive
|
||||
LINKS+= ${LIBEXECDIR}/dwatch/udp ${LIBEXECDIR}/dwatch/udp-send
|
||||
LINKS+= ${LIBEXECDIR}/dwatch/udplite ${LIBEXECDIR}/dwatch/udplite-receive
|
||||
LINKS+= ${LIBEXECDIR}/dwatch/udplite ${LIBEXECDIR}/dwatch/udplite-send
|
||||
LINKS+= ${LIBEXECDIR}/dwatch/vop_create ${LIBEXECDIR}/dwatch/vop_lookup
|
||||
LINKS+= ${LIBEXECDIR}/dwatch/vop_create ${LIBEXECDIR}/dwatch/vop_mkdir
|
||||
LINKS+= ${LIBEXECDIR}/dwatch/vop_create ${LIBEXECDIR}/dwatch/vop_mknod
|
||||
|
89
cddl/usr.sbin/dwatch/libexec/udplite
Normal file
89
cddl/usr.sbin/dwatch/libexec/udplite
Normal file
@ -0,0 +1,89 @@
|
||||
# -*- tab-width: 4 -*- ;; Emacs
|
||||
# vi: set filetype=sh tabstop=8 shiftwidth=8 noexpandtab :: Vi/ViM
|
||||
############################################################ IDENT(1)
|
||||
#
|
||||
# $Title: dwatch(8) module for dtrace_udplite(4) $
|
||||
# $Copyright: 2014-2018 Devin Teske. All rights reserved. $
|
||||
# $FreeBSD$
|
||||
#
|
||||
############################################################ DESCRIPTION
|
||||
#
|
||||
# Display local/remote UDP addresses/ports and bytes sent/received for UDP I/O
|
||||
#
|
||||
############################################################ PROBE
|
||||
|
||||
case "$PROFILE" in
|
||||
udplite) : ${PROBE:=udplite:::send, udplite:::receive} ;;
|
||||
*) : ${PROBE:=udplite:::${PROFILE#udplite-}}
|
||||
esac
|
||||
|
||||
############################################################ ACTIONS
|
||||
|
||||
exec 9<<EOF
|
||||
this string flow;
|
||||
this string local;
|
||||
this string remote;
|
||||
this u_char local6;
|
||||
this u_char recv;
|
||||
this u_char remote6;
|
||||
this uint16_t coverage;
|
||||
this uint16_t lport;
|
||||
this uint16_t rport;
|
||||
|
||||
$PROBE /* probe ID $ID */
|
||||
{${TRACE:+
|
||||
printf("<$ID>");
|
||||
}
|
||||
/*
|
||||
* dtrace_udplite(4)
|
||||
*/
|
||||
this->recv = probename == "receive" ? 1 : 0;
|
||||
this->flow = this->recv ? "<-" : "->";
|
||||
|
||||
/*
|
||||
* ipinfo_t *
|
||||
*/
|
||||
this->local = this->recv ? args[2]->ip_daddr : args[2]->ip_saddr;
|
||||
this->remote = this->recv ? args[2]->ip_saddr : args[2]->ip_daddr;
|
||||
|
||||
/*
|
||||
* udpliteinfo_t *
|
||||
*/
|
||||
this->coverage = (uint16_t)args[4]->udplite_coverage;
|
||||
this->lport = this->recv ? args[4]->udplite_dport : args[4]->udplite_sport;
|
||||
this->rport = this->recv ? args[4]->udplite_sport : args[4]->udplite_dport;
|
||||
|
||||
/*
|
||||
* IPv6 support
|
||||
*/
|
||||
this->local6 = strstr(this->local, ":") != NULL ? 1 : 0;
|
||||
this->remote6 = strstr(this->remote, ":") != NULL ? 1 : 0;
|
||||
this->local = strjoin(strjoin(this->local6 ? "[" : "",
|
||||
this->local), this->local6 ? "]" : "");
|
||||
this->remote = strjoin(strjoin(this->remote6 ? "[" : "",
|
||||
this->remote), this->remote6 ? "]" : "");
|
||||
}
|
||||
EOF
|
||||
ACTIONS=$( cat <&9 )
|
||||
ID=$(( $ID + 1 ))
|
||||
|
||||
############################################################ EVENT DETAILS
|
||||
|
||||
if [ ! "$CUSTOM_DETAILS" ]; then
|
||||
exec 9<<EOF
|
||||
/*
|
||||
* Print network I/O details
|
||||
*/
|
||||
printf("%s:%u %s %s:%u %d byte%s",
|
||||
this->local, this->lport,
|
||||
this->flow,
|
||||
this->remote, this->rport,
|
||||
this->coverage,
|
||||
this->coverage == 1 ? "" : "s");
|
||||
EOF
|
||||
EVENT_DETAILS=$( cat <&9 )
|
||||
fi
|
||||
|
||||
################################################################################
|
||||
# END
|
||||
################################################################################
|
@ -20,7 +20,6 @@ CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzfs_core/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzpool/common
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/sys
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/zfs
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/head
|
||||
|
||||
|
@ -28,7 +28,6 @@ INCFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libnvpair
|
||||
INCFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/zfs
|
||||
INCFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common
|
||||
INCFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
|
||||
INCFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/sys
|
||||
|
||||
CFLAGS= -g -DNEED_SOLARIS_BOOLEAN ${INCFLAGS}
|
||||
|
||||
|
@ -18,7 +18,6 @@ CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzfs_core/common
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/lib/libzpool/common
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/uts/common/sys
|
||||
CFLAGS+= -I${SRCTOP}/sys/cddl/contrib/opensolaris/common/zfs
|
||||
CFLAGS+= -I${SRCTOP}/cddl/contrib/opensolaris/head
|
||||
|
||||
|
@ -1212,5 +1212,6 @@ elf_update(Elf *e, Elf_Cmd c)
|
||||
|
||||
done:
|
||||
_libelf_release_extents(&extents);
|
||||
e->e_flags &= ~LIBELF_F_SHDRS_LOADED;
|
||||
return (rc);
|
||||
}
|
||||
|
@ -1189,6 +1189,7 @@ note_type_gnu(unsigned int nt)
|
||||
case 2: return "NT_GNU_HWCAP (Hardware capabilities)";
|
||||
case 3: return "NT_GNU_BUILD_ID (Build id set by ld(1))";
|
||||
case 4: return "NT_GNU_GOLD_VERSION (GNU gold version)";
|
||||
case 5: return "NT_GNU_PROPERTY_TYPE_0";
|
||||
default: return (note_type_unknown(nt));
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,15 @@
|
||||
2018-07-25 8:50 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.34
|
||||
|
||||
2018-06-22 16:38 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Add Quad indirect offsets
|
||||
|
||||
2018-05-24 14:10 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* Enable parsing of ELF dynamic sections to handle PIE better
|
||||
|
||||
2018-04-15 14:52 Christos Zoulas <christos@zoulas.com>
|
||||
|
||||
* release 5.33
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -14,23 +14,61 @@
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
@ -49,11 +87,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = .
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
$(top_srcdir)/configure $(am__configure_deps) \
|
||||
$(srcdir)/config.h.in AUTHORS COPYING ChangeLog INSTALL NEWS \
|
||||
README TODO compile config.guess config.sub depcomp install-sh \
|
||||
missing ltmain.sh
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
@ -61,6 +94,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
|
||||
$(am__configure_deps) $(am__DIST_COMMON)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
@ -124,6 +159,9 @@ ETAGS = etags
|
||||
CTAGS = ctags
|
||||
CSCOPE = cscope
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in AUTHORS \
|
||||
COPYING ChangeLog INSTALL NEWS README TODO compile \
|
||||
config.guess config.sub depcomp install-sh ltmain.sh missing
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
@ -178,6 +216,7 @@ AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
@ -193,6 +232,7 @@ EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_VISIBILITY = @HAVE_VISIBILITY@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
@ -306,7 +346,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -327,8 +366,8 @@ $(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
$(am__aclocal_m4_deps):
|
||||
|
||||
config.h: stamp-h1
|
||||
@if test ! -f $@; then rm -f stamp-h1; else :; fi
|
||||
@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
|
||||
@test -f $@ || rm -f stamp-h1
|
||||
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
@ -357,13 +396,12 @@ distclean-libtool:
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
$(am__recursive_targets):
|
||||
@fail= failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
@fail=; \
|
||||
if $(am__make_keepgoing); then \
|
||||
failcom='fail=yes'; \
|
||||
else \
|
||||
failcom='exit 1'; \
|
||||
fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
@ -538,10 +576,16 @@ dist-xz: distdir
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
@echo WARNING: "Support for distribution archives compressed with" \
|
||||
"legacy program 'compress' is deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
@echo WARNING: "Support for shar distribution archives is" \
|
||||
"deprecated." >&2
|
||||
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
@ -576,16 +620,17 @@ distcheck: dist
|
||||
esac
|
||||
chmod -R a-w $(distdir)
|
||||
chmod u+w $(distdir)
|
||||
mkdir $(distdir)/_build $(distdir)/_inst
|
||||
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& am__cwd=`pwd` \
|
||||
&& $(am__cd) $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
&& $(am__cd) $(distdir)/_build/sub \
|
||||
&& ../../configure \
|
||||
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
--srcdir=../.. --prefix="$$dc_install_base" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
@ -762,6 +807,8 @@ uninstall-am:
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||
uninstall-am
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
|
@ -1,10 +1,10 @@
|
||||
## README for file(1) Command ##
|
||||
|
||||
@(#) $File: README,v 1.53 2018/03/11 13:06:47 glen Exp $
|
||||
@(#) $File: README,v 1.54 2018/05/30 03:06:56 christos Exp $
|
||||
|
||||
Mailing List: file@mx.gw.com [currently down]
|
||||
Mailing List archives: http://mx.gw.com/pipermail/file/ [currently down]
|
||||
Bug tracker: http://bugs.gw.com/ [currently down]
|
||||
Mailing List: file@astron.com
|
||||
Mailing List archives: http://mailman.astron.com/pipermail/file/
|
||||
Bug tracker: http://bugs.astron.com/
|
||||
E-mail: christos@astron.com
|
||||
Build Status: https://travis-ci.org/file/file
|
||||
|
||||
|
443
contrib/file/aclocal.m4
vendored
443
contrib/file/aclocal.m4
vendored
@ -1,6 +1,6 @@
|
||||
# generated automatically by aclocal 1.13.1 -*- Autoconf -*-
|
||||
# generated automatically by aclocal 1.15 -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996-2012 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -20,7 +20,85 @@ You have another version of autoconf. It may work, but is not guaranteed to.
|
||||
If you have problems, you may need to regenerate the build system entirely.
|
||||
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
||||
|
||||
# Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||||
# visibility.m4 serial 5 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2005, 2008, 2010-2016 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.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
dnl Tests whether the compiler supports the command-line option
|
||||
dnl -fvisibility=hidden and the function and variable attributes
|
||||
dnl __attribute__((__visibility__("hidden"))) and
|
||||
dnl __attribute__((__visibility__("default"))).
|
||||
dnl Does *not* test for __visibility__("protected") - which has tricky
|
||||
dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
|
||||
dnl Mac OS X.
|
||||
dnl Does *not* test for __visibility__("internal") - which has processor
|
||||
dnl dependent semantics.
|
||||
dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
|
||||
dnl "really only recommended for legacy code".
|
||||
dnl Set the variable CFLAG_VISIBILITY.
|
||||
dnl Defines and sets the variable HAVE_VISIBILITY.
|
||||
|
||||
AC_DEFUN([gl_VISIBILITY],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
CFLAG_VISIBILITY=
|
||||
HAVE_VISIBILITY=0
|
||||
if test -n "$GCC"; then
|
||||
dnl First, check whether -Werror can be added to the command line, or
|
||||
dnl whether it leads to an error because of some other option that the
|
||||
dnl user has put into $CC $CFLAGS $CPPFLAGS.
|
||||
AC_MSG_CHECKING([whether the -Werror option is usable])
|
||||
AC_CACHE_VAL([gl_cv_cc_vis_werror], [
|
||||
gl_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[]], [[]])],
|
||||
[gl_cv_cc_vis_werror=yes],
|
||||
[gl_cv_cc_vis_werror=no])
|
||||
CFLAGS="$gl_save_CFLAGS"])
|
||||
AC_MSG_RESULT([$gl_cv_cc_vis_werror])
|
||||
dnl Now check whether visibility declarations are supported.
|
||||
AC_MSG_CHECKING([for simple visibility declarations])
|
||||
AC_CACHE_VAL([gl_cv_cc_visibility], [
|
||||
gl_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -fvisibility=hidden"
|
||||
dnl We use the option -Werror and a function dummyfunc, because on some
|
||||
dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
|
||||
dnl "visibility attribute not supported in this configuration; ignored"
|
||||
dnl at the first function definition in every compilation unit, and we
|
||||
dnl don't want to use the option in this case.
|
||||
if test $gl_cv_cc_vis_werror = yes; then
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
fi
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
|
||||
extern __attribute__((__visibility__("default"))) int exportedvar;
|
||||
extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
|
||||
extern __attribute__((__visibility__("default"))) int exportedfunc (void);
|
||||
void dummyfunc (void) {}
|
||||
]],
|
||||
[[]])],
|
||||
[gl_cv_cc_visibility=yes],
|
||||
[gl_cv_cc_visibility=no])
|
||||
CFLAGS="$gl_save_CFLAGS"])
|
||||
AC_MSG_RESULT([$gl_cv_cc_visibility])
|
||||
if test $gl_cv_cc_visibility = yes; then
|
||||
CFLAG_VISIBILITY="-fvisibility=hidden"
|
||||
HAVE_VISIBILITY=1
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([CFLAG_VISIBILITY])
|
||||
AC_SUBST([HAVE_VISIBILITY])
|
||||
AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
|
||||
[Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
|
||||
])
|
||||
|
||||
# Copyright (C) 2002-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -32,10 +110,10 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.])
|
||||
# generated from the m4 files accompanying Automake X.Y.
|
||||
# (This private macro should not be called outside this file.)
|
||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
||||
[am__api_version='1.13'
|
||||
[am__api_version='1.15'
|
||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||
dnl require some minimum version. Point them to the right macro.
|
||||
m4_if([$1], [1.13.1], [],
|
||||
m4_if([$1], [1.15], [],
|
||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||
])
|
||||
|
||||
@ -51,14 +129,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
|
||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||
[AM_AUTOMAKE_VERSION([1.13.1])dnl
|
||||
[AM_AUTOMAKE_VERSION([1.15])dnl
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||
|
||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -103,15 +181,14 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||
# configured tree to be moved without reconfiguration.
|
||||
|
||||
AC_DEFUN([AM_AUX_DIR_EXPAND],
|
||||
[dnl Rely on autoconf to set up CDPATH properly.
|
||||
AC_PREREQ([2.50])dnl
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
||||
[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
|
||||
# Expand $ac_aux_dir to an absolute path.
|
||||
am_aux_dir=`cd "$ac_aux_dir" && pwd`
|
||||
])
|
||||
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1997-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -142,7 +219,7 @@ AC_CONFIG_COMMANDS_PRE(
|
||||
Usually this means the macro was only invoked conditionally.]])
|
||||
fi])])
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -333,7 +410,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
|
||||
|
||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -373,7 +450,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||
test -z "$DEPDIR" && continue
|
||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||
test -z "am__include" && continue
|
||||
test -z "$am__include" && continue
|
||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||
# Find all dependency output files, they are included files with
|
||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||
@ -409,7 +486,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
|
||||
# Do all the work for Automake. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -418,6 +495,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||
# This macro actually does too much. Some checks are only needed if
|
||||
# your package does certain things. But this isn't really a big deal.
|
||||
|
||||
dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
|
||||
m4_define([AC_PROG_CC],
|
||||
m4_defn([AC_PROG_CC])
|
||||
[_AM_PROG_CC_C_O
|
||||
])
|
||||
|
||||
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
|
||||
# AM_INIT_AUTOMAKE([OPTIONS])
|
||||
# -----------------------------------------------
|
||||
@ -493,8 +576,8 @@ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
||||
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
|
||||
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
|
||||
AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
# We need awk for the "check" target (and possibly the TAP driver). The
|
||||
# system "awk" is bad on some platforms.
|
||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||
@ -526,6 +609,51 @@ dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
|
||||
AC_CONFIG_COMMANDS_PRE(dnl
|
||||
[m4_provide_if([_AM_COMPILER_EXEEXT],
|
||||
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
|
||||
|
||||
# POSIX will say in a future version that running "rm -f" with no argument
|
||||
# is OK; and we want to be able to make that assumption in our Makefile
|
||||
# recipes. So use an aggressive probe to check that the usage we want is
|
||||
# actually supported "in the wild" to an acceptable degree.
|
||||
# See automake bug#10828.
|
||||
# To make any issue more visible, cause the running configure to be aborted
|
||||
# by default if the 'rm' program in use doesn't match our expectations; the
|
||||
# user can still override this though.
|
||||
if rm -f && rm -fr && rm -rf; then : OK; else
|
||||
cat >&2 <<'END'
|
||||
Oops!
|
||||
|
||||
Your 'rm' program seems unable to run without file operands specified
|
||||
on the command line, even when the '-f' option is present. This is contrary
|
||||
to the behaviour of most rm programs out there, and not conforming with
|
||||
the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
|
||||
|
||||
Please tell bug-automake@gnu.org about your system, including the value
|
||||
of your $PATH and any error possibly output before this message. This
|
||||
can help us improve future automake versions.
|
||||
|
||||
END
|
||||
if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
|
||||
echo 'Configuration will proceed anyway, since you have set the' >&2
|
||||
echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
|
||||
echo >&2
|
||||
else
|
||||
cat >&2 <<'END'
|
||||
Aborting the configuration process, to ensure you take notice of the issue.
|
||||
|
||||
You can download and install GNU coreutils to get an 'rm' implementation
|
||||
that behaves properly: <http://www.gnu.org/software/coreutils/>.
|
||||
|
||||
If you want to complete the configuration process using your problematic
|
||||
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
|
||||
to "yes", and re-run configure.
|
||||
|
||||
END
|
||||
AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
|
||||
fi
|
||||
fi
|
||||
dnl The trailing newline in this macro's definition is deliberate, for
|
||||
dnl backward compatibility and to allow trailing 'dnl'-style comments
|
||||
dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
|
||||
])
|
||||
|
||||
dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
|
||||
@ -534,7 +662,6 @@ dnl mangled by Autoconf and run in a shell conditional statement.
|
||||
m4_define([_AC_COMPILER_EXEEXT],
|
||||
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
|
||||
|
||||
|
||||
# When config.status generates a header, we must update the stamp-h file.
|
||||
# This file resides in the same directory as the config header
|
||||
# that is generated. The stamp files are numbered to have different names.
|
||||
@ -556,7 +683,7 @@ for _am_header in $config_headers :; do
|
||||
done
|
||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -567,7 +694,7 @@ echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_co
|
||||
# Define $install_sh.
|
||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
if test x"${install_sh}" != xset; then
|
||||
if test x"${install_sh+set}" != xset; then
|
||||
case $am_aux_dir in
|
||||
*\ * | *\ *)
|
||||
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
|
||||
@ -577,7 +704,7 @@ if test x"${install_sh}" != xset; then
|
||||
fi
|
||||
AC_SUBST([install_sh])])
|
||||
|
||||
# Copyright (C) 2003-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2003-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -598,7 +725,7 @@ AC_SUBST([am__leading_dot])])
|
||||
|
||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -646,41 +773,9 @@ AC_MSG_RESULT([$_am_result])
|
||||
rm -f confinc confmf
|
||||
])
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_PROG_CC_C_O
|
||||
# --------------
|
||||
# Like AC_PROG_CC_C_O, but changed for automake.
|
||||
AC_DEFUN([AM_PROG_CC_C_O],
|
||||
[AC_REQUIRE([AC_PROG_CC_C_O])dnl
|
||||
AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
AC_REQUIRE_AUX_FILE([compile])dnl
|
||||
# FIXME: we rely on the cache variable name because
|
||||
# there is no other way.
|
||||
set dummy $CC
|
||||
am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
|
||||
eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
|
||||
if test "$am_t" != yes; then
|
||||
# Losing compiler, so override with the script.
|
||||
# FIXME: It is wrong to rewrite CC.
|
||||
# But if we don't then we get into trouble of one sort or another.
|
||||
# A longer-term fix would be to have automake use am__CC in this case,
|
||||
# and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
|
||||
CC="$am_aux_dir/compile $CC"
|
||||
fi
|
||||
dnl Make sure AC_PROG_CC is never called again, or it will override our
|
||||
dnl setting of CC.
|
||||
m4_define([AC_PROG_CC],
|
||||
[m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
|
||||
])
|
||||
|
||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1997-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -719,7 +814,7 @@ fi
|
||||
|
||||
# Helper functions for option handling. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -748,9 +843,73 @@ AC_DEFUN([_AM_SET_OPTIONS],
|
||||
AC_DEFUN([_AM_IF_OPTION],
|
||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||
|
||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# _AM_PROG_CC_C_O
|
||||
# ---------------
|
||||
# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC
|
||||
# to automatically call this.
|
||||
AC_DEFUN([_AM_PROG_CC_C_O],
|
||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||
AC_REQUIRE_AUX_FILE([compile])dnl
|
||||
AC_LANG_PUSH([C])dnl
|
||||
AC_CACHE_CHECK(
|
||||
[whether $CC understands -c and -o together],
|
||||
[am_cv_prog_cc_c_o],
|
||||
[AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
|
||||
# Make sure it works both with $CC and with simple cc.
|
||||
# Following AC_PROG_CC_C_O, we do the test twice because some
|
||||
# compilers refuse to overwrite an existing .o file with -o,
|
||||
# though they will create one.
|
||||
am_cv_prog_cc_c_o=yes
|
||||
for am_i in 1 2; do
|
||||
if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
|
||||
&& test -f conftest2.$ac_objext; then
|
||||
: OK
|
||||
else
|
||||
am_cv_prog_cc_c_o=no
|
||||
break
|
||||
fi
|
||||
done
|
||||
rm -f core conftest*
|
||||
unset am_i])
|
||||
if test "$am_cv_prog_cc_c_o" != yes; then
|
||||
# Losing compiler, so override with the script.
|
||||
# FIXME: It is wrong to rewrite CC.
|
||||
# But if we don't then we get into trouble of one sort or another.
|
||||
# A longer-term fix would be to have automake use am__CC in this case,
|
||||
# and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
|
||||
CC="$am_aux_dir/compile $CC"
|
||||
fi
|
||||
AC_LANG_POP([C])])
|
||||
|
||||
# For backward compatibility.
|
||||
AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
|
||||
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# AM_RUN_LOG(COMMAND)
|
||||
# -------------------
|
||||
# Run COMMAND, save the exit status in ac_status, and log it.
|
||||
# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
|
||||
AC_DEFUN([AM_RUN_LOG],
|
||||
[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
|
||||
($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
|
||||
(exit $ac_status); }])
|
||||
|
||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -831,7 +990,7 @@ AC_CONFIG_COMMANDS_PRE(
|
||||
rm -f conftest.file
|
||||
])
|
||||
|
||||
# Copyright (C) 2009-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2009-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -891,7 +1050,7 @@ AC_SUBST([AM_BACKSLASH])dnl
|
||||
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
|
||||
])
|
||||
|
||||
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -919,7 +1078,7 @@ fi
|
||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||
|
||||
# Copyright (C) 2006-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2006-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -938,7 +1097,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
||||
|
||||
# Check how to create a tarball. -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 2004-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 2004-2014 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -957,76 +1116,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
||||
# Substitute a variable $(am__untar) that extract such
|
||||
# a tarball read from stdin.
|
||||
# $(am__untar) < result.tar
|
||||
#
|
||||
AC_DEFUN([_AM_PROG_TAR],
|
||||
[# Always define AMTAR for backward compatibility. Yes, it's still used
|
||||
# in the wild :-( We should find a proper way to deprecate it ...
|
||||
AC_SUBST([AMTAR], ['$${TAR-tar}'])
|
||||
m4_if([$1], [v7],
|
||||
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
|
||||
[m4_case([$1], [ustar],, [pax],,
|
||||
[m4_fatal([Unknown tar format])])
|
||||
AC_MSG_CHECKING([how to create a $1 tar archive])
|
||||
# Loop over all known methods to create a tar archive until one works.
|
||||
|
||||
# We'll loop over all known methods to create a tar archive until one works.
|
||||
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
|
||||
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
||||
# Do not fold the above two line into one, because Tru64 sh and
|
||||
# Solaris sh will not grok spaces in the rhs of '-'.
|
||||
for _am_tool in $_am_tools
|
||||
do
|
||||
case $_am_tool in
|
||||
gnutar)
|
||||
for _am_tar in tar gnutar gtar;
|
||||
do
|
||||
AM_RUN_LOG([$_am_tar --version]) && break
|
||||
done
|
||||
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
||||
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
||||
am__untar="$_am_tar -xf -"
|
||||
;;
|
||||
plaintar)
|
||||
# Must skip GNU tar: if it does not support --format= it doesn't create
|
||||
# ustar tarball either.
|
||||
(tar --version) >/dev/null 2>&1 && continue
|
||||
am__tar='tar chf - "$$tardir"'
|
||||
am__tar_='tar chf - "$tardir"'
|
||||
am__untar='tar xf -'
|
||||
;;
|
||||
pax)
|
||||
am__tar='pax -L -x $1 -w "$$tardir"'
|
||||
am__tar_='pax -L -x $1 -w "$tardir"'
|
||||
am__untar='pax -r'
|
||||
;;
|
||||
cpio)
|
||||
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
||||
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
||||
am__untar='cpio -i -H $1 -d'
|
||||
;;
|
||||
none)
|
||||
am__tar=false
|
||||
am__tar_=false
|
||||
am__untar=false
|
||||
;;
|
||||
esac
|
||||
|
||||
# If the value was cached, stop now. We just wanted to have am__tar
|
||||
# and am__untar set.
|
||||
test -n "${am_cv_prog_tar_$1}" && break
|
||||
m4_if([$1], [v7],
|
||||
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
|
||||
|
||||
# tar/untar a dummy directory, and stop if the command works
|
||||
[m4_case([$1],
|
||||
[ustar],
|
||||
[# The POSIX 1988 'ustar' format is defined with fixed-size fields.
|
||||
# There is notably a 21 bits limit for the UID and the GID. In fact,
|
||||
# the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
|
||||
# and bug#13588).
|
||||
am_max_uid=2097151 # 2^21 - 1
|
||||
am_max_gid=$am_max_uid
|
||||
# The $UID and $GID variables are not portable, so we need to resort
|
||||
# to the POSIX-mandated id(1) utility. Errors in the 'id' calls
|
||||
# below are definitely unexpected, so allow the users to see them
|
||||
# (that is, avoid stderr redirection).
|
||||
am_uid=`id -u || echo unknown`
|
||||
am_gid=`id -g || echo unknown`
|
||||
AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
|
||||
if test $am_uid -le $am_max_uid; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
_am_tools=none
|
||||
fi
|
||||
AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
|
||||
if test $am_gid -le $am_max_gid; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
_am_tools=none
|
||||
fi],
|
||||
|
||||
[pax],
|
||||
[],
|
||||
|
||||
[m4_fatal([Unknown tar format])])
|
||||
|
||||
AC_MSG_CHECKING([how to create a $1 tar archive])
|
||||
|
||||
# Go ahead even if we have the value already cached. We do so because we
|
||||
# need to set the values for the 'am__tar' and 'am__untar' variables.
|
||||
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
||||
|
||||
for _am_tool in $_am_tools; do
|
||||
case $_am_tool in
|
||||
gnutar)
|
||||
for _am_tar in tar gnutar gtar; do
|
||||
AM_RUN_LOG([$_am_tar --version]) && break
|
||||
done
|
||||
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
||||
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
||||
am__untar="$_am_tar -xf -"
|
||||
;;
|
||||
plaintar)
|
||||
# Must skip GNU tar: if it does not support --format= it doesn't create
|
||||
# ustar tarball either.
|
||||
(tar --version) >/dev/null 2>&1 && continue
|
||||
am__tar='tar chf - "$$tardir"'
|
||||
am__tar_='tar chf - "$tardir"'
|
||||
am__untar='tar xf -'
|
||||
;;
|
||||
pax)
|
||||
am__tar='pax -L -x $1 -w "$$tardir"'
|
||||
am__tar_='pax -L -x $1 -w "$tardir"'
|
||||
am__untar='pax -r'
|
||||
;;
|
||||
cpio)
|
||||
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
||||
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
||||
am__untar='cpio -i -H $1 -d'
|
||||
;;
|
||||
none)
|
||||
am__tar=false
|
||||
am__tar_=false
|
||||
am__untar=false
|
||||
;;
|
||||
esac
|
||||
|
||||
# If the value was cached, stop now. We just wanted to have am__tar
|
||||
# and am__untar set.
|
||||
test -n "${am_cv_prog_tar_$1}" && break
|
||||
|
||||
# tar/untar a dummy directory, and stop if the command works.
|
||||
rm -rf conftest.dir
|
||||
mkdir conftest.dir
|
||||
echo GrepMe > conftest.dir/file
|
||||
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
||||
rm -rf conftest.dir
|
||||
if test -s conftest.tar; then
|
||||
AM_RUN_LOG([$am__untar <conftest.tar])
|
||||
AM_RUN_LOG([cat conftest.dir/file])
|
||||
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
||||
fi
|
||||
done
|
||||
rm -rf conftest.dir
|
||||
mkdir conftest.dir
|
||||
echo GrepMe > conftest.dir/file
|
||||
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
||||
rm -rf conftest.dir
|
||||
if test -s conftest.tar; then
|
||||
AM_RUN_LOG([$am__untar <conftest.tar])
|
||||
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
||||
fi
|
||||
done
|
||||
rm -rf conftest.dir
|
||||
|
||||
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
||||
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
||||
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
||||
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
||||
|
||||
AC_SUBST([am__tar])
|
||||
AC_SUBST([am__untar])
|
||||
]) # _AM_PROG_TAR
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
scriptversion=2012-10-14.11; # UTC
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
|
469
contrib/file/config.guess
vendored
469
contrib/file/config.guess
vendored
@ -1,10 +1,8 @@
|
||||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
||||
# 2011, 2012, 2013 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2012-12-29'
|
||||
timestamp='2017-01-01'
|
||||
|
||||
# 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
|
||||
@ -26,12 +24,12 @@ timestamp='2012-12-29'
|
||||
# program. This Exception is an additional permission under section 7
|
||||
# of the GNU General Public License, version 3 ("GPLv3").
|
||||
#
|
||||
# Originally written by Per Bothner.
|
||||
# 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;hb=HEAD
|
||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
|
||||
#
|
||||
# Please send patches with a ChangeLog entry to config-patches@gnu.org.
|
||||
# Please send patches to <config-patches@gnu.org>.
|
||||
|
||||
|
||||
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||
@ -52,9 +50,7 @@ version="\
|
||||
GNU config.guess ($timestamp)
|
||||
|
||||
Originally written by Per Bothner.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
|
||||
2012, 2013 Free Software Foundation, Inc.
|
||||
Copyright 1992-2017 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."
|
||||
@ -136,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
|
||||
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
|
||||
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
|
||||
|
||||
case "${UNAME_SYSTEM}" in
|
||||
Linux|GNU|GNU/*)
|
||||
# If the system lacks a compiler, then just pick glibc.
|
||||
# We could probably try harder.
|
||||
LIBC=gnu
|
||||
|
||||
eval $set_cc_for_build
|
||||
cat <<-EOF > $dummy.c
|
||||
#include <features.h>
|
||||
#if defined(__UCLIBC__)
|
||||
LIBC=uclibc
|
||||
#elif defined(__dietlibc__)
|
||||
LIBC=dietlibc
|
||||
#else
|
||||
LIBC=gnu
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
|
||||
;;
|
||||
esac
|
||||
|
||||
# Note: order is significant - the case branches are not exclusive.
|
||||
|
||||
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
@ -151,19 +168,29 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
# Note: NetBSD doesn't particularly care about the vendor
|
||||
# portion of the name. We always set it to "unknown".
|
||||
sysctl="sysctl -n hw.machine_arch"
|
||||
UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
|
||||
/usr/sbin/$sysctl 2>/dev/null || echo unknown)`
|
||||
UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
|
||||
/sbin/$sysctl 2>/dev/null || \
|
||||
/usr/sbin/$sysctl 2>/dev/null || \
|
||||
echo unknown)`
|
||||
case "${UNAME_MACHINE_ARCH}" in
|
||||
armeb) machine=armeb-unknown ;;
|
||||
arm*) machine=arm-unknown ;;
|
||||
sh3el) machine=shl-unknown ;;
|
||||
sh3eb) machine=sh-unknown ;;
|
||||
sh5el) machine=sh5le-unknown ;;
|
||||
earmv*)
|
||||
arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
|
||||
endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
|
||||
machine=${arch}${endian}-unknown
|
||||
;;
|
||||
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
|
||||
esac
|
||||
# The Operating System including object format, if it has switched
|
||||
# to ELF recently, or will in the future.
|
||||
# to ELF recently (or will in the future) and ABI.
|
||||
case "${UNAME_MACHINE_ARCH}" in
|
||||
earm*)
|
||||
os=netbsdelf
|
||||
;;
|
||||
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
|
||||
eval $set_cc_for_build
|
||||
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
@ -180,6 +207,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
os=netbsd
|
||||
;;
|
||||
esac
|
||||
# Determine ABI tags.
|
||||
case "${UNAME_MACHINE_ARCH}" in
|
||||
earm*)
|
||||
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
|
||||
abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
|
||||
;;
|
||||
esac
|
||||
# The OS release
|
||||
# Debian GNU/NetBSD machines have a different userland, and
|
||||
# thus, need a distinct triplet. However, they do not need
|
||||
@ -190,13 +224,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
release='-gnu'
|
||||
;;
|
||||
*)
|
||||
release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
|
||||
release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
|
||||
;;
|
||||
esac
|
||||
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
|
||||
# contains redundant information, the shorter form:
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
|
||||
echo "${machine}-${os}${release}"
|
||||
echo "${machine}-${os}${release}${abi}"
|
||||
exit ;;
|
||||
*:Bitrig:*:*)
|
||||
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
|
||||
@ -206,6 +240,10 @@ 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 ;;
|
||||
@ -218,6 +256,9 @@ 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)
|
||||
@ -234,42 +275,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
|
||||
@ -342,16 +383,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/[^.]*//'`
|
||||
@ -376,7 +417,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}
|
||||
@ -562,8 +603,9 @@ EOF
|
||||
else
|
||||
IBM_ARCH=powerpc
|
||||
fi
|
||||
if [ -x /usr/bin/oslevel ] ; then
|
||||
IBM_REV=`/usr/bin/oslevel`
|
||||
if [ -x /usr/bin/lslpp ] ; then
|
||||
IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
|
||||
awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
|
||||
else
|
||||
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
|
||||
fi
|
||||
@ -600,13 +642,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
|
||||
@ -645,11 +687,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
|
||||
|
||||
@ -662,12 +704,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}
|
||||
@ -772,14 +814,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:*:*)
|
||||
@ -809,7 +851,7 @@ EOF
|
||||
*:MINGW*:*)
|
||||
echo ${UNAME_MACHINE}-pc-mingw32
|
||||
exit ;;
|
||||
i*:MSYS*:*)
|
||||
*:MSYS*:*)
|
||||
echo ${UNAME_MACHINE}-pc-msys
|
||||
exit ;;
|
||||
i*:windows32*:*)
|
||||
@ -857,21 +899,21 @@ EOF
|
||||
exit ;;
|
||||
*:GNU:*:*)
|
||||
# the GNU system
|
||||
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||
exit ;;
|
||||
*:GNU/*:*:*)
|
||||
# other systems with GNU libc and userland
|
||||
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
|
||||
exit ;;
|
||||
i*86:Minix:*:*)
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
exit ;;
|
||||
aarch64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
aarch64_be:Linux:*:*)
|
||||
UNAME_MACHINE=aarch64_be
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
alpha:Linux:*:*)
|
||||
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
|
||||
@ -884,59 +926,60 @@ EOF
|
||||
EV68*) UNAME_MACHINE=alphaev68 ;;
|
||||
esac
|
||||
objdump --private-headers /bin/sh | grep -q ld.so.1
|
||||
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
|
||||
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
arc:Linux:*:* | arceb:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
arm*:Linux:*:*)
|
||||
eval $set_cc_for_build
|
||||
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_EABI__
|
||||
then
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
else
|
||||
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_PCS_VFP
|
||||
then
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnueabi
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
|
||||
else
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
|
||||
fi
|
||||
fi
|
||||
exit ;;
|
||||
avr32*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
cris:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-axis-linux-gnu
|
||||
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||
exit ;;
|
||||
crisv32:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-axis-linux-gnu
|
||||
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
|
||||
exit ;;
|
||||
e2k:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
frv:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
hexagon:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
i*86:Linux:*:*)
|
||||
LIBC=gnu
|
||||
eval $set_cc_for_build
|
||||
sed 's/^ //' << EOF >$dummy.c
|
||||
#ifdef __dietlibc__
|
||||
LIBC=dietlibc
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
|
||||
echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
|
||||
echo ${UNAME_MACHINE}-pc-linux-${LIBC}
|
||||
exit ;;
|
||||
ia64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
k1om:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
m32r*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
m68*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
mips:Linux:*:* | mips64:Linux:*:*)
|
||||
eval $set_cc_for_build
|
||||
@ -955,54 +998,69 @@ EOF
|
||||
#endif
|
||||
EOF
|
||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
|
||||
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
|
||||
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
|
||||
;;
|
||||
or32:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
mips64el:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
openrisc*:Linux:*:*)
|
||||
echo or1k-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
or32:Linux:*:* | or1k*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
padre:Linux:*:*)
|
||||
echo sparc-unknown-linux-gnu
|
||||
echo sparc-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
parisc64:Linux:*:* | hppa64:Linux:*:*)
|
||||
echo hppa64-unknown-linux-gnu
|
||||
echo hppa64-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
parisc:Linux:*:* | hppa:Linux:*:*)
|
||||
# Look for CPU level
|
||||
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
|
||||
PA7*) echo hppa1.1-unknown-linux-gnu ;;
|
||||
PA8*) echo hppa2.0-unknown-linux-gnu ;;
|
||||
*) echo hppa-unknown-linux-gnu ;;
|
||||
PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
|
||||
PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
|
||||
*) echo hppa-unknown-linux-${LIBC} ;;
|
||||
esac
|
||||
exit ;;
|
||||
ppc64:Linux:*:*)
|
||||
echo powerpc64-unknown-linux-gnu
|
||||
echo powerpc64-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
ppc:Linux:*:*)
|
||||
echo powerpc-unknown-linux-gnu
|
||||
echo powerpc-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
ppc64le:Linux:*:*)
|
||||
echo powerpc64le-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
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
|
||||
echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
|
||||
exit ;;
|
||||
sh64*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
sh*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
sparc:Linux:*:* | sparc64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
tile*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
vax:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-dec-linux-gnu
|
||||
echo ${UNAME_MACHINE}-dec-linux-${LIBC}
|
||||
exit ;;
|
||||
x86_64:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-pc-linux-${LIBC}
|
||||
exit ;;
|
||||
xtensa*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
|
||||
exit ;;
|
||||
i*86:DYNIX/ptx:4*:*)
|
||||
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
|
||||
@ -1078,7 +1136,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 configury will decide that
|
||||
# prints for the "djgpp" host, or else GDB configure will decide that
|
||||
# this is a cross-build.
|
||||
echo i586-pc-msdosdjgpp
|
||||
exit ;;
|
||||
@ -1227,6 +1285,9 @@ 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 ;;
|
||||
@ -1235,24 +1296,36 @@ EOF
|
||||
exit ;;
|
||||
*:Darwin:*:*)
|
||||
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
|
||||
case $UNAME_PROCESSOR in
|
||||
i386)
|
||||
eval $set_cc_for_build
|
||||
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) | \
|
||||
grep IS_64BIT_ARCH >/dev/null
|
||||
then
|
||||
UNAME_PROCESSOR="x86_64"
|
||||
fi
|
||||
fi ;;
|
||||
unknown) UNAME_PROCESSOR=powerpc ;;
|
||||
esac
|
||||
eval $set_cc_for_build
|
||||
if test "$UNAME_PROCESSOR" = unknown ; then
|
||||
UNAME_PROCESSOR=powerpc
|
||||
fi
|
||||
if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; 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) | \
|
||||
grep IS_64BIT_ARCH >/dev/null
|
||||
then
|
||||
case $UNAME_PROCESSOR in
|
||||
i386) UNAME_PROCESSOR=x86_64 ;;
|
||||
powerpc) UNAME_PROCESSOR=powerpc64 ;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
elif test "$UNAME_PROCESSOR" = i386 ; then
|
||||
# Avoid executing cc on OS X 10.9, as it ships with a stub
|
||||
# that puts up a graphical alert prompting to install
|
||||
# developer tools. Any system running Mac OS X 10.7 or
|
||||
# later (Darwin 11 and later) is required to have a 64-bit
|
||||
# processor. This is not true of the ARM version of Darwin
|
||||
# that Apple uses in portable devices.
|
||||
UNAME_PROCESSOR=x86_64
|
||||
fi
|
||||
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
|
||||
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
|
||||
@ -1283,7 +1356,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"
|
||||
@ -1325,7 +1398,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
|
||||
@ -1336,171 +1409,25 @@ EOF
|
||||
x86_64:VMkernel:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-esx
|
||||
exit ;;
|
||||
amd64:Isilon\ OneFS:*:*)
|
||||
echo x86_64-unknown-onefs
|
||||
exit ;;
|
||||
esac
|
||||
|
||||
eval $set_cc_for_build
|
||||
cat >$dummy.c <<EOF
|
||||
#ifdef _SEQUENT_
|
||||
# include <sys/types.h>
|
||||
# include <sys/utsname.h>
|
||||
#endif
|
||||
main ()
|
||||
{
|
||||
#if defined (sony)
|
||||
#if defined (MIPSEB)
|
||||
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
|
||||
I don't know.... */
|
||||
printf ("mips-sony-bsd\n"); exit (0);
|
||||
#else
|
||||
#include <sys/param.h>
|
||||
printf ("m68k-sony-newsos%s\n",
|
||||
#ifdef NEWSOS4
|
||||
"4"
|
||||
#else
|
||||
""
|
||||
#endif
|
||||
); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (__arm) && defined (__acorn) && defined (__unix)
|
||||
printf ("arm-acorn-riscix\n"); exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (hp300) && !defined (hpux)
|
||||
printf ("m68k-hp-bsd\n"); exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (NeXT)
|
||||
#if !defined (__ARCHITECTURE__)
|
||||
#define __ARCHITECTURE__ "m68k"
|
||||
#endif
|
||||
int version;
|
||||
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
|
||||
if (version < 4)
|
||||
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
|
||||
else
|
||||
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
|
||||
exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (MULTIMAX) || defined (n16)
|
||||
#if defined (UMAXV)
|
||||
printf ("ns32k-encore-sysv\n"); exit (0);
|
||||
#else
|
||||
#if defined (CMU)
|
||||
printf ("ns32k-encore-mach\n"); exit (0);
|
||||
#else
|
||||
printf ("ns32k-encore-bsd\n"); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (__386BSD__)
|
||||
printf ("i386-pc-bsd\n"); exit (0);
|
||||
#endif
|
||||
|
||||
#if defined (sequent)
|
||||
#if defined (i386)
|
||||
printf ("i386-sequent-dynix\n"); exit (0);
|
||||
#endif
|
||||
#if defined (ns32000)
|
||||
printf ("ns32k-sequent-dynix\n"); exit (0);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (_SEQUENT_)
|
||||
struct utsname un;
|
||||
|
||||
uname(&un);
|
||||
|
||||
if (strncmp(un.version, "V2", 2) == 0) {
|
||||
printf ("i386-sequent-ptx2\n"); exit (0);
|
||||
}
|
||||
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
|
||||
printf ("i386-sequent-ptx1\n"); exit (0);
|
||||
}
|
||||
printf ("i386-sequent-ptx\n"); exit (0);
|
||||
|
||||
#endif
|
||||
|
||||
#if defined (vax)
|
||||
# if !defined (ultrix)
|
||||
# include <sys/param.h>
|
||||
# if defined (BSD)
|
||||
# if BSD == 43
|
||||
printf ("vax-dec-bsd4.3\n"); exit (0);
|
||||
# else
|
||||
# if BSD == 199006
|
||||
printf ("vax-dec-bsd4.3reno\n"); exit (0);
|
||||
# else
|
||||
printf ("vax-dec-bsd\n"); exit (0);
|
||||
# endif
|
||||
# endif
|
||||
# else
|
||||
printf ("vax-dec-bsd\n"); exit (0);
|
||||
# endif
|
||||
# else
|
||||
printf ("vax-dec-ultrix\n"); exit (0);
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined (alliant) && defined (i860)
|
||||
printf ("i860-alliant-bsd\n"); exit (0);
|
||||
#endif
|
||||
|
||||
exit (1);
|
||||
}
|
||||
EOF
|
||||
|
||||
$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
|
||||
{ echo "$SYSTEM_NAME"; exit; }
|
||||
|
||||
# Apollos put the system type in the environment.
|
||||
|
||||
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
|
||||
|
||||
# Convex versions that predate uname can use getsysinfo(1)
|
||||
|
||||
if [ -x /usr/convex/getsysinfo ]
|
||||
then
|
||||
case `getsysinfo -f cpu_type` in
|
||||
c1*)
|
||||
echo c1-convex-bsd
|
||||
exit ;;
|
||||
c2*)
|
||||
if getsysinfo -f scalar_acc
|
||||
then echo c32-convex-bsd
|
||||
else echo c2-convex-bsd
|
||||
fi
|
||||
exit ;;
|
||||
c34*)
|
||||
echo c34-convex-bsd
|
||||
exit ;;
|
||||
c38*)
|
||||
echo c38-convex-bsd
|
||||
exit ;;
|
||||
c4*)
|
||||
echo c4-convex-bsd
|
||||
exit ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
cat >&2 <<EOF
|
||||
$0: unable to guess system type
|
||||
|
||||
This script, last modified $timestamp, has failed to recognize
|
||||
the operating system you are using. It is advised that you
|
||||
download the most up to date version of the config scripts from
|
||||
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:
|
||||
|
||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
|
||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
|
||||
and
|
||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
|
||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
|
||||
|
||||
If the version you run ($0) is already up to date, please
|
||||
send the following data and any information you think might be
|
||||
pertinent to <config-patches@gnu.org> in order to provide the needed
|
||||
information to handle your system.
|
||||
If $0 has already been updated, send the following data and any
|
||||
information you think might be pertinent to config-patches@gnu.org to
|
||||
provide the necessary information to handle your system.
|
||||
|
||||
config.guess timestamp = $timestamp
|
||||
|
||||
|
@ -230,6 +230,10 @@
|
||||
/* Define to 1 if you have the <vfork.h> header file. */
|
||||
#undef HAVE_VFORK_H
|
||||
|
||||
/* Define to 1 or 0, depending whether the compiler supports simple visibility
|
||||
declarations. */
|
||||
#undef HAVE_VISIBILITY
|
||||
|
||||
/* Define to 1 if you have the <wchar.h> header file. */
|
||||
#undef HAVE_WCHAR_H
|
||||
|
||||
@ -263,9 +267,6 @@
|
||||
<sysmacros.h>. */
|
||||
#undef MAJOR_IN_SYSMACROS
|
||||
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
#undef NO_MINUS_C_MINUS_O
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
|
120
contrib/file/config.sub
vendored
120
contrib/file/config.sub
vendored
@ -1,10 +1,8 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
||||
# 2011, 2012, 2013 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2012-12-29'
|
||||
timestamp='2017-01-01'
|
||||
|
||||
# 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 +25,7 @@ timestamp='2012-12-29'
|
||||
# of the GNU General Public License, version 3 ("GPLv3").
|
||||
|
||||
|
||||
# Please send patches with a ChangeLog entry to config-patches@gnu.org.
|
||||
# Please send patches to <config-patches@gnu.org>.
|
||||
#
|
||||
# Configuration subroutine to validate and canonicalize a configuration type.
|
||||
# Supply the specified configuration type as an argument.
|
||||
@ -35,7 +33,7 @@ timestamp='2012-12-29'
|
||||
# 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;hb=HEAD
|
||||
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
|
||||
|
||||
# This file is supposed to be the same for all GNU packages
|
||||
# and recognize all the CPU types, system types and aliases
|
||||
@ -55,8 +53,7 @@ timestamp='2012-12-29'
|
||||
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION] CPU-MFR-OPSYS
|
||||
$0 [OPTION] ALIAS
|
||||
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
|
||||
|
||||
Canonicalize a configuration name.
|
||||
|
||||
@ -70,9 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
||||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
|
||||
2012, 2013 Free Software Foundation, Inc.
|
||||
Copyright 1992-2017 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."
|
||||
@ -121,8 +116,8 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||
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* | \
|
||||
kopensolaris*-gnu* | \
|
||||
knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
|
||||
kopensolaris*-gnu* | cloudabi*-eabi* | \
|
||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
os=-$maybe_os
|
||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||
@ -256,19 +251,21 @@ case $basic_machine in
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| am33_2.0 \
|
||||
| arc \
|
||||
| arc | arceb \
|
||||
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
|
||||
| avr | avr32 \
|
||||
| ba \
|
||||
| be32 | be64 \
|
||||
| bfin \
|
||||
| c4x | clipper \
|
||||
| c4x | c8051 | clipper \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
| epiphany \
|
||||
| fido | fr30 | frv \
|
||||
| e2k | epiphany \
|
||||
| fido | fr30 | frv | ft32 \
|
||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||
| hexagon \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
| k1om \
|
||||
| le32 | le64 \
|
||||
| lm32 \
|
||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||
@ -286,26 +283,30 @@ case $basic_machine in
|
||||
| mips64vr5900 | mips64vr5900el \
|
||||
| mipsisa32 | mipsisa32el \
|
||||
| mipsisa32r2 | mipsisa32r2el \
|
||||
| mipsisa32r6 | mipsisa32r6el \
|
||||
| mipsisa64 | mipsisa64el \
|
||||
| mipsisa64r2 | mipsisa64r2el \
|
||||
| mipsisa64r6 | mipsisa64r6el \
|
||||
| mipsisa64sb1 | mipsisa64sb1el \
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
| mipsr5900 | mipsr5900el \
|
||||
| mipstx39 | mipstx39el \
|
||||
| mn10200 | mn10300 \
|
||||
| moxie \
|
||||
| mt \
|
||||
| msp430 \
|
||||
| nds32 | nds32le | nds32be \
|
||||
| nios | nios2 \
|
||||
| nios | nios2 | nios2eb | nios2el \
|
||||
| ns16k | ns32k \
|
||||
| open8 \
|
||||
| or32 \
|
||||
| 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[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||
| sh64 | sh64le \
|
||||
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
|
||||
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
|
||||
@ -313,6 +314,7 @@ case $basic_machine in
|
||||
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
||||
| ubicom32 \
|
||||
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
||||
| visium \
|
||||
| we32k \
|
||||
| x86 | xc16x | xstormy16 | xtensa \
|
||||
| z8k | z80)
|
||||
@ -327,7 +329,10 @@ case $basic_machine in
|
||||
c6x)
|
||||
basic_machine=tic6x-unknown
|
||||
;;
|
||||
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
|
||||
leon|leon[3-9])
|
||||
basic_machine=sparc-$basic_machine
|
||||
;;
|
||||
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
|
||||
basic_machine=$basic_machine-unknown
|
||||
os=-none
|
||||
;;
|
||||
@ -369,21 +374,23 @@ case $basic_machine in
|
||||
| aarch64-* | aarch64_be-* \
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
| ba-* \
|
||||
| be32-* | be64-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
| clipper-* | craynv-* | cydra-* \
|
||||
| c8051-* | clipper-* | craynv-* | cydra-* \
|
||||
| d10v-* | d30v-* | dlx-* \
|
||||
| elxsi-* \
|
||||
| e2k-* | elxsi-* \
|
||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||
| h8300-* | h8500-* \
|
||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||
| hexagon-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
| k1om-* \
|
||||
| le32-* | le64-* \
|
||||
| lm32-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
@ -403,28 +410,34 @@ case $basic_machine in
|
||||
| mips64vr5900-* | mips64vr5900el-* \
|
||||
| mipsisa32-* | mipsisa32el-* \
|
||||
| mipsisa32r2-* | mipsisa32r2el-* \
|
||||
| mipsisa32r6-* | mipsisa32r6el-* \
|
||||
| mipsisa64-* | mipsisa64el-* \
|
||||
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||
| mipsisa64r6-* | mipsisa64r6el-* \
|
||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||
| mipsr5900-* | mipsr5900el-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| mmix-* \
|
||||
| mt-* \
|
||||
| msp430-* \
|
||||
| nds32-* | nds32le-* | nds32be-* \
|
||||
| nios-* | nios2-* \
|
||||
| nios-* | nios2-* | nios2eb-* | nios2el-* \
|
||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||
| open8-* \
|
||||
| or1k*-* \
|
||||
| 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*-* \
|
||||
@ -432,6 +445,7 @@ case $basic_machine in
|
||||
| ubicom32-* \
|
||||
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
||||
| vax-* \
|
||||
| visium-* \
|
||||
| we32k-* \
|
||||
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
||||
| xstormy16-* | xtensa*-* \
|
||||
@ -508,6 +522,9 @@ case $basic_machine in
|
||||
basic_machine=i386-pc
|
||||
os=-aros
|
||||
;;
|
||||
asmjs)
|
||||
basic_machine=asmjs-unknown
|
||||
;;
|
||||
aux)
|
||||
basic_machine=m68k-apple
|
||||
os=-aux
|
||||
@ -628,6 +645,14 @@ 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
|
||||
@ -769,6 +794,9 @@ case $basic_machine in
|
||||
basic_machine=m68k-isi
|
||||
os=-sysv
|
||||
;;
|
||||
leon-*|leon[3-9]-*)
|
||||
basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
|
||||
;;
|
||||
m68knommu)
|
||||
basic_machine=m68k-unknown
|
||||
os=-linux
|
||||
@ -796,7 +824,7 @@ case $basic_machine in
|
||||
os=-mingw64
|
||||
;;
|
||||
mingw32)
|
||||
basic_machine=i386-pc
|
||||
basic_machine=i686-pc
|
||||
os=-mingw32
|
||||
;;
|
||||
mingw32ce)
|
||||
@ -824,6 +852,10 @@ case $basic_machine in
|
||||
basic_machine=powerpc-unknown
|
||||
os=-morphos
|
||||
;;
|
||||
moxiebox)
|
||||
basic_machine=moxie-unknown
|
||||
os=-moxiebox
|
||||
;;
|
||||
msdos)
|
||||
basic_machine=i386-pc
|
||||
os=-msdos
|
||||
@ -832,7 +864,7 @@ case $basic_machine in
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
msys)
|
||||
basic_machine=i386-pc
|
||||
basic_machine=i686-pc
|
||||
os=-msys
|
||||
;;
|
||||
mvs)
|
||||
@ -1000,7 +1032,7 @@ case $basic_machine in
|
||||
ppc-* | ppcbe-*)
|
||||
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppcle | powerpclittle | ppc-le | powerpc-little)
|
||||
ppcle | powerpclittle)
|
||||
basic_machine=powerpcle-unknown
|
||||
;;
|
||||
ppcle-* | powerpclittle-*)
|
||||
@ -1010,7 +1042,7 @@ case $basic_machine in
|
||||
;;
|
||||
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
|
||||
ppc64le | powerpc64little)
|
||||
basic_machine=powerpc64le-unknown
|
||||
;;
|
||||
ppc64le-* | powerpc64little-*)
|
||||
@ -1354,29 +1386,30 @@ case $os in
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||
| -sym* | -kopensolaris* \
|
||||
| -sym* | -kopensolaris* | -plan9* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* | -aros* \
|
||||
| -aos* | -aros* | -cloudabi* | -sortix* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
| -bitrig* | -openbsd* | -solidbsd* \
|
||||
| -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
|
||||
| -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* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
|
||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
|
||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
|
||||
| -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-qnx*)
|
||||
@ -1500,9 +1533,6 @@ case $os in
|
||||
-aros*)
|
||||
os=-aros
|
||||
;;
|
||||
-kaos*)
|
||||
os=-kaos
|
||||
;;
|
||||
-zvmoe)
|
||||
os=-zvmoe
|
||||
;;
|
||||
@ -1511,6 +1541,8 @@ case $os in
|
||||
;;
|
||||
-nacl*)
|
||||
;;
|
||||
-ios)
|
||||
;;
|
||||
-none)
|
||||
;;
|
||||
*)
|
||||
@ -1551,6 +1583,9 @@ case $basic_machine in
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
c8051-*)
|
||||
os=-elf
|
||||
;;
|
||||
hexagon-*)
|
||||
os=-elf
|
||||
;;
|
||||
@ -1603,6 +1638,9 @@ case $basic_machine in
|
||||
sparc-* | *-sun)
|
||||
os=-sunos4.1.1
|
||||
;;
|
||||
pru-*)
|
||||
os=-elf
|
||||
;;
|
||||
*-be)
|
||||
os=-beos
|
||||
;;
|
||||
|
354
contrib/file/configure
vendored
354
contrib/file/configure
vendored
@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.69 for file 5.33.
|
||||
# Generated by GNU Autoconf 2.69 for file 5.34.
|
||||
#
|
||||
# Report bugs to <christos@astron.com>.
|
||||
#
|
||||
@ -590,8 +590,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='file'
|
||||
PACKAGE_TARNAME='file'
|
||||
PACKAGE_VERSION='5.33'
|
||||
PACKAGE_STRING='file 5.33'
|
||||
PACKAGE_VERSION='5.34'
|
||||
PACKAGE_STRING='file 5.34'
|
||||
PACKAGE_BUGREPORT='christos@astron.com'
|
||||
PACKAGE_URL=''
|
||||
|
||||
@ -638,6 +638,8 @@ LTLIBOBJS
|
||||
IS_CROSS_COMPILE_FALSE
|
||||
IS_CROSS_COMPILE_TRUE
|
||||
LIBOBJS
|
||||
HAVE_VISIBILITY
|
||||
CFLAG_VISIBILITY
|
||||
OTOOL64
|
||||
OTOOL
|
||||
LIPO
|
||||
@ -1327,7 +1329,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.33 to adapt to many kinds of systems.
|
||||
\`configure' configures file 5.34 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@ -1397,7 +1399,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of file 5.33:";;
|
||||
short | recursive ) echo "Configuration of file 5.34:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@ -1509,7 +1511,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
file configure 5.33
|
||||
file configure 5.34
|
||||
generated by GNU Autoconf 2.69
|
||||
|
||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
@ -2165,7 +2167,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.33, which was
|
||||
It was created by file $as_me 5.34, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
@ -2516,7 +2518,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
am__api_version='1.13'
|
||||
am__api_version='1.15'
|
||||
|
||||
ac_aux_dir=
|
||||
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
|
||||
@ -2717,8 +2719,8 @@ test "$program_suffix" != NONE &&
|
||||
ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
|
||||
program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
|
||||
|
||||
# expand $ac_aux_dir to an absolute path
|
||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
||||
# Expand $ac_aux_dir to an absolute path.
|
||||
am_aux_dir=`cd "$ac_aux_dir" && pwd`
|
||||
|
||||
if test x"${MISSING+set}" != xset; then
|
||||
case $am_aux_dir in
|
||||
@ -2737,7 +2739,7 @@ else
|
||||
$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
|
||||
fi
|
||||
|
||||
if test x"${install_sh}" != xset; then
|
||||
if test x"${install_sh+set}" != xset; then
|
||||
case $am_aux_dir in
|
||||
*\ * | *\ *)
|
||||
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
|
||||
@ -3031,7 +3033,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='file'
|
||||
VERSION='5.33'
|
||||
VERSION='5.34'
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
@ -3065,18 +3067,65 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
|
||||
# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
|
||||
mkdir_p='$(MKDIR_P)'
|
||||
|
||||
# We need awk for the "check" target. The system "awk" is bad on
|
||||
# some platforms.
|
||||
# We need awk for the "check" target (and possibly the TAP driver). The
|
||||
# system "awk" is bad on some platforms.
|
||||
# Always define AMTAR for backward compatibility. Yes, it's still used
|
||||
# in the wild :-( We should find a proper way to deprecate it ...
|
||||
AMTAR='$${TAR-tar}'
|
||||
|
||||
|
||||
# We'll loop over all known methods to create a tar archive until one works.
|
||||
_am_tools='gnutar pax cpio none'
|
||||
|
||||
am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# POSIX will say in a future version that running "rm -f" with no argument
|
||||
# is OK; and we want to be able to make that assumption in our Makefile
|
||||
# recipes. So use an aggressive probe to check that the usage we want is
|
||||
# actually supported "in the wild" to an acceptable degree.
|
||||
# See automake bug#10828.
|
||||
# To make any issue more visible, cause the running configure to be aborted
|
||||
# by default if the 'rm' program in use doesn't match our expectations; the
|
||||
# user can still override this though.
|
||||
if rm -f && rm -fr && rm -rf; then : OK; else
|
||||
cat >&2 <<'END'
|
||||
Oops!
|
||||
|
||||
Your 'rm' program seems unable to run without file operands specified
|
||||
on the command line, even when the '-f' option is present. This is contrary
|
||||
to the behaviour of most rm programs out there, and not conforming with
|
||||
the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
|
||||
|
||||
Please tell bug-automake@gnu.org about your system, including the value
|
||||
of your $PATH and any error possibly output before this message. This
|
||||
can help us improve future automake versions.
|
||||
|
||||
END
|
||||
if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
|
||||
echo 'Configuration will proceed anyway, since you have set the' >&2
|
||||
echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
|
||||
echo >&2
|
||||
else
|
||||
cat >&2 <<'END'
|
||||
Aborting the configuration process, to ensure you take notice of the issue.
|
||||
|
||||
You can download and install GNU coreutils to get an 'rm' implementation
|
||||
that behaves properly: <http://www.gnu.org/software/coreutils/>.
|
||||
|
||||
If you want to complete the configuration process using your problematic
|
||||
'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
|
||||
to "yes", and re-run configure.
|
||||
|
||||
END
|
||||
as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check whether --enable-silent-rules was given.
|
||||
if test "${enable_silent_rules+set}" = set; then :
|
||||
enableval=$enable_silent_rules;
|
||||
@ -4171,6 +4220,65 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
|
||||
$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
|
||||
if ${am_cv_prog_cc_c_o+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
# Make sure it works both with $CC and with simple cc.
|
||||
# Following AC_PROG_CC_C_O, we do the test twice because some
|
||||
# compilers refuse to overwrite an existing .o file with -o,
|
||||
# though they will create one.
|
||||
am_cv_prog_cc_c_o=yes
|
||||
for am_i in 1 2; do
|
||||
if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
|
||||
($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } \
|
||||
&& test -f conftest2.$ac_objext; then
|
||||
: OK
|
||||
else
|
||||
am_cv_prog_cc_c_o=no
|
||||
break
|
||||
fi
|
||||
done
|
||||
rm -f core conftest*
|
||||
unset am_i
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
|
||||
$as_echo "$am_cv_prog_cc_c_o" >&6; }
|
||||
if test "$am_cv_prog_cc_c_o" != yes; then
|
||||
# Losing compiler, so override with the script.
|
||||
# FIXME: It is wrong to rewrite CC.
|
||||
# But if we don't then we get into trouble of one sort or another.
|
||||
# A longer-term fix would be to have automake use am__CC in this case,
|
||||
# and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
|
||||
CC="$am_aux_dir/compile $CC"
|
||||
fi
|
||||
ac_ext=c
|
||||
ac_cpp='$CPP $CPPFLAGS'
|
||||
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
depcc="$CC" am_compiler_list=
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
|
||||
@ -5050,131 +5158,6 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
|
||||
$as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
|
||||
|
||||
|
||||
if test "x$CC" != xcc; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
|
||||
$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
|
||||
$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
|
||||
fi
|
||||
set dummy $CC; ac_cc=`$as_echo "$2" |
|
||||
sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
|
||||
if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
# Make sure it works both with $CC and with simple cc.
|
||||
# We do the test twice because some compilers refuse to overwrite an
|
||||
# existing .o file with -o, though they will create one.
|
||||
ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
|
||||
rm -f conftest2.*
|
||||
if { { case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo"; } >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; } &&
|
||||
test -f conftest2.$ac_objext && { { case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo"; } >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; };
|
||||
then
|
||||
eval ac_cv_prog_cc_${ac_cc}_c_o=yes
|
||||
if test "x$CC" != xcc; then
|
||||
# Test first that cc exists at all.
|
||||
if { ac_try='cc -c conftest.$ac_ext >&5'
|
||||
{ { case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo"; } >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; }; then
|
||||
ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
|
||||
rm -f conftest2.*
|
||||
if { { case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo"; } >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; } &&
|
||||
test -f conftest2.$ac_objext && { { case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo"; } >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; };
|
||||
then
|
||||
# cc works too.
|
||||
:
|
||||
else
|
||||
# cc exists but doesn't like -o.
|
||||
eval ac_cv_prog_cc_${ac_cc}_c_o=no
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
eval ac_cv_prog_cc_${ac_cc}_c_o=no
|
||||
fi
|
||||
rm -f core conftest*
|
||||
|
||||
fi
|
||||
if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
|
||||
$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
# FIXME: we rely on the cache variable name because
|
||||
# there is no other way.
|
||||
set dummy $CC
|
||||
am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
|
||||
eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
|
||||
if test "$am_t" != yes; then
|
||||
# Losing compiler, so override with the script.
|
||||
# FIXME: It is wrong to rewrite CC.
|
||||
# But if we don't then we get into trouble of one sort or another.
|
||||
# A longer-term fix would be to have automake use am__CC in this case,
|
||||
# and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
|
||||
CC="$am_aux_dir/compile $CC"
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
|
||||
$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
|
||||
@ -12512,7 +12495,92 @@ CC="$lt_save_CC"
|
||||
# Only expand once:
|
||||
|
||||
|
||||
gl_VISIBILITY
|
||||
|
||||
|
||||
CFLAG_VISIBILITY=
|
||||
HAVE_VISIBILITY=0
|
||||
if test -n "$GCC"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5
|
||||
$as_echo_n "checking whether the -Werror option is usable... " >&6; }
|
||||
if ${gl_cv_cc_vis_werror+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
|
||||
gl_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
gl_cv_cc_vis_werror=yes
|
||||
else
|
||||
gl_cv_cc_vis_werror=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
CFLAGS="$gl_save_CFLAGS"
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5
|
||||
$as_echo "$gl_cv_cc_vis_werror" >&6; }
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5
|
||||
$as_echo_n "checking for simple visibility declarations... " >&6; }
|
||||
if ${gl_cv_cc_visibility+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
|
||||
gl_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -fvisibility=hidden"
|
||||
if test $gl_cv_cc_vis_werror = yes; then
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
fi
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
extern __attribute__((__visibility__("hidden"))) int hiddenvar;
|
||||
extern __attribute__((__visibility__("default"))) int exportedvar;
|
||||
extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
|
||||
extern __attribute__((__visibility__("default"))) int exportedfunc (void);
|
||||
void dummyfunc (void) {}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
gl_cv_cc_visibility=yes
|
||||
else
|
||||
gl_cv_cc_visibility=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
CFLAGS="$gl_save_CFLAGS"
|
||||
fi
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5
|
||||
$as_echo "$gl_cv_cc_visibility" >&6; }
|
||||
if test $gl_cv_cc_visibility = yes; then
|
||||
CFLAG_VISIBILITY="-fvisibility=hidden"
|
||||
HAVE_VISIBILITY=1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_VISIBILITY $HAVE_VISIBILITY
|
||||
_ACEOF
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
|
||||
$as_echo_n "checking for ANSI C header files... " >&6; }
|
||||
if ${ac_cv_header_stdc+:} false; then :
|
||||
@ -15066,7 +15134,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.33, which was
|
||||
This file was extended by file $as_me 5.34, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@ -15132,7 +15200,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.33
|
||||
file config.status 5.34
|
||||
configured by $0, generated by GNU Autoconf 2.69,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
@ -16194,7 +16262,7 @@ $as_echo X"$mf" |
|
||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||
test -z "$DEPDIR" && continue
|
||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||
test -z "am__include" && continue
|
||||
test -z "$am__include" && continue
|
||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||
# Find all dependency output files, they are included files with
|
||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||
|
@ -1,5 +1,5 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT([file],[5.33],[christos@astron.com])
|
||||
AC_INIT([file],[5.34],[christos@astron.com])
|
||||
AM_INIT_AUTOMAKE([subdir-objects foreign])
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2012-10-18.11; # UTC
|
||||
scriptversion=2013-05-30.07; # UTC
|
||||
|
||||
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -552,6 +552,7 @@ $ {
|
||||
G
|
||||
p
|
||||
}' >> "$depfile"
|
||||
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -14,23 +14,61 @@
|
||||
|
||||
@SET_MAKE@
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
@ -49,7 +87,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = doc
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
@ -57,6 +94,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@ -116,6 +154,7 @@ man5dir = $(mandir)/man5
|
||||
NROFF = nroff
|
||||
MANS = $(man_MANS)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
pkgdatadir = @pkgdatadir@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
@ -129,6 +168,7 @@ AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
@ -144,6 +184,7 @@ EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_VISIBILITY = @HAVE_VISIBILITY@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
@ -256,7 +297,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign doc/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -612,6 +652,8 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man4 \
|
||||
tags-am uninstall uninstall-am uninstall-man uninstall-man1 \
|
||||
uninstall-man3 uninstall-man4 uninstall-man5
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
file.1: Makefile file.man
|
||||
@rm -f $@
|
||||
|
@ -1,5 +1,5 @@
|
||||
.\" $File: file.man,v 1.129 2018/03/02 16:17:54 christos Exp $
|
||||
.Dd March 2, 2018
|
||||
.\" $File: file.man,v 1.131 2018/07/24 21:33:56 christos Exp $
|
||||
.Dd July 25, 2018
|
||||
.Dt FILE __CSECTION__
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -353,7 +353,7 @@ This option also causes
|
||||
to disregard the file size as reported by
|
||||
.Xr stat 2
|
||||
since on some systems it reports a zero size for raw disk partitions.
|
||||
.If Fl S , Fl Fl no-sandbox
|
||||
.It Fl S , Fl Fl no-sandbox
|
||||
On systems where libseccomp
|
||||
.Pa ( https://github.com/seccomp/libseccomp )
|
||||
is available, the
|
||||
@ -629,11 +629,11 @@ were written by John Gilmore from his public-domain
|
||||
program, and are not covered by the above license.
|
||||
.Sh BUGS
|
||||
Please report bugs and send patches to the bug tracker at
|
||||
.Pa http://bugs.gw.com/
|
||||
.Pa http://bugs.astron.com/
|
||||
or the mailing list at
|
||||
.Aq file@mx.gw.com
|
||||
.Aq file@astron.com
|
||||
(visit
|
||||
.Pa http://mx.gw.com/mailman/listinfo/file
|
||||
.Pa http://mailman.astron.com/mailman/listinfo/file
|
||||
first to subscribe).
|
||||
.Sh TODO
|
||||
Fix output so that tests for MIME and APPLE flags are not needed all
|
||||
|
@ -1,5 +1,6 @@
|
||||
.\" $File: magic.man,v 1.92 2017/11/04 01:11:32 christos Exp $
|
||||
.Dd Noveber 3, 2017
|
||||
.It S2
|
||||
.\" $File: magic.man,v 1.93 2018/06/22 20:39:49 christos Exp $
|
||||
.Dd June 22, 2018
|
||||
.Dt MAGIC __FSECTION__
|
||||
.Os
|
||||
.\" install as magic.4 on USG, magic.5 on V7, Berkeley and Linux systems.
|
||||
@ -553,12 +554,12 @@ the file.
|
||||
The value at that offset is read, and is used again as an offset
|
||||
in the file.
|
||||
Indirect offsets are of the form:
|
||||
.Em (( x [[.,][bislBISL]][+\-][ y ]) .
|
||||
.Em (( x [[.,][bBcCeEfFgGhHiIlmsSqQ]][+\-][ y ]) .
|
||||
The value of
|
||||
.Em x
|
||||
is used as an offset in the file.
|
||||
A byte, id3 length, short or long is read at that offset depending on the
|
||||
.Em [bislBISLm]
|
||||
.Em [bBcCeEfFgGhHiIlmsSqQ]
|
||||
type specifier.
|
||||
The value is treated as signed if
|
||||
.Dq ,
|
||||
@ -575,6 +576,20 @@ To that number the value of
|
||||
.Em y
|
||||
is added and the result is used as an offset in the file.
|
||||
The default type if one is not specified is long.
|
||||
The following types are recognized:
|
||||
.Bl -column -offset indent "Type" "Half/Short" "Little" "Size"
|
||||
.It Sy Type Sy Mnemonic Sy Endian Sy Size
|
||||
.It bcBc Byte/Char N/A 1
|
||||
.It efg Double Little 8
|
||||
.It EFG Double Big 8
|
||||
.It hs Half/Short Little 2
|
||||
.It HS Half/Short Big 2
|
||||
.It i ID3 Little 4
|
||||
.It I ID3 Big 4
|
||||
.It m Middle Middle 4
|
||||
.It q Quad Little 8
|
||||
.It Q Quad Big 8
|
||||
.El
|
||||
.Pp
|
||||
That way variable length structures can be examined:
|
||||
.Bd -literal -offset indent
|
||||
|
@ -1,527 +1,301 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $NetBSD: install-sh.in,v 1.6 2012/01/11 13:07:31 hans Exp $
|
||||
# This script now also installs multiple files, but might choke on installing
|
||||
# multiple files with spaces in the file names.
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2011-11-20.07; # UTC
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
# This comes from X11R5 (mit/util/scripts/install.sh).
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
# Copyright 1991 by the Massachusetts Institute of Technology
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
||||
# documentation for any purpose is hereby granted without fee, provided that
|
||||
# the above copyright notice appear in all copies and that both that
|
||||
# copyright notice and this permission notice appear in supporting
|
||||
# documentation, and that the name of M.I.T. not be used in advertising or
|
||||
# publicity pertaining to distribution of the software without specific,
|
||||
# written prior permission. M.I.T. makes no representations about the
|
||||
# suitability of this software for any purpose. It is provided "as is"
|
||||
# without express or implied warranty.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# 'make' implicit rules from creating a file called install from it
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
|
||||
nl='
|
||||
'
|
||||
IFS=" "" $nl"
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit=${DOITPROG-}
|
||||
if test -z "$doit"; then
|
||||
doit_exec=exec
|
||||
else
|
||||
doit_exec=$doit
|
||||
fi
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
# Put in absolute file names if you don't have them in your path;
|
||||
# or use environment vars.
|
||||
|
||||
chgrpprog=${CHGRPPROG-chgrp}
|
||||
chmodprog=${CHMODPROG-chmod}
|
||||
chownprog=${CHOWNPROG-chown}
|
||||
cmpprog=${CMPPROG-cmp}
|
||||
cpprog=${CPPROG-cp}
|
||||
mkdirprog=${MKDIRPROG-mkdir}
|
||||
mvprog=${MVPROG-mv}
|
||||
rmprog=${RMPROG-rm}
|
||||
stripprog=${STRIPPROG-strip}
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
posix_glob='?'
|
||||
initialize_posix_glob='
|
||||
test "$posix_glob" != "?" || {
|
||||
if (set -f) 2>/dev/null; then
|
||||
posix_glob=
|
||||
else
|
||||
posix_glob=:
|
||||
fi
|
||||
}
|
||||
'
|
||||
awkprog="${AWKPROG-awk}"
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
posix_mkdir=
|
||||
|
||||
# Desired mode of installed file.
|
||||
mode=0755
|
||||
|
||||
chgrpcmd=
|
||||
chmodcmd=$chmodprog
|
||||
chowncmd=
|
||||
mvcmd=$mvprog
|
||||
instcmd="$cpprog"
|
||||
instflags=""
|
||||
pathcompchmodcmd="$chmodprog 755"
|
||||
chmodcmd="$chmodprog 755"
|
||||
chowncmd=""
|
||||
chgrpcmd=""
|
||||
stripcmd=""
|
||||
stripflags=""
|
||||
rmcmd="$rmprog -f"
|
||||
stripcmd=
|
||||
mvcmd="$mvprog"
|
||||
src=""
|
||||
msrc=""
|
||||
dst=""
|
||||
dir_arg=""
|
||||
suffix=""
|
||||
suffixfmt=""
|
||||
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
dst_arg=
|
||||
while [ x"$1" != x ]; do
|
||||
case $1 in
|
||||
-b) suffix=".old"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
copy_on_change=false
|
||||
no_target_directory=
|
||||
-B) suffixfmt="$2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||
or: $0 [OPTION]... -d DIRECTORIES...
|
||||
-c) instcmd="$cpprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
In the 1st form, copy SRCFILE to DSTFILE.
|
||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||
In the 4th, create DIRECTORIES.
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
Options:
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-c (ignored)
|
||||
-C install only if different (preserve the last data modification time)
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrpprog installed files to GROUP.
|
||||
-m MODE $chmodprog installed files to MODE.
|
||||
-o USER $chownprog installed files to USER.
|
||||
-s $stripprog installed files.
|
||||
-t DIRECTORY install into DIRECTORY.
|
||||
-T report an error if DSTFILE is a directory.
|
||||
-m*)
|
||||
chmodcmd="$chmodprog ${1#-m}"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||
RMPROG STRIPPROG
|
||||
"
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
while test $# -ne 0; do
|
||||
case $1 in
|
||||
-c) ;;
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-C) copy_on_change=true;;
|
||||
-s) stripcmd="$stripprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true;;
|
||||
-S) stripcmd="$stripprog"
|
||||
stripflags="-S $2 $stripflags"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift;;
|
||||
-p) instflags="-p"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
--help) echo "$usage"; exit $?;;
|
||||
|
||||
-m) mode=$2
|
||||
case $mode in
|
||||
*' '* | *' '* | *'
|
||||
'* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift;;
|
||||
|
||||
-s) stripcmd=$stripprog;;
|
||||
|
||||
-t) dst_arg=$2
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $dst_arg in
|
||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-T) no_target_directory=true;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit $?;;
|
||||
|
||||
--) shift
|
||||
break;;
|
||||
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||
# When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dst_arg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dst_arg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dst_arg=$arg
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $dst_arg in
|
||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call 'install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
do_exit='(exit $ret); exit $ret'
|
||||
trap "ret=129; $do_exit" 1
|
||||
trap "ret=130; $do_exit" 2
|
||||
trap "ret=141; $do_exit" 13
|
||||
trap "ret=143; $do_exit" 15
|
||||
|
||||
# Set umask so as not to create temps with too-generous modes.
|
||||
# However, 'strip' requires both read and write access to temps.
|
||||
case $mode in
|
||||
# Optimize common cases.
|
||||
*644) cp_umask=133;;
|
||||
*755) cp_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw='% 200'
|
||||
fi
|
||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||
*)
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw=,u+rw
|
||||
fi
|
||||
cp_umask=$mode$u_plus_rw;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $src in
|
||||
-* | [=\(\)!]) src=./$src;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
dstdir=$dst
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dst_arg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
dst=$dst_arg
|
||||
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
if test -d "$dst"; then
|
||||
if test -n "$no_target_directory"; then
|
||||
echo "$0: $dst_arg: Is a directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
dstdir=$dst
|
||||
dst=$dstdir/`basename "$src"`
|
||||
dstdir_status=0
|
||||
else
|
||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
||||
dstdir=`
|
||||
(dirname "$dst") 2>/dev/null ||
|
||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||
X"$dst" : 'X\(//\)[^/]' \| \
|
||||
X"$dst" : 'X\(//\)$' \| \
|
||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
echo X"$dst" |
|
||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)[^/].*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'
|
||||
`
|
||||
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
obsolete_mkdir_used=false
|
||||
|
||||
if test $dstdir_status != 0; then
|
||||
case $posix_mkdir in
|
||||
'')
|
||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||
umask=`umask`
|
||||
case $stripcmd.$umask in
|
||||
# Optimize common cases.
|
||||
*[2367][2367]) mkdir_umask=$umask;;
|
||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
mkdir_umask=`expr $umask + 22 \
|
||||
- $umask % 100 % 40 + $umask % 20 \
|
||||
- $umask % 10 % 4 + $umask % 2
|
||||
`;;
|
||||
*) mkdir_umask=$umask,go-w;;
|
||||
esac
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
else
|
||||
mkdir_mode=
|
||||
fi
|
||||
|
||||
posix_mkdir=false
|
||||
case $umask in
|
||||
*[123567][0-7][0-7])
|
||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||
;;
|
||||
*)
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||
|
||||
if (umask $mkdir_umask &&
|
||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||
*) if [ x"$msrc" = x ]
|
||||
then
|
||||
if test -z "$dir_arg" || {
|
||||
# Check for POSIX incompatibilities with -m.
|
||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||
# other-writable bit of parent directory when it shouldn't.
|
||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||
case $ls_ld_tmpdir in
|
||||
d????-?r-*) different_mode=700;;
|
||||
d????-?--*) different_mode=755;;
|
||||
*) false;;
|
||||
esac &&
|
||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||
}
|
||||
}
|
||||
then posix_mkdir=:
|
||||
fi
|
||||
rmdir "$tmpdir/d" "$tmpdir"
|
||||
msrc="$dst"
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||
msrc="$msrc $dst"
|
||||
fi
|
||||
trap '' 0;;
|
||||
esac;;
|
||||
src="$dst"
|
||||
dst="$1"
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
|
||||
if
|
||||
$posix_mkdir && (
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
)
|
||||
then :
|
||||
else
|
||||
|
||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||
# or it failed possibly due to a race condition. Create the
|
||||
# directory the slow way, step by step, checking for races as we go.
|
||||
|
||||
case $dstdir in
|
||||
/*) prefix='/';;
|
||||
[-=\(\)!]*) prefix='./';;
|
||||
*) prefix='';;
|
||||
esac
|
||||
|
||||
eval "$initialize_posix_glob"
|
||||
|
||||
oIFS=$IFS
|
||||
IFS=/
|
||||
$posix_glob set -f
|
||||
set fnord $dstdir
|
||||
shift
|
||||
$posix_glob set +f
|
||||
IFS=$oIFS
|
||||
|
||||
prefixes=
|
||||
|
||||
for d
|
||||
do
|
||||
test X"$d" = X && continue
|
||||
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask=$mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
prefix=$prefix/
|
||||
done
|
||||
|
||||
if test -n "$prefixes"; then
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||
else
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/_inst.$$_
|
||||
rmtmp=$dstdir/_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||
|
||||
# If -C, don't bother to copy if it wouldn't change the file.
|
||||
if $copy_on_change &&
|
||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||
|
||||
eval "$initialize_posix_glob" &&
|
||||
$posix_glob set -f &&
|
||||
set X $old && old=:$2:$4:$5:$6 &&
|
||||
set X $new && new=:$2:$4:$5:$6 &&
|
||||
$posix_glob set +f &&
|
||||
|
||||
test "$old" = "$new" &&
|
||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||
then
|
||||
rm -f "$dsttmp"
|
||||
else
|
||||
# Rename the file to the real destination.
|
||||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||
|
||||
# The rename failed, perhaps because mv can't rename something else
|
||||
# to itself, or perhaps because mv is so ancient that it does not
|
||||
# support -f.
|
||||
{
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
test ! -f "$dst" ||
|
||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||
} ||
|
||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||
(exit 1); exit 1
|
||||
}
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dst"
|
||||
}
|
||||
fi || exit 1
|
||||
|
||||
trap '' 0
|
||||
fi
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
||||
if [ x"$dir_arg" = x ]
|
||||
then
|
||||
dstisfile=""
|
||||
if [ ! -d "$dst" ]
|
||||
then
|
||||
if [ x"$msrc" = x"$src" ]
|
||||
then
|
||||
dstisfile=true
|
||||
else
|
||||
echo "install: destination is not a directory"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
msrc="$msrc $dst"
|
||||
fi
|
||||
|
||||
if [ x"$msrc" = x ]
|
||||
then
|
||||
echo "install: no destination specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for srcarg in $msrc; do
|
||||
|
||||
if [ x"$dir_arg" != x ]; then
|
||||
|
||||
dstarg="$srcarg"
|
||||
else
|
||||
dstarg="$dst"
|
||||
|
||||
# Waiting for this to be detected by the "$instcmd $srcarg $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
|
||||
if [ -f "$srcarg" ]
|
||||
then
|
||||
doinst="$instcmd $instflags"
|
||||
elif [ -d "$srcarg" ]
|
||||
then
|
||||
echo "install: $srcarg: not a regular file"
|
||||
exit 1
|
||||
elif [ "$srcarg" = "/dev/null" ]
|
||||
then
|
||||
doinst="$cpprog"
|
||||
else
|
||||
echo "install: $srcarg does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# If destination is a directory, append the input filename; if your system
|
||||
# does not like double slashes in filenames, you may need to add some logic
|
||||
|
||||
if [ -d "$dstarg" ]
|
||||
then
|
||||
dstarg="$dstarg"/`basename "$srcarg"`
|
||||
fi
|
||||
fi
|
||||
|
||||
## this sed command emulates the dirname command
|
||||
dstdir=`echo "$dstarg" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||
|
||||
# Skip lots of stat calls in the usual case.
|
||||
if [ ! -d "$dstdir" ]; then
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-${defaultIFS}}"
|
||||
|
||||
oIFS="${IFS}"
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS="${oIFS}"
|
||||
|
||||
pathcomp=''
|
||||
|
||||
while [ $# -ne 0 ] ; do
|
||||
pathcomp="${pathcomp}${1}"
|
||||
shift
|
||||
|
||||
if [ ! -d "${pathcomp}" ] ;
|
||||
then
|
||||
$doit $mkdirprog "${pathcomp}"
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "${pathcomp}"; else true ; fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "${pathcomp}"; else true ; fi &&
|
||||
if [ x"$pathcompchmodcmd" != x ]; then $doit $pathcompchmodcmd "${pathcomp}"; else true ; fi
|
||||
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
pathcomp="${pathcomp}/"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]
|
||||
then
|
||||
if [ -d "$dstarg" ]; then
|
||||
true
|
||||
else
|
||||
$doit $mkdirprog "$dstarg" &&
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dstarg"; else true ; fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dstarg"; else true ; fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dstarg"; else true ; fi
|
||||
fi
|
||||
else
|
||||
|
||||
if [ x"$dstisfile" = x ]
|
||||
then
|
||||
file=$srcarg
|
||||
else
|
||||
file=$dst
|
||||
fi
|
||||
|
||||
dstfile=`basename "$file"`
|
||||
dstfinal="$dstdir/$dstfile"
|
||||
|
||||
# Make a temp file name in the proper directory.
|
||||
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
|
||||
# Make a backup file name in the proper directory.
|
||||
case x$suffixfmt in
|
||||
*%*) suffix=`echo x |
|
||||
$awkprog -v bname="$dstfinal" -v fmt="$suffixfmt" '
|
||||
{ cnt = 0;
|
||||
do {
|
||||
sfx = sprintf(fmt, cnt++);
|
||||
name = bname sfx;
|
||||
} while (system("test -f " name) == 0);
|
||||
print sfx; }' -`;;
|
||||
x) ;;
|
||||
*) suffix="$suffixfmt";;
|
||||
esac
|
||||
dstbackup="$dstfinal$suffix"
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
|
||||
$doit $doinst $srcarg "$dsttmp" &&
|
||||
|
||||
trap "rm -f ${dsttmp}" 0 &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits
|
||||
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $instcmd $src $dsttmp" command.
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else true;fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else true;fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $stripflags "$dsttmp"; else true;fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else true;fi &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
|
||||
if [ x"$suffix" != x ] && [ -f "$dstfinal" ]
|
||||
then
|
||||
$doit $mvcmd "$dstfinal" "$dstbackup"
|
||||
else
|
||||
$doit $rmcmd -f "$dstfinal"
|
||||
fi &&
|
||||
$doit $mvcmd "$dsttmp" "$dstfinal"
|
||||
fi
|
||||
|
||||
done &&
|
||||
|
||||
|
||||
exit 0
|
||||
|
@ -133,8 +133,9 @@ $lt_unset CDPATH
|
||||
# function.
|
||||
progpath="$0"
|
||||
|
||||
|
||||
|
||||
unset CP
|
||||
unset MV
|
||||
unset RM
|
||||
: ${CP="cp -f"}
|
||||
test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
|
||||
: ${MAKE="make"}
|
||||
@ -6899,7 +6900,11 @@ func_mode_link ()
|
||||
# Finalize command for both is simple: just hardcode it.
|
||||
if test "$hardcode_direct" = yes &&
|
||||
test "$hardcode_direct_absolute" = no; then
|
||||
add="$libdir/$linklib"
|
||||
if test -f "$inst_prefix_dir$libdir/$linklib"; then
|
||||
add="$inst_prefix_dir$libdir/$linklib"
|
||||
else
|
||||
add="$libdir/$linklib"
|
||||
fi
|
||||
elif test "$hardcode_minus_L" = yes; then
|
||||
add_dir="-L$libdir"
|
||||
add="-l$name"
|
||||
@ -7391,6 +7396,7 @@ func_mode_link ()
|
||||
# Calculate the version variables.
|
||||
major=
|
||||
versuffix=
|
||||
versuffix2=
|
||||
verstring=
|
||||
case $version_type in
|
||||
none) ;;
|
||||
@ -7451,6 +7457,7 @@ func_mode_link ()
|
||||
func_arith $current - $age
|
||||
major=.$func_arith_result
|
||||
versuffix="$major.$age.$revision"
|
||||
versuffix2="$major.$age"
|
||||
;;
|
||||
|
||||
osf)
|
||||
@ -7511,8 +7518,10 @@ func_mode_link ()
|
||||
esac
|
||||
if test "$need_version" = no; then
|
||||
versuffix=
|
||||
versuffix2=
|
||||
else
|
||||
versuffix=".0.0"
|
||||
versuffix2=".0.0"
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -7520,6 +7529,7 @@ func_mode_link ()
|
||||
if test "$avoid_version" = yes && test "$need_version" = no; then
|
||||
major=
|
||||
versuffix=
|
||||
versuffix2=
|
||||
verstring=""
|
||||
fi
|
||||
|
||||
@ -7630,7 +7640,7 @@ func_mode_link ()
|
||||
*-*-netbsd*)
|
||||
# Don't link with libc until the a.out ld.so is fixed.
|
||||
;;
|
||||
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
|
||||
*-*-openbsd* | *-*-mirbsd* | *-*-freebsd* | *-*-dragonfly*)
|
||||
# Do not include libc due to us having libc/libc_r.
|
||||
;;
|
||||
*-*-sco3.2v5* | *-*-sco5v6*)
|
||||
@ -7653,12 +7663,14 @@ func_mode_link ()
|
||||
libname_save=$libname
|
||||
release_save=$release
|
||||
versuffix_save=$versuffix
|
||||
versuffix2_save=$versuffix2
|
||||
major_save=$major
|
||||
# I'm not sure if I'm treating the release correctly. I think
|
||||
# release should show up in the -l (ie -lgmp5) so we don't want to
|
||||
# add it in twice. Is that correct?
|
||||
release=""
|
||||
versuffix=""
|
||||
versuffix2=""
|
||||
major=""
|
||||
newdeplibs=
|
||||
droppeddeps=no
|
||||
@ -7935,6 +7947,7 @@ EOF
|
||||
;;
|
||||
esac
|
||||
versuffix=$versuffix_save
|
||||
versuffix2=$versuffix2_save
|
||||
major=$major_save
|
||||
release=$release_save
|
||||
libname=$libname_save
|
||||
@ -9419,7 +9432,8 @@ dlpreopen='$dlprefiles'
|
||||
|
||||
# Directory that this library needs to be installed in:
|
||||
libdir='$install_libdir'"
|
||||
if test "$installed" = no && test "$need_relink" = yes; then
|
||||
if test "$installed" = no && test "$need_relink" = yes && \
|
||||
test -n "$relink_command"; then
|
||||
$ECHO >> $output "\
|
||||
relink_command=\"$relink_command\""
|
||||
fi
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: animation,v 1.66 2017/10/06 15:36:38 christos Exp $
|
||||
# $File: animation,v 1.68 2018/05/06 16:08:07 christos Exp $
|
||||
# animation: file(1) magic for animation/movie formats
|
||||
#
|
||||
# animation formats
|
||||
@ -1057,3 +1057,10 @@
|
||||
0 string \x06\x0e\x2b\x34\x02\x05\x01\x01\x0d\x01\x02\x01\x01\x02 Material exchange container format
|
||||
!:ext mxf
|
||||
!:mime application/mxf
|
||||
|
||||
# Recognize LucasArts Smush video files (cf.
|
||||
# https://wiki.multimedia.cx/index.php/Smush)
|
||||
0 string ANIM
|
||||
>8 string AHDR LucasArts Smush Animation Format (SAN) video
|
||||
0 string SANM
|
||||
>8 string SHDR LucasArts Smush v2 (SANM) video
|
||||
|
@ -1,5 +1,5 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: archive,v 1.117 2018/03/17 02:11:04 christos Exp $
|
||||
# $File: archive,v 1.119 2018/04/24 23:19:45 christos Exp $
|
||||
# archive: file(1) magic for archive formats (see also "msdos" for self-
|
||||
# extracting compressed archives)
|
||||
#
|
||||
@ -11,6 +11,7 @@
|
||||
# Reference: https://www.freebsd.org/cgi/man.cgi?query=tar&sektion=5&manpath=FreeBSD+8-current
|
||||
# header mainly padded with nul bytes
|
||||
500 quad 0
|
||||
!:strength /2
|
||||
# filename or extended attribute printable strings in range space null til umlaut ue
|
||||
>0 ubeshort >0x1F00
|
||||
>>0 ubeshort <0xFCFD
|
||||
@ -261,7 +262,7 @@
|
||||
#
|
||||
# BSD/SVR2-and-later portable archive formats.
|
||||
#
|
||||
0 string =!<arch> current ar archive
|
||||
0 string =!<arch>\n current ar archive
|
||||
!:mime application/x-archive
|
||||
>8 string __.SYMDEF random library
|
||||
>68 string __.SYMDEF\ SORTED random library
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: audio,v 1.86 2018/03/11 00:53:11 christos Exp $
|
||||
# $File: audio,v 1.89 2018/07/03 20:55:37 christos Exp $
|
||||
# audio: file(1) magic for sound formats (see also "iff")
|
||||
#
|
||||
# Jan Nicolai Langfeldt (janl@ifi.uio.no), Dan Quinlan (quinlan@yggdrasil.com),
|
||||
@ -858,3 +858,33 @@
|
||||
2 string ADLIB- AdLib instrument data
|
||||
>0 byte x \b, version %u
|
||||
>1 byte x \b.%u
|
||||
|
||||
# CRI ADX ADPCM audio
|
||||
# Used by various Sega games.
|
||||
# https://en.wikipedia.org/wiki/ADX_(file_format)
|
||||
# https://wiki.multimedia.cx/index.php/CRI_ADX_file
|
||||
# Added by David Korth <gerbilsoft@gerbilsoft.com>
|
||||
0x00 beshort 0x8000
|
||||
>(2.S-2) string (c)CRI CRI ADX ADPCM audio
|
||||
>>0x12 byte x v%u
|
||||
>>0x04 byte 0x02 \b, pre-set prediction coefficients
|
||||
>>0x04 byte 0x03 \b, standard ADX
|
||||
>>0x04 byte 0x04 \b, exponential scale
|
||||
>>0x04 byte 0x05 \b, AHX
|
||||
>>0x08 belong x \b, %u Hz
|
||||
>>0x12 byte 0x03
|
||||
>>>0x02 beshort >0x2B
|
||||
>>>>0x18 belong !0 \b, looping
|
||||
>>0x12 byte 0x04
|
||||
>>>0x02 beshort >0x37
|
||||
>>>>0x24 belong !0 \b, looping
|
||||
>>0x13 byte&0x08 0x08 \b, encrypted
|
||||
|
||||
# Lossless audio (.la) (http://www.lossless-audio.com/)
|
||||
0 string LA
|
||||
>2 string 03 Lossless audio version 0.3
|
||||
>2 string 04 Lossless audio version 0.4
|
||||
|
||||
# Sony PlayStation Audio (.xa)
|
||||
0 leshort 0x4158 Sony PlayStation Audio
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: cad,v 1.15 2017/06/24 15:24:56 christos Exp $
|
||||
# $File: cad,v 1.16 2018/05/07 23:26:31 christos Exp $
|
||||
# autocad: file(1) magic for cad files
|
||||
#
|
||||
|
||||
@ -153,9 +153,17 @@
|
||||
>>8 lelong 0xa
|
||||
>>>16 leshort 0x3d3d 3D Studio model
|
||||
!:mime image/x-3ds
|
||||
!:extension 3ds
|
||||
!:ext 3ds
|
||||
|
||||
# MegaCAD 2D/3D drawing (.prt)
|
||||
# http://megacad.de/
|
||||
# From: Markus Heidelberg <markus.heidelberg@web.de>
|
||||
0 string MegaCad23\0 MegaCAD 2D/3D drawing
|
||||
|
||||
# Hoops CAD files
|
||||
# https://docs.techsoft3d.com/visualize/3df/latest/build/general/hsf/\
|
||||
# HSF_architecture.html
|
||||
# Stephane Charette <stephane.charette@gmail.com>
|
||||
0 string ;;\020HSF\020V OpenHSF (Hoops Stream Format)
|
||||
>7 regex/9 V[.0-9]{4,5}\020 %s
|
||||
!:ext hsf
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: console,v 1.35 2017/11/14 15:48:36 christos Exp $
|
||||
# $File: console,v 1.40 2018/06/23 16:40:40 christos Exp $
|
||||
# Console game magic
|
||||
# Toby Deshane <hac@shoelace.digivill.net>
|
||||
|
||||
@ -47,10 +47,12 @@
|
||||
|
||||
# Standard iNES ROM header.
|
||||
0 string NES\x1A NES ROM image (iNES)
|
||||
!:mime application/x-nes-rom
|
||||
>0 use nes-rom-image-ines
|
||||
|
||||
# Wii U Virtual Console iNES ROM header.
|
||||
0 belong 0x4E455300 NES ROM image (Wii U Virtual Console)
|
||||
!:mime application/x-nes-rom
|
||||
>0 use nes-rom-image-ines
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -63,6 +65,7 @@
|
||||
#
|
||||
0 string UNIF
|
||||
>4 lelong <16 NES ROM image (UNIF v%d format)
|
||||
!:mime application/x-nes-rom
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# fds: file(1) magic for Famciom Disk System disk images
|
||||
@ -81,12 +84,14 @@
|
||||
# Headered version.
|
||||
0 string FDS\x1A
|
||||
>0x11 string *NINTENDO-HVC* Famicom Disk System disk image:
|
||||
!:mime application/x-fds-disk
|
||||
>>0x10 use nintendo-fds-disk-info-block
|
||||
>4 byte 1 (%u side)
|
||||
>4 byte !1 (%u sides)
|
||||
|
||||
# Unheadered version.
|
||||
1 string *NINTENDO-HVC* Famicom Disk System disk image:
|
||||
!:mime application/x-fds-disk
|
||||
>0 use nintendo-fds-disk-info-block
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -95,6 +100,7 @@
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
#
|
||||
0 string TNES NES ROM image (Nintendo 3DS Virtual Console)
|
||||
!:mime application/x-nes-rom
|
||||
>4 byte 100 \b: FDS,
|
||||
>>0x2010 use nintendo-fds-disk-info-block
|
||||
>4 byte !100 \b: TNES mapper %u
|
||||
@ -110,6 +116,8 @@
|
||||
# Reference: http://gbdev.gg8.se/wiki/articles/The_Cartridge_Header
|
||||
#
|
||||
0x104 bequad 0xCEED6666CC0D000B Game Boy ROM image
|
||||
# TODO: application/x-gameboy-color-rom for GBC.
|
||||
!:mime application/x-gameboy-rom
|
||||
>0x143 byte&0x80 0x80
|
||||
>>0x134 string >\0 \b: "%.15s"
|
||||
>0x143 byte&0x80 !0x80
|
||||
@ -124,6 +132,7 @@
|
||||
>>0x146 byte !0x03
|
||||
>>>0x143 byte&0xC0 0x80 [CGB]
|
||||
>>>0x143 byte&0xC0 0xC0 [CGB ONLY]
|
||||
>0x14b byte !0x33
|
||||
|
||||
# Mapper.
|
||||
>0x147 byte 0x00 [ROM ONLY]
|
||||
@ -199,29 +208,37 @@
|
||||
# TODO: Check for 32X CD?
|
||||
# Sega Mega CD disc images: 2048-byte sectors.
|
||||
0 string SEGADISCSYSTEM\ \ Sega Mega CD disc image
|
||||
!:mime application/x-sega-cd-rom
|
||||
>0 use sega-mega-drive-header
|
||||
>0 byte x \b, 2048-byte sectors
|
||||
0 string SEGABOOTDISC\ \ \ \ Sega Mega CD disc image
|
||||
!:mime application/x-sega-cd-rom
|
||||
>0 use sega-mega-drive-header
|
||||
>0 byte x \b, 2048-byte sectors
|
||||
# Sega Mega CD disc images: 2352-byte sectors.
|
||||
0x10 string SEGADISCSYSTEM\ \ Sega Mega CD disc image
|
||||
!:mime application/x-sega-cd-rom
|
||||
>0x10 use sega-mega-drive-header
|
||||
>0 byte x \b, 2352-byte sectors
|
||||
0x10 string SEGABOOTDISC\ \ \ \ Sega Mega CD disc image
|
||||
!:mime application/x-sega-cd-rom
|
||||
>0x10 use sega-mega-drive-header
|
||||
>0 byte x \b, 2352-byte sectors
|
||||
|
||||
# Sega Mega Drive, 32X, Pico, and Mega CD Boot ROM images.
|
||||
0x100 string SEGA
|
||||
>0x3C0 bequad 0x4D41525320434845 Sega 32X ROM image
|
||||
!:mime application/x-genesis-32x-rom
|
||||
>>0 use sega-mega-drive-header
|
||||
>0x3C0 bequad !0x4D41525320434845
|
||||
>>0x105 belong 0x5049434F Sega Pico ROM image
|
||||
!:mime application/x-sega-pico-rom
|
||||
>>>0 use sega-mega-drive-header
|
||||
>>0x105 belong !0x5049434F
|
||||
>>>0x180 beshort 0x4252 Sega Mega CD Boot ROM image
|
||||
!:mime application/x-genesis-rom
|
||||
>>>0x180 beshort !0x4252 Sega Mega Drive / Genesis ROM image
|
||||
!:mime application/x-genesis-rom
|
||||
>>>0 use sega-mega-drive-header
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -238,11 +255,13 @@
|
||||
# "Sega Genesis" header.
|
||||
0x280 string EAGN
|
||||
>8 beshort 0xAABB Sega Mega Drive / Genesis ROM image (SMD format):
|
||||
!:mime application/x-genesis-rom
|
||||
>>0 use sega-genesis-smd-header
|
||||
|
||||
# "Sega Mega Drive" header.
|
||||
0x280 string EAMG
|
||||
>8 beshort 0xAABB Sega Mega Drive / Genesis ROM image (SMD format):
|
||||
!:mime application/x-genesis-rom
|
||||
>>0 use sega-genesis-smd-header
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -258,12 +277,17 @@
|
||||
0 name sega-master-system-rom-header
|
||||
# Machine type.
|
||||
>0x0F byte&0xF0 0x30 Sega Master System
|
||||
!:mime application/x-sms-rom
|
||||
>0x0F byte&0xF0 0x40 Sega Master System
|
||||
!:mime application/x-sms-rom
|
||||
>0x0F byte&0xF0 0x50 Sega Game Gear
|
||||
!:mime application/x-gamegear-rom
|
||||
>0x0F byte&0xF0 0x60 Sega Game Gear
|
||||
!:mime application/x-gamegear-rom
|
||||
>0x0F byte&0xF0 0x70 Sega Game Gear
|
||||
>0x0F byte&0xF0 <0x30 Sega Master System / Game Gear
|
||||
>0x0F byte&0xF0 >0x70 Sega Master System / Game Gear
|
||||
!:mime application/x-gamegear-rom
|
||||
>0x0F default x Sega Master System / Game Gear
|
||||
!:mime application/x-sms-rom
|
||||
>0 byte x ROM image:
|
||||
# Product code.
|
||||
>0x0E byte&0xF0 0x10 1
|
||||
@ -323,10 +347,12 @@
|
||||
|
||||
# 2048-byte sector version.
|
||||
0 string SEGA\ SEGASATURN\ Sega Saturn disc image
|
||||
!:mime application/x-saturn-rom
|
||||
>0 use sega-saturn-disc-header
|
||||
>0 byte x (2048-byte sectors)
|
||||
# 2352-byte sector version.
|
||||
0x10 string SEGA\ SEGASATURN\ Sega Saturn disc image
|
||||
!:mime application/x-saturn-rom
|
||||
>0x10 use sega-saturn-disc-header
|
||||
>0 byte x (2352-byte sectors)
|
||||
|
||||
@ -347,10 +373,12 @@
|
||||
|
||||
# 2048-byte sector version.
|
||||
0 string SEGA\ SEGAKATANA\ Sega Dreamcast disc image
|
||||
!:mime application/x-dc-rom
|
||||
>0 use sega-dreamcast-disc-header
|
||||
>0 byte x (2048-byte sectors)
|
||||
# 2352-byte sector version.
|
||||
0x10 string SEGA\ SEGAKATANA\ Sega Dreamcast disc image
|
||||
!:mime application/x-dc-rom
|
||||
>0x10 use sega-dreamcast-disc-header
|
||||
>0 byte x (2352-byte sectors)
|
||||
|
||||
@ -366,6 +394,7 @@
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
#
|
||||
0 bequad 0x803712400000000F Nintendo 64 ROM image
|
||||
!:mime application/x-n64-rom
|
||||
>0x20 string >\0 \b: "%.20s"
|
||||
>0x3B string x (%.4s
|
||||
>0x3F byte x \b, Rev.%02u)
|
||||
@ -375,18 +404,21 @@
|
||||
# Same as z64 format, but with 16-bit byteswapping.
|
||||
#
|
||||
0 bequad 0x3780401200000F00 Nintendo 64 ROM image (V64)
|
||||
!:mime application/x-n64-rom
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# n64-swap2: file(1) magic for the swap2 format N64 ROM dumps
|
||||
# Same as z64 format, but with swapped 16-bit words.
|
||||
#
|
||||
0 bequad 0x12408037000F0000 Nintendo 64 ROM image (wordswapped)
|
||||
!:mime application/x-n64-rom
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# n64-le32: file(1) magic for the 32-bit byteswapped format N64 ROM dumps
|
||||
# Same as z64 format, but with 32-bit byteswapping.
|
||||
#
|
||||
0 bequad 0x401237800F000000 Nintendo 64 ROM image (32-bit byteswapped)
|
||||
!:mime application/x-n64-rom
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# gba: file(1) magic for the Nintendo Game Boy Advance raw ROM format
|
||||
@ -396,6 +428,7 @@
|
||||
# Updated version from: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
#
|
||||
4 bequad 0x24FFAE51699AA221 Game Boy Advance ROM image
|
||||
!:mime application/x-gba-rom
|
||||
>0xA0 string >\0 \b: "%.12s"
|
||||
>0xAC string x (%.6s
|
||||
>0xBC byte x \b, Rev.%02u)
|
||||
@ -408,6 +441,7 @@
|
||||
# Updated version from: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
#
|
||||
0xC0 bequad 0x24FFAE51699AA221 Nintendo DS ROM image
|
||||
!:mime application/x-nintendo-ds-rom
|
||||
>0x00 string >\0 \b: "%.12s"
|
||||
>0x0C string x (%.6s
|
||||
>0x1E byte x \b, Rev.%02u)
|
||||
@ -428,6 +462,7 @@
|
||||
# This is also used for loading .nds files using the MSET exploit on 3DS.
|
||||
# Reference: https://github.com/devkitPro/ndstool/blob/master/source/ndscreate.cpp
|
||||
0xC0 bequad 0xC8604FE201708FE2 Nintendo DS Slot-2 ROM image (PassMe)
|
||||
!:mime application/x-nintendo-ds-rom
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# ngp: file(1) magic for the Neo Geo Pocket (Color) raw ROM format.
|
||||
@ -437,6 +472,7 @@
|
||||
# - http://www.devrs.com/ngp/files/ngpctech.txt
|
||||
#
|
||||
0x0A string BY\ SNK\ CORPORATION Neo Geo Pocket
|
||||
!:mime application/x-neo-geo-pocket-rom
|
||||
>0x23 byte 0x10 Color
|
||||
>0 byte x ROM image
|
||||
>0x24 string >\0 \b: "%.12s"
|
||||
@ -502,8 +538,10 @@
|
||||
# 8 character OMF-86 object file headers.
|
||||
0 beshort 0x8008
|
||||
>6 string BS93 Lynx homebrew cartridge
|
||||
!:mime application/x-atari-lynx-rom
|
||||
>>2 beshort x \b, RAM start $%04x
|
||||
>6 string LYNX Lynx cartridge
|
||||
!:mime application/x-atari-lynx-rom
|
||||
>>2 beshort x \b, RAM start $%04x
|
||||
|
||||
# Opera file system that is used on the 3DO console
|
||||
@ -518,11 +556,11 @@
|
||||
# Gameboy%20Sound%20System%20(.gbs).txt
|
||||
0 string GBS Nintendo Gameboy Music/Audio Data
|
||||
#12 string GameBoy\ Music\ Module Nintendo Gameboy Music Module
|
||||
>16 string >\0 ("%s" by
|
||||
>48 string >\0 %s, copyright
|
||||
>80 string >\0 %s),
|
||||
>3 byte x version %d,
|
||||
>4 byte x %d tracks
|
||||
>16 string >\0 ("%.32s" by
|
||||
>48 string >\0 %.32s, copyright
|
||||
>80 string >\0 %.32s),
|
||||
>3 byte x version %u,
|
||||
>4 byte x %u tracks
|
||||
|
||||
# IPS Patch Files from: From: Thomas Klausner <tk@giga.or.at>
|
||||
# see http://zerosoft.zophar.net/ips.php
|
||||
@ -625,11 +663,14 @@
|
||||
>>0x06 byte 2 \b, Disc 3
|
||||
>>0x06 byte 3 \b, Disc 4
|
||||
>0x07 byte x \b, Rev.%02u)
|
||||
>0x18 belong 0x5D1C9EA3
|
||||
>>0x60 beshort 0x0101 \b (Unencrypted)
|
||||
|
||||
# Type: Nintendo GameCube disc image
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
# Reference: http://wiibrew.org/wiki/Wii_Disc
|
||||
0x1C belong 0xC2339F3D Nintendo GameCube disc image:
|
||||
!:mime application/x-gamecube-rom
|
||||
>0 use nintendo-gcn-disc-common
|
||||
|
||||
# Type: Nintendo GameCube embedded disc image
|
||||
@ -639,6 +680,7 @@
|
||||
0 belong 0xAE0F38A2
|
||||
>0x0C belong 0x00100000
|
||||
>>(8.L+0x1C) belong 0xC2339F3D Nintendo GameCube embedded disc image:
|
||||
!:mime application/x-gamecube-rom
|
||||
>>>(8.L) use nintendo-gcn-disc-common
|
||||
|
||||
# Type: Nintendo Wii disc image
|
||||
@ -652,6 +694,7 @@
|
||||
# Reference: http://wiibrew.org/wiki/Wii_Disc
|
||||
0 string WBFS
|
||||
>0x218 belong 0x5D1C9EA3 Nintendo Wii disc image (WBFS format):
|
||||
!:mime application/x-wii-rom
|
||||
>>0x200 use nintendo-gcn-disc-common
|
||||
|
||||
# Type: Nintendo GameCube/Wii disc image (CISO format)
|
||||
@ -665,41 +708,61 @@
|
||||
>4 lelong 0x200000
|
||||
>>8 byte 1
|
||||
>>>0x801C belong 0xC2339F3D Nintendo GameCube disc image (CISO format):
|
||||
!:mime application/x-wii-rom
|
||||
>>>>0x8000 use nintendo-gcn-disc-common
|
||||
>>>0x8018 belong 0x5D1C9EA3 Nintendo Wii disc image (CISO format):
|
||||
!:mime application/x-wii-rom
|
||||
>>>>0x8000 use nintendo-gcn-disc-common
|
||||
|
||||
# Type: Nintendo GameCube/Wii disc image (GCZ format)
|
||||
# Due to zlib compression, we can't get the actual disc information.
|
||||
0 lelong 0xB10BC001
|
||||
>4 lelong 0 Nintendo GameCube disc image (GCZ format)
|
||||
!:mime application/x-gamecube-rom
|
||||
>4 lelong 1 Nintendo Wii disc image (GCZ format)
|
||||
>4 lelong >1 Nintendo GameCube/Wii disc image (GCZ format)
|
||||
!:mime application/x-wii-rom
|
||||
>4 default x Nintendo GameCube/Wii disc image (GCZ format)
|
||||
|
||||
# Type: Nintendo GameCube/Wii disc image (WDF format)
|
||||
0 string WII\001DISC
|
||||
>8 belong 1
|
||||
# WDFv1
|
||||
>>0x54 belong 0xC2339F3D Nintendo GameCube disc image (WDFv1 format):
|
||||
!:mime application/x-gamecube-rom
|
||||
>>>0x38 use nintendo-gcn-disc-common
|
||||
>>0x58 belong 0x5D1C9EA3 Nintendo Wii disc image (WDFv1 format):
|
||||
!:mime application/x-wii-rom
|
||||
>>>0x38 use nintendo-gcn-disc-common
|
||||
>8 belong 2
|
||||
# WDFv2
|
||||
>>(12.L+0x1C) belong 0xC2339F3D Nintendo GameCube disc image (WDFv2 format):
|
||||
!:mime application/x-gamecube-rom
|
||||
>>>(12.L) use nintendo-gcn-disc-common
|
||||
>>(12.L+0x18) belong 0x5D1C9EA3 Nintendo Wii disc image (WDFv2 format):
|
||||
!:mime application/x-wii-rom
|
||||
>>>(12.L) use nintendo-gcn-disc-common
|
||||
|
||||
# Type: Nintendo GameCube/Wii disc image (WIA format)
|
||||
0 string WIA\001 Nintendo
|
||||
>0x48 belong 0 GameCube/Wii
|
||||
>0x48 belong 1 GameCube
|
||||
!:mime application/x-gamecube-rom
|
||||
>0x48 belong 2 Wii
|
||||
>0x48 belong >2 GameCube/Wii
|
||||
!:mime application/x-wii-rom
|
||||
>0x48 default x GameCube/Wii
|
||||
>0x48 belong x disc image (WIA format):
|
||||
>>0x58 use nintendo-gcn-disc-common
|
||||
|
||||
# Type: Nintendo GameCube/Wii disc image (with SDK header)
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
# Reference: http://wiibrew.org/wiki/Wii_Disc
|
||||
0 belong 0xFFFF0000
|
||||
>0x18 belong 0x00000000
|
||||
>>0x1C belong 0x00000000
|
||||
>>>0x8018 belong 0x5D1C9EA3 Nintendo Wii SDK disc image:
|
||||
>>>>0x8000 use nintendo-gcn-disc-common
|
||||
>>>0x801C belong 0xC2339F3D Nintendo GameCube SDK disc image:
|
||||
>>>>0x8000 use nintendo-gcn-disc-common
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Nintendo 3DS file formats.
|
||||
#
|
||||
@ -816,6 +879,7 @@
|
||||
0 byte >0
|
||||
>0 byte <3
|
||||
>>1 string ATARI7800 Atari 7800 ROM image
|
||||
!:mime application/x-atari-7800-rom
|
||||
>>>0x11 string >\0 \b: "%.32s"
|
||||
# Display type.
|
||||
>>>0x39 byte 0 (NTSC)
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: database,v 1.52 2017/08/13 00:21:47 christos Exp $
|
||||
# $File: database,v 1.54 2018/06/23 16:37:21 christos Exp $
|
||||
# database: file(1) magic for various databases
|
||||
#
|
||||
# extracted from header/code files by Graeme Wilford (eep2gw@ee.surrey.ac.uk)
|
||||
@ -632,3 +632,15 @@
|
||||
>28 lelong x \b, entries %d
|
||||
>32 lelong x \b, index %d
|
||||
>36 lelong x \b, seed %#x
|
||||
|
||||
#
|
||||
# Redis RDB - https://redis.io/topics/persistence
|
||||
0 string REDIS Redis RDB file,
|
||||
>5 regex [0-9][0-9][0-9][0-9] version %s
|
||||
|
||||
# Mork database.
|
||||
# Used by older versions of Mozilla Suite and Firefox,
|
||||
# and current versions of Thunderbird.
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
0 string //\ <!--\ <mdb:mork:z\ v=" Mozilla Mork database
|
||||
>23 string x \b, version %.3s
|
||||
|
47
contrib/file/magic/Magdir/dataone
Normal file
47
contrib/file/magic/Magdir/dataone
Normal file
@ -0,0 +1,47 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: dataone,v 1.1 2018/06/06 01:16:40 christos Exp $
|
||||
#
|
||||
# DataONE- files from Dave Vieglais <dave.vieglais@gmail.com> &
|
||||
# Pratik Shrivastava <pratikshrivastava23@gmail.com>
|
||||
#
|
||||
# file formats: https://cn.dataone.org/cn/v2/formats
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
# EML (Ecological Metadata Language Format)
|
||||
0 string <?xml
|
||||
>&0 regex (eml)-[0-9].[0-9].[0-9]+ eml://ecoinformatics.org/%s
|
||||
|
||||
# onedcx (DataONE Dublin Core Extended v1.0)
|
||||
>&0 regex (onedcx/v)[0-9].[0-9]+ http://ns.dataone.org/metadata/schema/onedcx/v1.0
|
||||
|
||||
# FGDC-STD-001-1998 (Content Standard for Digital Geospatial Metadata,
|
||||
# version 001-1998)
|
||||
>&0 regex fgdc FGDC-STD-001-1998
|
||||
|
||||
# Mercury (Oak Ridge National Lab Mercury Metadata version 1.0)
|
||||
>&0 regex (mercury/terms/v)[0-9].[0-9] http://purl.org/ornl/schema/mercury/terms/v1.0
|
||||
|
||||
# ISOTC211 (Geographic MetaData (GMD) Extensible Markup Language)
|
||||
>&0 regex isotc211
|
||||
>>&0 regex eng;USA http://www.isotc211.org/2005/gmd
|
||||
|
||||
# ISOTC211 (NOAA Variant Geographic MetaData (GMD) Extensible Markup Language)
|
||||
>>&0 regex gov.noaa.nodc:[0-9]+ http://www.isotc211.org/2005/gmd-noaa
|
||||
|
||||
# ISOTC211 PANGAEA Variant Geographic MetaData (GMD) Extensible Markup Language
|
||||
>>&0 regex pangaea.dataset[0-9][0-9][0-9][0-9][0-9][0-9]+ http://www.isotc211.org/2005/gmd-pangaea
|
||||
!:mime text/xml
|
||||
|
||||
|
||||
# Object Reuse and Exchange Vocabulary
|
||||
0 string <?xml
|
||||
>&0 regex rdf
|
||||
>>&0 regex openarchives http://www.openarchives.org/ore/terms
|
||||
!:mime application/rdf+xml
|
||||
|
||||
|
||||
# Dryad Metadata Application Profile Version 3.1
|
||||
0 string <DryadData
|
||||
>&0 regex (dryad-bibo/v)[0-9].[0-9] http://datadryad.org/profile/v3.1
|
||||
!:mime text/xml
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: dbpf,v 1.1 2017/10/13 20:47:14 christos Exp $
|
||||
# $File: dbpf,v 1.2 2018/05/24 18:54:40 christos Exp $
|
||||
# dppf: Maxis Database Packed Files, the stored data file format used by all
|
||||
# Maxis games after the Sims: http://wiki.niotso.org/DBPF
|
||||
# http://www.wiki.sc4devotion.com/index.php?title=DBPF
|
||||
@ -9,9 +9,7 @@
|
||||
>4 ulelong x \b, version: %u.
|
||||
>>8 ulelong x \b%u
|
||||
>>>36 ulelong x \b, files: %u
|
||||
>>24 ledate !0 \b, created: %s
|
||||
>>28 ledate !0 \b, modified: %s
|
||||
!:ext dbpf/package/dat/sc4
|
||||
!:mime application/x-maxis-dbpf
|
||||
4 ulelong 1
|
||||
>8 ulelong !1
|
||||
>>24 ledate !0 \b, created: %s
|
||||
>>>28 ledate !0 \b, modified: %s
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: dump,v 1.16 2017/07/22 19:21:02 christos Exp $
|
||||
# $File: dump,v 1.17 2018/06/26 01:07:17 christos Exp $
|
||||
# dump: file(1) magic for dump file format--for new and old dump filesystems
|
||||
#
|
||||
# We specify both byte orders in order to recognize byte-swapped dumps.
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: elf,v 1.72 2018/02/24 19:50:04 christos Exp $
|
||||
# $File: elf,v 1.74 2018/06/23 16:39:53 christos Exp $
|
||||
# elf: file(1) magic for ELF executables
|
||||
#
|
||||
# We have to check the byte order flag to see what byte order all the
|
||||
@ -50,8 +50,12 @@
|
||||
!:mime application/x-executable
|
||||
>16 leshort 3 shared object,
|
||||
!:mime application/x-sharedlib
|
||||
>16 leshort 4 core file
|
||||
>16 leshort 4 core file,
|
||||
!:mime application/x-coredump
|
||||
# OS-specific
|
||||
>7 byte 202
|
||||
>>16 leshort 0xFE01 executable,
|
||||
!:mime application/x-executable
|
||||
# Core file detection is not reliable.
|
||||
#>>>(0x38+0xcc) string >\0 of '%s'
|
||||
#>>>(0x38+0x10) lelong >0 (signal %d),
|
||||
@ -320,4 +324,5 @@
|
||||
>7 byte 16 (FenixOS)
|
||||
>7 byte 17 (Nuxi CloudABI)
|
||||
>7 byte 97 (ARM)
|
||||
>7 byte 202 (Cafe OS)
|
||||
>7 byte 255 (embedded)
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: fsav,v 1.14 2017/03/17 21:35:28 christos Exp $
|
||||
# $File: fsav,v 1.15 2018/07/16 12:30:41 christos Exp $
|
||||
# fsav: file(1) magic for datafellows fsav virus definition files
|
||||
# Anthon van der Neut (anthon@mnt.org)
|
||||
|
||||
@ -48,13 +48,15 @@
|
||||
>11 string >\0 Clam AntiVirus database %-.23s
|
||||
>>34 string :
|
||||
>>>35 string !: \b, version
|
||||
>>>>35 string x \b%-.1s
|
||||
>>>>>36 string !:
|
||||
>>>>35 string x \b %-.1s
|
||||
>>>>>36 string !:
|
||||
>>>>>>36 string x \b%-.1s
|
||||
>>>>>>>37 string !:
|
||||
>>>>>>>>37 string x \b%-.1s
|
||||
>>>>>>>>>38 string !:
|
||||
>>>>>>>>>>38 string x \b%-.1s
|
||||
>>>>>>>>>>>39 string !:
|
||||
>>>>>>>>>>>>39 string x \b%-.1s
|
||||
>512 string \037\213 \b, gzipped
|
||||
>769 string ustar\0 \b, tarred
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: images,v 1.131 2018/02/16 15:44:28 christos Exp $
|
||||
# $File: images,v 1.146 2018/07/03 20:55:37 christos Exp $
|
||||
# images: file(1) magic for image formats (see also "iff", and "c-lang" for
|
||||
# XPM bitmaps)
|
||||
#
|
||||
@ -255,10 +255,12 @@
|
||||
# The second word of TIFF files is the TIFF version number, 42, which has
|
||||
# never changed. The TIFF specification recommends testing for it.
|
||||
0 string MM\x00\x2a TIFF image data, big-endian
|
||||
!:strength +70
|
||||
!:mime image/tiff
|
||||
>(4.L) use \^tiff_ifd
|
||||
0 string II\x2a\x00 TIFF image data, little-endian
|
||||
!:mime image/tiff
|
||||
!:strength +70
|
||||
>(4.l) use tiff_ifd
|
||||
|
||||
0 name tiff_ifd
|
||||
@ -464,7 +466,9 @@
|
||||
!:mime image/x-unknown
|
||||
|
||||
# GIF
|
||||
# Strength set up to beat 0x55AA DOS/MBR signature word lookups (+65)
|
||||
0 string GIF8 GIF image data
|
||||
!:strength +80
|
||||
!:mime image/gif
|
||||
!:apple 8BIMGIFf
|
||||
>4 string 7a \b, version 8%s,
|
||||
@ -680,6 +684,8 @@
|
||||
# data and image transfer, storage, etc., for the astronomical community.
|
||||
# (FITS floating point formats are big-endian.)
|
||||
0 string SIMPLE\ \ = FITS image data
|
||||
!:mime image/fits
|
||||
!:ext fits/fts
|
||||
>109 string 8 \b, 8-bit, character or unsigned binary integer
|
||||
>108 string 16 \b, 16-bit, two's complement binary integer
|
||||
>107 string \ 32 \b, 32-bit, two's complement binary integer
|
||||
@ -1392,6 +1398,115 @@
|
||||
>8 ubelong x %dx
|
||||
>12 ubelong x \b%d
|
||||
|
||||
# Type: Microsoft DirectDraw Surface (common data)
|
||||
# URL: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
|
||||
# From: Morten Hustveit <morten@debian.org>
|
||||
# Updated by: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
0 name ms-directdraw-surface
|
||||
>0x10 ulelong x %u x
|
||||
>0x0C ulelong x %u
|
||||
# Color depth.
|
||||
>0x58 ulelong >0 \b, %u-bit color
|
||||
# Determine the pixel format.
|
||||
>0x50 ulelong&0x4 4
|
||||
# FIXME: Handle DX10 and XBOX formats.
|
||||
>>0x54 string x \b, compressed using %.4s
|
||||
>0x50 ulelong&0x2 0x2 \b, alpha only
|
||||
>0x50 ulelong&0x200 0x200 \b, YUV
|
||||
>0x50 ulelong&0x20000 0x20000 \b, luminance
|
||||
# RGB pixel format
|
||||
>0x50 ulelong&0x40 0x40
|
||||
|
||||
# Determine the RGB format using the color masks.
|
||||
# ulequad order: 0xGGGGGGGGRRRRRRRR, 0xAAAAAAAABBBBBBBB
|
||||
|
||||
>>0x58 ulelong 16
|
||||
|
||||
# NOTE: 15-bit color formats usually have 16-bit listed as the color depth.
|
||||
>>>0x5C ulequad 0x000003E000007C00
|
||||
>>>>0x64 ulequad 0x000000000000001F \b, RGB555
|
||||
>>>0x5C ulequad 0x000003E000001F00
|
||||
>>>>0x64 ulequad 0x000000000000007C \b, BGR555
|
||||
|
||||
>>>0x5C ulequad 0x000007E00000F800
|
||||
>>>>0x64 ulequad 0x000000000000001F \b, RGB565
|
||||
>>>0x5C ulequad 0x000007E000001F00
|
||||
>>>>0x64 ulequad 0x00000000000000F8 \b, BGR565
|
||||
|
||||
>>>0x5C ulequad 0x000000F000000F00
|
||||
>>>>0x64 ulequad 0x0000F0000000000F \b, ARGB4444
|
||||
>>>0x5C ulequad 0x000000F00000000F
|
||||
>>>>0x64 ulequad 0x0000F00000000F00 \b, ABGR4444
|
||||
|
||||
>>>0x5C ulequad 0x00000F000000F000
|
||||
>>>>0x64 ulequad 0x0000000F000000F0 \b, RGBA4444
|
||||
>>>0x5C ulequad 0x00000F00000000F0
|
||||
>>>>0x64 ulequad 0x0000000F0000F000 \b, BGRA4444
|
||||
|
||||
>>>0x5C ulequad 0x000000F000000F00
|
||||
>>>>0x64 ulequad 0x000000000000000F \b, xRGB4444
|
||||
>>>0x5C ulequad 0x000000F00000000F
|
||||
>>>>0x64 ulequad 0x0000000000000F00 \b, xBGR4444
|
||||
|
||||
>>>0x5C ulequad 0x00000F000000F000
|
||||
>>>>0x64 ulequad 0x00000000000000F0 \b, RGBx4444
|
||||
>>>0x5C ulequad 0x00000F00000000F0
|
||||
>>>>0x64 ulequad 0x000000000000F000 \b, BGRx4444
|
||||
|
||||
>>>0x5C ulequad 0x000003E000007C00
|
||||
>>>>0x64 ulequad 0x000080000000001F \b, ARGB1555
|
||||
>>>0x5C ulequad 0x000003E000001F00
|
||||
>>>>0x64 ulequad 0x000080000000007C \b, ABGR1555
|
||||
>>>0x5C ulequad 0x000007C00000F800
|
||||
>>>>0x64 ulequad 0x000000010000003E \b, RGBA5551
|
||||
>>>0x5C ulequad 0x000007C00000003E
|
||||
>>>>0x64 ulequad 0x000000010000F800 \b, BGRA5551
|
||||
|
||||
>>88 ulelong 24
|
||||
>>>0x5C ulequad 0x0000FF0000FF0000
|
||||
>>>>0x64 ulequad 0x00000000000000FF \b, RGB888
|
||||
>>>0x5C ulequad 0x0000FF00000000FF
|
||||
>>>>0x64 ulequad 0x0000000000FF0000 \b, BGR888
|
||||
|
||||
>>88 ulelong 32
|
||||
>>>0x5C ulequad 0x0000FF0000FF0000
|
||||
>>>>0x64 ulequad 0xFF000000000000FF \b, ARGB8888
|
||||
>>>0x5C ulequad 0x0000FF00000000FF
|
||||
>>>>0x64 ulequad 0xFF00000000FF0000 \b, ABGR8888
|
||||
|
||||
>>>0x5C ulequad 0x00FF0000FF000000
|
||||
>>>>0x64 ulequad 0x000000FF0000FF00 \b, RGBA8888
|
||||
>>>0x5C ulequad 0x00FF00000000FF00
|
||||
>>>>0x64 ulequad 0x000000FFFF000000 \b, BGBA8888
|
||||
|
||||
>>>0x5C ulequad 0x0000FF0000FF0000
|
||||
>>>>0x64 ulequad 0x00000000000000FF \b, xRGB8888
|
||||
>>>0x5C ulequad 0x0000FF00000000FF
|
||||
>>>>0x64 ulequad 0x0000000000FF0000 \b, xBGR8888
|
||||
|
||||
>>>0x5C ulequad 0x00FF0000FF000000
|
||||
>>>>0x64 ulequad 0x000000000000FF00 \b, RGBx8888
|
||||
>>>0x5C ulequad 0x00FF00000000FF00
|
||||
>>>>0x64 ulequad 0x00000000FF000000 \b, BGBx8888
|
||||
|
||||
# Less common 32-bit color formats.
|
||||
>>>0x5C ulequad 0xFFFF00000000FFFF
|
||||
>>>>0x64 ulequad 0x0000000000000000 \b, G16R16
|
||||
>>>0x5C ulequad 0x0000FFFFFFFF0000
|
||||
>>>>0x64 ulequad 0x0000000000000000 \b, R16G16
|
||||
|
||||
>>>0x5C ulequad 0x000FFC003FF00000
|
||||
>>>>0x64 ulequad 0xC0000000000003FF \b, A2R10G10B10
|
||||
>>>0x5C ulequad 0x000FFC00000003FF
|
||||
>>>>0x64 ulequad 0xC00000003FF00000 \b, A2B10G10R10
|
||||
|
||||
# Type: Microsoft DirectDraw Surface
|
||||
# URL: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
|
||||
# From: Morten Hustveit <morten@debian.org>
|
||||
# Updated by: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
0 string/b DDS\040\174\000\000\000 Microsoft DirectDraw Surface (DDS):
|
||||
>0 use ms-directdraw-surface
|
||||
|
||||
# Type: Sega PVR image.
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
# References:
|
||||
@ -1401,8 +1516,8 @@
|
||||
|
||||
# Sega PVR header.
|
||||
0 name sega-pvr-image-header
|
||||
>0x0C leshort x %d x
|
||||
>0x0E leshort x %d
|
||||
>0x0C leshort x %u x
|
||||
>0x0E leshort x %u
|
||||
# Image format.
|
||||
>0x08 byte 0 \b, ARGB1555
|
||||
>0x08 byte 1 \b, RGB565
|
||||
@ -1427,17 +1542,10 @@
|
||||
>0x09 byte 0x11 \b, small VQ & mipmap
|
||||
>0x09 byte 0x12 \b, square twiddled & mipmap
|
||||
|
||||
# Sega PVR (Xbox) image header.
|
||||
# Contains an embedded DirectDraw surface instead of PVR data.
|
||||
0 name sega-pvr-xbox-dds-header
|
||||
>16 lelong x %d x
|
||||
>12 lelong x %d,
|
||||
>84 string x %.4s
|
||||
|
||||
# Sega PVR image.
|
||||
0 string PVRT
|
||||
>0x10 string DDS\040\174\000\000\000 Sega PVR (Xbox) image:
|
||||
>>0x20 use sega-pvr-xbox-dds-header
|
||||
>>0x20 use ms-directdraw-surface
|
||||
>0x10 belong !0x44445320 Sega PVR image:
|
||||
>>0 use sega-pvr-image-header
|
||||
|
||||
@ -1445,15 +1553,15 @@
|
||||
0 string GBIX
|
||||
>0x10 string PVRT
|
||||
>>0x10 string DDS\040\174\000\000\000 Sega PVR (Xbox) image:
|
||||
>>>0x20 use sega-pvr-xbox-dds-header
|
||||
>>0x20 use ms-directdraw-surface
|
||||
>>0x10 belong !0x44445320 Sega PVR image:
|
||||
>>>0x10 use sega-pvr-image-header
|
||||
>>0x08 lelong x \b, global index = %u
|
||||
|
||||
# Sega GVR header.
|
||||
0 name sega-gvr-image-header
|
||||
>0x0C beshort x %d x
|
||||
>0x0E beshort x %d
|
||||
>0x0C beshort x %u x
|
||||
>0x0E beshort x %u
|
||||
# Image data format.
|
||||
>0x0B byte 0 \b, I4
|
||||
>0x0B byte 1 \b, I8
|
||||
@ -1476,6 +1584,12 @@
|
||||
>>0x10 use sega-gvr-image-header
|
||||
>>0x08 belong x \b, global index = %u
|
||||
|
||||
# Sega GVR image with GCIX. (Wii)
|
||||
0 string GCIX
|
||||
>0x10 string GVRT Sega GVR image:
|
||||
>>0x10 use sega-gvr-image-header
|
||||
>>0x08 belong x \b, global index = %u
|
||||
|
||||
# Light Field Picture
|
||||
# Documentation: http://optics.miloush.net/lytro/TheFileFormat.aspx
|
||||
# Typical file extensions: .lfp .lfr .lfx
|
||||
@ -1511,3 +1625,171 @@
|
||||
>12 lelong x version %d,
|
||||
>20 lelong x %dx
|
||||
>24 lelong x \b%d
|
||||
|
||||
# Type: Khronos KTX texture.
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
# References:
|
||||
# - https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/
|
||||
|
||||
# glEnum decoding.
|
||||
# NOTE: Only the most common formats are listed here.
|
||||
0 name khronos-ktx-glEnum
|
||||
>0 lelong 0x1907 \b, RGB
|
||||
>0 lelong 0x1908 \b, RGBA
|
||||
>0 lelong 0x1909 \b, LUMINANCE
|
||||
>0 lelong 0x190A \b, LUMINANCE_ALPHA
|
||||
>0 lelong 0x80E1 \b, BGR
|
||||
>0 lelong 0x80E2 \b, BGRA
|
||||
>0 lelong 0x83A0 \b, RGB_S3TC
|
||||
>0 lelong 0x83A1 \b, RGB4_S3TC
|
||||
>0 lelong 0x83A2 \b, RGBA_S3TC
|
||||
>0 lelong 0x83A3 \b, RGBA4_S3TC
|
||||
>0 lelong 0x83A4 \b, RGBA_DXT5_S3TC
|
||||
>0 lelong 0x83A5 \b, RGBA4_DXT5_S3TC
|
||||
>0 lelong 0x8D64 \b, ETC1_RGB8_OES
|
||||
>0 lelong 0x9270 \b, COMPRESSED_R11_EAC
|
||||
>0 lelong 0x9271 \b, COMPRESSED_SIGNED_R11_EAC
|
||||
>0 lelong 0x9272 \b, COMPRESSED_RG11_EAC
|
||||
>0 lelong 0x9273 \b, COMPRESSED_SIGNED_RG11_EAC
|
||||
>0 lelong 0x9274 \b, COMPRESSED_RGB8_ETC2
|
||||
>0 lelong 0x9275 \b, COMPRESSED_SRGB8_ETC2
|
||||
>0 lelong 0x9276 \b, COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
|
||||
>0 lelong 0x9277 \b, COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
|
||||
>0 lelong 0x9278 \b, COMPRESSED_RGBA2_ETC2_EAC
|
||||
>0 lelong 0x9279 \b, COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
|
||||
>0 lelong 0x93B0 \b, COMPRESSED_RGBA_ASTC_4x4_KHR
|
||||
>0 lelong 0x93B1 \b, COMPRESSED_RGBA_ASTC_5x4_KHR
|
||||
>0 lelong 0x93B2 \b, COMPRESSED_RGBA_ASTC_5x5_KHR
|
||||
>0 lelong 0x93B3 \b, COMPRESSED_RGBA_ASTC_6x5_KHR
|
||||
>0 lelong 0x93B4 \b, COMPRESSED_RGBA_ASTC_6x6_KHR
|
||||
>0 lelong 0x93B5 \b, COMPRESSED_RGBA_ASTC_8x5_KHR
|
||||
>0 lelong 0x93B6 \b, COMPRESSED_RGBA_ASTC_8x6_KHR
|
||||
>0 lelong 0x93B7 \b, COMPRESSED_RGBA_ASTC_8x8_KHR
|
||||
>0 lelong 0x93B8 \b, COMPRESSED_RGBA_ASTC_10x5_KHR
|
||||
>0 lelong 0x93B9 \b, COMPRESSED_RGBA_ASTC_10x6_KHR
|
||||
>0 lelong 0x93BA \b, COMPRESSED_RGBA_ASTC_10x8_KHR
|
||||
>0 lelong 0x93BB \b, COMPRESSED_RGBA_ASTC_10x10_KHR
|
||||
>0 lelong 0x93BC \b, COMPRESSED_RGBA_ASTC_12x10_KHR
|
||||
>0 lelong 0x93BD \b, COMPRESSED_RGBA_ASTC_12x12_KHR
|
||||
>0 lelong 0x93D0 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
|
||||
>0 lelong 0x93D1 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
|
||||
>0 lelong 0x93D2 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
|
||||
>0 lelong 0x93D3 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
|
||||
>0 lelong 0x93D4 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
|
||||
>0 lelong 0x93D5 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
|
||||
>0 lelong 0x93D6 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
|
||||
>0 lelong 0x93D7 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
|
||||
>0 lelong 0x93D8 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
|
||||
>0 lelong 0x93D9 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
|
||||
>0 lelong 0x93DA \b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
|
||||
>0 lelong 0x93DB \b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
|
||||
>0 lelong 0x93DC \b, COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
|
||||
>0 lelong 0x93DD \b, COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
|
||||
|
||||
# Endian-specific KTX header.
|
||||
# TODO: glType (all textures I've seen so far are GL_UNSIGNED_BYTE)
|
||||
0 name khronos-ktx-endian-header
|
||||
>20 lelong x \b, %u
|
||||
>24 lelong >1 x %u
|
||||
>28 lelong >1 x %u
|
||||
>8 lelong >0
|
||||
>>8 use khronos-ktx-glEnum
|
||||
>8 lelong 0
|
||||
>>12 use khronos-ktx-glEnum
|
||||
|
||||
# Main KTX header.
|
||||
# Determine endianness, then check the rest of the header.
|
||||
0 string \xABKTX\ 11\xBB\r\n\x1A\n Khronos KTX texture
|
||||
>12 lelong 0x04030201 (little-endian)
|
||||
>>16 use khronos-ktx-endian-header
|
||||
>12 belong 0x04030201 (big-endian)
|
||||
>>16 use ^khronos-ktx-endian-header
|
||||
|
||||
# Type: Valve VTF texture.
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
# References:
|
||||
# - https://developer.valvesoftware.com/wiki/Valve_Texture_Format
|
||||
|
||||
# VTF image formats.
|
||||
0 name vtf-image-format
|
||||
>0 lelong 0 RGBA8888
|
||||
>0 lelong 1 ABGR8888
|
||||
>0 lelong 2 RGB888
|
||||
>0 lelong 3 BGR888
|
||||
>0 lelong 4 RGB565
|
||||
>0 lelong 5 I8
|
||||
>0 lelong 6 IA88
|
||||
>0 lelong 7 P8
|
||||
>0 lelong 8 A8
|
||||
>0 lelong 9 RGB888 (bluescreen)
|
||||
>0 lelong 10 BGR888 (bluescreen)
|
||||
>0 lelong 11 ARGB8888
|
||||
>0 lelong 12 BGRA8888
|
||||
>0 lelong 13 DXT1
|
||||
>0 lelong 14 DXT3
|
||||
>0 lelong 15 DXT5
|
||||
>0 lelong 16 BGRx8888
|
||||
>0 lelong 17 BGR565
|
||||
>0 lelong 18 BGRx5551
|
||||
>0 lelong 19 BGRA4444
|
||||
>0 lelong 20 DXT1+A1
|
||||
>0 lelong 21 BGRA5551
|
||||
>0 lelong 22 UV88
|
||||
>0 lelong 23 UVWQ8888
|
||||
>0 lelong 24 RGBA16161616F
|
||||
>0 lelong 25 RGBA16161616
|
||||
>0 lelong 26 UVLX8888
|
||||
|
||||
# Main VTF header.
|
||||
0 string VTF\0 Valve Texture Format
|
||||
>4 lelong x v%u
|
||||
>8 lelong x \b.%u
|
||||
>0x10 leshort x \b, %u
|
||||
>0x12 leshort >1 x %u
|
||||
>4 lequad 0x0000000700000002
|
||||
>>0x3F leshort >1 x %u
|
||||
>0x18 leshort >1 \b, %u frames
|
||||
>0x38 byte x \b, mipmaps: %u
|
||||
>0x34 lelong >-1 \b,
|
||||
>>0x34 use vtf-image-format
|
||||
|
||||
# Type: Valve VTF3 (PS3) texture.
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
0 string VTF3 Valve Texture Format (PS3)
|
||||
>0x14 beshort x \b, %u
|
||||
>0x16 beshort x \b x %u
|
||||
>0x10 belong&0x2000 0 \b, DXT1
|
||||
>0x10 belong&0x2000 0x2000 \b, DXT5
|
||||
|
||||
# Type: ASTC texture.
|
||||
# From: David Korth <gerbilsoft@gerbilsoft.com>
|
||||
# References:
|
||||
# - https://stackoverflow.com/questions/22600678/determine-internal-format-of-given-astc-compressed-image-through-its-header
|
||||
# - https://stackoverflow.com/a/22682244
|
||||
0 lelong 0x5ca1ab13 ASTC
|
||||
>4 byte x %u
|
||||
>5 byte x \bx%u
|
||||
>6 byte >1 \bx%u
|
||||
# X, Y, and Z dimensions are stored as 24-bit LE.
|
||||
# Pretend it's 32-bit and mask off the high byte.
|
||||
>7 lelong&0x00FFFFFF x texture, %u
|
||||
>10 lelong&0x00FFFFFF x x %u
|
||||
>13 lelong&0x00FFFFFF >1 x %u
|
||||
|
||||
# Zebra Metafile graphic
|
||||
# http://www.fileformat.info/format/zbr/egff.htm
|
||||
0 beshort 0x9a02 Zebra Metafile graphic
|
||||
>2 leshort 1 (version 1.x)
|
||||
>2 leshort 2 (version 1.1x or 1.2x)
|
||||
>2 leshort 3 (version 1.49)
|
||||
>2 leshort 4 (version 1.50)
|
||||
>4 string x (comment = %s)
|
||||
|
||||
# Microsoft Paint graphic
|
||||
# http://www.fileformat.info/format/mspaint/egff.htm
|
||||
0 string DanM icrosoft Paint image data (version 1.x)
|
||||
>4 leshort x (%d
|
||||
>>6 leshort x x %d)
|
||||
0 string LinS Microsoft Paint image data (version 2.0)
|
||||
>4 leshort x (%d
|
||||
>>6 leshort x x %d)
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: linux,v 1.64 2017/03/17 21:35:28 christos Exp $
|
||||
# $File: linux,v 1.65 2018/07/16 12:32:08 christos Exp $
|
||||
# linux: file(1) magic for Linux files
|
||||
#
|
||||
# Values for Linux/i386 binaries, from Daniel Quinlan <quinlan@yggdrasil.com>
|
||||
@ -94,6 +94,16 @@
|
||||
# From Daniel Novotny <dnovotny@redhat.com>
|
||||
# swap file for PowerPC
|
||||
65526 string SWAPSPACE2 Linux/ppc swap file
|
||||
>0x400 long x version %d,
|
||||
>0x404 long x size %d pages,
|
||||
>1052 string \0 no label,
|
||||
>1052 string >\0 LABEL=%s,
|
||||
>0x40c belong x UUID=%08x
|
||||
>0x410 beshort x \b-%04x
|
||||
>0x412 beshort x \b-%04x
|
||||
>0x414 beshort x \b-%04x
|
||||
>0x416 belong x \b-%08x
|
||||
>0x41a beshort x \b%04x
|
||||
16374 string SWAPSPACE2 Linux/ia64 swap file
|
||||
#
|
||||
# Linux kernel boot images, from Albert Cahalan <acahalan@cs.uml.edu>
|
||||
|
@ -1,5 +1,5 @@
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: make,v 1.3 2016/12/10 14:21:29 christos Exp $
|
||||
# $File: make,v 1.4 2018/05/29 17:26:02 christos Exp $
|
||||
# make: file(1) magic for makefiles
|
||||
#
|
||||
# URL: https://en.wikipedia.org/wiki/Make_(software)
|
||||
@ -17,13 +17,20 @@
|
||||
# Reference: https://www.freebsd.org/cgi/man.cgi?make(1)
|
||||
# exclude grub-core\lib\libgcrypt\mpi\Makefile.am with "#BEGIN_ASM_LIST"
|
||||
# by additional escaping point character
|
||||
0 regex/100l \^\\.BEGIN BSD makefile script text with "%s"
|
||||
0 regex/100l \^\\.BEGIN BSD makefile script text
|
||||
!:mime text/x-makefile
|
||||
!:ext /mk
|
||||
!:strength +10
|
||||
# exclude MS Windows help file CoNtenT with ":include FOOBAR.CNT"
|
||||
# and NSIS script with "!include" by additional escaping point character
|
||||
0 regex/100l \^\\.include BSD makefile script text with "%s"
|
||||
0 regex/100l \^\\.include BSD makefile script text
|
||||
!:mime text/x-makefile
|
||||
!:ext /mk
|
||||
!:strength +10
|
||||
0 regex/100l \^\\.endif BSD makefile script text
|
||||
!:mime text/x-makefile
|
||||
!:ext /mk
|
||||
!:strength +10
|
||||
0 regex/100l \^SUBDIRS automake makefile script text
|
||||
!:mime text/x-makefile
|
||||
!:strength +10
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: measure,v 1.1 2017/11/28 14:01:14 christos Exp $
|
||||
# $File: measure,v 1.2 2018/06/23 16:13:15 christos Exp $
|
||||
# measure: file(1) magic for measurement data
|
||||
|
||||
# DIY-Thermocam raw data
|
||||
@ -8,31 +8,31 @@
|
||||
>0 beshort x scale %d-
|
||||
>2 beshort x \b%d,
|
||||
>4 lefloat x spot sensor temperature %f,
|
||||
>9 byte 0 unit celsius,
|
||||
>9 byte 1 unit fahrenheit,
|
||||
>8 byte x color scheme %d
|
||||
>10 byte 1 \b, show spot sensor
|
||||
>11 byte 1 \b, show scale bar
|
||||
>12 byte &1 \b, minimum point enabled
|
||||
>12 byte &2 \b, maximum point enabled
|
||||
>9 ubyte 0 unit celsius,
|
||||
>9 ubyte 1 unit fahrenheit,
|
||||
>8 ubyte x color scheme %d
|
||||
>10 ubyte 1 \b, show spot sensor
|
||||
>11 ubyte 1 \b, show scale bar
|
||||
>12 ubyte &1 \b, minimum point enabled
|
||||
>12 ubyte &2 \b, maximum point enabled
|
||||
>13 lefloat x \b, calibration: offset %f,
|
||||
>17 lefloat x slope %f
|
||||
|
||||
0 name diy-thermocam-checker
|
||||
>9 byte <2
|
||||
>>10 byte <2
|
||||
>>>11 byte <2
|
||||
>>>>12 byte <4
|
||||
>9 ubyte <2
|
||||
>>10 ubyte <2
|
||||
>>>11 ubyte <2
|
||||
>>>>12 ubyte <4
|
||||
>>>>>17 lefloat >0.0001 DIY-Thermocam raw data
|
||||
|
||||
# V2 and Leption 3.x:
|
||||
38408 byte <19
|
||||
38408 ubyte <19
|
||||
>38400 use diy-thermocam-checker
|
||||
>>38400 default x (Lepton 3.x),
|
||||
>>>38400 use diy-thermocam-parser
|
||||
|
||||
# V1 or Lepton 2.x
|
||||
9608 byte <19
|
||||
9608 ubyte <19
|
||||
>9600 use diy-thermocam-checker
|
||||
>>9600 default x (Lepton 2.x),
|
||||
>>>9600 use diy-thermocam-parser
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: msdos,v 1.121 2017/10/27 21:43:23 christos Exp $
|
||||
# $File: msdos,v 1.124 2018/07/10 04:05:50 christos Exp $
|
||||
# msdos: file(1) magic for MS-DOS files
|
||||
#
|
||||
|
||||
@ -792,10 +792,16 @@
|
||||
#0 string Nullsoft\ AVS\ Preset\ \060\056\061\032 A plug in for Winamp ms-windows Freeware media player
|
||||
0 string/b Nullsoft\ AVS\ Preset\ Winamp plug in
|
||||
|
||||
# Windows Metafont .WMF
|
||||
0 string/b \327\315\306\232 ms-windows metafont .wmf
|
||||
0 string/b \002\000\011\000 ms-windows metafont .wmf
|
||||
0 string/b \001\000\011\000 ms-windows metafont .wmf
|
||||
# Windows Metafile .WMF
|
||||
0 string/b \327\315\306\232 Windows metafile
|
||||
!:mime image/wmf
|
||||
!:ext wmf
|
||||
0 string/b \002\000\011\000 Windows metafile
|
||||
!:mime image/wmf
|
||||
!:ext wmf
|
||||
0 string/b \001\000\011\000 Windows metafile
|
||||
!:mime image/wmf
|
||||
!:ext wmf
|
||||
|
||||
#tz3 files whatever that is (MS Works files)
|
||||
0 string/b \003\001\001\004\070\001\000\000 tz3 ms-works file
|
||||
@ -1032,12 +1038,246 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# From Stuart Caie <kyzer@4u.net> (developer of cabextract)
|
||||
# Update: Joerg Jenderek
|
||||
# URL: https://en.wikipedia.org/wiki/Cabinet_(file_format)
|
||||
# Reference: https://msdn.microsoft.com/en-us/library/bb267310.aspx
|
||||
# Note: verified by `7z l *.cab`
|
||||
# Microsoft Cabinet files
|
||||
0 string/b MSCF\0\0\0\0 Microsoft Cabinet archive data
|
||||
!:mime application/vnd.ms-cab-compressed
|
||||
>8 lelong x \b, %u bytes
|
||||
>28 leshort 1 \b, 1 file
|
||||
>28 leshort >1 \b, %u files
|
||||
#
|
||||
# https://support.microsoft.com/en-us/help/973559/frequently-asked-questions-about-the-microsoft-support-diagnostic-tool
|
||||
# CAB with *.{diagcfg,diagpkg} is used by Microsoft Support Diagnostic Tool MSDT.EXE
|
||||
# because some archive does not have *.diag* as 1st or 2nd archive member like
|
||||
# O15CTRRemove.diagcab or AzureStorageAnalyticsLogs_global.DiagCab
|
||||
# brute looking after header for filenames with diagcfg or diagpkg extension in CFFILE section
|
||||
>0x2c search/980/c .diag \b, Diagnostic
|
||||
!:mime application/vnd.ms-cab-compressed
|
||||
!:ext diagcab
|
||||
# http://fileformats.archiveteam.org/wiki/PUZ
|
||||
# Microsoft Publisher version about 2003 has a "Pack and Go" feature that
|
||||
# bundles a Publisher document *PNG.pub with all links into a CAB
|
||||
>0x2c search/300/c png.pub\0 \b, Publisher Packed and Go
|
||||
!:mime application/vnd.ms-cab-compressed
|
||||
!:ext puz
|
||||
# ppz variant with Microsoft PowerPoint Viewer ppview32.exe to play PowerPoint presentation
|
||||
>0x2c search/17/c ppview32.exe\0 \b, PowerPoint Viewer Packed and Go
|
||||
!:mime application/vnd.ms-powerpoint
|
||||
#!:mime application/mspowerpoint
|
||||
!:ext ppz
|
||||
# http://www.incredimail.com/
|
||||
# IncrediMail CAB contains an initialisation file "content.ini" like in im2.ims
|
||||
>0x2c search/3369/c content.ini\0 \b, IncrediMail
|
||||
!:mime application/x-incredimail
|
||||
# member Flavor.htm implies IncrediMail ecard like in tell_a_friend.imf
|
||||
>>0x2c search/83/c Flavor.htm\0 ecard
|
||||
!:ext imf
|
||||
# member Macromedia Flash data *.swf implies IncrediMail skin like in im2.ims
|
||||
>>0x2c search/211/c .swf\0 skin
|
||||
!:ext ims
|
||||
# member anim.im3 implies IncrediMail animation like in letter_fold.ima
|
||||
>>0x2c search/92/c anim.im3\0 animation
|
||||
!:ext ima
|
||||
# other IncrediMail cab archive
|
||||
>>0x2c default x
|
||||
>>>0x2c search/116/c thumb ecard, image, notifier or skin
|
||||
!:ext imf/imi/imn/ims
|
||||
# http://file-extension.net/seeker/file_extension_ime
|
||||
>>>0x2c default x emoticons or sound
|
||||
!:ext ime/imw
|
||||
# no Diagnostic and IncrediMail
|
||||
>0x2c default x
|
||||
# look for 1st member name
|
||||
>>(16.l+16) ubyte x
|
||||
# https://en.wikipedia.org/wiki/SNP_file_format
|
||||
>>>&-1 string/c _accrpt_.snp \b, Access report snapshot
|
||||
!:mime application/msaccess
|
||||
!:ext snp
|
||||
# https://www.cabextract.org.uk/wince_cab_format/
|
||||
# extension of DOS 8+3 name with ".000" of 1st archive member name implies Windows CE installer
|
||||
>>>&7 string =.000 \b, WinCE install
|
||||
!:mime application/vnd.ms-cab-compressed
|
||||
!:ext cab
|
||||
|
||||
# http://support.microsoft.com/kb/934307/en-US
|
||||
# All inspected MSU contain a file with name WSUSSCAN.cab
|
||||
# that is called "Windows Update meta data" by Microsoft
|
||||
>>>&-1 string/c wsusscan.cab \b, Microsoft Standalone Update
|
||||
!:mime application/vnd.ms-cab-compressed
|
||||
!:ext msu
|
||||
>>>&-1 default x
|
||||
# look at point charcter of 1st archive member name for file name extension
|
||||
>>>>&-1 search/255 .
|
||||
# http://www.pptfaq.com/FAQ00164_What_is_a_PPZ_file-.htm
|
||||
# PPZ were created using Pack & Go feature of PowerPoint versions 97 - 2002
|
||||
# packs optional files, a PowerPoint presentation *.ppt with optional PLAYLIST.LST to CAB
|
||||
>>>>>&0 string/c ppt\0 \b, PowerPoint Packed and Go
|
||||
!:mime application/vnd.ms-powerpoint
|
||||
#!:mime application/mspowerpoint
|
||||
!:ext ppz
|
||||
# https://msdn.microsoft.com/en-us/library/windows/desktop/bb773190(v=vs.85).aspx
|
||||
# first member *.theme implies Windows 7 Theme Pack like in CommunityShowcaseAqua3.themepack
|
||||
# or Windows 8 Desktop Theme Pack like in PanoramicGlaciers.deskthemepack
|
||||
>>>>>&0 string/c theme \b, Windows
|
||||
!:mime application/x-windows-themepack
|
||||
# http://www.drewkeller.com/content/using-theme-both-windows-7-and-windows-8
|
||||
# 1st member Panoramic.theme or Panoramas.theme implies Windows 8-10 Theme Pack
|
||||
# with MTSM=RJSPBS in [MasterThemeSelector] inside *.theme
|
||||
>>>>>>(16.l+16) string =Panoram 8
|
||||
!:ext deskthemepack
|
||||
>>>>>>(16.l+16) string !Panoram 7 or 8
|
||||
!:ext themepack/deskthemepack
|
||||
>>>>>>(16.l+16) ubyte x Theme Pack
|
||||
>>>>>&0 default x
|
||||
# look for null terminator of 1st member name
|
||||
>>>>>>&0 search/255 \0
|
||||
# 2nd member name WSUSSCAN.cab like in Microsoft-Windows-MediaFeaturePack-OOB-Package.msu
|
||||
>>>>>>>&16 string/c wsusscan.cab \b, Microsoft Standalone Update
|
||||
!:mime application/vnd.ms-cab-compressed
|
||||
!:ext msu
|
||||
>>>>>>>&16 default x
|
||||
# archive with more then one file need some output in version 5.32 to avoid error message like
|
||||
# Magdir/msdos, 1138: Warning: Current entry does not yet have a description for adding a MIME type
|
||||
# Magdir/msdos, 1139: Warning: Current entry does not yet have a description for adding a EXTENSION type
|
||||
# file: could not find any valid magic files!
|
||||
>>>>>>>>28 uleshort >1 \b, many
|
||||
!:mime application/vnd.ms-cab-compressed
|
||||
!:ext cab
|
||||
# remaining archives with just one file
|
||||
>>>>>>>>28 uleshort =1
|
||||
# neither extra bytes nor cab chain implies Windows 2000,XP setup files in directory i386
|
||||
>>>>>>>>>30 uleshort =0x0000 \b, Windows 2000/XP setup
|
||||
# cut of last char of source extension and add underscore to generate extension
|
||||
# TERMCAP._ ... FXSCOUNT.H_ ... L3CODECA.AC_ ... NPDRMV2.ZI_
|
||||
!:mime application/vnd.ms-cab-compressed
|
||||
!:ext _/?_/??_
|
||||
# archive need some output like "single" in version 5.32 to avoid error messages
|
||||
>>>>>>>>>30 uleshort !0x0000 \b, single
|
||||
!:mime application/vnd.ms-cab-compressed
|
||||
!:ext cab
|
||||
# TODO: additional extensions like
|
||||
# .xsn InfoPath Dynamic Form
|
||||
# .xtp InfoPath Template Part
|
||||
# .lvf Logitech Video Effects Face Accessory
|
||||
>8 ulelong x \b, %u bytes
|
||||
>28 uleshort 1 \b, 1 file
|
||||
>28 uleshort >1 \b, %u files
|
||||
# Reserved fields, set to zero
|
||||
#>4 belong !0 \b, reserved1 %x
|
||||
#>12 belong !0 \b, reserved2 %x
|
||||
# offset of the first CFFILE entry coffFiles: minimal 2Ch
|
||||
>16 ulelong x \b, at 0x%x
|
||||
>(16.l) use cab-file
|
||||
# at least also 2nd member
|
||||
>28 uleshort >1
|
||||
>>(16.l+16) ubyte x
|
||||
>>>&0 search/255 \0
|
||||
# second member info
|
||||
>>>>&0 use cab-file
|
||||
#>20 belong !0 \b, reserved %x
|
||||
# Cabinet file format version. Currently, versionMajor = 1 and versionMinor = 3
|
||||
>24 ubeshort !0x0301 \b version 0x%x
|
||||
# number of CFFOLDER entries
|
||||
>26 uleshort >1 \b, %u cffolders
|
||||
# cabinet file option indicators 1~PREVIOUS, 2~NEXT, 4~reserved fields
|
||||
# only found for flags 0 1 2 3 4 not 7
|
||||
>30 uleshort >0 \b, flags 0x%x
|
||||
# Cabinet files have a 16-bit cabinet setID field that is designed for application use.
|
||||
# default is zero, however, the -i option of cabarc can be used to set this field
|
||||
>32 uleshort >0 \b, ID %u
|
||||
# iCabinet is number of this cabinet file in a set, where 0 for the first cabinet
|
||||
#>34 uleshort x \b, iCabinet %u
|
||||
# add one for display because humans start numbering by 1 and also fit to name of disk szDisk*
|
||||
>34 uleshort+1 x \b, number %u
|
||||
>30 uleshort &0x0004 \b, extra bytes
|
||||
# cbCFHeader optional size of per-cabinet reserved area 14h 1800h
|
||||
>>36 uleshort >0 %u in head
|
||||
# cbCFFolder is optional size of per-folder reserved area
|
||||
>>38 ubyte >0 %u in folder
|
||||
# cbCFData is optional size of per-datablock reserved area
|
||||
>>39 ubyte >0 %u in data block
|
||||
# optional per-cabinet reserved area abReserve[cbCFHeader]
|
||||
>>36 uleshort >0
|
||||
# 1st CFFOLDER after reserved area in header
|
||||
>>>(36.s+40) use cab-folder
|
||||
# no reserved area in header
|
||||
>30 uleshort ^0x0004
|
||||
# no previous and next cab archive
|
||||
>>30 uleshort =0x0000
|
||||
>>>36 use cab-folder
|
||||
# only previous cab archive
|
||||
>>30 uleshort =0x0001 \b, previous
|
||||
>>>36 use cab-anchor
|
||||
# only next cab archive
|
||||
>>30 uleshort =0x0002 \b, next
|
||||
>>>36 use cab-anchor
|
||||
# previous+next cab archive
|
||||
# can not use sub routine cab-anchor to display previous and next cabinet together
|
||||
#>>>36 use cab-anchor
|
||||
#>>>>&0 use cab-anchor
|
||||
>>30 uleshort =0x0003 \b, previous
|
||||
>>>36 string x %s
|
||||
# optional name of previous disk szDisk*
|
||||
>>>>&1 string x disk %s
|
||||
>>>>>&1 string x \b, next %s
|
||||
# optional name of previous disk szDisk*
|
||||
>>>>>>&1 string x disk %s
|
||||
>>>>>>>&1 use cab-folder
|
||||
# display filename and disk name of previous or next cabinet
|
||||
0 name cab-anchor
|
||||
# optional name of previous/next cabinet file szCabinet*[255]
|
||||
>&0 string x %s
|
||||
# optional name of previous/next disk szDisk*[255]
|
||||
>>&1 string x disk %s
|
||||
# display folder structure CFFOLDER information like compression of cabinet
|
||||
0 name cab-folder
|
||||
# offset of the CFDATA block in this folder
|
||||
#>0 ulelong x \b, coffCabStart 0x%x
|
||||
# number of CFDATA blocks in folder
|
||||
>4 uleshort x \b, %u datablock
|
||||
# plural s
|
||||
>4 uleshort >1 \bs
|
||||
# compression typeCompress: 0~None 1~MSZIP 0x1503~LZX:21 0x1003~LZX:16 0x0f03~LZX:15
|
||||
>6 uleshort x \b, 0x%x compression
|
||||
# optional per-folder reserved area
|
||||
#>8 ubequad x \b, abReserve 0x%llx
|
||||
# display member structure CFFILE information like member name of cabinet
|
||||
0 name cab-file
|
||||
# cbFile is uncompressed size of file in bytes
|
||||
#>0 ulelong x \b, cbFile %u
|
||||
# uoffFolderStart is uncompressed offset of file in folder
|
||||
#>4 ulelong >0 \b, uoffFolderStart 0x%x
|
||||
# iFolder is index into the CFFOLDER area. 0 indicates first folder in cabinet
|
||||
# define ifoldCONTINUED_FROM_PREV (0xFFFD)
|
||||
# define ifoldCONTINUED_TO_NEXT (0xFFFE)
|
||||
# define ifoldCONTINUED_PREV_AND_NEXT (0xFFFF)
|
||||
>8 uleshort >0 \b, iFolder 0x%x
|
||||
# date stamp for file
|
||||
#>10 uleshort x \b, date 0x%x
|
||||
# time stamp for file
|
||||
#>12 uleshort x \b, time 0x%x
|
||||
# attribs is attribute flags for file
|
||||
# define _A_RDONLY (0x01) file is read-only
|
||||
# define _A_HIDDEN (0x02) file is hidden
|
||||
# define _A_SYSTEM (0x04) file is a system file
|
||||
# define _A_ARCH (0x20) file modified since last backup
|
||||
# example http://sebastien.kirche.free.fr/pebuilder_plugins/depends.cab
|
||||
# define _A_EXEC (0x40) run after extraction
|
||||
# define _A_NAME_IS_UTF (0x80) szName[] contains UTF
|
||||
# define UNKNOWN (0x0100) undocumented or accident
|
||||
#>14 uleshort x \b, attribs 0x%x
|
||||
>14 uleshort >0 +
|
||||
>>14 uleshort &0x0001 \bR
|
||||
>>14 uleshort &0x0002 \bH
|
||||
>>14 uleshort &0x0004 \bS
|
||||
>>14 uleshort &0x0020 \bA
|
||||
>>14 uleshort &0x0040 \bX
|
||||
>>14 uleshort &0x0080 \bUtf
|
||||
# unknown 0x0100 flag found on one XP_CD:\I386\DRIVER.CAB
|
||||
>>14 uleshort &0x0100 \b?
|
||||
# szName is name of archive member
|
||||
>16 string x "%s"
|
||||
# next archive member name if more files
|
||||
#>>&17 string >\0 \b, NEXT NAME %-.50s
|
||||
|
||||
# InstallShield Cabinet files
|
||||
0 string/b ISc( InstallShield Cabinet archive data
|
||||
@ -1088,14 +1328,6 @@
|
||||
>5 byte <2
|
||||
>>48 string x version %.3s
|
||||
|
||||
# Type: Microsoft DirectDraw Surface
|
||||
# URL: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
|
||||
# From: Morten Hustveit <morten@debian.org>
|
||||
0 string/b DDS\040\174\000\000\000 Microsoft DirectDraw Surface (DDS),
|
||||
>16 lelong >0 %d x
|
||||
>12 lelong >0 %d,
|
||||
>84 string x %.4s
|
||||
|
||||
# Type: Microsoft Document Imaging Format (.mdi)
|
||||
# URL: http://en.wikipedia.org/wiki/Microsoft_Document_Imaging_Format
|
||||
# From: Daniele Sempione <scrows@oziosi.org>
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: msooxml,v 1.7 2018/03/12 12:38:59 christos Exp $
|
||||
# $File: msooxml,v 1.8 2018/05/24 18:11:17 christos Exp $
|
||||
# msooxml: file(1) magic for Microsoft Office XML
|
||||
# From: Ralf Brown <ralf.brown@gmail.com>
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
0 string PK\003\004
|
||||
!:strength +10
|
||||
# make sure the first file is correct
|
||||
>0x1E use msooxml
|
||||
>0x1E regex \\[Content_Types\\]\\.xml|_rels/\\.rels
|
||||
# skip to the second local file header
|
||||
# since some documents include a 520-byte extra field following the file
|
||||
|
@ -1,16 +1,18 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: pdf,v 1.9 2017/05/24 17:35:20 christos Exp $
|
||||
# $File: pdf,v 1.10 2018/05/23 22:21:01 christos Exp $
|
||||
# pdf: file(1) magic for Portable Document Format
|
||||
#
|
||||
|
||||
0 string %PDF- PDF document
|
||||
!:mime application/pdf
|
||||
!:strength +60
|
||||
>5 byte x \b, version %c
|
||||
>7 byte x \b.%c
|
||||
|
||||
0 string \012%PDF- PDF document
|
||||
!:mime application/pdf
|
||||
!:strength +60
|
||||
>6 byte x \b, version %c
|
||||
>8 byte x \b.%c
|
||||
|
||||
@ -18,10 +20,12 @@
|
||||
# Forms Data Format
|
||||
0 string %FDF- FDF document
|
||||
!:mime application/vnd.fdf
|
||||
!:strength +60
|
||||
>5 byte x \b, version %c
|
||||
>7 byte x \b.%c
|
||||
|
||||
0 search/256 %PDF- PDF document
|
||||
!:mime application/pdf
|
||||
!:strength +60
|
||||
>&0 byte x \b, version %c
|
||||
>&2 byte x \b.%c
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# $File: sgi,v 1.22 2015/08/29 07:10:35 christos Exp $
|
||||
# $File: sgi,v 1.23 2018/05/29 02:26:56 christos Exp $
|
||||
# sgi: file(1) magic for Silicon Graphics operating systems and applications
|
||||
#
|
||||
# Executable images are handled either in aout (for old-style a.out
|
||||
@ -70,8 +70,6 @@
|
||||
4 belong 0x00000010 GLS_BINARY_MSB_FIRST
|
||||
!:strength -30
|
||||
|
||||
#
|
||||
#
|
||||
# Performance Co-Pilot file types
|
||||
0 string PmNs PCP compiled namespace (V.0)
|
||||
0 string PmN PCP compiled namespace
|
||||
@ -114,6 +112,8 @@
|
||||
>16 string >\0 (V.%1.1s)
|
||||
3 string pmieconf-pmie PCP pmie config
|
||||
>17 string >\0 (V.%1.1s)
|
||||
0 string MMV PCP memory mapped values
|
||||
>4 long x (V.%d)
|
||||
|
||||
# SpeedShop data files
|
||||
0 lelong 0x13130303 SpeedShop data file
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# $File: Makefile.am,v 1.132 2018/01/28 00:00:17 rrt Exp $
|
||||
# $File: Makefile.am,v 1.133 2018/06/06 01:16:40 christos Exp $
|
||||
#
|
||||
MAGIC_FRAGMENT_BASE = Magdir
|
||||
MAGIC_DIR = $(top_srcdir)/magic
|
||||
@ -72,6 +72,7 @@ $(MAGIC_FRAGMENT_DIR)/cubemap \
|
||||
$(MAGIC_FRAGMENT_DIR)/cups \
|
||||
$(MAGIC_FRAGMENT_DIR)/dact \
|
||||
$(MAGIC_FRAGMENT_DIR)/database \
|
||||
$(MAGIC_FRAGMENT_DIR)/dataone \
|
||||
$(MAGIC_FRAGMENT_DIR)/dbpf \
|
||||
$(MAGIC_FRAGMENT_DIR)/der \
|
||||
$(MAGIC_FRAGMENT_DIR)/diamond \
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Makefile.in generated by automake 1.13.1 from Makefile.am.
|
||||
# Makefile.in generated by automake 1.15 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1994-2014 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@ -15,23 +15,61 @@
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
am__make_dryrun = \
|
||||
{ \
|
||||
am__dry=no; \
|
||||
am__is_gnu_make = { \
|
||||
if test -z '$(MAKELEVEL)'; then \
|
||||
false; \
|
||||
elif test -n '$(MAKE_HOST)'; then \
|
||||
true; \
|
||||
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
|
||||
true; \
|
||||
else \
|
||||
false; \
|
||||
fi; \
|
||||
}
|
||||
am__make_running_with_option = \
|
||||
case $${target_option-} in \
|
||||
?) ;; \
|
||||
*) echo "am__make_running_with_option: internal error: invalid" \
|
||||
"target option '$${target_option-}' specified" >&2; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
has_opt=no; \
|
||||
sane_makeflags=$$MAKEFLAGS; \
|
||||
if $(am__is_gnu_make); then \
|
||||
sane_makeflags=$$MFLAGS; \
|
||||
else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
| grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
*) \
|
||||
for am__flg in $$MAKEFLAGS; do \
|
||||
case $$am__flg in \
|
||||
*=*|--*) ;; \
|
||||
*n*) am__dry=yes; break;; \
|
||||
esac; \
|
||||
done;; \
|
||||
bs=\\; \
|
||||
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
test $$am__dry = yes; \
|
||||
}
|
||||
fi; \
|
||||
skip_next=no; \
|
||||
strip_trailopt () \
|
||||
{ \
|
||||
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
}; \
|
||||
for flg in $$sane_makeflags; do \
|
||||
test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
case $$flg in \
|
||||
*=*|--*) continue;; \
|
||||
-*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
-*I?*) strip_trailopt 'I';; \
|
||||
-*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
-*O?*) strip_trailopt 'O';; \
|
||||
-*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
-*l?*) strip_trailopt 'l';; \
|
||||
-[dEDm]) skip_next=yes;; \
|
||||
-[JT]) skip_next=yes;; \
|
||||
esac; \
|
||||
case $$flg in \
|
||||
*$$target_option*) has_opt=yes; break;; \
|
||||
esac; \
|
||||
done; \
|
||||
test $$has_opt = yes
|
||||
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
@ -50,7 +88,6 @@ POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = magic
|
||||
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
||||
@ -58,6 +95,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
||||
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
@ -111,6 +149,7 @@ am__uninstall_files_from_dir = { \
|
||||
am__installdirs = "$(DESTDIR)$(pkgdatadir)"
|
||||
DATA = $(pkgdata_DATA)
|
||||
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
am__DIST_COMMON = $(srcdir)/Makefile.in
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
pkgdatadir = @pkgdatadir@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
@ -124,6 +163,7 @@ AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
@ -139,6 +179,7 @@ EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_VISIBILITY = @HAVE_VISIBILITY@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
@ -232,7 +273,7 @@ top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
|
||||
#
|
||||
# $File: Makefile.am,v 1.132 2018/01/28 00:00:17 rrt Exp $
|
||||
# $File: Makefile.am,v 1.133 2018/06/06 01:16:40 christos Exp $
|
||||
#
|
||||
MAGIC_FRAGMENT_BASE = Magdir
|
||||
MAGIC_DIR = $(top_srcdir)/magic
|
||||
@ -303,6 +344,7 @@ $(MAGIC_FRAGMENT_DIR)/cubemap \
|
||||
$(MAGIC_FRAGMENT_DIR)/cups \
|
||||
$(MAGIC_FRAGMENT_DIR)/dact \
|
||||
$(MAGIC_FRAGMENT_DIR)/database \
|
||||
$(MAGIC_FRAGMENT_DIR)/dataone \
|
||||
$(MAGIC_FRAGMENT_DIR)/dbpf \
|
||||
$(MAGIC_FRAGMENT_DIR)/der \
|
||||
$(MAGIC_FRAGMENT_DIR)/diamond \
|
||||
@ -556,7 +598,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign magic/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign magic/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
@ -756,6 +797,8 @@ uninstall-am: uninstall-pkgdataDATA
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
|
||||
ps ps-am tags-am uninstall uninstall-am uninstall-pkgdataDATA
|
||||
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
|
||||
${MAGIC}: $(EXTRA_DIST) $(FILE_COMPILE_DEP)
|
||||
@rm -fr magic
|
||||
|
@ -1,9 +1,9 @@
|
||||
#! /bin/sh
|
||||
# Common wrapper for a few potentially missing GNU programs.
|
||||
|
||||
scriptversion=2012-06-26.16; # UTC
|
||||
scriptversion=2013-10-28.13; # UTC
|
||||
|
||||
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
|
||||
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
@ -160,7 +160,7 @@ give_advice ()
|
||||
;;
|
||||
autom4te*)
|
||||
echo "You might have modified some maintainer files that require"
|
||||
echo "the 'automa4te' program to be rebuilt."
|
||||
echo "the 'autom4te' program to be rebuilt."
|
||||
program_details 'autom4te'
|
||||
;;
|
||||
bison*|yacc*)
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user